{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../../src/fable-library/Reflection.ts","webpack:///../../../src/fable-library/lib/big.js","webpack:///../../src/fable-library/Decimal.ts","webpack:///../../src/fable-library/Double.ts","webpack:///../../src/fable-library/DateOffset.ts","webpack:///./.fable/fable-library.2.10.2/Array.js","webpack:///.fable/Fable.SimpleJson.3.11.0/TypeInfo.Converter.fs","webpack:///./.fable/fable-library.2.10.2/MutableMap.js","webpack:///./.fable/fable-library.2.10.2/Map.js","webpack:///../../src/fable-library/Int32.ts","webpack:///.fable/Fable.SimpleJson.3.11.0/Json.Converter.fs","webpack:///../../src/fable-library/Util.ts","webpack:///../../src/fable-library/Encoding.ts","webpack:///src/Shared/Unavailability.fs","webpack:///../../src/fable-library/AsyncBuilder.ts","webpack:///../../src/fable-library/Async.ts","webpack:///.fable/Fable.Remoting.Client.6.7.0/Http.fs","webpack:///../../src/fable-library/TimeSpan.ts","webpack:///.fable/Fable.Remoting.MsgPack.1.4.0/Read.fs","webpack:///.fable/Fable.Remoting.Client.6.7.0/Proxy.fs","webpack:///.fable/Fable.Remoting.Client.6.7.0/Remoting.fs","webpack:///.fable/Fable.Elmish.Browser.3.0.4/prelude.fs","webpack:///../../src/fable-library/Observable.ts","webpack:///../../src/fable-library/Event.ts","webpack:///../../src/fable-library/Timer.ts","webpack:///.fable/Fable.Elmish.3.1.0/prelude.fs","webpack:///.fable/Fable.Elmish.3.1.0/cmd.fs","webpack:///src/Shared/Calculations.fs","webpack:///.fable/Thoth.Json.4.1.0/Types.fs","webpack:///.fable/Thoth.Json.4.1.0/Decode.fs","webpack:///src/Client/Commons.fs","webpack:///src/Client/HeaderCommons.fs","webpack:///src/Shared/PaymentMethods.fs","webpack:///src/Shared/Validation.fs","webpack:///src/Shared/Resorts.fs","webpack:///src/Client/SidebarCommons.fs","webpack:///src/Shared/Rooms.fs","webpack:///src/Client/Rooms.fs","webpack:///src/Client/AccommodationBase.fs","webpack:///src/Shared/Reservations.fs","webpack:///src/Client/Reservations.fs","webpack:///src/Shared/Utils.fs","webpack:///src/Client/Messages.fs","webpack:///src/Client/UserProfile.fs","webpack:///src/Client/OwnerPanel.fs","webpack:///src/Client/MakeReservation.fs","webpack:///src/Client/Authentication.fs","webpack:///src/Shared/Authentication.fs","webpack:///.fable/Fable.Elmish.Browser.3.0.4/parser.fs","webpack:///src/Client/HomePage.fs","webpack:///src/Client/Pages.fs","webpack:///.fable/Fable.Elmish.3.1.0/ring.fs","webpack:///.fable/Fable.Elmish.Browser.3.0.4/navigation.fs","webpack:///src/Client/App.fs","webpack:///.fable/Fable.Elmish.React.3.0.1/common.fs","webpack:///.fable/Fable.Elmish.React.3.0.1/react.fs","webpack:///../../src/fable-library/Seq.ts","webpack:///./.fable/Fable.Parsimmon.4.1.0/Parsimmon.js","webpack:///../../src/fable-library/Types.ts","webpack:///../../src/fable-library/BitConverter.ts","webpack:///./.fable/fable-library.2.10.2/List.js","webpack:///../../src/fable-library/String.ts","webpack:///../../src/fable-library/Option.ts","webpack:///./.fable/fable-library.2.10.2/BigInt/n.js","webpack:///./.fable/fable-library.2.10.2/BigInt/z.js","webpack:///./.fable/fable-library.2.10.2/BigInt.js","webpack:///../../../src/fable-library/lib/long.js","webpack:///../../src/fable-library/Long.ts","webpack:///./.fable/fable-library.2.10.2/MutableSet.js","webpack:///./.fable/fable-library.2.10.2/Set.js","webpack:///../../src/fable-library/RegExp.ts","webpack:///.fable/Fable.Parsimmon.4.1.0/Parsimmon.fs","webpack:///.fable/Fable.SimpleJson.3.11.0/Parser.fs","webpack:///.fable/Fable.SimpleJson.3.11.0/SimpleJson.fs","webpack:///.fable/Fable.SimpleJson.3.11.0/Json.fs","webpack:///../../src/fable-library/Date.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","rm","P","x","e","y","str","indexNotFoundMsg","fill","target","targetIndex","count","last","array$$5","Error","map","f$$1","source$$1","cons$$2","ArrayBuffer","isView","len$$1","target$$2","i$$4","x$$1","concat","arrays","cons$$9","arr$$4","arrays$$1","Array","isArray","from","totalIdx","totalLength","idx","result$$4","idx$$1","arr$$6","initialize","count$$8","initializer","cons$$15","result$$7","i$$13","copy","array$$31","cons$$17","reverse","array$$33","cons$$18","tryFind","predicate$$13","array$$61","find","pick","chooser","array$$67","$i$$22$$149","i$$22","matchValue$$8","value$$15","loop$$1","findIndexBack","predicate$$22","array$$72","$i$$27$$164","i$$27","loop$$6","tryFindIndexBack","predicate$$23","array$$73","$i$$28$$167","i$$28","loop$$7","fold","folder$$4","state$$6","array$$78","reduce","delegateArg0$$2","delegateArg1$$2","iterateIndexed","action$$1","array$$81","i$$31","permute","f$$8","array$$85","size","res$$7","checkFlags","Int32Array","i$$34","x$$9","j$$1","every","zip","array1$$4","array2$$4","result$$10","len$$15","i$$38","chunkBySize","chunkSize","array$$97","result$$12","x$$18","Math","ceil","start$$8","equalsWith","comparer$$13","array1$$7","array2$$7","comparer$$12","array1$$6","array2$$6","i$$40","result$$13","length1","length2","compareWith","compare","head","array$$104","foldBack","folder$$8","array$$112","state$$12","reduceRight","delegateArg0$$4","delegateArg1$$4","foldBack2","f$$9","array1$$11","array2$$11","state$$17","folder$$12","array1$$10","array2$$10","state$$16","acc$$8","size$$1","i$$43","foldBackIndexed2","_arg1$$1","x$$22","y$$8","acc$$9","ofSeq","source$$6","cons$$31","ofList","source$$7","cons$$32","splitInto","chunks","array$$124","result$$14","chunks$$1","min$$1","comparePrimitives","minChunkSize","chunksWithExtraItem","i$$50","chunkSize$$1","start$$11","slice$$1","flattenFuncTypes","typeDef","patternInput","lazyToDelayed","unitVar0","Value","_createTypeInfo","resolvedType","activePatternResult4331","primType","( |PrimitiveType|_| )","typeInfo","activePatternResult4330","( |FuncType|_| )","arg0","types","createTypeInfo","activePatternResult4329","array","prop","( |RecordType|_| )","fields","matchValue","activePatternResult4328","info","caseName","( |UnionType|_| )","cases","activePatternResult4327","elemType","activePatternResult4326","activePatternResult4325","activePatternResult4324","activePatternResult4323","activePatternResult4322","activePatternResult4321","activePatternResult4320","activePatternResult4319","activePatternResult4318","genArgs","( |MapType|_| )","keyType","valueType","activePatternResult4317","( |DictionaryType|_| )","activePatternResult4316","activePatternResult4315","activePatternResult4314","typeInfoCache","ti","isPrimitive","_arg1","enumUnion","case","MutableMap$00602","declare","pairs","comparer","this$","FSharpRef","this","contents","hashMap","Map","iterate","pair","MutableMap$00602$$Add$$5BDDA1","MutableMap$00602$$TryFindIndex$$2B595","this$$$1","k","h","GetHashCode","tryGetValue","findIndex","pair$$1","Equals","MutableMap$00602$$TryFind$$2B595","this$$$2","k$$1","matchValue$$1","getItemFromDict","MutableMap$00602$$Clear","this$$$4","clear","MutableMap$00602$$get_Count","this$$$5","source","values","sumBy","pairs$$2","GetZero","Add","$x$$2","$y$$3","this$$$8","k$$4","v$$1","matchValue$$4","msg","format","set","MutableMap$00602$$Remove$$2B595","this$$$10","k$$6","matchValue$$6","iterator","elems","this$$$11","toIterator","delay","collect","pairs$$3","pair$$3","getEnumerator","item","Clear","Contains","item$$1","$target$$31","matchValue$$7","equals","CopyTo","arrayIndex","i$$10","Remove","item$$2","pair$$4","k$$7","entries","k$$8","this$$$6","k$$2","matchValue$$2","MutableMap$00602$$get_Item$$2B595","has","k$$9","this$$$9","k$$5","matchValue$$5","MutableMap$00602$$ContainsKey$$2B595","keys","pair$$5","k$$10","v$$2","this$$$7","k$$3","v","matchValue$$3","MutableMap$00602$$set_Item$$5BDDA1","pair$$6","MapTree$00602","tag","Union","MapTreeModule$$$size","MapTreeModule$$$sizeAux","$acc$$5","$m$$6","acc","MapTreeModule$$$empty","MapTreeModule$$$height","MapTreeModule$$$mk","l$$1","r$$1","hl","hr","MapTreeModule$$$rebalance","t1","t2","t1h","t2h","MapTreeModule$$$add","m$$3","Compare","c$$1","MapTreeModule$$$tryFind","$comparer$$2$$26","$k$$4$$27","$m$$5$$28","comparer$$2","m$$5","some","c$$5","MapTreeModule$$$remove","comparer$$9","k$$11","m$$7","c$$7","patternInput$$1","MapTreeModule$$$spliceOutSuccessor","m$$6","MapTreeModule$$$toList","m$$20","MapTreeModule$$$loop","$m$$19$$92","$acc$$8$$93","m$$19","List","MapTreeModule$$$ofSeq","comparer$$16","c$$9","ie","$comparer$$14$$97","$acc$$10$$98","$e$$99","comparer$$14","acc$$10","MoveNext","patternInput$$2","Current","MapTreeModule$$$mkFromEnumerator","isDisposable","Dispose","MapTreeModule$002EMapIterator$00602","stack","started","Record","MapTreeModule$$$collapseLHS","$stack$$111","tail","MapTreeModule$$$mkIterator","s$$5","MapTreeModule$$$current","i$$2","MapTreeModule$$$alreadyFinished","MapTreeModule$$$notStarted","MapTreeModule$002EmkIEnumerator$0027$00602","s$$6","MapTreeModule$$$mkIEnumerator","s$$7","MapTreeModule$002EmkIEnumerator$0027$00602$$$$002Ector$$Z26BC498C","MapTreeModule$$$toSeq","s$$8","en","unfold","en$$1","i$$3","MapTreeModule$$$moveNext","Reset","FSharpMap","comparer$$17","tree","FSharpMap$$$$002Ector$$58ADD115","FSharpMap$$get_Tree","__$$5","FSharpMap$$get_Item$$2B595","__$$8","k$$29","$comparer$$1$$23","$k$$3$$24","$m$$4$$25","MapTreeModule$$$find","comparer$$1","m$$4","c$$3","FSharpMap$$Map$$Z6F6B671C","__$$18","f$$25","MapTreeModule$$$mapi","f$$11","m$$14","l2$$1","v2$$17","r2$$1","FSharpMap$$get_Count","__$$20","FSharpMap$$ContainsKey$$2B595","__$$21","k$$31","$comparer$$10$$59","$k$$12$$60","$m$$8$$61","MapTreeModule$$$mem","comparer$$10","k$$12","m$$8","c$$8","isEmpty","m$$23","add","k$$37","v$$27","m$$24","k$$28","v$$24","__$$6","k$$38","m$$25","k$$39","m$$26","k$$33","__$$23","remove","k$$40","m$$27","k$$32","__$$22","containsKey","k$$41","m$$28","f$$35","m$$37","l$$22","comparer$$18","l$$20","fold$$1","tupledArg","l$$23","comparer$$19","ofArray","comparer$$20","comparer$$15","arr","res$$2","patternInput$$3","MapTreeModule$$$ofArray","toList","m$$45","empty","comparer$$21","createMutable","source$$3","comparer$$22","MutableMap$002400602$0024$0024$0024$0024002Ector$0024$00246623D9B3","toString","strings","map$$2","kv","join","combineHash","x$$16","y$$3","res$$3","e$$1","activePatternResult3678","structuralHash","abs","that","CompareTo","obj","res$$4","finished","e1","e2","kvp1","kvp2","c$$10","k$$34","k$$35","kv$$1","k$$36","v$$26","source$$2","kv$$2","flattenMap","json","( |MapEmpty|_| )","activePatternResult4477","activePatternResult4472","( |MapKey|_| )","( |MapOne|_| )","activePatternResult4476","left","right","activePatternResult4474","( |MapNode|_| )","leftMap","rightMap","generateMap","input","foundCase","clo1","clo2","testExpr","getlElemType","getElemType","getTypes","jsonValue","optionalTypeDelayed","arg20","insideBrowser","activePatternResult4496","caseNames","expectedCases","clo3","arrayLike","deserialized","fromJsonAs","parsedOptional","arg30","parsedValues","array2","_arg2","caseInfo","caseType","unionOfRecords","unexpectedJson","expectedType","foundDiscriminatorKey","discriminators","keyword","arg10","discriminatorKey","discriminatorValueJson","foundUnionCase","record","dict","isQuoted","_arg3","high","low","list","lowBytes","highBytes","combinedBytes","_arg4","serializedRecord","caseValue","elementTypeDelayed","tupleTypesDelayed","tuples","getType","items","_arg5","otherwise","_arg6","_arg7","foundCaseName","elementType","elements","converted","tupleTypes","recordValues","_arg8","dictKeys","recordFields","clo4","keyValuePair","a","tuple","output","inputSequence","forLoopVar","hashset","inputJson","unknownType","f","view","buf","response","errorMsg","reponseText","url","defaultRequestConfig","post","withHeaders","headers","req","withBody","body","send","xhr","setRequestHeader","readyState","status","responseText","sendAndReadBinary","bytes","arguments","interpretStringAs","typ","_","pos","len","Encoding","readInt","BitConverter","args","Read","props","fieldTypes","ReadByte","arg00","ReadRawArray","dateTimeTicks","timeSpanMinutes","ReadRawBin","ReadString","ReadUInt16","ReadUInt32","ReadArray","ReadMap","ReadBin","blob","reader","readAsText","options","typeName","func","fieldType","funcArgs","argumentCount","returnType","returnTypeAsync","binaryInput","readAsBinary","isAsyncOfByteArray","route","baseUrl","combineRouteWithBaseUrl","funcNeedParameters","arg1","arg2","arg3","arg4","arg5","arg6","arg7","inputArguments","contentType","authToken","requestBody","RequestBody","responseAsBlob","readBlobAsText","parsedJson","SimpleJson","Reader","Reflection","getReturnType","builder","resolver","schemaType","proxy","field","normalizedProxyFetch","fn","methodName","prefix","errorType","text","ex","console","interval","callback","returnVal","Start","onError","dispatch","cmd","g","cmds","sub","start","task","arg","ofSuccess","ofError","message","wrap","wrapper","HasValue","newVal","oldVal","TryFailureMsg","f2","Calc","dv","Update","calc","Decimal","sd","Bind","ParseDecimal","Int32","ParseInt","( .ctor )","genericMsg","newLine","errorToString","path","error","reason","fromValue","decoder","fromString","sbyte","int16","uint16","uint32","min","max","timespan","decodeMaybeNull","badPathError","fieldNames","currentPath","option","Option","index","requestedIndex","copyOfStruct","vArray","tokens","state","andThen","cb","ctor","d1","unwrapWith","errors","fieldName","fieldValue","isUndefined","firstPath","firstValue","res","curValue","optional","mixedArray","decoders","makeUnion","extra","caseStrategy","uci","fi","autoDecoder","autoDecodeRecordsAndUnions","isOptional","decoderRef","lowerFirst","decoderInfos","autoObject","xs","fullname","enumType","Seq","byte","int","keyDecoder","valueDecoder","autoObject2","decoder1","decoder2","v1","v2","( arg10@ )","( arg20@ )","succeed","runner","ar","Set","bool","unit","string","float","float32","datetime","datetimeOffset","guid","makeExtra","__","disp","ev","attrs","icon","css","children","none","color","percentage","style","label","dates","id","startDate","endDate","stringsToDates","date","rows","handler","html","title","subtitle","buttons","messageBox","hasError","controls","labWidth","ctrlWidth","labText","errMsgs_0","errMsgs_1","errMsgs_2","control","err","errMsgWidth","maxLen","valueTag","controlWithLabel","errors_0","errors_1","errors_2","value_0","value_1","dateRangePickerInput","time","timeMaskedInput","fmt","dd","uninitInfo","InternalToString","OfString","num","isValidInt","isValidDecimal","dnum","st","createMsg","baseMessage","generateDecoder","loginPage","loggedUserApi","model","UserName","UserIcon","account","logoutCmd","dropdownMenu","menuType","menuIcon","labelType","headerText","childItems","menu","range","opt1","opt2","checkEmpty","suffix","checkInt","minVal","maxVal","checkMoney","money","checkPercentage","checkDuplicates","groupingKey","createMessage","checkOverlaps","getFrom","getTo","sl","checkPasswordStrength","pwd","forField","messages","combine","phase1","phase2","validateResort","resort","u","To","pp","pt","menuItem","active","menuItemWithLabels","labels","submenu","sidebarMenu","Empty","joinMatching","rightList","matches","leftList","predicate","calculateRoom","room","roomInitial","AgeGroupPricings","PriceLists","ShortEmptySpacePrice","LongEmptySpacePrice","PrepaymentPercentage","ShortTimePrice","LongTimePrice","ageGroup","pl","tmpl","tmplOpt","initial","template","pg","recalcPriceList","recalcRoom","calcData","validateAgeGroupPricings","postfix","ageGroups","validateRoom","maxOverlap","ep","Editor","AvailableAges","itemsToExclude","ag","dg","age","AvailableArrangementTypes","IsComplete","update","templates","mapping","FromAgeGroupPricingList","CreatePriceListModel","roomTypes","unavailabilities","variants","arrangements","UpdateAvailableAges","UpdateAvailableArrangementTypes","BuildPriceListModels","ToPriceList","AgeGroups","UpdateDerived","plm","NameErrors","ShortDescriptionErrors","DetailedDescriptionErrors","CapacityErrors","AdditionalCapacityErrors","PrepaymentPercentageErrors","VolumeErrors","ArrangementErrors","ArrangementVariantErrors","UnavailabilityErrors","ShortTimePriceErrors","getErrorsOf","LongTimePriceErrors","LongEmptySpacePriceErrors","AgeGroupErrors","ToCalculationData","FromCalculationData","priceList","inputRecord","Arrangements","ArrangementVariants","models","HasErrors","ageLabel","RoomType","getKey","ritem","AddInitialPriceLists","FromRoom","rt","Recalc","Items","PayType","at","tp","units","variant","Availabilities","NextArrangementVariantNo","Validate","ToRoom","WithErrors","roomApi","roomId","galleryApi","onload","event","row","pic","UploadsTotal","UploadsCompleted","Pictures","base64","file","readAsBinaryString","prev","movePictureCmd","loadGalleryCmd","rs","utilisation","els","priceListEditorPane","aa","rooms","details","gallery","gmdl","resortId","getRoomSummariesCmd","Deletion","FromSummary","check","Address","ShortTimeErrors","EmptySpacePricePercErrors","PrepaymentWaitPeriodErrors","MaxRentalTimeErrors","MaxRentalAdvanceErrors","PriceListTemplates","PriceListTemplateErrors","Unavailabilities","MaxRentalTime","ShortTime","EmptySpacePricePercentage","PrepaymentWaitPeriod","MaxRentalAdvance","arrangementTypes","CityErrors","StreetErrors","NumberErrors","ZipCodeErrors","ArrangementTypeErrors","checkbox","IsIncomplete","priceListTmplLineEditor","FromResort","Scopes","ToTemplate","validateModel","ToResort","resortApi","partner","partnerRef","PartnerReference","partnerKey","FromPartnerReference","getResortSummariesCmd","getReferredResortIdCmd","pr","resId","hasPaymentMethod","init","resorts","calculateState","currentDate","RSPrice","RSPrepayment","price","prepayment","RSBaseState","RSFrom","RSTo","RSPayments","RSPrepaymentDeadline","reservation","updateOccupancies","Occupancies","getRoomAvalability","resFrom","resTo","allocs","monthDiff","d2","roomById","validateReservation","suitableVariants","a'","calculatePricePart","dateFrom","dateTo","useLongTimePrice","allocation","shortTimePrice","longTimePrice","shortEmptySpacePrice","longEmptySpacePrice","adults","days","pricings","defaultPricing","adultPricing","paidOnce","basePrice","emptySpacePrice","emptySpace","paidPerDay","mergeParts","part1","part2","price2","p2","ofYear","year","calculateAllocationPrices","yearFrom","yearTo","involvedPriceLists","sc","calculateParts","part","calculatePrepayment","allocationPrices","calculateReservation","prices","temp","Price","Prepayment","autoConfirm","PrepaymentDeadline","BaseState","DetailedState","recalcReservation","FromReservation","baseFilterRooms","filteredByCapacity","df","dt","aggregatePeriods","periods","filterAndPriceRooms","reservationId","reservationApi","DeclaredArrival","PriceIsFixed","PrepaymentIsFixed","Payments","Messages","PriceErrors","PrepaymentErrors","NewPaymentErrors","NewMessageErrors","updateReservation","ShowPayments","rrooms","rres","validateAndRun","saveReservationCmd","waitPeriod","acceptPrepaymentCmd","refuseReservationCmd","ageList","adultsLabel","childrenLabel","cmt","Parent","parent","showAll","reservations","summary","parentId","getRoomList","getReservationCmd","getReservationSummariesCmd","FromSummaryList","concatRoomNames","names","messageApi","getMessagesCmd","Response","roomInfo","content","userProfileApi","FirstNameErrors","LastNameErrors","EmailErrors","PhoneErrors","validateAccountDetails","ToAccountDetails","Success","oldPwd","newPwd","Password1Errors","Password2Errors","validated","sltOldPwd","sltNewPwd","paymentApi","OwnerAddress","OwnerNameErrors","AccountNumberErrors","BankNameErrors","validateBankAccount","ToBankAccount","sltPwd","sender","subject","mapCommonsMsg","getResortsCmd","ErrorMessage","submodel","submsg","resortIdOpt","mdl","mapAccommodationBaseMsg","mapReservationMsg","mapMessagesMsg","accountDetailsCmd","mapAccountDetailsMsg","mapChangePasswordMsg","bankAccountCmd","mapBankAccountMsg","succ","mapHeaderMsg","mapSidebarMsg","mapContentMsg","parameters","scopes","pictures","shortTime","daysLabel","Children","Room","childList","allRooms","bankAccount","ordererData","secret","fromReservation","fromRoom","Allocations","Orderer","UpdateInternalWith","ToAllocation","orderer","FirstName","LastName","Email","Phone","checkIfValidTime","RecalcP","Adults","EditedArrangementTypeId","ArrivalErrors","FromToErrors","AdultsErrors","ChildrenErrors","ToReservation","isMultiRoom","isFirst","arg40","arg50","arg60","arg70","clo5","clo6","clo7","editorView","IsMultiRoom","SelectedRooms","adultsOpt","FromErrors","ToErrors","DaysErrors","RemainingAdults","daysI","viewType","Resort","AllRooms","BankAccount","From","IdentifiesRoom","RoomSelectionModel","AllocatedAdults","ReservationModel","ManyAllocations","loadType","availabilities","rsFrom","dateRangeAssigned","rsTo","Double","ViewType","calcRoom","allCalcRooms","RefreshUpdateWith","UpdateWith","UpdateSelection","buildPriceLists","mapRoomDetailsMsg","addAllocation","Days","getRoomCmd","getResortCmd","getResortByPartnerKeyCmd","Arrival","FromAlloction","TermsOfServiceConsent","RodoConsent","unallocatedPersonLabel","priceListSection","carousel","FromParams","redirection","api","UsernameErrors","list2","validateRegistrationData","ToRegistrationData","list1","Password","Result","password","resetCode","vmodel","authParams","code","passwordResetCode","activationCode","username","rememberMe","showErrors","model_0","model_1","evt","ofFunc","visited","unvisited","mkState","subValue","parse","customParam","stringParam","intParamHelp","intParam","parser","parseHelp","states","segments","splitUrl","toKeyValuePair","segment","b","parseParams","querystring","ifNothing","href","basePage","returnUrl","activation","passwordReset","queryParser","parsers","Page","FromOwnerPanelParams","uid","FromReservationParams","FromAuthenticationParams","urlParser","location","pathname","search","parsePath","pageParser","ownerApi","ordererApi","page","urlUpdate","footer","headerMenu","ix","wix'","wix","setState","program","rb","reentered","syncDispatch","nextMsg","rix'","lastLocation","onChangeRef","onLocationChange","mapInit","mapUpdate","mapView","mapSetState","mapSubscribe","userInit","unitVar1","userUpdate","userView","userSetState","userSubscribe","subscribe","equal","comp","lazyView2With","placeholderId","document","getElementById","nextProps","_nextState","toNavigableWith","runWith","withReactSynchronousUsing","cur","iter","Parsimmon","action","times","seed","forEach","elem","bufferExists","Buffer","isParser","isBuffer","makeSuccess","furthest","expected","makeFailure","mergeReplies","ys","sort","union","makeLineColumnIndex","offset","line","column","lines","split","assertParser","charAt","assertNumber","assertRegexp","RegExp","flags","assertFunction","assertString","repeat","amount","leftPad","pad","char","rangeFromIndexAndOffsets","before","after","to","formatGot","lineWithErrorIndex","lineRange","lastLineNumberLabelLength","verticalMarkerLength","byteLineWithErrorIndex","columnByteIndex","byteRange","bytesPerLine","bytesAfter","byteLines","byteRow","byteValue","chunkIndex","toChunks","toJSON","floor","byteRangeToRange","byteLine","inputLines","lineWithErrorCurrentIndex","lineSource","lineNumberLabel","isLineWithError","re","lastIndexOf","anchoredRegexp","seq","numParsers","accum","seqMap","mapper","pop","results","alt","fail","sepBy1","separator","then","many","regexp","group","anchored","match","exec","fullMatch","groupMatch","lookahead","test","oneOf","ch","indexOf","desc","noneOf","takeWhile","lazy","undefined","skip","eof","tryParse","type","or","alternative","trim","leftParser","rightParser","middle","thru","next","self","tieWith","assertArray","tie","prevResult","atMost","atLeast","rest","contramap","promap","mark","end","node","sepBy","notFollowedBy","reply","fallback","ap","other","chain","of","any","all","digit","letter","letters","optWhitespace","whitespace","cr","lf","newline","tryHead","_arg1$$2","$_arg1$$3$$5","_arg1$$3","tryLast","$_arg1$$4$$6","_arg1$$4","foldIndexed","xs$$7","$f$$12","$i$$13","$acc$$14","$_arg1$$5$$15","_arg1$$5","foldIndexedAux","$f$$2$$19","$state$$1$$20","$xs$$8$$21","f$$2","state$$1","xs$$8","xs$$9","acc$$1","x$$6","xs$$12","acc$$3","lists","state$$3","xs$$14","acc$$4","x$$10","fold2","f$$7","state$$5","xs$$18","ys$$5","fold2$$1","scan","f$$13","state$$11","xs$$23","scan$$1","xs$$27","_arg1$$7","append","xs$$28","ys$$10","x$$15","f$$15","xs$$29","collect$$1","f$$16","xs$$31","acc$$11","mapIndexed","f$$17","xs$$33","acc$$12","x$$17","indexed","xs$$35","f$$24","xs$$46","x$$24","xs$$50","res$$1","i$$9","tryPickIndexed","f$$29","xs$$52","$f$$28$$120","$i$$10$$121","$_arg1$$9$$122","tryPickIndexedAux","f$$28","_arg1$$9","tryFindIndexed","f$$32","xs$$55","i$$11","x$$31","f$$33","xs$$56","_arg1$$11","x$$32","findIndexed","f$$34","xs$$57","value$$1","xs$$58","_arg1$$12","x$$34","f$$40","xs$$67","f$$38","i$$12","x$$35","xs$$69","_arg1$$13","filter","f$$42","xs$$71","acc$$17","x$$37","partition","f$$43","xs$$73","tupledArg$$1","x$$38","choose","f$$44","xs$$74","acc$$18","x$$39","y$$10","except","array$$2","eq$$1","cached","addToSet","f$$47","_arg1$$16","forAll","f$$49","xs$$79","acc$$19","x$$41","exists","$f$$51$$180","$_arg1$$18$$181","f$$51","_arg1$$18","xs$$85","ys$$19","f$$18","x$$47","y$$15","xs$$36","ys$$11","acc$$13","x$$19","y$$4","xs$$87","xs$$88","x$$49","y$$17","sortBy","projection","xs$$90","comparer$$3","xs$$91","x$$50","y$$18","sum","xs$$102","adder","acc$$21","x$$53","f$$53","xs$$103","adder$$1","acc$$22","x$$54","li","x$$56","y$$22","xs$$106","x$$58","y$$24","xs$$111","array$$4","xs$$113","chunkBySize$$1","i$$16","xs$$115","$target$$242","i$$20","xs$$119","$i$$17$$240","$xs$$116$$241","i$$17","xs$$116","skipInner","skipWhile","$predicate$$243","$xs$$120$$244","$target$$245","t$$4","xs$$120","takeSplitAux","$error$$246","$i$$21$$247","$acc$$25$$248","$xs$$121$$249","i$$21","acc$$25","xs$$121","take","xs$$123","$target$$252","i$$25","xs$$124","splitAt","i$$30","xs$$129","$target$$260","i$$33","xs$$131","distinct","xs$$136","eq$$3","projection$$4","x$$68","xs$$134","eq$$2","hashSet","$arg$$1","arg00$$1","groupBy","projection$$5","xs$$139","eq$$4","createMutable$$1","matchValue$$16","addToDict","result$$1","key$$1","rep","precision","BigNat","bound","digits","BigNatModule$002EFFT$$$pow32","$x$$1","$n$$2","fromBits","BigNatModule$002EFFT$$$maxTwoPower","i$$1","BigNatModule$$$bound","n$$10","BigNatModule$$$coeff","n$$12","i$$5","BigNatModule$$$coeff64","n$$13","i$$6","fromInteger","BigNatModule$$$setCoeff","n$$14","i$$7","v$$4","BigNatModule$$$pow64","$x$$23$$48","$n$$15$$49","x$$23","n$$15","op_Multiply","BigNatModule$$$pow32","$x$$24$$50","$n$$16$$51","n$$16","BigNatModule$$$maxInt","b$$2","BigNatModule$$$baseNi64","BigNatModule$$$baseMaski64","BigNatModule$$$divbase","x$$25","BigNatModule$$$modbase","x$$26","BigNatModule$$$createN","b$$4","BigNatModule$$$normN","n$$18","bound$$1","$na$$62","$i$$9$$63","na","findLeastBound","BigNatModule$$$embed","x$$28","x$$29","r$$2","r$$3","BigNatModule$$$boundInt","BigNatModule$$$one","BigNatModule$$$zero","BigNatModule$$$degree","n$$24","BigNatModule$$$add","p$$1","q$$1","rbound","r$$6","$i$$16$$75","$n$$25$$76","$c$$77","$p$$78","$q$$79","$r$$5$$80","n$$25","q","r$$5","BigNatModule$$$addP","BigNatModule$$$sub","p$$3","q$$3","rbound$$1","r$$8","$i$$19$$83","$n$$26$$84","$c$$2$$85","$p$$2$$86","$q$$2$$87","$r$$7$$88","i$$19","n$$26","c$$2","p$$2","q$$2","r$$7","x$$33","BigNatModule$$$subP","BigNatModule$$$isZero","p$$4","BigNatModule$$$equal","p$$7","q$$4","$pa$$96","$qa$$97","$i$$22$$98","pa","qa","BigNatModule$$$compare","p$$9","q$$6","$pa$$2$$108","$qa$$2$$109","$i$$24$$110","pa$$2","qa$$2","i$$24","check$$2","BigNatModule$$$lt","p$$10","q$$7","BigNatModule$$$gte","p$$13","q$$10","BigNatModule$$$mulSchoolBookCarry","$r$$12$$130","$c$$8$$131","$k$$4$$132","value$$2","r$$12","rak$$1","op_Addition","op_BitwiseAnd","toInt","op_Division","BigNatModule$$$mulSchoolBookOneSmall","p$$16","q$$12","value$$3","bp","r$$13","q$$13","rak$$2","BigNatModule$$$mulSchoolBook","p$$18","q$$15","p$$15","q$$11","r$$11","rak","pSmall","qSmall","p$$17","q$$14","value$$4","r$$14","i$$29","pai$$1","qaj","rak$$3","BigNatModule$$$mulSchoolBookNeitherSmall","BigNatModule$002Eencoding","bigL","twoToBigL","bigK","bigN","splits","BigNatModule$$$mkEncoding","bigK$$2","BigNatModule$$$table","i$$32","BigNatModule$$$mul","p$$20","q$$17","BigNatModule$$$scaleSubInPlace","x$$57","a$$5","n$$30","j$$4","z$$7","zLo","x$$59","value$$5","zHi","x$$60","BigNatModule$$$scaleAddInPlace","x$$62","f$$3","a$$8","n$$32","patternInput$$4","patternInput$$5","f$$4","j$$5","z$$8","zLo$$1","x$$64","value$$7","zHi$$1","x$$65","BigNatModule$$$removeFactor","x$$67","a$$11","n$$34","f$$6","p$$8","pn","q$$5","qn","patternInput$$6","f64","f64$$1","$pa$$1$$103","$qa$$1$$104","$i$$23$$105","pa$$1","qa$$1","i$$23","pai","qai","check$$1","BigNatModule$$$divmod","b$$7","a$$12","x$$27","d$$6","p$$21","m$$2","n$$35","BigNatModule$$$two","BigNatModule$$$toFloat","n$$40","$acc$$4$$219","$k$$10$$220","$i$$49$$221","i$$49","evalFloat","BigNatModule$$$ofInt32","n$$41","BigNatModule$$$ofInt64","n$$42","x$$30","r$$4","BigNatModule$$$boundInt64","op_Modulus","BigNatModule$$$embed64","BigNatModule$$$toString","n$$45","degn","kten2ks","$prior$$227","$k$$11$$228","$ten2k$$229","prior","ten2k","digits$$4","isLeading","n$$46","patternInput$$13","digits$$2","n$$47","n$$19","BigNatModule$$$eval32","int32ToString","BigNatModule$$$ofString","isNullOrEmpty","ten","$acc$$5$$235","$i$$50$$236","acc$$5","d$$7","charCodeAt","build","BigNatModule$$$isSmall","n$$48","BigNatModule$$$getSmall","n$$49","BigInteger","signInt","BigInteger$$$$002Ector$$Z2BE94A1","BigInteger$$$nat$$Z67CCE57D","n$$1","BigNatModule$0024$0024$0024isSmall","BigNatModule$0024$0024$0024getSmall","smallLim","smallPosTab","BigInteger$$$create$$Z2BE94A1","n$$2","BigInteger$$$posn$$Z67CCE57D","n$$3","BigInteger$$$negn$$Z67CCE57D","n$$4","BigInteger$$get_SignInt","BigInteger$$get_V","x$$2","BigInteger$$$op_Equality$$56F059C0","x$$3","BigNatModule$0024$0024$0024equal","BigNatModule$0024$0024$0024isZero","BigInteger$$$op_LessThan$$56F059C0","x$$5","y$$2","BigNatModule$0024$0024$0024lt","BigInteger$$$$002Ector$$Z524259A4","n$$6","BigNatModule$0024$0024$0024ofInt32","BigNatModule$0024$0024$0024ofInt64","op_UnaryNegation","op_UnaryNegation_Int32","BigInteger$$$$002Ector$$Z524259C1","n$$7","BigNatModule$0024$0024$0024add","BigNatModule$0024$0024$0024one","BigInteger$$$get_One","one","BigInteger$$$get_Two","two","BigInteger$$$get_Zero","zero","BigInteger$$$op_UnaryNegation$$Z665282C2","z$$1","BigInteger$$$subnn$$6A57060","nx","ny","BigNatModule$0024$0024$0024gte","BigNatModule$0024$0024$0024sub","BigInteger$$$addnn$$6A57060","nx$$1","ny$$1","BigInteger$$get_IsZero","BigInteger$$get_IsOne","x$$11","p$$6","BigInteger$$$op_Addition$$56F059C0","x$$12","BigInteger$$$op_Multiply$$56F059C0","x$$14","y$$6","BigNatModule$0024$0024$0024mul","BigInteger$$$op_LeftShift$$62E082A2","y$$11","BigInteger$$$Pow$$62E082A2","matchValue$$11","x$$71","n$$38","yval","BigNatModule$0024$0024$0024two","$acc$$3$$215","$x$$72$$216","$n$$39$$217","x$$72","n$$39","patternInput$$9","power$$1","BigInteger$$get_ToDouble","BigNatModule$0024$0024$0024toFloat","BigInteger$$$Parse$$Z721C83C5","text$$1","matchValue$$13","BigNatModule$0024$0024$0024ofString","BigNatModule$0024$0024$0024toString","z","n$$17","i$$8","BigNatModule$0024$0024$0024hash","obj$$1","n$$5","nn","BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5","BigInteger$0024$0024$0024get_Zero","BigInteger$0024$0024$0024get_One","BigInteger$0024$0024$0024get_Two","fromInt64","BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259C1","fromInt32","BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4","toDecimal","x$$40","flipTwosComplement","currByte","lowBitFound","firstBitIndex","rangeNumber","fromByteArray","isPositive$$1","buffer","Uint8Array","$accumUInt32$$80","$currIndex$$81","$bytesRemaining$$82","$lowBitFound$$6$$83","accumUInt32","currIndex","bytesRemaining","lowBitFound$$6","value$$14","value$$12","BigInteger$0024$0024$0024op_Addition$0024$002456F059C0","BigInteger$0024$0024$0024op_LeftShift$0024$002462E082A2","BigInteger$0024$0024$0024op_Multiply$0024$002456F059C0","bytesToProcess","patternInput$$7","value$$16","Long","$this","_a","MutableSet$00601","MutableSet$00601$$Add$$2B595","MutableSet$00601$$$$002Ector$$Z6150332D","MutableSet$00601$$TryFindIndex$$2B595","MutableSet$00601$$Clear","MutableSet$00601$$get_Count","MutableSet$00601$$Contains$$2B595","MutableSet$00601$$Remove$$2B595","values$$1","item$$3","add_","SetTree$00601","SetTreeModule$$$SetOne","SetTreeModule$$$SetNode","SetTreeModule$$$height","SetTreeModule$$$mk","l$$2","SetTreeModule$$$rebalance","SetTreeModule$$$add","t$$1","SetTreeModule$002ESetIterator$00601","SetTreeModule$$$collapseLHS","$stack$$104","SetTreeModule$$$mkIterator","s$$13","SetTreeModule$$$current","SetTreeModule$$$alreadyFinished","SetTreeModule$$$notStarted","SetTreeModule$002EmkIEnumerator$00601","s$$14","SetTreeModule$$$mkIEnumerator","s$$15","SetTreeModule$002EmkIEnumerator$00601$$$$002Ector$$Z5B395D56","SetTreeModule$$$compare","s1","s2","$comparer$$17$$112","$l1$$113","$l2$$114","SetTreeModule$$$compareStacks","$target$$115","t1$$6","t2$$6","n1k","n2k","t1$$7","t2$$7","n1k$$1","n2k$$1","n2r","t1$$8","t2$$8","emp","n1k$$2","n1r","n2k$$2","t1$$9","t2$$9","n1k$$3","n1r$$1","n2k$$3","n2r$$1","t1$$10","t2$$10","n1k$$4","t1$$11","n1k$$5","n1l","n1r$$2","t1$$12","n2k$$4","t2$$11","n2k$$5","n2l","n2r$$2","t2$$12","l1","l2","SetTreeModule$$$ofSeq","c$$11","$comparer$$19$$126","$acc$$11$$127","$e$$128","SetTreeModule$$$mkFromEnumerator","SetTreeModule$$$moveNext","FSharpSet","FSharpSet$$$$002Ector$$2528C5CB","FSharpSet$$get_Comparer","__$$4","FSharpSet$$get_Tree","comparer$$28","comparer$$30","comparer$$31","MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D","map$$1","x$$21","String","that$$1","others","keep","skipped","ps","jint","decimals","dot","digitsLeft","jfloat","negativeJFloat","negJint","escape","escapedCharSnippet","anyCharSnippet","otherParser","normalCharSnippet","stringLiteral","withWhitespace","jnull","jbool","jnumber","jstring","jarray","comma","jobject","leftBrace","rightBrace","jvalue","isDateOffset","dateOffset","isBigInt","bigInt","activePatternResult4402","activePatternResult4401","number","activePatternResult4400","activePatternResult4398","parseNative'","activePatternResult4397","utc","getUTCHours","getHours","baseDate"],"mappings":"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","file":"app.bed6989cd1ee37eccd4d.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([283,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { anonRecord as makeAnonRecord, Record, Union } from \"./Types\";\nimport { compareArraysWith, equalArraysWith } from \"./Util\";\nexport class CaseInfo {\n constructor(declaringType, tag, name, fields) {\n this.declaringType = declaringType;\n this.tag = tag;\n this.name = name;\n this.fields = fields;\n }\n}\nexport class TypeInfo {\n constructor(fullname, generics, construct, fields, cases, enumCases) {\n this.fullname = fullname;\n this.generics = generics;\n this.construct = construct;\n this.fields = fields;\n this.cases = cases;\n this.enumCases = enumCases;\n }\n toString() {\n return fullName(this);\n }\n Equals(other) {\n return equals(this, other);\n }\n CompareTo(other) {\n return compare(this, other);\n }\n}\nexport function getGenerics(t) {\n return t.generics != null ? t.generics : [];\n}\nexport function equals(t1, t2) {\n if (t1.fullname === \"\") { // Anonymous records\n return t2.fullname === \"\"\n && equalArraysWith(getRecordElements(t1), getRecordElements(t2), ([k1, v1], [k2, v2]) => k1 === k2 && equals(v1, v2));\n }\n else {\n return t1.fullname === t2.fullname\n && equalArraysWith(getGenerics(t1), getGenerics(t2), equals);\n }\n}\n// System.Type is not comparable in .NET, but let's implement this\n// in case users want to create a dictionary with types as keys\nexport function compare(t1, t2) {\n if (t1.fullname !== t2.fullname) {\n return t1.fullname < t2.fullname ? -1 : 1;\n }\n else {\n return compareArraysWith(getGenerics(t1), getGenerics(t2), compare);\n }\n}\nexport function class_type(fullname, generics, construct) {\n return new TypeInfo(fullname, generics, construct);\n}\nexport function record_type(fullname, generics, construct, fields) {\n return new TypeInfo(fullname, generics, construct, fields);\n}\nexport function anonRecord_type(...fields) {\n return new TypeInfo(\"\", undefined, undefined, () => fields);\n}\nexport function union_type(fullname, generics, construct, cases) {\n const t = new TypeInfo(fullname, generics, construct, undefined, () => cases().map((x, i) => typeof x === \"string\"\n ? new CaseInfo(t, i, x)\n : new CaseInfo(t, i, x[0], x[1])));\n return t;\n}\nexport function tuple_type(...generics) {\n return new TypeInfo(\"System.Tuple`\" + generics.length, generics);\n}\nexport function delegate_type(...generics) {\n return new TypeInfo(\"System.Func`\" + generics.length, generics);\n}\nexport function lambda_type(argType, returnType) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpFunc`2\", [argType, returnType]);\n}\nexport function option_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpOption`1\", [generic]);\n}\nexport function list_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Collections.FSharpList`1\", [generic]);\n}\nexport function array_type(generic) {\n return new TypeInfo(generic.fullname + \"[]\", [generic]);\n}\nexport function enum_type(fullname, underlyingType, enumCases) {\n return new TypeInfo(fullname, [underlyingType], undefined, undefined, undefined, enumCases);\n}\nexport const obj_type = new TypeInfo(\"System.Object\");\nexport const unit_type = new TypeInfo(\"Microsoft.FSharp.Core.Unit\");\nexport const char_type = new TypeInfo(\"System.Char\");\nexport const string_type = new TypeInfo(\"System.String\");\nexport const bool_type = new TypeInfo(\"System.Boolean\");\nexport const int8_type = new TypeInfo(\"System.SByte\");\nexport const uint8_type = new TypeInfo(\"System.Byte\");\nexport const int16_type = new TypeInfo(\"System.Int16\");\nexport const uint16_type = new TypeInfo(\"System.UInt16\");\nexport const int32_type = new TypeInfo(\"System.Int32\");\nexport const uint32_type = new TypeInfo(\"System.UInt32\");\nexport const float32_type = new TypeInfo(\"System.Single\");\nexport const float64_type = new TypeInfo(\"System.Double\");\nexport const decimal_type = new TypeInfo(\"System.Decimal\");\nexport function name(info) {\n if (Array.isArray(info)) {\n return info[0];\n }\n else if (info instanceof CaseInfo) {\n return info.name;\n }\n else {\n const i = info.fullname.lastIndexOf(\".\");\n return i === -1 ? info.fullname : info.fullname.substr(i + 1);\n }\n}\nexport function fullName(t) {\n const gen = t.generics != null && !isArray(t) ? t.generics : [];\n if (gen.length > 0) {\n return t.fullname + \"[\" + gen.map((x) => fullName(x)).join(\",\") + \"]\";\n }\n else {\n return t.fullname;\n }\n}\nexport function namespace(t) {\n const i = t.fullname.lastIndexOf(\".\");\n return i === -1 ? \"\" : t.fullname.substr(0, i);\n}\nexport function isArray(t) {\n return t.fullname.endsWith(\"[]\");\n}\nexport function getElementType(t) {\n var _a;\n return isArray(t) ? (_a = t.generics) === null || _a === void 0 ? void 0 : _a[0] : undefined;\n}\nexport function isGenericType(t) {\n return t.generics != null && t.generics.length > 0;\n}\nexport function isEnum(t) {\n return t.enumCases != null && t.enumCases.length > 0;\n}\n/**\n * This doesn't replace types for fields (records) or cases (unions)\n * but it should be enough for type comparison purposes\n */\nexport function getGenericTypeDefinition(t) {\n return t.generics == null ? t : new TypeInfo(t.fullname, t.generics.map(() => obj_type));\n}\nexport function getEnumUnderlyingType(t) {\n var _a;\n return (_a = t.generics) === null || _a === void 0 ? void 0 : _a[0];\n}\nexport function getEnumValues(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[1]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function getEnumNames(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[0]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nfunction getEnumCase(t, v) {\n if (t.enumCases != null) {\n if (typeof v === \"string\") {\n for (const kv of t.enumCases) {\n if (kv[0] === v) {\n return kv;\n }\n }\n throw new Error(`'${v}' was not found in ${t.fullname}`);\n }\n else {\n for (const kv of t.enumCases) {\n if (kv[1] === v) {\n return kv;\n }\n }\n // .NET returns the number even if it doesn't match any of the cases\n return [\"\", v];\n }\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function parseEnum(t, str) {\n // TODO: better int parsing here, parseInt ceils floats: \"4.8\" -> 4\n const value = parseInt(str, 10);\n return getEnumCase(t, isNaN(value) ? str : value)[1];\n}\nexport function tryParseEnum(t, str) {\n try {\n const v = parseEnum(t, str);\n return [true, v];\n }\n catch (_a) {\n // supress error\n }\n return [false, NaN];\n}\nexport function getEnumName(t, v) {\n return getEnumCase(t, v)[0];\n}\nexport function isEnumDefined(t, v) {\n try {\n const kv = getEnumCase(t, v);\n return kv[0] != null && kv[0] !== \"\";\n }\n catch (_a) {\n // supress error\n }\n return false;\n}\n// FSharpType\nexport function getUnionCases(t) {\n if (t.cases != null) {\n return t.cases();\n }\n else {\n throw new Error(`${t.fullname} is not an F# union type`);\n }\n}\nexport function getRecordElements(t) {\n if (t.fields != null) {\n return t.fields();\n }\n else {\n throw new Error(`${t.fullname} is not an F# record type`);\n }\n}\nexport function getTupleElements(t) {\n if (isTuple(t) && t.generics != null) {\n return t.generics;\n }\n else {\n throw new Error(`${t.fullname} is not a tuple type`);\n }\n}\nexport function getFunctionElements(t) {\n if (isFunction(t) && t.generics != null) {\n const gen = t.generics;\n return [gen[0], gen[1]];\n }\n else {\n throw new Error(`${t.fullname} is not an F# function type`);\n }\n}\nexport function isUnion(t) {\n return t instanceof TypeInfo ? t.cases != null : t instanceof Union;\n}\nexport function isRecord(t) {\n return t instanceof TypeInfo ? t.fields != null : t instanceof Record;\n}\nexport function isTuple(t) {\n return t.fullname.startsWith(\"System.Tuple\");\n}\n// In .NET this is false for delegates\nexport function isFunction(t) {\n return t.fullname === \"Microsoft.FSharp.Core.FSharpFunc`2\";\n}\n// FSharpValue\nexport function getUnionFields(v, t) {\n const cases = getUnionCases(t);\n const case_ = cases[v.tag];\n if (case_ == null) {\n throw new Error(`Cannot find case ${v.name} in union type`);\n }\n return [case_, v.fields];\n}\nexport function getUnionCaseFields(uci) {\n return uci.fields == null ? [] : uci.fields;\n}\nexport function getRecordFields(v) {\n return Object.keys(v).map((k) => v[k]);\n}\nexport function getRecordField(v, field) {\n return v[field[0]];\n}\nexport function getTupleFields(v) {\n return v;\n}\nexport function getTupleField(v, i) {\n return v[i];\n}\nexport function makeUnion(uci, values) {\n const expectedLength = (uci.fields || []).length;\n if (values.length !== expectedLength) {\n throw new Error(`Expected an array of length ${expectedLength} but got ${values.length}`);\n }\n return uci.declaringType.construct != null\n ? new uci.declaringType.construct(uci.tag, uci.name, ...values)\n : {};\n}\nexport function makeRecord(t, values) {\n const fields = getRecordElements(t);\n if (fields.length !== values.length) {\n throw new Error(`Expected an array of length ${fields.length} but got ${values.length}`);\n }\n return t.construct != null\n ? new t.construct(...values)\n : makeAnonRecord(fields.reduce((obj, [key, _t], i) => {\n obj[key] = values[i];\n return obj;\n }, {}));\n}\nexport function makeTuple(values, _t) {\n return values;\n}\nexport function makeGenericType(t, generics) {\n return new TypeInfo(t.fullname, generics, t.construct, t.fields, t.cases);\n}\nexport function createInstance(t, consArgs) {\n // TODO: Check if consArgs length is same as t.construct?\n // (Arg types can still be different)\n if (typeof t.construct === \"function\") {\n return new t.construct(...(consArgs !== null && consArgs !== void 0 ? consArgs : []));\n }\n else {\n throw new Error(`Cannot access constructor of ${t.fullname}`);\n }\n}\nexport function getValue(propertyInfo, v) {\n return v[propertyInfo[0]];\n}\n// Fable.Core.Reflection\nfunction assertUnion(x) {\n if (!(x instanceof Union)) {\n throw new Error(`Value is not an F# union type`);\n }\n}\nexport function getCaseTag(x) {\n assertUnion(x);\n return x.tag;\n}\nexport function getCaseName(x) {\n assertUnion(x);\n return x.name;\n}\nexport function getCaseFields(x) {\n assertUnion(x);\n return x.fields;\n}\n//# sourceMappingURL=Reflection.js.map","// https://github.com/MikeMcl/big.js/blob/01b3ce3a6b0ba7b42442ea48ec4ffc88d1669ec4/big.mjs\n/* tslint:disable */\nimport { combineHashCodes } from \"../Util\";\n// The shared prototype object.\nvar P = {\n GetHashCode() { return combineHashCodes([this.s, this.e].concat(this.c)); },\n Equals(x) { return !this.cmp(x); },\n CompareTo(x) { return this.cmp(x); },\n};\n/*\n * big.js v5.2.2\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\n * Copyright (c) 2018 Michael Mclaughlin \n * https://github.com/MikeMcl/big.js/LICENCE\n */\n/************************************** EDITABLE DEFAULTS *****************************************/\n// The default values below must be integers within the stated ranges.\n/*\n * The maximum number of decimal places (DP) of the results of operations involving division:\n * div and sqrt, and pow with negative exponents.\n */\nvar DP = 28, // 0 to MAX_DP\n/*\n * The rounding mode (RM) used when rounding to the above decimal places.\n *\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\n * 3 Away from zero. (ROUND_UP)\n */\nRM = 1, // 0, 1, 2 or 3\n// The maximum value of DP and Big.DP.\nMAX_DP = 1E6, // 0 to 1000000\n// The maximum magnitude of the exponent argument to the pow method.\nMAX_POWER = 1E6, // 1 to 1000000\n/*\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\n * (JavaScript numbers: -7)\n * -1000000 is the minimum recommended exponent value of a Big.\n */\nNE = -29, // 0 to -1000000\n/*\n * The positive exponent (PE) at and above which toString returns exponential notation.\n * (JavaScript numbers: 21)\n * 1000000 is the maximum recommended exponent value of a Big.\n * (This limit is not enforced or checked.)\n */\nPE = 29, // 0 to 1000000\n/**************************************************************************************************/\n// Error messages.\nNAME = '[big.js] ', INVALID = NAME + 'Invalid ', INVALID_DP = INVALID + 'decimal places', INVALID_RM = INVALID + 'rounding mode', DIV_BY_ZERO = NAME + 'Division by zero', UNDEFINED = void 0, NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\n/*\n * Create and return a Big constructor.\n *\n */\nfunction _Big_() {\n /*\n * The Big constructor and exported function.\n * Create and return a new instance of a Big number object.\n *\n * n {number|string|Big} A numeric value.\n */\n function Big(n) {\n var x = this;\n // Enable constructor usage without new.\n if (!(x instanceof Big))\n return n === UNDEFINED ? _Big_() : new Big(n);\n // Duplicate.\n if (n instanceof Big) {\n x.s = n.s;\n x.e = n.e;\n x.c = n.c.slice();\n normalize(x);\n }\n else {\n parse(x, n);\n }\n /*\n * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which\n * points to Object.\n */\n x.constructor = Big;\n }\n Big.prototype = P;\n Big.DP = DP;\n Big.RM = RM;\n Big.NE = NE;\n Big.PE = PE;\n Big.version = '5.2.2';\n return Big;\n}\nfunction normalize(x) {\n x = round(x, DP, 0);\n if (x.c.length > 1 && !x.c[0]) {\n let i = x.c.findIndex(x => x);\n x.c = x.c.slice(i);\n x.e = x.e - i;\n }\n}\n/*\n * Parse the number or string value passed to a Big constructor.\n *\n * x {Big} A Big number instance.\n * n {number|string} A numeric value.\n */\nfunction parse(x, n) {\n var e, i, nl;\n // Minus zero?\n if (n === 0 && 1 / n < 0)\n n = '-0';\n else if (!NUMERIC.test(n += ''))\n throw Error(INVALID + 'number');\n // Determine sign.\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\n // Decimal point?\n if ((e = n.indexOf('.')) > -1)\n n = n.replace('.', '');\n // Exponential form?\n if ((i = n.search(/e/i)) > 0) {\n // Determine exponent.\n if (e < 0)\n e = i;\n e += +n.slice(i + 1);\n n = n.substring(0, i);\n }\n else if (e < 0) {\n // Integer.\n e = n.length;\n }\n nl = n.length;\n // Determine leading zeros before decimal point.\n for (i = 0; i < e && i < nl && n.charAt(i) == '0';)\n ++i;\n // older version (ignores decimal point).\n // // Determine leading zeros.\n // for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\n if (i == nl) {\n // Zero.\n x.c = [x.e = 0];\n }\n else {\n x.e = e - i - 1;\n x.c = [];\n // Convert string to array of digits without leading zeros\n for (e = 0; i < nl;)\n x.c[e++] = +n.charAt(i++);\n // older version (doesn't keep trailing zeroes).\n // // Determine trailing zeros.\n // for (; nl > 0 && n.charAt(--nl) == '0';);\n // // Convert string to array of digits without leading/trailing zeros.\n // for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\n }\n x = round(x, Big.DP, Big.RM);\n return x;\n}\n/*\n * Round Big x to a maximum of dp decimal places using rounding mode rm.\n * Called by stringify, P.div, P.round and P.sqrt.\n *\n * x {Big} The Big to round.\n * dp {number} Integer, 0 to MAX_DP inclusive.\n * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP)\n * [more] {boolean} Whether the result of division was truncated.\n */\nfunction round(x, dp, rm, more) {\n var xc = x.c, i = x.e + dp + 1;\n if (i < xc.length) {\n if (rm === 1) {\n // xc[i] is the digit after the digit that may be rounded up.\n more = xc[i] >= 5;\n }\n else if (rm === 2) {\n more = xc[i] > 5 || xc[i] == 5 &&\n (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1);\n }\n else if (rm === 3) {\n more = more || !!xc[0];\n }\n else {\n more = false;\n if (rm !== 0)\n throw Error(INVALID_RM);\n }\n if (i < 1) {\n xc.length = 1;\n if (more) {\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\n x.e = -dp;\n xc[0] = 1;\n }\n else {\n // Zero.\n xc[0] = x.e = 0;\n }\n }\n else {\n // Remove any digits after the required decimal places.\n xc.length = i--;\n // Round up?\n if (more) {\n // Rounding up may mean the previous digit has to be rounded up.\n for (; ++xc[i] > 9;) {\n xc[i] = 0;\n if (!i--) {\n ++x.e;\n xc.unshift(1);\n }\n }\n }\n // Remove trailing zeros.\n for (i = xc.length; !xc[--i];)\n xc.pop();\n }\n }\n else if (rm < 0 || rm > 3 || rm !== ~~rm) {\n throw Error(INVALID_RM);\n }\n return x;\n}\n/*\n * Return a string representing the value of Big x in normal or exponential notation.\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\n *\n * x {Big}\n * id? {number} Caller id.\n * 1 toExponential\n * 2 toFixed\n * 3 toPrecision\n * 4 valueOf\n * n? {number|undefined} Caller's argument.\n * k? {number|undefined}\n */\nfunction stringify(x, id, n, k) {\n var e, s, Big = x.constructor, z = !x.c[0];\n if (n !== UNDEFINED) {\n if (n !== ~~n || n < (id == 3) || n > MAX_DP) {\n throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP);\n }\n x = new Big(x);\n // The index of the digit that may be rounded up.\n n = k - x.e;\n // Round?\n if (x.c.length > ++k)\n round(x, n, Big.RM);\n // toFixed: recalculate k as x.e may have changed if value rounded up.\n if (id == 2)\n k = x.e + n + 1;\n // Append zeros?\n for (; x.c.length < k;)\n x.c.push(0);\n }\n e = x.e;\n s = x.c.join('');\n n = s.length;\n // Exponential notation?\n if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) {\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\n // Normal notation.\n }\n else if (e < 0) {\n for (; ++e;)\n s = '0' + s;\n s = '0.' + s;\n }\n else if (e > 0) {\n if (++e > n)\n for (e -= n; e--;)\n s += '0';\n else if (e < n)\n s = s.slice(0, e) + '.' + s.slice(e);\n }\n else if (n > 1) {\n s = s.charAt(0) + '.' + s.slice(1);\n }\n return x.s < 0 && (!z || id == 4) ? '-' + s : s;\n}\n// Prototype/instance methods\n/*\n * Return a new Big whose value is the absolute value of this Big.\n */\nP.abs = function () {\n var x = new this.constructor(this);\n x.s = 1;\n return x;\n};\n/*\n * Return 1 if the value of this Big is greater than the value of Big y,\n * -1 if the value of this Big is less than the value of Big y, or\n * 0 if they have the same value.\n*/\nP.cmp = function (y) {\n var isneg, Big = this.constructor, x = new Big(this), y = new Big(y), xc = x.c, yc = y.c, i = x.s, j = y.s, k = x.e, l = y.e;\n // Either zero?\n if (!xc[0] || !yc[0])\n return !xc[0] ? !yc[0] ? 0 : -j : i;\n // Signs differ?\n if (i != j)\n return i;\n isneg = i < 0;\n // Compare exponents.\n if (k != l)\n return k > l ^ isneg ? 1 : -1;\n // Compare digit by digit.\n j = Math.max(xc.length, yc.length);\n for (i = 0; i < j; i++) {\n k = i < xc.length ? xc[i] : 0;\n l = i < yc.length ? yc[i] : 0;\n if (k != l)\n return k > l ^ isneg ? 1 : -1;\n }\n return 0;\n // old version (doesn't compare well trailing zeroes, e.g. 1.0 with 1.00)\n // j = (k = xc.length) < (l = yc.length) ? k : l;\n // // Compare digit by digit.\n // for (i = -1; ++i < j;) {\n // if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\n // }\n // // Compare lengths.\n // return k == l ? 0 : k > l ^ isneg ? 1 : -1;\n};\n/*\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\n */\nP.div = function (y) {\n var Big = this.constructor, x = new Big(this), y = new Big(y), a = x.c, // dividend\n b = y.c, // divisor\n k = x.s == y.s ? 1 : -1, dp = Big.DP;\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP)\n throw Error(INVALID_DP);\n // Divisor is zero?\n if (!b[0])\n throw Error(DIV_BY_ZERO);\n // Dividend is 0? Return +-0.\n if (!a[0])\n return new Big(k * 0);\n var bl, bt, n, cmp, ri, bz = b.slice(), ai = bl = b.length, al = a.length, r = a.slice(0, bl), // remainder\n rl = r.length, q = y, // quotient\n qc = q.c = [], qi = 0, d = dp + (q.e = x.e - y.e) + 1; // number of digits of the result\n q.s = k;\n k = d < 0 ? 0 : d;\n // Create version of divisor with leading zero.\n bz.unshift(0);\n // Add zeros to make remainder as long as divisor.\n for (; rl++ < bl;)\n r.push(0);\n do {\n // n is how many times the divisor goes into current remainder.\n for (n = 0; n < 10; n++) {\n // Compare divisor and remainder.\n if (bl != (rl = r.length)) {\n cmp = bl > rl ? 1 : -1;\n }\n else {\n for (ri = -1, cmp = 0; ++ri < bl;) {\n if (b[ri] != r[ri]) {\n cmp = b[ri] > r[ri] ? 1 : -1;\n break;\n }\n }\n }\n // If divisor < remainder, subtract divisor from remainder.\n if (cmp < 0) {\n // Remainder can't be more than 1 digit longer than divisor.\n // Equalise lengths using divisor with extra leading zero?\n for (bt = rl == bl ? b : bz; rl;) {\n if (r[--rl] < bt[rl]) {\n ri = rl;\n for (; ri && !r[--ri];)\n r[ri] = 9;\n --r[ri];\n r[rl] += 10;\n }\n r[rl] -= bt[rl];\n }\n for (; !r[0];)\n r.shift();\n }\n else {\n break;\n }\n }\n // Add the digit n to the result array.\n qc[qi++] = cmp ? n : ++n;\n // Update the remainder.\n if (r[0] && cmp)\n r[rl] = a[ai] || 0;\n else\n r = [a[ai]];\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\n // Leading zero? Do not remove if result is simply zero (qi == 1).\n if (!qc[0] && qi != 1) {\n // There can't be more than one zero.\n qc.shift();\n q.e--;\n }\n // Round?\n if (qi > d)\n round(q, dp, Big.RM, r[0] !== UNDEFINED);\n return q;\n};\n/*\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\n */\nP.eq = function (y) {\n return !this.cmp(y);\n};\n/*\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\n * false.\n */\nP.gt = function (y) {\n return this.cmp(y) > 0;\n};\n/*\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\n * return false.\n */\nP.gte = function (y) {\n return this.cmp(y) > -1;\n};\n/*\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\n */\nP.lt = function (y) {\n return this.cmp(y) < 0;\n};\n/*\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\n * return false.\n */\nP.lte = function (y) {\n return this.cmp(y) < 1;\n};\n/*\n * Return a new Big whose value is the value of this Big minus the value of Big y.\n */\nP.minus = P.sub = function (y) {\n var i, j, t, xlty, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n // Signs differ?\n if (a != b) {\n y.s = -b;\n return x.plus(y);\n }\n var xc = x.c.slice(), xe = x.e, yc = y.c, ye = y.e;\n // Either zero?\n if (!xc[0] || !yc[0]) {\n // y is non-zero? x is non-zero? Or both are zero.\n return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0);\n }\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\n if (a = xe - ye) {\n if (xlty = a < 0) {\n a = -a;\n t = xc;\n }\n else {\n ye = xe;\n t = yc;\n }\n t.reverse();\n for (b = a; b--;)\n t.push(0);\n t.reverse();\n }\n else {\n // Exponents equal. Check digit by digit.\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\n for (a = b = 0; b < j; b++) {\n if (xc[b] != yc[b]) {\n xlty = xc[b] < yc[b];\n break;\n }\n }\n }\n // x < y? Point xc to the array of the bigger number.\n if (xlty) {\n t = xc;\n xc = yc;\n yc = t;\n y.s = -y.s;\n }\n /*\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\n * needs to start at yc.length.\n */\n if ((b = (j = yc.length) - (i = xc.length)) > 0)\n for (; b--;)\n xc[i++] = 0;\n // Subtract yc from xc.\n for (b = i; j > a;) {\n if (xc[--j] < yc[j]) {\n for (i = j; i && !xc[--i];)\n xc[i] = 9;\n --xc[i];\n xc[j] += 10;\n }\n xc[j] -= yc[j];\n }\n // Remove trailing zeros.\n for (; xc[--b] === 0;)\n xc.pop();\n // Remove leading zeros and adjust exponent accordingly.\n for (; xc[0] === 0;) {\n xc.shift();\n --ye;\n }\n if (!xc[0]) {\n // n - n = +0\n y.s = 1;\n // Result must be zero.\n xc = [ye = 0];\n }\n y.c = xc;\n y.e = ye;\n return y;\n};\n/*\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\n */\nP.mod = function (y) {\n var ygtx, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n if (!y.c[0])\n throw Error(DIV_BY_ZERO);\n x.s = y.s = 1;\n ygtx = y.cmp(x) == 1;\n x.s = a;\n y.s = b;\n if (ygtx)\n return new Big(x);\n a = Big.DP;\n b = Big.RM;\n Big.DP = Big.RM = 0;\n x = x.div(y);\n Big.DP = a;\n Big.RM = b;\n return this.minus(x.times(y));\n};\n/*\n * Return a new Big whose value is the value of this Big plus the value of Big y.\n */\nP.plus = P.add = function (y) {\n var t, Big = this.constructor, x = new Big(this), y = new Big(y), a = x.s, b = y.s;\n // Signs differ?\n if (a != b) {\n y.s = -b;\n return x.minus(y);\n }\n var xe = x.e, xc = x.c, ye = y.e, yc = y.c;\n // Either zero? y is non-zero? x is non-zero? Or both are zero.\n if (!xc[0] || !yc[0])\n return yc[0] ? y : new Big(xc[0] ? x : a * 0);\n xc = xc.slice();\n // Prepend zeros to equalise exponents.\n // Note: reverse faster than unshifts.\n if (a = xe - ye) {\n if (a > 0) {\n ye = xe;\n t = yc;\n }\n else {\n a = -a;\n t = xc;\n }\n t.reverse();\n for (; a--;)\n t.push(0);\n t.reverse();\n }\n // Point xc to the longer array.\n if (xc.length - yc.length < 0) {\n t = yc;\n yc = xc;\n xc = t;\n }\n a = yc.length;\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\n for (b = 0; a; xc[a] %= 10)\n b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0;\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\n if (b) {\n xc.unshift(b);\n ++ye;\n }\n // Remove trailing zeros.\n for (a = xc.length; xc[--a] === 0;)\n xc.pop();\n y.c = xc;\n y.e = ye;\n return y;\n};\n/*\n * Return a Big whose value is the value of this Big raised to the power n.\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\n * mode Big.RM.\n *\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\n */\nP.pow = function (n) {\n var Big = this.constructor, x = new Big(this), y = new Big(1), one = new Big(1), isneg = n < 0;\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER)\n throw Error(INVALID + 'exponent');\n if (isneg)\n n = -n;\n for (;;) {\n if (n & 1)\n y = y.times(x);\n n >>= 1;\n if (!n)\n break;\n x = x.times(x);\n }\n return isneg ? one.div(y) : y;\n};\n/*\n * Return a new Big whose value is the value of this Big rounded using rounding mode rm\n * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a\n * multiple of 10**-dp.\n * If dp is not specified, round to 0 decimal places.\n * If rm is not specified, use Big.RM.\n *\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\n * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP)\n */\nP.round = function (dp, rm) {\n var Big = this.constructor;\n if (dp === UNDEFINED)\n dp = 0;\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP)\n throw Error(INVALID_DP);\n return round(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm);\n};\n/*\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\n */\nP.sqrt = function () {\n var r, c, t, Big = this.constructor, x = new Big(this), s = x.s, e = x.e, half = new Big(0.5);\n // Zero?\n if (!x.c[0])\n return new Big(x);\n // Negative?\n if (s < 0)\n throw Error(NAME + 'No square root');\n // Estimate.\n s = Math.sqrt(x + '');\n // Math.sqrt underflow/overflow?\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\n if (s === 0 || s === 1 / 0) {\n c = x.c.join('');\n if (!(c.length + e & 1))\n c += '0';\n s = Math.sqrt(c);\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\n r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\n }\n else {\n r = new Big(s);\n }\n e = r.e + (Big.DP += 4);\n // Newton-Raphson iteration.\n do {\n t = r;\n r = half.times(t.plus(x.div(t)));\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\n return round(r, Big.DP -= 4, Big.RM);\n};\n/*\n * Return a new Big whose value is the value of this Big times the value of Big y.\n */\nP.times = P.mul = function (y) {\n var c, Big = this.constructor, x = new Big(this), y = new Big(y), xc = x.c, yc = y.c, a = xc.length, b = yc.length, i = x.e, j = y.e;\n // Determine sign of result.\n y.s = x.s == y.s ? 1 : -1;\n // Return signed 0 if either 0.\n if (!xc[0] || !yc[0])\n return new Big(y.s * 0);\n // Initialise exponent of result as x.e + y.e.\n y.e = i + j;\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\n if (a < b) {\n c = xc;\n xc = yc;\n yc = c;\n j = a;\n a = b;\n b = j;\n }\n // Initialise coefficient array of result with zeros.\n for (c = new Array(j = a + b); j--;)\n c[j] = 0;\n // Multiply.\n // i is initially xc.length.\n for (i = b; i--;) {\n b = 0;\n // a is yc.length.\n for (j = a + i; j > i;) {\n // Current sum of products at this digit position, plus carry.\n b = c[j] + yc[i] * xc[j - i - 1] + b;\n c[j--] = b % 10;\n // carry\n b = b / 10 | 0;\n }\n c[j] = (c[j] + b) % 10;\n }\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\n if (b)\n ++y.e;\n else\n c.shift();\n // Remove trailing zeros.\n for (i = c.length; !c[--i];)\n c.pop();\n y.c = c;\n return y;\n};\n/*\n * Return a string representing the value of this Big in exponential notation to dp fixed decimal\n * places and rounded using Big.RM.\n *\n * dp? {number} Integer, 0 to MAX_DP inclusive.\n */\nP.toExponential = function (dp) {\n return stringify(this, 1, dp, dp);\n};\n/*\n * Return a string representing the value of this Big in normal notation to dp fixed decimal\n * places and rounded using Big.RM.\n *\n * dp? {number} Integer, 0 to MAX_DP inclusive.\n *\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\n */\nP.toFixed = function (dp) {\n return stringify(this, 2, dp, this.e + dp);\n};\n/*\n * Return a string representing the value of this Big rounded to sd significant digits using\n * Big.RM. Use exponential notation if sd is less than the number of digits necessary to represent\n * the integer part of the value in normal notation.\n *\n * sd {number} Integer, 1 to MAX_DP inclusive.\n */\nP.toPrecision = function (sd) {\n return stringify(this, 3, sd, sd - 1);\n};\n/*\n * Return a string representing the value of this Big.\n * Return exponential notation if this Big has a positive exponent equal to or greater than\n * Big.PE, or a negative exponent equal to or less than Big.NE.\n * Omit the sign for negative zero.\n */\nP.toString = function () {\n return stringify(this);\n};\n/*\n * Return a string representing the value of this Big.\n * Return exponential notation if this Big has a positive exponent equal to or greater than\n * Big.PE, or a negative exponent equal to or less than Big.NE.\n * Include the sign for negative zero.\n */\nP.valueOf = P.toJSON = function () {\n return stringify(this, 4);\n};\n// Export\nexport var Big = _Big_();\nexport default Big;\n//# sourceMappingURL=big.js.map","import Decimal from \"./lib/big\";\nexport default Decimal;\nexport const get_Zero = new Decimal(0);\nexport const get_One = new Decimal(1);\nexport const get_MinusOne = new Decimal(-1);\nexport const get_MaxValue = new Decimal(\"79228162514264337593543950335\");\nexport const get_MinValue = new Decimal(\"-79228162514264337593543950335\");\nexport function compare(x, y) {\n return x.cmp(y);\n}\nexport function equals(x, y) {\n return !x.cmp(y);\n}\nexport function abs(x) {\n return x.abs();\n}\nexport function round(x, digits = 0) {\n return x.round(digits, 2 /* ROUND_HALF_EVEN */);\n}\nexport function truncate(x) {\n return x.round(0, 0 /* ROUND_DOWN */);\n}\nexport function ceiling(x) {\n return x.round(0, x.cmp(0) >= 0 ? 3 /* ROUND_UP */ : 0 /* ROUND_DOWN */);\n}\nexport function floor(x) {\n return x.round(0, x.cmp(0) >= 0 ? 0 /* ROUND_DOWN */ : 3 /* ROUND_UP */);\n}\nexport function pow(x, n) {\n return x.pow(n);\n}\nexport function sqrt(x) {\n return x.sqrt();\n}\nexport function op_Addition(x, y) {\n return x.add(y);\n}\nexport function op_Subtraction(x, y) {\n return x.sub(y);\n}\nexport function op_Multiply(x, y) {\n return x.mul(y);\n}\nexport function op_Division(x, y) {\n return x.div(y);\n}\nexport function op_Modulus(x, y) {\n return x.mod(y);\n}\nexport function op_UnaryNegation(x) {\n const x2 = new Decimal(x);\n x2.s = -x2.s || 0;\n return x2;\n}\nexport const add = op_Addition;\nexport const subtract = op_Subtraction;\nexport const multiply = op_Multiply;\nexport const divide = op_Division;\nexport const remainder = op_Modulus;\nexport const negate = op_UnaryNegation;\nexport function toString(x) {\n return x.toString();\n}\nexport function tryParse(str) {\n try {\n return [true, new Decimal(str.trim())];\n }\n catch (_a) {\n return [false, get_Zero];\n }\n}\nexport function parse(str) {\n const [ok, value] = tryParse(str);\n if (ok) {\n return value;\n }\n else {\n throw new Error(\"Input string was not in a correct format.\");\n }\n}\nexport function toNumber(x) {\n return +x;\n}\nfunction decimalToHex(dec, bitSize) {\n const hex = new Uint8Array(bitSize / 4 | 0);\n let hexCount = 1;\n for (let d = 0; d < dec.length; d++) {\n let value = dec[d];\n for (let i = 0; i < hexCount; i++) {\n const digit = hex[i] * 10 + value | 0;\n hex[i] = digit & 0xF;\n value = digit >> 4;\n }\n if (value !== 0) {\n hex[hexCount++] = value;\n }\n }\n return hex.slice(0, hexCount); // digits in reverse order\n}\nfunction hexToDecimal(hex, bitSize) {\n const dec = new Uint8Array(bitSize * 301 / 1000 + 1 | 0);\n let decCount = 1;\n for (let d = hex.length - 1; d >= 0; d--) {\n let carry = hex[d];\n for (let i = 0; i < decCount; i++) {\n const val = dec[i] * 16 + carry | 0;\n dec[i] = (val % 10) | 0;\n carry = (val / 10) | 0;\n }\n while (carry > 0) {\n dec[decCount++] = (carry % 10) | 0;\n carry = (carry / 10) | 0;\n }\n }\n return dec.slice(0, decCount); // digits in reverse order\n}\nfunction setInt32Bits(hexDigits, bits, offset) {\n for (let i = 0; i < 8; i++) {\n hexDigits[offset + i] = (bits >> (i * 4)) & 0xF;\n }\n}\nfunction getInt32Bits(hexDigits, offset) {\n let bits = 0;\n for (let i = 0; i < 8; i++) {\n bits = bits | (hexDigits[offset + i] << (i * 4));\n }\n return bits;\n}\nexport function fromIntArray(bits) {\n return fromInts(bits[0], bits[1], bits[2], bits[3]);\n}\nexport function fromInts(low, mid, high, signExp) {\n const isNegative = signExp < 0;\n const scale = (signExp >> 16) & 0x7F;\n return fromParts(low, mid, high, isNegative, scale);\n}\nexport function fromParts(low, mid, high, isNegative, scale) {\n const bitSize = 96;\n const hexDigits = new Uint8Array(bitSize / 4);\n setInt32Bits(hexDigits, low, 0);\n setInt32Bits(hexDigits, mid, 8);\n setInt32Bits(hexDigits, high, 16);\n const decDigits = hexToDecimal(hexDigits, bitSize);\n scale = scale & 0x7F;\n const big = new Decimal(0);\n big.c = Array.from(decDigits.reverse());\n big.e = decDigits.length - scale - 1;\n big.s = isNegative ? -1 : 1;\n const d = new Decimal(big);\n return d;\n}\nexport function getBits(d) {\n const bitSize = 96;\n const decDigits = Uint8Array.from(d.c);\n const hexDigits = decimalToHex(decDigits, bitSize);\n const low = getInt32Bits(hexDigits, 0);\n const mid = getInt32Bits(hexDigits, 8);\n const high = getInt32Bits(hexDigits, 16);\n const decStr = d.toString();\n const dotPos = decStr.indexOf(\".\");\n const scale = dotPos < 0 ? 0 : decStr.length - dotPos - 1;\n const signExp = ((scale & 0x7F) << 16) | (d.s < 0 ? 0x80000000 : 0);\n return [low, mid, high, signExp];\n}\nexport function makeRangeStepFunction(step, last) {\n const stepComparedWithZero = step.cmp(get_Zero);\n if (stepComparedWithZero === 0) {\n throw new Error(\"The step of a range cannot be zero\");\n }\n const stepGreaterThanZero = stepComparedWithZero > 0;\n return (x) => {\n const comparedWithLast = x.cmp(last);\n if ((stepGreaterThanZero && comparedWithLast <= 0)\n || (!stepGreaterThanZero && comparedWithLast >= 0)) {\n return [x, op_Addition(x, step)];\n }\n else {\n return undefined;\n }\n };\n}\n//# sourceMappingURL=Decimal.js.map","export function tryParse(str) {\n // TODO: test if value is valid and in range\n if (str != null && /\\S/.test(str)) {\n const v = +str.replace(\"_\", \"\");\n if (!Number.isNaN(v)) {\n return [true, v];\n }\n }\n return [false, 0];\n}\nexport function parse(str) {\n const [ok, value] = tryParse(str);\n if (ok) {\n return value;\n }\n else {\n throw new Error(\"Input string was not in a correct format.\");\n }\n}\n// JS Number.isFinite function evals false for NaN\nexport function isInfinity(x) {\n return x === Number.POSITIVE_INFINITY || x === Number.NEGATIVE_INFINITY;\n}\n//# sourceMappingURL=Double.js.map","/**\n * DateTimeOffset functions.\n *\n * Note: DateOffset instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoc when `.getTime()` is called.\n *\n * However, this means that in order to construct an UTC date\n * from a DateOffset with offset of +5 hours, you first need\n * to subtract those 5 hours, than add the \"local\" offset.\n * As said, all kinds of messed up.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { create as createDate, dateOffsetToString, daysInMonth, offsetRegex, parseRaw } from \"./Date\";\nimport { fromValue, ticksToUnixEpochMilliseconds, unixEpochMillisecondsToTicks } from \"./Long\";\nimport { compareDates, padWithZeros } from \"./Util\";\nexport default function DateTimeOffset(value, offset) {\n const d = new Date(value);\n d.offset = offset != null ? offset : new Date().getTimezoneOffset() * -60000;\n return d;\n}\nexport function fromDate(date, offset) {\n const isUtc = date.kind === 1 /* UTC */;\n const offset2 = isUtc ? 0 : date.getTimezoneOffset() * -60000;\n if (offset != null && offset !== offset2) {\n throw new Error(isUtc\n ? \"The UTC Offset for Utc DateTime instances must be 0.\"\n : \"The UTC Offset of the local dateTime parameter does not match the offset argument.\");\n }\n return DateTimeOffset(date.getTime(), offset2);\n}\nexport function fromTicks(ticks, offset) {\n ticks = fromValue(ticks);\n const epoc = ticksToUnixEpochMilliseconds(ticks) - offset;\n return DateTimeOffset(epoc, offset);\n}\nexport function getUtcTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), 0);\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTimeOffset(-62135596800000, 0);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTimeOffset(253402300799999, 0);\n}\nexport function parse(str) {\n const date = parseRaw(str);\n const offsetMatch = offsetRegex.exec(str);\n const offset = offsetMatch == null\n ? date.getTimezoneOffset() * -60000\n : (offsetMatch[0] === \"Z\"\n ? 0\n : parseInt(offsetMatch[1], 10) * 3600000\n + parseInt(offsetMatch[2], 10) * 60000);\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function tryParse(v, _refValue) {\n try {\n return [true, parse(v)];\n }\n catch (_err) {\n return [false, minValue()];\n }\n}\nexport function create(year, month, day, h, m, s, ms, offset) {\n if (offset == null) {\n offset = ms;\n ms = 0;\n }\n if (offset !== 0) {\n if (offset % 60000 !== 0) {\n throw new Error(\"Offset must be specified in whole minutes\");\n }\n if (~~(offset / 3600000) > 14) {\n throw new Error(\"Offset must be within plus or minus 14 hour\");\n }\n }\n let date;\n if (offset === 0) {\n date = new Date(Date.UTC(year, month - 1, day, h, m, s, ms));\n if (year <= 99) {\n date.setFullYear(year, month - 1, day);\n }\n }\n else {\n const str = padWithZeros(year, 4) + \"-\" +\n padWithZeros(month, 2) + \"-\" +\n padWithZeros(day, 2) + \"T\" +\n padWithZeros(h, 2) + \":\" +\n padWithZeros(m, 2) + \":\" +\n padWithZeros(s, 2) + \".\" +\n padWithZeros(ms, 3) +\n dateOffsetToString(offset);\n date = new Date(str);\n }\n const dateValue = date.getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date\");\n }\n return DateTimeOffset(dateValue, offset);\n}\nexport function now() {\n const date = new Date();\n const offset = date.getTimezoneOffset() * -60000;\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function utcNow() {\n const date = now();\n return DateTimeOffset(date.getTime(), 0);\n}\nexport function toUniversalTime(date) {\n return DateTimeOffset(date.getTime(), 0);\n}\nexport function toLocalTime(date) {\n return DateTimeOffset(date.getTime(), date.getTimezoneOffset() * -60000);\n}\nexport function timeOfDay(d) {\n var _a;\n const d2 = new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n return d2.getUTCHours() * 3600000\n + d2.getUTCMinutes() * 60000\n + d2.getUTCSeconds() * 1000\n + d2.getUTCMilliseconds();\n}\nexport function date(d) {\n var _a;\n const d2 = new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n return createDate(d2.getUTCFullYear(), d2.getUTCMonth() + 1, d2.getUTCDate(), 0, 0, 0, 0);\n}\nexport function day(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCDate();\n}\nexport function hour(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCHours();\n}\nexport function millisecond(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCMilliseconds();\n}\nexport function minute(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCMinutes();\n}\nexport function month(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCMonth() + 1;\n}\nexport function second(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCSeconds();\n}\nexport function year(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCFullYear();\n}\nexport function dayOfWeek(d) {\n var _a;\n return new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0)).getUTCDay();\n}\nexport function dayOfYear(d) {\n var _a;\n const d2 = new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n const _year = d2.getUTCFullYear();\n const _month = d2.getUTCMonth() + 1;\n let _day = d2.getUTCDate();\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n var _a;\n return DateTimeOffset(d.getTime() + ts, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addDays(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v * 86400000, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addHours(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v * 3600000, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addMinutes(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v * 60000, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addSeconds(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v * 1000, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addMilliseconds(d, v) {\n var _a;\n return DateTimeOffset(d.getTime() + v, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addYears(d, v) {\n var _a;\n const newMonth = d.getUTCMonth() + 1;\n const newYear = d.getUTCFullYear() + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d.getUTCDate());\n return create(newYear, newMonth, newDay, d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds(), ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n}\nexport function addMonths(d, v) {\n var _a, _b;\n const d2 = new Date(d.getTime() + ((_a = d.offset) !== null && _a !== void 0 ? _a : 0));\n let newMonth = d2.getUTCMonth() + 1 + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = d2.getUTCFullYear() + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d2.getUTCDate());\n return create(newYear, newMonth, newDay, d2.getUTCHours(), d2.getUTCMinutes(), d2.getUTCSeconds(), d2.getUTCMilliseconds(), ((_b = d.offset) !== null && _b !== void 0 ? _b : 0));\n}\nexport function subtract(d, that) {\n var _a;\n return typeof that === \"number\"\n ? DateTimeOffset(d.getTime() - that, ((_a = d.offset) !== null && _a !== void 0 ? _a : 0))\n : d.getTime() - that.getTime();\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport function equalsExact(d1, d2) {\n return d1.getTime() === d2.getTime() && d1.offset === d2.offset;\n}\nexport function compare(d1, d2) {\n return compareDates(d1, d2);\n}\nexport const compareTo = compare;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\n//# sourceMappingURL=DateOffset.js.map","import { defaultArg, value as value$$15, some } from \"./Option.js\";\nimport { min as min$$1, compare, addToDict, addToSet, getItemFromDict, tryGetValue, max as max$$1, comparePrimitives } from \"./Util.js\";\nimport { createMutable } from \"./Map.js\";\nimport { createMutable as createMutable$$1 } from \"./Set.js\";\nimport { List } from \"./Types.js\";\nimport { iterate as iterate$$1 } from \"./Seq.js\";\nconst indexNotFoundMsg = \"An index satisfying the predicate was not found in the collection.\";\nexport function append(array1, array2, cons) {\n if (ArrayBuffer.isView(array1)) {\n const len1 = array1.length | 0;\n const len2 = array2.length | 0;\n const newArray = new cons(len1 + len2);\n\n for (let i = 0; i <= len1 - 1; i++) {\n newArray[i] = array1[i];\n }\n\n for (let i$$1 = 0; i$$1 <= len2 - 1; i$$1++) {\n newArray[i$$1 + len1] = array2[i$$1];\n }\n\n return newArray;\n } else {\n return array1.concat(array2);\n }\n}\nexport function filter(predicate, array) {\n return array.filter(predicate);\n}\nexport function fill(target, targetIndex, count, value) {\n target.fill(value, targetIndex, targetIndex + count);\n return target;\n}\nexport function getSubArray(array$$3, start$$1, count$$2) {\n return array$$3.slice(start$$1, start$$1 + count$$2);\n}\nexport function last(array$$5) {\n if (array$$5.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n } else {\n void null;\n }\n\n return array$$5[array$$5.length - 1];\n}\nexport function tryLast(array$$6) {\n if (array$$6.length === 0) {\n return undefined;\n } else {\n return some(array$$6[array$$6.length - 1]);\n }\n}\nexport function mapIndexed(f, source, cons$$1) {\n if (ArrayBuffer.isView(source)) {\n const len = source.length | 0;\n const target$$1 = new cons$$1(len);\n\n for (let i$$2 = 0; i$$2 <= len - 1; i$$2++) {\n target$$1[i$$2] = f(i$$2, source[i$$2]);\n }\n\n return target$$1;\n } else {\n return source.map(function (delegateArg0, delegateArg1) {\n return f(delegateArg1, delegateArg0);\n });\n }\n}\nexport function map(f$$1, source$$1, cons$$2) {\n if (ArrayBuffer.isView(source$$1)) {\n const len$$1 = source$$1.length | 0;\n const target$$2 = new cons$$2(len$$1);\n\n for (let i$$4 = 0; i$$4 <= len$$1 - 1; i$$4++) {\n target$$2[i$$4] = f$$1(source$$1[i$$4]);\n }\n\n return target$$2;\n } else {\n return source$$1.map(function mapping$$1(x$$1) {\n return f$$1(x$$1);\n });\n }\n}\nexport function mapIndexed2(f$$2, source1, source2, cons$$3) {\n if (source1.length !== source2.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result = new cons$$3(source1.length);\n\n for (let i$$5 = 0; i$$5 <= source1.length - 1; i$$5++) {\n result[i$$5] = f$$2(i$$5, source1[i$$5], source2[i$$5]);\n }\n\n return result;\n}\nexport function map2(f$$3, source1$$1, source2$$1, cons$$4) {\n if (source1$$1.length !== source2$$1.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result$$1 = new cons$$4(source1$$1.length);\n\n for (let i$$6 = 0; i$$6 <= source1$$1.length - 1; i$$6++) {\n result$$1[i$$6] = f$$3(source1$$1[i$$6], source2$$1[i$$6]);\n }\n\n return result$$1;\n}\nexport function mapIndexed3(f$$4, source1$$2, source2$$2, source3, cons$$5) {\n if (source1$$2.length !== source2$$2.length ? true : source2$$2.length !== source3.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result$$2 = new cons$$5(source1$$2.length);\n\n for (let i$$7 = 0; i$$7 <= source1$$2.length - 1; i$$7++) {\n result$$2[i$$7] = f$$4(i$$7, source1$$2[i$$7], source2$$2[i$$7], source3[i$$7]);\n }\n\n return result$$2;\n}\nexport function map3(f$$5, source1$$3, source2$$3, source3$$1, cons$$6) {\n if (source1$$3.length !== source2$$3.length ? true : source2$$3.length !== source3$$1.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result$$3 = new cons$$6(source1$$3.length);\n\n for (let i$$8 = 0; i$$8 <= source1$$3.length - 1; i$$8++) {\n result$$3[i$$8] = f$$5(source1$$3[i$$8], source2$$3[i$$8], source3$$1[i$$8]);\n }\n\n return result$$3;\n}\nexport function mapFold(mapping$$2, state, array$$9, cons$$7) {\n const matchValue = array$$9.length | 0;\n\n if (matchValue === 0) {\n return [[], state];\n } else {\n let acc = state;\n const res = new cons$$7(matchValue);\n\n for (let i$$9 = 0; i$$9 <= array$$9.length - 1; i$$9++) {\n const patternInput = mapping$$2(acc, array$$9[i$$9]);\n res[i$$9] = patternInput[0];\n acc = patternInput[1];\n }\n\n return [res, acc];\n }\n}\nexport function mapFoldBack(mapping$$3, array$$10, state$$1, cons$$8) {\n const matchValue$$1 = array$$10.length | 0;\n\n if (matchValue$$1 === 0) {\n return [[], state$$1];\n } else {\n let acc$$1 = state$$1;\n const res$$1 = new cons$$8(matchValue$$1);\n\n for (let i$$10 = array$$10.length - 1; i$$10 >= 0; i$$10--) {\n const patternInput$$1 = mapping$$3(array$$10[i$$10], acc$$1);\n res$$1[i$$10] = patternInput$$1[0];\n acc$$1 = patternInput$$1[1];\n }\n\n return [res$$1, acc$$1];\n }\n}\nexport function indexed(source$$2) {\n const len$$4 = source$$2.length | 0;\n const target$$3 = new Array(len$$4);\n\n for (let i$$11 = 0; i$$11 <= len$$4 - 1; i$$11++) {\n target$$3[i$$11] = [i$$11, source$$2[i$$11]];\n }\n\n return target$$3;\n}\nexport function truncate(count$$4, array$$11) {\n const count$$5 = max$$1(comparePrimitives, 0, count$$4) | 0;\n return array$$11.slice(0, 0 + count$$5);\n}\nexport function concat(arrays, cons$$9) {\n var arr$$4;\n const arrays$$1 = Array.isArray(arrays) ? arrays : Array.from(arrays);\n const matchValue$$2 = arrays$$1.length | 0;\n\n switch (matchValue$$2) {\n case 0:\n {\n return new cons$$9(0);\n }\n\n case 1:\n {\n return arrays$$1[0];\n }\n\n default:\n {\n if (arr$$4 = arrays$$1[0], ArrayBuffer.isView(arr$$4)) {\n let totalIdx = 0;\n let totalLength = 0;\n\n for (let idx = 0; idx <= arrays$$1.length - 1; idx++) {\n const arr$$5 = arrays$$1[idx];\n totalLength = totalLength + arr$$5.length;\n }\n\n const result$$4 = new cons$$9(totalLength);\n\n for (let idx$$1 = 0; idx$$1 <= arrays$$1.length - 1; idx$$1++) {\n const arr$$6 = arrays$$1[idx$$1];\n\n for (let j = 0; j <= arr$$6.length - 1; j++) {\n result$$4[totalIdx] = arr$$6[j];\n totalIdx = totalIdx + 1;\n }\n }\n\n return result$$4;\n } else {\n return arrays$$1[0].concat(...arrays$$1.slice(1));\n }\n }\n }\n}\nexport function collect(mapping$$4, array$$14, cons$$10) {\n const mapped = map(mapping$$4, array$$14, Array);\n return concat(mapped, cons$$10);\n}\nexport function countBy(projection, array$$15, eq) {\n const dict = createMutable([], eq);\n const keys = [];\n\n for (let idx$$2 = 0; idx$$2 <= array$$15.length - 1; idx$$2++) {\n const value$$2 = array$$15[idx$$2];\n const key = projection(value$$2);\n const matchValue$$3 = tryGetValue(dict, key, 0);\n\n if (matchValue$$3[0]) {\n dict.set(key, matchValue$$3[1] + 1);\n } else {\n dict.set(key, 1);\n const value$$3 = keys.push(key);\n void value$$3;\n }\n }\n\n const result$$5 = map(function (key$$1) {\n return [key$$1, getItemFromDict(dict, key$$1)];\n }, keys, Array);\n return result$$5;\n}\nexport function distinctBy(projection$$1, array$$17, eq$$1) {\n const hashSet = createMutable$$1([], eq$$1);\n return filter(function predicate$$2($arg$$3) {\n const arg00 = projection$$1($arg$$3);\n return addToSet(arg00, hashSet);\n }, array$$17);\n}\nexport function distinct(array$$19, eq$$2) {\n return distinctBy(function (x$$2) {\n return x$$2;\n }, array$$19, eq$$2);\n}\nexport function where(predicate$$3, array$$20) {\n return array$$20.filter(predicate$$3);\n}\nexport function contains(value$$4, array$$22, eq$$3) {\n const loop = function loop($i$$12$$79) {\n loop: while (true) {\n const i$$12 = $i$$12$$79;\n\n if (i$$12 >= array$$22.length) {\n return false;\n } else if (eq$$3.Equals(value$$4, array$$22[i$$12])) {\n return true;\n } else {\n $i$$12$$79 = i$$12 + 1;\n continue loop;\n }\n\n break;\n }\n };\n\n return loop(0);\n}\nexport function except(itemsToExclude, array$$23, eq$$4) {\n if (array$$23.length === 0) {\n return array$$23;\n } else {\n const cached = createMutable$$1(itemsToExclude, eq$$4);\n return array$$23.filter(function predicate$$5(arg00$$1) {\n return addToSet(arg00$$1, cached);\n });\n }\n}\nexport function groupBy(projection$$2, array$$26, cons$$11, eq$$5) {\n const dict$$1 = createMutable([], eq$$5);\n const keys$$1 = [];\n\n for (let idx$$3 = 0; idx$$3 <= array$$26.length - 1; idx$$3++) {\n const v = array$$26[idx$$3];\n const key$$2 = projection$$2(v);\n const matchValue$$4 = tryGetValue(dict$$1, key$$2, null);\n\n if (matchValue$$4[0]) {\n dict$$1.set(key$$2, new List(v, matchValue$$4[1]));\n } else {\n addToDict(dict$$1, key$$2, new List(v, new List()));\n const value$$5 = keys$$1.push(key$$2);\n void value$$5;\n }\n }\n\n const result$$6 = map(function (key$$3) {\n var array$$28;\n return [key$$3, (array$$28 = cons$$11.from(getItemFromDict(dict$$1, key$$3)), (array$$28.reverse()))];\n }, keys$$1, Array);\n return result$$6;\n}\nexport function empty(cons$$12) {\n return new cons$$12(0);\n}\nexport function singleton(value$$6, cons$$14) {\n const ar = new cons$$14(1);\n ar[0] = value$$6;\n return ar;\n}\nexport function initialize(count$$8, initializer, cons$$15) {\n if (count$$8 < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n const result$$7 = new cons$$15(count$$8);\n\n for (let i$$13 = 0; i$$13 <= count$$8 - 1; i$$13++) {\n result$$7[i$$13] = initializer(i$$13);\n }\n\n return result$$7;\n}\nexport function pairwise(array$$30) {\n if (array$$30.length < 2) {\n return [];\n } else {\n const count$$9 = array$$30.length - 1 | 0;\n const result$$8 = new Array(count$$9);\n\n for (let i$$14 = 0; i$$14 <= count$$9 - 1; i$$14++) {\n result$$8[i$$14] = [array$$30[i$$14], array$$30[i$$14 + 1]];\n }\n\n return result$$8;\n }\n}\nexport function replicate(count$$10, initial, cons$$16) {\n if (count$$10 < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n const result$$9 = new cons$$16(count$$10);\n\n for (let i$$15 = 0; i$$15 <= result$$9.length - 1; i$$15++) {\n result$$9[i$$15] = initial;\n }\n\n return result$$9;\n}\nexport function copy(array$$31, cons$$17) {\n return array$$31.slice();\n}\nexport function reverse(array$$33, cons$$18) {\n const array$$35 = array$$33.slice();\n return array$$35.reverse();\n}\nexport function scan(folder, state$$2, array$$37, cons$$19) {\n const res$$2 = new cons$$19(array$$37.length + 1);\n res$$2[0] = state$$2;\n\n for (let i$$16 = 0; i$$16 <= array$$37.length - 1; i$$16++) {\n res$$2[i$$16 + 1] = folder(res$$2[i$$16], array$$37[i$$16]);\n }\n\n return res$$2;\n}\nexport function scanBack(folder$$1, array$$38, state$$3, cons$$20) {\n const res$$3 = new cons$$20(array$$38.length + 1);\n res$$3[array$$38.length] = state$$3;\n\n for (let i$$17 = array$$38.length - 1; i$$17 >= 0; i$$17--) {\n res$$3[i$$17] = folder$$1(array$$38[i$$17], res$$3[i$$17 + 1]);\n }\n\n return res$$3;\n}\nexport function skip(count$$11, array$$39, cons$$21) {\n if (count$$11 > array$$39.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n if (count$$11 === array$$39.length) {\n return new cons$$21(0);\n } else {\n const count$$12 = (count$$11 < 0 ? 0 : count$$11) | 0;\n return array$$39.slice(count$$12);\n }\n}\nexport function skipWhile(predicate$$7, array$$41, cons$$23) {\n let count$$14 = 0;\n\n while (count$$14 < array$$41.length ? predicate$$7(array$$41[count$$14]) : false) {\n count$$14 = count$$14 + 1;\n }\n\n if (count$$14 === array$$41.length) {\n return new cons$$23(0);\n } else {\n const count$$15 = count$$14 | 0;\n return array$$41.slice(count$$15);\n }\n}\nexport function take(count$$16, array$$43, cons$$25) {\n if (count$$16 < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n if (count$$16 > array$$43.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n } else {\n void null;\n }\n\n if (count$$16 === 0) {\n return new cons$$25(0);\n } else {\n return array$$43.slice(0, 0 + count$$16);\n }\n}\nexport function takeWhile(predicate$$8, array$$45, cons$$27) {\n let count$$18 = 0;\n\n while (count$$18 < array$$45.length ? predicate$$8(array$$45[count$$18]) : false) {\n count$$18 = count$$18 + 1;\n }\n\n if (count$$18 === 0) {\n return new cons$$27(0);\n } else {\n const count$$19 = count$$18 | 0;\n return array$$45.slice(0, 0 + count$$19);\n }\n}\nexport function addInPlace(x$$3, array$$47) {\n const value$$7 = array$$47.push(x$$3);\n void value$$7;\n}\nexport function addRangeInPlace(range, array$$49) {\n iterate$$1(function (x$$4) {\n const value$$8 = array$$49.push(x$$4);\n void value$$8;\n }, range);\n}\nexport function removeInPlace(item$$5, array$$51) {\n const i$$18 = array$$51.indexOf(item$$5);\n\n if (i$$18 > -1) {\n const value$$9 = array$$51.splice(i$$18, 1);\n void value$$9;\n return true;\n } else {\n return false;\n }\n}\nexport function removeAllInPlace(predicate$$9, array$$54) {\n const countRemoveAll = function countRemoveAll(count$$20) {\n const i$$19 = array$$54.findIndex(predicate$$9);\n\n if (i$$19 > -1) {\n const value$$10 = array$$54.splice(i$$19, 1);\n void value$$10;\n return countRemoveAll(count$$20) + 1 | 0;\n } else {\n return count$$20 | 0;\n }\n };\n\n return countRemoveAll(0) | 0;\n}\nexport function copyTo(source$$3, sourceIndex, target$$4, targetIndex$$1, count$$21) {\n const diff = targetIndex$$1 - sourceIndex | 0;\n\n for (let i$$20 = sourceIndex; i$$20 <= sourceIndex + count$$21 - 1; i$$20++) {\n target$$4[i$$20 + diff] = source$$3[i$$20];\n }\n}\nexport function partition(f$$6, source$$4, cons$$29) {\n const len$$7 = source$$4.length | 0;\n const res1 = new cons$$29(len$$7);\n const res2 = new cons$$29(len$$7);\n let iTrue = 0;\n let iFalse = 0;\n\n for (let i$$21 = 0; i$$21 <= len$$7 - 1; i$$21++) {\n if (f$$6(source$$4[i$$21])) {\n res1[iTrue] = source$$4[i$$21];\n iTrue = iTrue + 1;\n } else {\n res2[iFalse] = source$$4[i$$21];\n iFalse = iFalse + 1;\n }\n }\n\n return [(truncate(iTrue, res1)), (truncate(iFalse, res2))];\n}\nexport function find(predicate$$11, array$$59) {\n const matchValue$$5 = array$$59.find(predicate$$11);\n\n if (matchValue$$5 == null) {\n throw new Error(indexNotFoundMsg);\n } else {\n const res$$4 = value$$15(matchValue$$5);\n return res$$4;\n }\n}\nexport function tryFind(predicate$$13, array$$61) {\n return array$$61.find(predicate$$13);\n}\nexport function findIndex(predicate$$15, array$$63) {\n const matchValue$$6 = array$$63.findIndex(predicate$$15);\n\n if (matchValue$$6 > -1) {\n return matchValue$$6 | 0;\n } else {\n throw new Error(indexNotFoundMsg);\n }\n}\nexport function tryFindIndex(predicate$$17, array$$65) {\n const matchValue$$7 = array$$65.findIndex(predicate$$17);\n\n if (matchValue$$7 > -1) {\n return matchValue$$7;\n } else {\n return undefined;\n }\n}\nexport function pick(chooser, array$$67) {\n const loop$$1 = function loop$$1($i$$22$$149) {\n loop$$1: while (true) {\n const i$$22 = $i$$22$$149;\n\n if (i$$22 >= array$$67.length) {\n throw new Error(indexNotFoundMsg);\n } else {\n const matchValue$$8 = chooser(array$$67[i$$22]);\n\n if (matchValue$$8 != null) {\n const res$$5 = value$$15(matchValue$$8);\n return res$$5;\n } else {\n $i$$22$$149 = i$$22 + 1;\n continue loop$$1;\n }\n }\n\n break;\n }\n };\n\n return loop$$1(0);\n}\nexport function tryPick(chooser$$1, array$$68) {\n const loop$$2 = function loop$$2($i$$23$$152) {\n loop$$2: while (true) {\n const i$$23 = $i$$23$$152;\n\n if (i$$23 >= array$$68.length) {\n return undefined;\n } else {\n const matchValue$$9 = chooser$$1(array$$68[i$$23]);\n\n if (matchValue$$9 == null) {\n $i$$23$$152 = i$$23 + 1;\n continue loop$$2;\n } else {\n return matchValue$$9;\n }\n }\n\n break;\n }\n };\n\n return loop$$2(0);\n}\nexport function findBack(predicate$$19, array$$69) {\n const loop$$3 = function loop$$3($i$$24$$155) {\n loop$$3: while (true) {\n const i$$24 = $i$$24$$155;\n\n if (i$$24 < 0) {\n throw new Error(indexNotFoundMsg);\n } else if (predicate$$19(array$$69[i$$24])) {\n return array$$69[i$$24];\n } else {\n $i$$24$$155 = i$$24 - 1;\n continue loop$$3;\n }\n\n break;\n }\n };\n\n return loop$$3(array$$69.length - 1);\n}\nexport function tryFindBack(predicate$$20, array$$70) {\n const loop$$4 = function loop$$4($i$$25$$158) {\n loop$$4: while (true) {\n const i$$25 = $i$$25$$158;\n\n if (i$$25 < 0) {\n return undefined;\n } else if (predicate$$20(array$$70[i$$25])) {\n return some(array$$70[i$$25]);\n } else {\n $i$$25$$158 = i$$25 - 1;\n continue loop$$4;\n }\n\n break;\n }\n };\n\n return loop$$4(array$$70.length - 1);\n}\nexport function findLastIndex(predicate$$21, array$$71) {\n const loop$$5 = function loop$$5($i$$26$$161) {\n loop$$5: while (true) {\n const i$$26 = $i$$26$$161;\n\n if (i$$26 < 0) {\n return -1 | 0;\n } else if (predicate$$21(array$$71[i$$26])) {\n return i$$26 | 0;\n } else {\n $i$$26$$161 = i$$26 - 1;\n continue loop$$5;\n }\n\n break;\n }\n };\n\n return loop$$5(array$$71.length - 1) | 0;\n}\nexport function findIndexBack(predicate$$22, array$$72) {\n const loop$$6 = function loop$$6($i$$27$$164) {\n loop$$6: while (true) {\n const i$$27 = $i$$27$$164;\n\n if (i$$27 < 0) {\n throw new Error(indexNotFoundMsg);\n } else if (predicate$$22(array$$72[i$$27])) {\n return i$$27 | 0;\n } else {\n $i$$27$$164 = i$$27 - 1;\n continue loop$$6;\n }\n\n break;\n }\n };\n\n return loop$$6(array$$72.length - 1) | 0;\n}\nexport function tryFindIndexBack(predicate$$23, array$$73) {\n const loop$$7 = function loop$$7($i$$28$$167) {\n loop$$7: while (true) {\n const i$$28 = $i$$28$$167;\n\n if (i$$28 < 0) {\n return undefined;\n } else if (predicate$$23(array$$73[i$$28])) {\n return i$$28;\n } else {\n $i$$28$$167 = i$$28 - 1;\n continue loop$$7;\n }\n\n break;\n }\n };\n\n return loop$$7(array$$73.length - 1);\n}\nexport function choose(chooser$$2, array$$74, cons$$30) {\n const arr$$7 = array$$74.filter(function f$$7(x$$5) {\n const option = chooser$$2(x$$5);\n return option != null;\n });\n return map(function g(x$$6) {\n const option$$1 = chooser$$2(x$$6);\n return value$$15(option$$1);\n }, arr$$7, cons$$30);\n}\nexport function foldIndexed(folder$$2, state$$4, array$$76) {\n return array$$76.reduce(function (delegateArg0$$1, delegateArg1$$1, delegateArg2) {\n return folder$$2(delegateArg2, delegateArg0$$1, delegateArg1$$1);\n }, state$$4);\n}\nexport function fold(folder$$4, state$$6, array$$78) {\n return array$$78.reduce(function (delegateArg0$$2, delegateArg1$$2) {\n return folder$$4(delegateArg0$$2, delegateArg1$$2);\n }, state$$6);\n}\nexport function iterate(action, array$$80) {\n for (let i$$30 = 0; i$$30 <= array$$80.length - 1; i$$30++) {\n action(array$$80[i$$30]);\n }\n}\nexport function iterateIndexed(action$$1, array$$81) {\n for (let i$$31 = 0; i$$31 <= array$$81.length - 1; i$$31++) {\n action$$1(i$$31, array$$81[i$$31]);\n }\n}\nexport function iterate2(action$$2, array1$$2, array2$$2) {\n if (array1$$2.length !== array2$$2.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n for (let i$$32 = 0; i$$32 <= array1$$2.length - 1; i$$32++) {\n action$$2(array1$$2[i$$32], array2$$2[i$$32]);\n }\n}\nexport function iterateIndexed2(action$$3, array1$$3, array2$$3) {\n if (array1$$3.length !== array2$$3.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n for (let i$$33 = 0; i$$33 <= array1$$3.length - 1; i$$33++) {\n action$$3(i$$33, array1$$3[i$$33], array2$$3[i$$33]);\n }\n}\nexport function isEmpty(array$$82) {\n return array$$82.length === 0;\n}\nexport function forAll(predicate$$25, array$$83) {\n return array$$83.every(predicate$$25);\n}\nexport function permute(f$$8, array$$85) {\n const size = array$$85.length | 0;\n const res$$7 = array$$85.slice();\n const checkFlags = new Int32Array(size);\n iterateIndexed(function (i$$34, x$$9) {\n const j$$1 = f$$8(i$$34) | 0;\n\n if (j$$1 < 0 ? true : j$$1 >= size) {\n throw new Error(\"Not a valid permutation\");\n } else {\n void null;\n }\n\n res$$7[j$$1] = x$$9;\n checkFlags[j$$1] = 1;\n }, array$$85);\n let isValid;\n isValid = checkFlags.every(function predicate$$27(y) {\n return 1 === y;\n });\n\n if (!isValid) {\n throw new Error(\"Not a valid permutation\");\n } else {\n void null;\n }\n\n return res$$7;\n}\nexport function setSlice(target$$5, lower, upper, source$$5) {\n const lower$$1 = defaultArg(lower, 0) | 0;\n const upper$$1 = defaultArg(upper, 0) | 0;\n const length = (upper$$1 > 0 ? upper$$1 : target$$5.length - 1) - lower$$1 | 0;\n\n for (let i$$35 = 0; i$$35 <= length; i$$35++) {\n target$$5[i$$35 + lower$$1] = source$$5[i$$35];\n }\n}\nexport function sortInPlaceBy(projection$$3, xs, comparer) {\n xs.sort(function (x$$11, y$$1) {\n return comparer.Compare(projection$$3(x$$11), projection$$3(y$$1));\n });\n}\nexport function sortInPlace(xs$$1, comparer$$1) {\n xs$$1.sort(function (x$$12, y$$2) {\n return comparer$$1.Compare(x$$12, y$$2);\n });\n}\nexport function sort(xs$$2, comparer$$2) {\n const xs$$3 = xs$$2.slice();\n xs$$3.sort(function comparer$$3(x$$13, y$$3) {\n return comparer$$2.Compare(x$$13, y$$3);\n });\n return xs$$3;\n}\nexport function sortBy(projection$$4, xs$$4, comparer$$4) {\n const xs$$5 = xs$$4.slice();\n xs$$5.sort(function comparer$$5(x$$14, y$$4) {\n return comparer$$4.Compare(projection$$4(x$$14), projection$$4(y$$4));\n });\n return xs$$5;\n}\nexport function sortDescending(xs$$6, comparer$$6) {\n const xs$$7 = xs$$6.slice();\n xs$$7.sort(function comparer$$7(x$$15, y$$5) {\n return comparer$$6.Compare(x$$15, y$$5) * -1;\n });\n return xs$$7;\n}\nexport function sortByDescending(projection$$5, xs$$8, comparer$$8) {\n const xs$$9 = xs$$8.slice();\n xs$$9.sort(function comparer$$9(x$$16, y$$6) {\n return comparer$$8.Compare(projection$$5(x$$16), projection$$5(y$$6)) * -1;\n });\n return xs$$9;\n}\nexport function sortWith(comparer$$10, xs$$10) {\n const xs$$11 = xs$$10.slice();\n xs$$11.sort(comparer$$10);\n return xs$$11;\n}\nexport function unfold(generator, state$$8) {\n const res$$8 = [];\n\n const loop$$8 = function loop$$8($state$$9$$226) {\n loop$$8: while (true) {\n const state$$9 = $state$$9$$226;\n const matchValue$$10 = generator(state$$9);\n\n if (matchValue$$10 != null) {\n const x$$17 = matchValue$$10[0];\n const s$$2 = matchValue$$10[1];\n const value$$11 = res$$8.push(x$$17);\n void value$$11;\n $state$$9$$226 = s$$2;\n continue loop$$8;\n } else {\n void null;\n }\n\n break;\n }\n };\n\n loop$$8(state$$8);\n return res$$8;\n}\nexport function unzip(array$$95) {\n const len$$8 = array$$95.length | 0;\n const res1$$1 = new Array(len$$8);\n const res2$$1 = new Array(len$$8);\n iterateIndexed(function (i$$36, tupledArg) {\n res1$$1[i$$36] = tupledArg[0];\n res2$$1[i$$36] = tupledArg[1];\n }, array$$95);\n return [res1$$1, res2$$1];\n}\nexport function unzip3(array$$96) {\n const len$$11 = array$$96.length | 0;\n const res1$$2 = new Array(len$$11);\n const res2$$2 = new Array(len$$11);\n const res3 = new Array(len$$11);\n iterateIndexed(function (i$$37, tupledArg$$1) {\n res1$$2[i$$37] = tupledArg$$1[0];\n res2$$2[i$$37] = tupledArg$$1[1];\n res3[i$$37] = tupledArg$$1[2];\n }, array$$96);\n return [res1$$2, res2$$2, res3];\n}\nexport function zip(array1$$4, array2$$4) {\n if (array1$$4.length !== array2$$4.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n let result$$10;\n const len$$15 = array1$$4.length | 0;\n result$$10 = new Array(len$$15);\n\n for (let i$$38 = 0; i$$38 <= array1$$4.length - 1; i$$38++) {\n result$$10[i$$38] = [array1$$4[i$$38], array2$$4[i$$38]];\n }\n\n return result$$10;\n}\nexport function zip3(array1$$5, array2$$5, array3) {\n if (array1$$5.length !== array2$$5.length ? true : array2$$5.length !== array3.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n let result$$11;\n const len$$16 = array1$$5.length | 0;\n result$$11 = new Array(len$$16);\n\n for (let i$$39 = 0; i$$39 <= array1$$5.length - 1; i$$39++) {\n result$$11[i$$39] = [array1$$5[i$$39], array2$$5[i$$39], array3[i$$39]];\n }\n\n return result$$11;\n}\nexport function chunkBySize(chunkSize, array$$97) {\n if (chunkSize < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: size\");\n } else {\n void null;\n }\n\n if (array$$97.length === 0) {\n return [[]];\n } else {\n const result$$12 = [];\n\n for (let x$$18 = 0; x$$18 <= ~~Math.ceil(array$$97.length / chunkSize) - 1; x$$18++) {\n const start$$8 = x$$18 * chunkSize | 0;\n const slice = array$$97.slice(start$$8, start$$8 + chunkSize);\n const value$$12 = result$$12.push(slice);\n void value$$12;\n }\n\n return result$$12;\n }\n}\nexport function splitAt(index$$4, array$$100) {\n if (index$$4 < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: index\");\n } else {\n void null;\n }\n\n if (index$$4 > array$$100.length) {\n throw new Error(\"The input sequence has an insufficient number of elements.\\\\nParameter name: index\");\n } else {\n void null;\n }\n\n return [array$$100.slice(0, 0 + index$$4), array$$100.slice(index$$4)];\n}\nexport function compareWith(comparer$$12, array1$$6, array2$$6) {\n if (array1$$6 == null) {\n if (array2$$6 == null) {\n return 0;\n } else {\n return -1 | 0;\n }\n } else if (array2$$6 == null) {\n return 1;\n } else {\n let i$$40 = 0;\n let result$$13 = 0;\n const length1 = array1$$6.length | 0;\n const length2 = array2$$6.length | 0;\n\n if (length1 > length2) {\n return 1;\n } else if (length1 < length2) {\n return -1 | 0;\n } else {\n while (i$$40 < length1 ? result$$13 === 0 : false) {\n result$$13 = comparer$$12(array1$$6[i$$40], array2$$6[i$$40]);\n i$$40 = i$$40 + 1;\n }\n\n return result$$13 | 0;\n }\n }\n}\nexport function equalsWith(comparer$$13, array1$$7, array2$$7) {\n return compareWith(compare, array1$$7, array2$$7) === 0;\n}\nexport function exactlyOne(array$$103) {\n if (array$$103.length === 1) {\n return array$$103[0];\n } else if (array$$103.length === 0) {\n throw new Error(\"The input sequence was empty\\\\nParameter name: array\");\n } else {\n throw new Error(\"Input array too long\\\\nParameter name: array\");\n }\n}\nexport function head(array$$104) {\n if (array$$104.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n } else {\n return array$$104[0];\n }\n}\nexport function tryHead(array$$105) {\n if (array$$105.length === 0) {\n return undefined;\n } else {\n return some(array$$105[0]);\n }\n}\nexport function tail(array$$106) {\n if (array$$106.length === 0) {\n throw new Error(\"Not enough elements\\\\nParameter name: array\");\n } else {\n void null;\n }\n\n return array$$106.slice(1);\n}\nexport function item(index$$5, array$$108) {\n return array$$108[index$$5];\n}\nexport function tryItem(index$$6, array$$109) {\n if (index$$6 < 0 ? true : index$$6 >= array$$109.length) {\n return undefined;\n } else {\n return some(array$$109[index$$6]);\n }\n}\nexport function foldBackIndexed(folder$$6, array$$110, state$$10) {\n return array$$110.reduceRight(function (delegateArg0$$3, delegateArg1$$3, delegateArg2$$1) {\n return folder$$6(delegateArg2$$1, delegateArg1$$3, delegateArg0$$3);\n }, state$$10);\n}\nexport function foldBack(folder$$8, array$$112, state$$12) {\n return array$$112.reduceRight(function (delegateArg0$$4, delegateArg1$$4) {\n return folder$$8(delegateArg1$$4, delegateArg0$$4);\n }, state$$12);\n}\nexport function foldIndexed2(folder$$10, state$$14, array1$$8, array2$$8) {\n let acc$$6 = state$$14;\n\n if (array1$$8.length !== array2$$8.length) {\n throw new Error(\"Arrays have different lengths\");\n } else {\n void null;\n }\n\n for (let i$$42 = 0; i$$42 <= array1$$8.length - 1; i$$42++) {\n acc$$6 = folder$$10(i$$42, acc$$6, array1$$8[i$$42], array2$$8[i$$42]);\n }\n\n return acc$$6;\n}\nexport function fold2(folder$$11, state$$15, array1$$9, array2$$9) {\n return foldIndexed2(function (_arg1, acc$$7, x$$21, y$$7) {\n return folder$$11(acc$$7, x$$21, y$$7);\n }, state$$15, array1$$9, array2$$9);\n}\nexport function foldBackIndexed2(folder$$12, array1$$10, array2$$10, state$$16) {\n let acc$$8 = state$$16;\n\n if (array1$$10.length !== array2$$10.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const size$$1 = array1$$10.length | 0;\n\n for (let i$$43 = 1; i$$43 <= size$$1; i$$43++) {\n acc$$8 = folder$$12(i$$43 - 1, array1$$10[size$$1 - i$$43], array2$$10[size$$1 - i$$43], acc$$8);\n }\n\n return acc$$8;\n}\nexport function foldBack2(f$$9, array1$$11, array2$$11, state$$17) {\n return foldBackIndexed2(function (_arg1$$1, x$$22, y$$8, acc$$9) {\n return f$$9(x$$22, y$$8, acc$$9);\n }, array1$$11, array2$$11, state$$17);\n}\nexport function reduce(reduction, array$$114) {\n if (array$$114.length === 0) {\n throw new Error(\"The input array was empty\");\n } else {\n void null;\n }\n\n return array$$114.reduce(reduction);\n}\nexport function reduceBack(reduction$$2, array$$116) {\n if (array$$116.length === 0) {\n throw new Error(\"The input array was empty\");\n } else {\n void null;\n }\n\n return array$$116.reduceRight(reduction$$2);\n}\nexport function forAll2(predicate$$29, array1$$12, array2$$12) {\n return fold2(function (acc$$10, x$$23, y$$9) {\n return acc$$10 ? predicate$$29(x$$23, y$$9) : false;\n }, true, array1$$12, array2$$12);\n}\nexport function existsOffset($predicate$$30$$281, $array$$118$$282, $index$$7$$283) {\n existsOffset: while (true) {\n const predicate$$30 = $predicate$$30$$281,\n array$$118 = $array$$118$$282,\n index$$7 = $index$$7$$283;\n\n if (index$$7 === array$$118.length) {\n return false;\n } else if (predicate$$30(array$$118[index$$7])) {\n return true;\n } else {\n $predicate$$30$$281 = predicate$$30;\n $array$$118$$282 = array$$118;\n $index$$7$$283 = index$$7 + 1;\n continue existsOffset;\n }\n\n break;\n }\n}\nexport function exists(predicate$$31, array$$119) {\n return existsOffset(predicate$$31, array$$119, 0);\n}\nexport function existsOffset2($predicate$$32$$286, $array1$$13$$287, $array2$$13$$288, $index$$8$$289) {\n existsOffset2: while (true) {\n const predicate$$32 = $predicate$$32$$286,\n array1$$13 = $array1$$13$$287,\n array2$$13 = $array2$$13$$288,\n index$$8 = $index$$8$$289;\n\n if (index$$8 === array1$$13.length) {\n return false;\n } else if (predicate$$32(array1$$13[index$$8], array2$$13[index$$8])) {\n return true;\n } else {\n $predicate$$32$$286 = predicate$$32;\n $array1$$13$$287 = array1$$13;\n $array2$$13$$288 = array2$$13;\n $index$$8$$289 = index$$8 + 1;\n continue existsOffset2;\n }\n\n break;\n }\n}\nexport function exists2(predicate$$33, array1$$14, array2$$14) {\n if (array1$$14.length !== array2$$14.length) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n return existsOffset2(predicate$$33, array1$$14, array2$$14, 0);\n}\nexport function sum(array$$120, adder) {\n let acc$$11 = adder.GetZero();\n\n for (let i$$44 = 0; i$$44 <= array$$120.length - 1; i$$44++) {\n acc$$11 = adder.Add(acc$$11, array$$120[i$$44]);\n }\n\n return acc$$11;\n}\nexport function sumBy(projection$$6, array$$121, adder$$1) {\n let acc$$12 = adder$$1.GetZero();\n\n for (let i$$45 = 0; i$$45 <= array$$121.length - 1; i$$45++) {\n acc$$12 = adder$$1.Add(acc$$12, projection$$6(array$$121[i$$45]));\n }\n\n return acc$$12;\n}\nexport function maxBy(projection$$7, xs$$12, comparer$$14) {\n return reduce(function (x$$24, y$$10) {\n return comparer$$14.Compare(projection$$7(y$$10), projection$$7(x$$24)) > 0 ? y$$10 : x$$24;\n }, xs$$12);\n}\nexport function max(xs$$13, comparer$$15) {\n return reduce(function (x$$25, y$$11) {\n return comparer$$15.Compare(y$$11, x$$25) > 0 ? y$$11 : x$$25;\n }, xs$$13);\n}\nexport function minBy(projection$$8, xs$$14, comparer$$16) {\n return reduce(function (x$$26, y$$12) {\n return comparer$$16.Compare(projection$$8(y$$12), projection$$8(x$$26)) > 0 ? x$$26 : y$$12;\n }, xs$$14);\n}\nexport function min(xs$$15, comparer$$17) {\n return reduce(function (x$$27, y$$13) {\n return comparer$$17.Compare(y$$13, x$$27) > 0 ? x$$27 : y$$13;\n }, xs$$15);\n}\nexport function average(array$$122, averager) {\n if (array$$122.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n } else {\n void null;\n }\n\n let total = averager.GetZero();\n\n for (let i$$46 = 0; i$$46 <= array$$122.length - 1; i$$46++) {\n total = averager.Add(total, array$$122[i$$46]);\n }\n\n return averager.DivideByInt(total, array$$122.length);\n}\nexport function averageBy(projection$$9, array$$123, averager$$1) {\n if (array$$123.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n } else {\n void null;\n }\n\n let total$$1 = averager$$1.GetZero();\n\n for (let i$$47 = 0; i$$47 <= array$$123.length - 1; i$$47++) {\n total$$1 = averager$$1.Add(total$$1, projection$$9(array$$123[i$$47]));\n }\n\n return averager$$1.DivideByInt(total$$1, array$$123.length);\n}\nexport function ofSeq(source$$6, cons$$31) {\n return cons$$31.from(source$$6);\n}\nexport function ofList(source$$7, cons$$32) {\n return cons$$32.from(source$$7);\n}\nexport function toList(source$$8) {\n const len$$17 = source$$8.length | 0;\n let target$$6 = new List();\n\n for (let i$$48 = len$$17 - 1; i$$48 >= 0; i$$48--) {\n target$$6 = new List(source$$8[i$$48], target$$6);\n }\n\n return target$$6;\n}\nexport function windowed(windowSize, source$$9) {\n if (windowSize <= 0) {\n throw new Error(\"windowSize must be positive\");\n } else {\n void null;\n }\n\n let res$$9;\n const len$$18 = max$$1(comparePrimitives, 0, source$$9.length - windowSize) | 0;\n res$$9 = new Array(len$$18);\n\n for (let i$$49 = windowSize; i$$49 <= source$$9.length; i$$49++) {\n res$$9[i$$49 - windowSize] = source$$9.slice(i$$49 - windowSize, i$$49 - 1 + 1);\n }\n\n return res$$9;\n}\nexport function splitInto(chunks, array$$124) {\n if (chunks < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: chunks\");\n } else {\n void null;\n }\n\n if (array$$124.length === 0) {\n return [[]];\n } else {\n const result$$14 = [];\n const chunks$$1 = min$$1(comparePrimitives, chunks, array$$124.length) | 0;\n const minChunkSize = ~~(array$$124.length / chunks$$1) | 0;\n const chunksWithExtraItem = array$$124.length % chunks$$1 | 0;\n\n for (let i$$50 = 0; i$$50 <= chunks$$1 - 1; i$$50++) {\n const chunkSize$$1 = (i$$50 < chunksWithExtraItem ? minChunkSize + 1 : minChunkSize) | 0;\n const start$$11 = i$$50 * minChunkSize + min$$1(comparePrimitives, chunksWithExtraItem, i$$50) | 0;\n const slice$$1 = array$$124.slice(start$$11, start$$11 + chunkSize$$1);\n const value$$13 = result$$14.push(slice$$1);\n void value$$13;\n }\n\n return result$$14;\n }\n}\nexport function transpose(arrays$$2, cons$$33) {\n var value$$14;\n const arrays$$3 = Array.isArray(arrays$$2) ? arrays$$2 : Array.from(arrays$$2);\n const len$$20 = arrays$$3.length | 0;\n\n if (len$$20 === 0) {\n return new Array(0);\n } else {\n const lenInner = arrays$$3[0].length | 0;\n\n if (value$$14 = (forAll(function predicate$$34(a) {\n return a.length === lenInner;\n }, arrays$$3)), (!value$$14)) {\n throw new Error(\"Arrays had different lengths\");\n } else {\n void null;\n }\n\n const result$$15 = new Array(lenInner);\n\n for (let i$$51 = 0; i$$51 <= lenInner - 1; i$$51++) {\n result$$15[i$$51] = new cons$$33(len$$20);\n\n for (let j$$2 = 0; j$$2 <= len$$20 - 1; j$$2++) {\n result$$15[i$$51][j$$2] = arrays$$3[j$$2][i$$51];\n }\n }\n\n return result$$15;\n }\n}","namespace Fable.SimpleJson\r\n\r\nopen System\r\nopen FSharp.Reflection\r\nopen Fable.Core\r\nopen System.Reflection\r\nopen System.Collections.Generic\r\n\r\n[]\r\nmodule Converter =\r\n let (|PrimitiveType|_|) (primType: Type) =\r\n match primType.FullName with\r\n | \"System.String\" -> Some TypeInfo.String\r\n | \"System.Int16\" -> Some TypeInfo.Short\r\n | \"System.Int32\" -> Some TypeInfo.Int32\r\n | \"Microsoft.FSharp.Core.int64`1\"\r\n | \"System.Int64\" -> Some TypeInfo.Long\r\n | \"System.UInt16\" -> Some TypeInfo.UInt16\r\n | \"System.UInt32\" -> Some TypeInfo.UInt32\r\n | \"System.UInt64\" -> Some TypeInfo.UInt64\r\n | \"System.DateTime\" -> Some TypeInfo.DateTime\r\n | \"System.TimeSpan\" -> Some TypeInfo.TimeSpan\r\n | \"System.DateTimeOffset\" -> Some TypeInfo.DateTimeOffset\r\n | \"System.Boolean\" -> Some TypeInfo.Bool\r\n | \"System.Single\" -> Some TypeInfo.Float32\r\n | \"System.Double\" -> Some TypeInfo.Float\r\n | \"Microsoft.FSharp.Core.decimal`1\"\r\n | \"System.Decimal\" -> Some TypeInfo.Decimal\r\n | \"System.Numerics.BigInteger\" -> Some TypeInfo.BigInt\r\n | \"Microsoft.FSharp.Core.Unit\" -> Some TypeInfo.Unit\r\n | \"System.Guid\" -> Some TypeInfo.Guid\r\n | \"System.Byte\" -> Some TypeInfo.Byte\r\n | _ -> None\r\n\r\n let (|RecordType|_|) (t: Type) =\r\n if FSharpType.IsRecord t\r\n then\r\n FSharpType.GetRecordFields t\r\n |> Array.map (fun prop -> prop.Name, prop.PropertyType)\r\n |> Some\r\n else None\r\n\r\n let (|SetType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"Microsoft.FSharp.Collections.FSharpSet`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|Nullable|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Nullable`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|UnionType|_|) (t: Type) =\r\n if FSharpType.IsUnion t\r\n then\r\n FSharpType.GetUnionCases t\r\n |> Array.map (fun info ->\r\n let caseName = info.Name\r\n let caseTypes = info.GetFields() |> Array.map (fun prop -> prop.PropertyType)\r\n caseName, info, caseTypes)\r\n |> Some\r\n else None\r\n\r\n let (|MapType|_|) (t: Type) =\r\n if (t.FullName.StartsWith \"Microsoft.FSharp.Collections.FSharpMap`2\")\r\n then\r\n let genArgs = t.GetGenericArguments()\r\n Some (genArgs.[0], genArgs.[1])\r\n else None\r\n\r\n let (|ListType|_|) (t: Type) =\r\n if (t.FullName.StartsWith \"Microsoft.FSharp.Collections.FSharpList`1\")\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let rec flattenFuncTypes (typeDef: Type) =\r\n [| if FSharpType.IsFunction typeDef\r\n then let (domain, range) = FSharpType.GetFunctionElements typeDef\r\n yield! flattenFuncTypes domain\r\n yield! flattenFuncTypes range\r\n else yield typeDef |]\r\n\r\n let (|FuncType|_|) (t: Type) =\r\n if FSharpType.IsFunction t\r\n then flattenFuncTypes t |> Some\r\n else None\r\n\r\n let (|ArrayType|_|) (t:Type) =\r\n if t.IsArray\r\n then t.GetElementType() |> Some\r\n else None\r\n\r\n let (|OptionType|_|) (t:Type) =\r\n if (t.FullName.StartsWith \"Microsoft.FSharp.Core.FSharpOption`1\")\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|TupleType|_|) (t: Type) =\r\n if FSharpType.IsTuple t\r\n then FSharpType.GetTupleElements(t) |> Some\r\n else None\r\n\r\n let (|SeqType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Collections.Generic.IEnumerable`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|DictionaryType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Collections.Generic.Dictionary\"\r\n then\r\n let genArgs = t.GetGenericArguments()\r\n Some (genArgs.[0], genArgs.[1])\r\n else\r\n None\r\n\r\n let (|ResizeArrayType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Collections.Generic.List\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|HashSetType|_|) (t: Type) =\r\n if t.FullName.StartsWith \"System.Collections.Generic.HashSet\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|AsyncType|_|) (t:Type) =\r\n if t.FullName.StartsWith \"Microsoft.FSharp.Control.FSharpAsync`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let (|PromiseType|_|) (t:Type) =\r\n if t.FullName.StartsWith \"Fable.Core.JS.Promise`1\"\r\n then t.GetGenericArguments().[0] |> Some\r\n else None\r\n\r\n let private lazyToDelayed (l:Lazy<_>) = fun () -> l.Value\r\n\r\n let (|EnumType|_|) (t: Type) =\r\n if t.IsEnum\r\n then Enum.GetUnderlyingType(t) |> Some\r\n else None\r\n\r\n let rec private _createTypeInfo (resolvedType: Type) : Fable.SimpleJson.TypeInfo =\r\n match resolvedType with\r\n | PrimitiveType typeInfo -> typeInfo\r\n | FuncType (types) -> TypeInfo.Func <| lazyToDelayed (lazy (Array.map createTypeInfo types))\r\n | RecordType fields ->\r\n let l = lazy (\r\n let fields =\r\n [| for (fieldName, fieldType) in fields ->\r\n { FieldName = fieldName;\r\n FieldType = createTypeInfo fieldType } |]\r\n fields, resolvedType)\r\n TypeInfo.Record (lazyToDelayed l)\r\n\r\n | UnionType cases ->\r\n let l = lazy (\r\n [| for (caseName, caseInfo, caseTypes) in cases ->\r\n { CaseName = caseName;\r\n Info = caseInfo;\r\n CaseTypes = Array.map createTypeInfo caseTypes } |], resolvedType)\r\n TypeInfo.Union (lazyToDelayed l)\r\n\r\n | EnumType elemType -> TypeInfo.Enum (lazyToDelayed <| lazy (createTypeInfo elemType, resolvedType))\r\n | ListType elemType -> TypeInfo.List (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | ResizeArrayType elemType -> TypeInfo.ResizeArray (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | HashSetType elemType -> TypeInfo.HashSet (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | ArrayType elemType -> TypeInfo.Array (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n // Checking for tuples has to happen after checking for arrays\r\n | TupleType types -> TypeInfo.Tuple (lazyToDelayed <| lazy (Array.map createTypeInfo types))\r\n | OptionType elemType -> TypeInfo.Option (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | Nullable elemType -> TypeInfo.Option (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | SetType elemType -> TypeInfo.Set (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | MapType (keyType, valueType) -> TypeInfo.Map (lazyToDelayed <| lazy (createTypeInfo keyType, createTypeInfo valueType))\r\n | DictionaryType (keyType, valueType) -> TypeInfo.Dictionary (lazyToDelayed <| lazy (createTypeInfo keyType, createTypeInfo valueType))\r\n | SeqType elemType -> TypeInfo.Seq (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | AsyncType elemType -> TypeInfo.Async (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | PromiseType elemType -> TypeInfo.Promise (lazyToDelayed <| lazy (createTypeInfo elemType))\r\n | _ -> TypeInfo.Any (lazyToDelayed <| lazy (resolvedType))\r\n\r\n and private typeInfoCache = Dictionary()\r\n\r\n and createTypeInfo (resolvedType: Type) : Fable.SimpleJson.TypeInfo =\r\n match typeInfoCache.TryGetValue resolvedType with\r\n | true, ti -> ti\r\n | false, _ ->\r\n let ti = _createTypeInfo resolvedType\r\n // see https://github.com/fable-compiler/Fable/issues/1871\r\n // Type equality doesn't work for anonymous records - all anon records are considered equal.\r\n // For anonymous records, the name is the empty string.\r\n let notAnonymousRecord =\r\n not (String.IsNullOrEmpty resolvedType.FullName)\r\n && not (resolvedType.FullName.EndsWith(\"`1[]\"))\r\n && not (resolvedType.FullName.EndsWith(\"`2[]\"))\r\n\r\n if notAnonymousRecord then\r\n typeInfoCache.[resolvedType] <- ti\r\n ti\r\n else\r\n ti\r\n\r\n type Fable.SimpleJson.TypeInfo with\r\n static member inline createFrom<'t> () : Fable.SimpleJson.TypeInfo =\r\n createTypeInfo typeof<'t>\r\n\r\n /// returns whether a type is primitive\r\n let isPrimitive = function\r\n | Unit\r\n | String\r\n | UInt16\r\n | UInt32\r\n | UInt64\r\n | Int32\r\n | Bool\r\n | Float32\r\n | Float\r\n | Decimal\r\n | Short\r\n | Long\r\n | Byte\r\n | DateTime\r\n | DateTimeOffset\r\n | BigInt\r\n | Guid\r\n | Option _ -> true\r\n | otherwise -> false\r\n\r\n /// returns whether the discrimiated union type is like a enum\r\n let enumUnion = function\r\n | TypeInfo.Union getCases ->\r\n getCases()\r\n |> fst\r\n |> Array.forall (fun case -> Array.isEmpty case.CaseTypes)\r\n | otherwise -> false\r\n","import { declare, FSharpRef } from \"./Types.js\";\nimport { iterateIndexed, toIterator, getEnumerator, delay, collect, map, sumBy, iterate } from \"./Seq.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { equals, getItemFromDict, tryGetValue } from \"./Util.js\";\nimport { format } from \"./String.js\";\nexport const MutableMap$00602 = declare(function Fable_Collections_MutableMap(pairs, comparer) {\n const $this$$1 = this;\n const this$ = new FSharpRef(null);\n $this$$1.comparer = comparer;\n this$.contents = $this$$1;\n $this$$1.hashMap = new Map([]);\n $this$$1[\"init@20-1\"] = 1;\n iterate(function (pair) {\n MutableMap$00602$$Add$$5BDDA1(this$.contents, pair[0], pair[1]);\n }, pairs);\n void null;\n});\nexport function MutableMap$00602$reflection($gen$$4, $gen$$5) {\n return class_type(\"Fable.Collections.MutableMap`2\", [$gen$$4, $gen$$5], MutableMap$00602);\n}\nexport function MutableMap$00602$$$$002Ector$$6623D9B3(pairs, comparer) {\n return this instanceof MutableMap$00602 ? MutableMap$00602.call(this, pairs, comparer) : new MutableMap$00602(pairs, comparer);\n}\n\nfunction MutableMap$00602$$TryFindIndex$$2B595(this$$$1, k) {\n const h = this$$$1.comparer.GetHashCode(k) | 0;\n const matchValue = tryGetValue(this$$$1.hashMap, h, null);\n\n if (matchValue[0]) {\n return [true, h, matchValue[1].findIndex(function (pair$$1) {\n return this$$$1.comparer.Equals(k, pair$$1[0]);\n })];\n } else {\n return [false, h, -1];\n }\n}\n\nexport function MutableMap$00602$$TryFind$$2B595(this$$$2, k$$1) {\n const matchValue$$1 = MutableMap$00602$$TryFindIndex$$2B595(this$$$2, k$$1);\n var $target$$10;\n\n if (matchValue$$1[0]) {\n if (matchValue$$1[2] > -1) {\n $target$$10 = 0;\n } else {\n $target$$10 = 1;\n }\n } else {\n $target$$10 = 1;\n }\n\n switch ($target$$10) {\n case 0:\n {\n return getItemFromDict(this$$$2.hashMap, matchValue$$1[1])[matchValue$$1[2]];\n }\n\n case 1:\n {\n return undefined;\n }\n }\n}\nexport function MutableMap$00602$$get_Comparer(this$$$3) {\n return this$$$3.comparer;\n}\nexport function MutableMap$00602$$Clear(this$$$4) {\n this$$$4.hashMap.clear();\n}\nexport function MutableMap$00602$$get_Count(this$$$5) {\n const source = this$$$5.hashMap.values();\n return sumBy(function projection(pairs$$2) {\n return pairs$$2.length;\n }, source, {\n GetZero() {\n return 0;\n },\n\n Add($x$$2, $y$$3) {\n return $x$$2 + $y$$3;\n }\n\n }) | 0;\n}\nexport function MutableMap$00602$$get_Item$$2B595(this$$$6, k$$2) {\n const matchValue$$2 = MutableMap$00602$$TryFind$$2B595(this$$$6, k$$2);\n\n if (matchValue$$2 != null) {\n const pair$$2 = matchValue$$2;\n return pair$$2[1];\n } else {\n throw new Error(\"The item was not found in collection\");\n }\n}\nexport function MutableMap$00602$$set_Item$$5BDDA1(this$$$7, k$$3, v) {\n const matchValue$$3 = MutableMap$00602$$TryFindIndex$$2B595(this$$$7, k$$3);\n var $target$$20;\n\n if (matchValue$$3[0]) {\n if (matchValue$$3[2] > -1) {\n $target$$20 = 0;\n } else {\n $target$$20 = 1;\n }\n } else {\n $target$$20 = 1;\n }\n\n switch ($target$$20) {\n case 0:\n {\n getItemFromDict(this$$$7.hashMap, matchValue$$3[1])[matchValue$$3[2]] = [k$$3, v];\n break;\n }\n\n case 1:\n {\n if (matchValue$$3[0]) {\n const value = void getItemFromDict(this$$$7.hashMap, matchValue$$3[1]).push([k$$3, v]);\n void null;\n } else {\n this$$$7.hashMap.set(matchValue$$3[1], [[k$$3, v]]);\n }\n\n break;\n }\n }\n}\nexport function MutableMap$00602$$Add$$5BDDA1(this$$$8, k$$4, v$$1) {\n const matchValue$$4 = MutableMap$00602$$TryFindIndex$$2B595(this$$$8, k$$4);\n var $target$$24;\n\n if (matchValue$$4[0]) {\n if (matchValue$$4[2] > -1) {\n $target$$24 = 0;\n } else {\n $target$$24 = 1;\n }\n } else {\n $target$$24 = 1;\n }\n\n switch ($target$$24) {\n case 0:\n {\n const msg = format(\"An item with the same key has already been added. Key: {0}\", k$$4);\n throw new Error(msg);\n break;\n }\n\n case 1:\n {\n if (matchValue$$4[0]) {\n const value$$1 = void getItemFromDict(this$$$8.hashMap, matchValue$$4[1]).push([k$$4, v$$1]);\n void null;\n } else {\n this$$$8.hashMap.set(matchValue$$4[1], [[k$$4, v$$1]]);\n }\n\n break;\n }\n }\n}\nexport function MutableMap$00602$$ContainsKey$$2B595(this$$$9, k$$5) {\n const matchValue$$5 = MutableMap$00602$$TryFindIndex$$2B595(this$$$9, k$$5);\n var $target$$27;\n\n if (matchValue$$5[0]) {\n if (matchValue$$5[2] > -1) {\n $target$$27 = 0;\n } else {\n $target$$27 = 1;\n }\n } else {\n $target$$27 = 1;\n }\n\n switch ($target$$27) {\n case 0:\n {\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n}\nexport function MutableMap$00602$$Remove$$2B595(this$$$10, k$$6) {\n const matchValue$$6 = MutableMap$00602$$TryFindIndex$$2B595(this$$$10, k$$6);\n var $target$$30;\n\n if (matchValue$$6[0]) {\n if (matchValue$$6[2] > -1) {\n $target$$30 = 0;\n } else {\n $target$$30 = 1;\n }\n } else {\n $target$$30 = 1;\n }\n\n switch ($target$$30) {\n case 0:\n {\n getItemFromDict(this$$$10.hashMap, matchValue$$6[1]).splice(matchValue$$6[2], 1);\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n}\n\nMutableMap$00602.prototype[Symbol.iterator] = function () {\n var elems;\n const this$$$11 = this;\n return toIterator((elems = delay(function () {\n return collect(function (pairs$$3) {\n return map(function (pair$$3) {\n return pair$$3;\n }, pairs$$3);\n }, this$$$11.hashMap.values());\n }), getEnumerator(elems)));\n};\n\nMutableMap$00602.prototype.Add = function (item) {\n const this$$$12 = this;\n MutableMap$00602$$Add$$5BDDA1(this$$$12, item[0], item[1]);\n};\n\nMutableMap$00602.prototype.Clear = function () {\n const this$$$13 = this;\n MutableMap$00602$$Clear(this$$$13);\n};\n\nMutableMap$00602.prototype.Contains = function (item$$1) {\n var p;\n const this$$$14 = this;\n const matchValue$$7 = MutableMap$00602$$TryFind$$2B595(this$$$14, item$$1[0]);\n var $target$$31;\n\n if (matchValue$$7 != null) {\n if (p = matchValue$$7, equals(p[1], item$$1[1])) {\n $target$$31 = 0;\n } else {\n $target$$31 = 1;\n }\n } else {\n $target$$31 = 1;\n }\n\n switch ($target$$31) {\n case 0:\n {\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n};\n\nMutableMap$00602.prototype.CopyTo = function (array, arrayIndex) {\n const this$$$15 = this;\n iterateIndexed(function action(i$$10, e) {\n array[arrayIndex + i$$10] = e;\n }, this$$$15);\n};\n\nObject.defineProperty(MutableMap$00602.prototype, \"Count\", {\n \"get\": function () {\n const this$$$16 = this;\n return MutableMap$00602$$get_Count(this$$$16) | 0;\n }\n});\nObject.defineProperty(MutableMap$00602.prototype, \"IsReadOnly\", {\n \"get\": function () {\n return false;\n }\n});\n\nMutableMap$00602.prototype.Remove = function (item$$2) {\n const this$$$18 = this;\n const matchValue$$8 = MutableMap$00602$$TryFind$$2B595(this$$$18, item$$2[0]);\n\n if (matchValue$$8 != null) {\n const pair$$4 = matchValue$$8;\n\n if (equals(pair$$4[1], item$$2[1])) {\n const value$$2 = MutableMap$00602$$Remove$$2B595(this$$$18, item$$2[0]);\n void value$$2;\n } else {\n void null;\n }\n\n return true;\n } else {\n return false;\n }\n};\n\nObject.defineProperty(MutableMap$00602.prototype, \"size\", {\n \"get\": function () {\n const this$$$19 = this;\n return MutableMap$00602$$get_Count(this$$$19) | 0;\n }\n});\n\nMutableMap$00602.prototype.clear = function () {\n const this$$$20 = this;\n MutableMap$00602$$Clear(this$$$20);\n};\n\nMutableMap$00602.prototype.delete = function (k$$7) {\n const this$$$21 = this;\n return MutableMap$00602$$Remove$$2B595(this$$$21, k$$7);\n};\n\nMutableMap$00602.prototype.entries = function () {\n const this$$$22 = this;\n return map(function mapping(x) {\n return x;\n }, this$$$22);\n};\n\nMutableMap$00602.prototype.get = function (k$$8) {\n const this$$$23 = this;\n return MutableMap$00602$$get_Item$$2B595(this$$$23, k$$8);\n};\n\nMutableMap$00602.prototype.has = function (k$$9) {\n const this$$$24 = this;\n return MutableMap$00602$$ContainsKey$$2B595(this$$$24, k$$9);\n};\n\nMutableMap$00602.prototype.keys = function () {\n const this$$$25 = this;\n return map(function mapping$$1(pair$$5) {\n return pair$$5[0];\n }, this$$$25);\n};\n\nMutableMap$00602.prototype.set = function (k$$10, v$$2) {\n const this$$$26 = this;\n MutableMap$00602$$set_Item$$5BDDA1(this$$$26, k$$10, v$$2);\n return this$$$26;\n};\n\nMutableMap$00602.prototype.values = function () {\n const this$$$27 = this;\n return map(function mapping$$2(pair$$6) {\n return pair$$6[1];\n }, this$$$27);\n};","import { Record, List, declare, Union } from \"./Types.js\";\nimport { class_type, record_type, bool_type, list_type, union_type, int32_type } from \"./Reflection.js\";\nimport { value as value$$3, some } from \"./Option.js\";\nimport { iterate as iterate$$1, empty as empty$$1, toIterator, map as map$$2, unfold, getEnumerator, fold as fold$$1 } from \"./Seq.js\";\nimport { compare, structuralHash, isDisposable } from \"./Util.js\";\nimport { join, format } from \"./String.js\";\nimport { MutableMap$00602$$$$002Ector$$6623D9B3 as MutableMap$002400602$0024$0024$0024$0024002Ector$0024$00246623D9B3 } from \"./MutableMap\";\nexport const MapTree$00602 = declare(function Map_MapTree(tag, name, ...fields) {\n this.tag = tag | 0;\n this.name = name;\n this.fields = fields;\n}, Union);\nexport function MapTree$00602$reflection($gen$$3, $gen$$4) {\n return union_type(\"Map.MapTree`2\", [$gen$$3, $gen$$4], MapTree$00602, () => [\"MapEmpty\", [\"MapOne\", [[\"Item1\", $gen$$3], [\"Item2\", $gen$$4]]], [\"MapNode\", [[\"Item1\", $gen$$3], [\"Item2\", $gen$$4], [\"Item3\", MapTree$00602$reflection($gen$$3, $gen$$4)], [\"Item4\", MapTree$00602$reflection($gen$$3, $gen$$4)], [\"Item5\", int32_type]]]]);\n}\nexport function MapTreeModule$$$sizeAux($acc$$5, $m$$6) {\n MapTreeModule$$$sizeAux: while (true) {\n const acc = $acc$$5,\n m = $m$$6;\n\n switch (m.tag) {\n case 1:\n {\n return acc + 1 | 0;\n }\n\n case 2:\n {\n $acc$$5 = MapTreeModule$$$sizeAux(acc + 1, m.fields[2]);\n $m$$6 = m.fields[3];\n continue MapTreeModule$$$sizeAux;\n }\n\n default:\n {\n return acc | 0;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$size(x) {\n return MapTreeModule$$$sizeAux(0, x);\n}\nexport function MapTreeModule$$$empty() {\n return new MapTree$00602(0, \"MapEmpty\");\n}\nexport function MapTreeModule$$$height(_arg1) {\n switch (_arg1.tag) {\n case 1:\n {\n return 1;\n }\n\n case 2:\n {\n return _arg1.fields[4] | 0;\n }\n\n default:\n {\n return 0;\n }\n }\n}\nexport function MapTreeModule$$$isEmpty(m$$1) {\n if (m$$1.tag === 0) {\n return true;\n } else {\n return false;\n }\n}\nexport function MapTreeModule$$$mk(l$$1, k, v, r$$1) {\n var $target$$14;\n\n if (l$$1.tag === 0) {\n if (r$$1.tag === 0) {\n $target$$14 = 0;\n } else {\n $target$$14 = 1;\n }\n } else {\n $target$$14 = 1;\n }\n\n switch ($target$$14) {\n case 0:\n {\n return new MapTree$00602(1, \"MapOne\", k, v);\n }\n\n case 1:\n {\n const hl = MapTreeModule$$$height(l$$1) | 0;\n const hr = MapTreeModule$$$height(r$$1) | 0;\n const m$$2 = (hl < hr ? hr : hl) | 0;\n return new MapTree$00602(2, \"MapNode\", k, v, l$$1, r$$1, m$$2 + 1);\n }\n }\n}\nexport function MapTreeModule$$$rebalance(t1, k$$1, v$$1, t2) {\n const t1h = MapTreeModule$$$height(t1) | 0;\n const t2h = MapTreeModule$$$height(t2) | 0;\n\n if (t2h > t1h + 2) {\n if (t2.tag === 2) {\n if (MapTreeModule$$$height(t2.fields[2]) > t1h + 1) {\n if (t2.fields[2].tag === 2) {\n return MapTreeModule$$$mk(MapTreeModule$$$mk(t1, k$$1, v$$1, t2.fields[2].fields[2]), t2.fields[2].fields[0], t2.fields[2].fields[1], MapTreeModule$$$mk(t2.fields[2].fields[3], t2.fields[0], t2.fields[1], t2.fields[3]));\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return MapTreeModule$$$mk(MapTreeModule$$$mk(t1, k$$1, v$$1, t2.fields[2]), t2.fields[0], t2.fields[1], t2.fields[3]);\n }\n } else {\n throw new Error(\"rebalance\");\n }\n } else if (t1h > t2h + 2) {\n if (t1.tag === 2) {\n if (MapTreeModule$$$height(t1.fields[3]) > t2h + 1) {\n if (t1.fields[3].tag === 2) {\n return MapTreeModule$$$mk(MapTreeModule$$$mk(t1.fields[2], t1.fields[0], t1.fields[1], t1.fields[3].fields[2]), t1.fields[3].fields[0], t1.fields[3].fields[1], MapTreeModule$$$mk(t1.fields[3].fields[3], k$$1, v$$1, t2));\n } else {\n throw new Error(\"re balance\");\n }\n } else {\n return MapTreeModule$$$mk(t1.fields[2], t1.fields[0], t1.fields[1], MapTreeModule$$$mk(t1.fields[3], k$$1, v$$1, t2));\n }\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return MapTreeModule$$$mk(t1, k$$1, v$$1, t2);\n }\n}\nexport function MapTreeModule$$$add(comparer, k$$2, v$$2, m$$3) {\n switch (m$$3.tag) {\n case 1:\n {\n const c = comparer.Compare(k$$2, m$$3.fields[0]) | 0;\n\n if (c < 0) {\n return new MapTree$00602(2, \"MapNode\", k$$2, v$$2, new MapTree$00602(0, \"MapEmpty\"), m$$3, 2);\n } else if (c === 0) {\n return new MapTree$00602(1, \"MapOne\", k$$2, v$$2);\n } else {\n return new MapTree$00602(2, \"MapNode\", k$$2, v$$2, m$$3, new MapTree$00602(0, \"MapEmpty\"), 2);\n }\n }\n\n case 2:\n {\n const c$$1 = comparer.Compare(k$$2, m$$3.fields[0]) | 0;\n\n if (c$$1 < 0) {\n return MapTreeModule$$$rebalance(MapTreeModule$$$add(comparer, k$$2, v$$2, m$$3.fields[2]), m$$3.fields[0], m$$3.fields[1], m$$3.fields[3]);\n } else if (c$$1 === 0) {\n return new MapTree$00602(2, \"MapNode\", k$$2, v$$2, m$$3.fields[2], m$$3.fields[3], m$$3.fields[4]);\n } else {\n return MapTreeModule$$$rebalance(m$$3.fields[2], m$$3.fields[0], m$$3.fields[1], MapTreeModule$$$add(comparer, k$$2, v$$2, m$$3.fields[3]));\n }\n }\n\n default:\n {\n return new MapTree$00602(1, \"MapOne\", k$$2, v$$2);\n }\n }\n}\nexport function MapTreeModule$$$find($comparer$$1$$23, $k$$3$$24, $m$$4$$25) {\n MapTreeModule$$$find: while (true) {\n const comparer$$1 = $comparer$$1$$23,\n k$$3 = $k$$3$$24,\n m$$4 = $m$$4$$25;\n\n switch (m$$4.tag) {\n case 1:\n {\n const c$$2 = comparer$$1.Compare(k$$3, m$$4.fields[0]) | 0;\n\n if (c$$2 === 0) {\n return m$$4.fields[1];\n } else {\n throw new Error(\"key not found\");\n }\n }\n\n case 2:\n {\n const c$$3 = comparer$$1.Compare(k$$3, m$$4.fields[0]) | 0;\n\n if (c$$3 < 0) {\n $comparer$$1$$23 = comparer$$1;\n $k$$3$$24 = k$$3;\n $m$$4$$25 = m$$4.fields[2];\n continue MapTreeModule$$$find;\n } else if (c$$3 === 0) {\n return m$$4.fields[1];\n } else {\n $comparer$$1$$23 = comparer$$1;\n $k$$3$$24 = k$$3;\n $m$$4$$25 = m$$4.fields[3];\n continue MapTreeModule$$$find;\n }\n }\n\n default:\n {\n throw new Error(\"key not found\");\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$tryFind($comparer$$2$$26, $k$$4$$27, $m$$5$$28) {\n MapTreeModule$$$tryFind: while (true) {\n const comparer$$2 = $comparer$$2$$26,\n k$$4 = $k$$4$$27,\n m$$5 = $m$$5$$28;\n\n switch (m$$5.tag) {\n case 1:\n {\n const c$$4 = comparer$$2.Compare(k$$4, m$$5.fields[0]) | 0;\n\n if (c$$4 === 0) {\n return some(m$$5.fields[1]);\n } else {\n return undefined;\n }\n }\n\n case 2:\n {\n const c$$5 = comparer$$2.Compare(k$$4, m$$5.fields[0]) | 0;\n\n if (c$$5 < 0) {\n $comparer$$2$$26 = comparer$$2;\n $k$$4$$27 = k$$4;\n $m$$5$$28 = m$$5.fields[2];\n continue MapTreeModule$$$tryFind;\n } else if (c$$5 === 0) {\n return some(m$$5.fields[1]);\n } else {\n $comparer$$2$$26 = comparer$$2;\n $k$$4$$27 = k$$4;\n $m$$5$$28 = m$$5.fields[3];\n continue MapTreeModule$$$tryFind;\n }\n }\n\n default:\n {\n return undefined;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$partition1(comparer$$3, f, k$$5, v$$3, acc1, acc2) {\n if (f(k$$5, v$$3)) {\n return [MapTreeModule$$$add(comparer$$3, k$$5, v$$3, acc1), acc2];\n } else {\n return [acc1, MapTreeModule$$$add(comparer$$3, k$$5, v$$3, acc2)];\n }\n}\nexport function MapTreeModule$$$partitionAux($comparer$$4$$35, $f$$1$$36, $s$$37, $acc_0$$38, $acc_1$$39) {\n MapTreeModule$$$partitionAux: while (true) {\n const comparer$$4 = $comparer$$4$$35,\n f$$1 = $f$$1$$36,\n s = $s$$37,\n acc_0 = $acc_0$$38,\n acc_1 = $acc_1$$39;\n\n switch (s.tag) {\n case 1:\n {\n return MapTreeModule$$$partition1(comparer$$4, f$$1, s.fields[0], s.fields[1], acc_0, acc_1);\n }\n\n case 2:\n {\n const acc$$2 = MapTreeModule$$$partitionAux(comparer$$4, f$$1, s.fields[3], acc_0, acc_1);\n const acc$$3 = MapTreeModule$$$partition1(comparer$$4, f$$1, s.fields[0], s.fields[1], acc$$2[0], acc$$2[1]);\n $comparer$$4$$35 = comparer$$4;\n $f$$1$$36 = f$$1;\n $s$$37 = s.fields[2];\n $acc_0$$38 = acc$$3[0];\n $acc_1$$39 = acc$$3[1];\n continue MapTreeModule$$$partitionAux;\n }\n\n default:\n {\n return [acc_0, acc_1];\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$partition(comparer$$5, f$$2, s$$1) {\n return MapTreeModule$$$partitionAux(comparer$$5, f$$2, s$$1, MapTreeModule$$$empty(), MapTreeModule$$$empty());\n}\nexport function MapTreeModule$$$filter1(comparer$$6, f$$3, k$$8, v$$6, acc$$4) {\n if (f$$3(k$$8, v$$6)) {\n return MapTreeModule$$$add(comparer$$6, k$$8, v$$6, acc$$4);\n } else {\n return acc$$4;\n }\n}\nexport function MapTreeModule$$$filterAux($comparer$$7$$48, $f$$4$$49, $s$$2$$50, $acc$$5$$51) {\n MapTreeModule$$$filterAux: while (true) {\n const comparer$$7 = $comparer$$7$$48,\n f$$4 = $f$$4$$49,\n s$$2 = $s$$2$$50,\n acc$$5 = $acc$$5$$51;\n\n switch (s$$2.tag) {\n case 1:\n {\n return MapTreeModule$$$filter1(comparer$$7, f$$4, s$$2.fields[0], s$$2.fields[1], acc$$5);\n }\n\n case 2:\n {\n const acc$$6 = MapTreeModule$$$filterAux(comparer$$7, f$$4, s$$2.fields[2], acc$$5);\n const acc$$7 = MapTreeModule$$$filter1(comparer$$7, f$$4, s$$2.fields[0], s$$2.fields[1], acc$$6);\n $comparer$$7$$48 = comparer$$7;\n $f$$4$$49 = f$$4;\n $s$$2$$50 = s$$2.fields[3];\n $acc$$5$$51 = acc$$7;\n continue MapTreeModule$$$filterAux;\n }\n\n default:\n {\n return acc$$5;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$filter(comparer$$8, f$$5, s$$3) {\n return MapTreeModule$$$filterAux(comparer$$8, f$$5, s$$3, MapTreeModule$$$empty());\n}\nexport function MapTreeModule$$$spliceOutSuccessor(m$$6) {\n switch (m$$6.tag) {\n case 1:\n {\n return [m$$6.fields[0], m$$6.fields[1], new MapTree$00602(0, \"MapEmpty\")];\n }\n\n case 2:\n {\n if (m$$6.fields[2].tag === 0) {\n return [m$$6.fields[0], m$$6.fields[1], m$$6.fields[3]];\n } else {\n const patternInput = MapTreeModule$$$spliceOutSuccessor(m$$6.fields[2]);\n return [patternInput[0], patternInput[1], MapTreeModule$$$mk(patternInput[2], m$$6.fields[0], m$$6.fields[1], m$$6.fields[3])];\n }\n }\n\n default:\n {\n throw new Error(\"internal error: Map.spliceOutSuccessor\");\n }\n }\n}\nexport function MapTreeModule$$$remove(comparer$$9, k$$11, m$$7) {\n switch (m$$7.tag) {\n case 1:\n {\n const c$$6 = comparer$$9.Compare(k$$11, m$$7.fields[0]) | 0;\n\n if (c$$6 === 0) {\n return new MapTree$00602(0, \"MapEmpty\");\n } else {\n return m$$7;\n }\n }\n\n case 2:\n {\n const c$$7 = comparer$$9.Compare(k$$11, m$$7.fields[0]) | 0;\n\n if (c$$7 < 0) {\n return MapTreeModule$$$rebalance(MapTreeModule$$$remove(comparer$$9, k$$11, m$$7.fields[2]), m$$7.fields[0], m$$7.fields[1], m$$7.fields[3]);\n } else if (c$$7 === 0) {\n if (m$$7.fields[2].tag === 0) {\n return m$$7.fields[3];\n } else if (m$$7.fields[3].tag === 0) {\n return m$$7.fields[2];\n } else {\n const patternInput$$1 = MapTreeModule$$$spliceOutSuccessor(m$$7.fields[3]);\n return MapTreeModule$$$mk(m$$7.fields[2], patternInput$$1[0], patternInput$$1[1], patternInput$$1[2]);\n }\n } else {\n return MapTreeModule$$$rebalance(m$$7.fields[2], m$$7.fields[0], m$$7.fields[1], MapTreeModule$$$remove(comparer$$9, k$$11, m$$7.fields[3]));\n }\n }\n\n default:\n {\n return MapTreeModule$$$empty();\n }\n }\n}\nexport function MapTreeModule$$$mem($comparer$$10$$59, $k$$12$$60, $m$$8$$61) {\n MapTreeModule$$$mem: while (true) {\n const comparer$$10 = $comparer$$10$$59,\n k$$12 = $k$$12$$60,\n m$$8 = $m$$8$$61;\n\n switch (m$$8.tag) {\n case 1:\n {\n return comparer$$10.Compare(k$$12, m$$8.fields[0]) === 0;\n }\n\n case 2:\n {\n const c$$8 = comparer$$10.Compare(k$$12, m$$8.fields[0]) | 0;\n\n if (c$$8 < 0) {\n $comparer$$10$$59 = comparer$$10;\n $k$$12$$60 = k$$12;\n $m$$8$$61 = m$$8.fields[2];\n continue MapTreeModule$$$mem;\n } else if (c$$8 === 0) {\n return true;\n } else {\n $comparer$$10$$59 = comparer$$10;\n $k$$12$$60 = k$$12;\n $m$$8$$61 = m$$8.fields[3];\n continue MapTreeModule$$$mem;\n }\n }\n\n default:\n {\n return false;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$iter($f$$6$$62, $m$$9$$63) {\n MapTreeModule$$$iter: while (true) {\n const f$$6 = $f$$6$$62,\n m$$9 = $m$$9$$63;\n\n switch (m$$9.tag) {\n case 1:\n {\n f$$6(m$$9.fields[0], m$$9.fields[1]);\n break;\n }\n\n case 2:\n {\n MapTreeModule$$$iter(f$$6, m$$9.fields[2]);\n f$$6(m$$9.fields[0], m$$9.fields[1]);\n $f$$6$$62 = f$$6;\n $m$$9$$63 = m$$9.fields[3];\n continue MapTreeModule$$$iter;\n break;\n }\n\n default:\n {\n void null;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$tryPick($f$$7$$64, $m$$10$$65) {\n MapTreeModule$$$tryPick: while (true) {\n const f$$7 = $f$$7$$64,\n m$$10 = $m$$10$$65;\n\n switch (m$$10.tag) {\n case 1:\n {\n return f$$7(m$$10.fields[0], m$$10.fields[1]);\n }\n\n case 2:\n {\n const matchValue$$2 = MapTreeModule$$$tryPick(f$$7, m$$10.fields[2]);\n\n if (matchValue$$2 == null) {\n const matchValue$$3 = f$$7(m$$10.fields[0], m$$10.fields[1]);\n\n if (matchValue$$3 == null) {\n $f$$7$$64 = f$$7;\n $m$$10$$65 = m$$10.fields[3];\n continue MapTreeModule$$$tryPick;\n } else {\n return matchValue$$3;\n }\n } else {\n return matchValue$$2;\n }\n }\n\n default:\n {\n return undefined;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$exists($f$$8$$66, $m$$11$$67) {\n MapTreeModule$$$exists: while (true) {\n const f$$8 = $f$$8$$66,\n m$$11 = $m$$11$$67;\n\n switch (m$$11.tag) {\n case 1:\n {\n return f$$8(m$$11.fields[0], m$$11.fields[1]);\n }\n\n case 2:\n {\n if (MapTreeModule$$$exists(f$$8, m$$11.fields[2]) ? true : f$$8(m$$11.fields[0], m$$11.fields[1])) {\n return true;\n } else {\n $f$$8$$66 = f$$8;\n $m$$11$$67 = m$$11.fields[3];\n continue MapTreeModule$$$exists;\n }\n }\n\n default:\n {\n return false;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$forall($f$$9$$68, $m$$12$$69) {\n MapTreeModule$$$forall: while (true) {\n const f$$9 = $f$$9$$68,\n m$$12 = $m$$12$$69;\n\n switch (m$$12.tag) {\n case 1:\n {\n return f$$9(m$$12.fields[0], m$$12.fields[1]);\n }\n\n case 2:\n {\n if (MapTreeModule$$$forall(f$$9, m$$12.fields[2]) ? f$$9(m$$12.fields[0], m$$12.fields[1]) : false) {\n $f$$9$$68 = f$$9;\n $m$$12$$69 = m$$12.fields[3];\n continue MapTreeModule$$$forall;\n } else {\n return false;\n }\n }\n\n default:\n {\n return true;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$map(f$$10, m$$13) {\n switch (m$$13.tag) {\n case 1:\n {\n return new MapTree$00602(1, \"MapOne\", m$$13.fields[0], f$$10(m$$13.fields[1]));\n }\n\n case 2:\n {\n const l2 = MapTreeModule$$$map(f$$10, m$$13.fields[2]);\n const v2$$16 = f$$10(m$$13.fields[1]);\n const r2 = MapTreeModule$$$map(f$$10, m$$13.fields[3]);\n return new MapTree$00602(2, \"MapNode\", m$$13.fields[0], v2$$16, l2, r2, m$$13.fields[4]);\n }\n\n default:\n {\n return MapTreeModule$$$empty();\n }\n }\n}\nexport function MapTreeModule$$$mapi(f$$11, m$$14) {\n switch (m$$14.tag) {\n case 1:\n {\n return new MapTree$00602(1, \"MapOne\", m$$14.fields[0], f$$11(m$$14.fields[0], m$$14.fields[1]));\n }\n\n case 2:\n {\n const l2$$1 = MapTreeModule$$$mapi(f$$11, m$$14.fields[2]);\n const v2$$17 = f$$11(m$$14.fields[0], m$$14.fields[1]);\n const r2$$1 = MapTreeModule$$$mapi(f$$11, m$$14.fields[3]);\n return new MapTree$00602(2, \"MapNode\", m$$14.fields[0], v2$$17, l2$$1, r2$$1, m$$14.fields[4]);\n }\n\n default:\n {\n return MapTreeModule$$$empty();\n }\n }\n}\nexport function MapTreeModule$$$foldBack($f$$12$$74, $m$$15$$75, $x$$1$$76) {\n MapTreeModule$$$foldBack: while (true) {\n const f$$12 = $f$$12$$74,\n m$$15 = $m$$15$$75,\n x$$1 = $x$$1$$76;\n\n switch (m$$15.tag) {\n case 1:\n {\n return f$$12(m$$15.fields[0], m$$15.fields[1], x$$1);\n }\n\n case 2:\n {\n const x$$2 = MapTreeModule$$$foldBack(f$$12, m$$15.fields[3], x$$1);\n const x$$3 = f$$12(m$$15.fields[0], m$$15.fields[1], x$$2);\n $f$$12$$74 = f$$12;\n $m$$15$$75 = m$$15.fields[2];\n $x$$1$$76 = x$$3;\n continue MapTreeModule$$$foldBack;\n }\n\n default:\n {\n return x$$1;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$fold($f$$13$$77, $x$$4$$78, $m$$16$$79) {\n MapTreeModule$$$fold: while (true) {\n const f$$13 = $f$$13$$77,\n x$$4 = $x$$4$$78,\n m$$16 = $m$$16$$79;\n\n switch (m$$16.tag) {\n case 1:\n {\n return f$$13(x$$4, m$$16.fields[0], m$$16.fields[1]);\n }\n\n case 2:\n {\n const x$$5 = MapTreeModule$$$fold(f$$13, x$$4, m$$16.fields[2]);\n const x$$6 = f$$13(x$$5, m$$16.fields[0], m$$16.fields[1]);\n $f$$13$$77 = f$$13;\n $x$$4$$78 = x$$6;\n $m$$16$$79 = m$$16.fields[3];\n continue MapTreeModule$$$fold;\n }\n\n default:\n {\n return x$$4;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$foldFromTo(comparer$$11, lo, hi, f$$14, m$$17, x$$7) {\n switch (m$$17.tag) {\n case 1:\n {\n const cLoKey = comparer$$11.Compare(lo, m$$17.fields[0]) | 0;\n const cKeyHi = comparer$$11.Compare(m$$17.fields[0], hi) | 0;\n const x$$8 = (cLoKey <= 0 ? cKeyHi <= 0 : false) ? f$$14(m$$17.fields[0], m$$17.fields[1], x$$7) : x$$7;\n return x$$8;\n }\n\n case 2:\n {\n const cLoKey$$1 = comparer$$11.Compare(lo, m$$17.fields[0]) | 0;\n const cKeyHi$$1 = comparer$$11.Compare(m$$17.fields[0], hi) | 0;\n const x$$9 = cLoKey$$1 < 0 ? MapTreeModule$$$foldFromTo(comparer$$11, lo, hi, f$$14, m$$17.fields[2], x$$7) : x$$7;\n const x$$10 = (cLoKey$$1 <= 0 ? cKeyHi$$1 <= 0 : false) ? f$$14(m$$17.fields[0], m$$17.fields[1], x$$9) : x$$9;\n const x$$11 = cKeyHi$$1 < 0 ? MapTreeModule$$$foldFromTo(comparer$$11, lo, hi, f$$14, m$$17.fields[3], x$$10) : x$$10;\n return x$$11;\n }\n\n default:\n {\n return x$$7;\n }\n }\n}\nexport function MapTreeModule$$$foldSection(comparer$$12, lo$$1, hi$$1, f$$15, m$$18, x$$12) {\n if (comparer$$12.Compare(lo$$1, hi$$1) === 1) {\n return x$$12;\n } else {\n return MapTreeModule$$$foldFromTo(comparer$$12, lo$$1, hi$$1, f$$15, m$$18, x$$12);\n }\n}\nexport function MapTreeModule$$$loop($m$$19$$92, $acc$$8$$93) {\n MapTreeModule$$$loop: while (true) {\n const m$$19 = $m$$19$$92,\n acc$$8 = $acc$$8$$93;\n\n switch (m$$19.tag) {\n case 1:\n {\n return new List([m$$19.fields[0], m$$19.fields[1]], acc$$8);\n }\n\n case 2:\n {\n $m$$19$$92 = m$$19.fields[2];\n $acc$$8$$93 = new List([m$$19.fields[0], m$$19.fields[1]], MapTreeModule$$$loop(m$$19.fields[3], acc$$8));\n continue MapTreeModule$$$loop;\n }\n\n default:\n {\n return acc$$8;\n }\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$toList(m$$20) {\n return MapTreeModule$$$loop(m$$20, new List());\n}\nexport function MapTreeModule$$$ofList(comparer$$13, l$$20) {\n return fold$$1(function (acc$$9, tupledArg) {\n return MapTreeModule$$$add(comparer$$13, tupledArg[0], tupledArg[1], acc$$9);\n }, MapTreeModule$$$empty(), l$$20);\n}\nexport function MapTreeModule$$$mkFromEnumerator($comparer$$14$$97, $acc$$10$$98, $e$$99) {\n MapTreeModule$$$mkFromEnumerator: while (true) {\n const comparer$$14 = $comparer$$14$$97,\n acc$$10 = $acc$$10$$98,\n e = $e$$99;\n\n if (e.MoveNext()) {\n const patternInput$$2 = e.Current;\n $comparer$$14$$97 = comparer$$14;\n $acc$$10$$98 = MapTreeModule$$$add(comparer$$14, patternInput$$2[0], patternInput$$2[1], acc$$10);\n $e$$99 = e;\n continue MapTreeModule$$$mkFromEnumerator;\n } else {\n return acc$$10;\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$ofArray(comparer$$15, arr) {\n let res$$2 = MapTreeModule$$$empty();\n\n for (let i = 0; i <= arr.length - 1; i++) {\n const patternInput$$3 = arr[i];\n res$$2 = MapTreeModule$$$add(comparer$$15, patternInput$$3[0], patternInput$$3[1], res$$2);\n }\n\n return res$$2;\n}\nexport function MapTreeModule$$$ofSeq(comparer$$16, c$$9) {\n const ie = getEnumerator(c$$9);\n\n try {\n return MapTreeModule$$$mkFromEnumerator(comparer$$16, MapTreeModule$$$empty(), ie);\n } finally {\n if (isDisposable(ie)) {\n ie.Dispose();\n } else {\n void null;\n }\n }\n}\nexport function MapTreeModule$$$copyToArray(s$$4, arr$$1, i$$1) {\n let j = i$$1 | 0;\n MapTreeModule$$$iter(function f$$16(x$$15, y$$2) {\n arr$$1[j] = [x$$15, y$$2];\n j = j + 1;\n }, s$$4);\n}\nexport const MapTreeModule$002EMapIterator$00602 = declare(function Map_MapTreeModule_MapIterator(stack, started) {\n this.stack = stack;\n this.started = started;\n}, Record);\nexport function MapTreeModule$002EMapIterator$00602$reflection($gen$$109, $gen$$110) {\n return record_type(\"Map.MapTreeModule.MapIterator`2\", [$gen$$109, $gen$$110], MapTreeModule$002EMapIterator$00602, () => [[\"stack\", list_type(MapTree$00602$reflection($gen$$109, $gen$$110))], [\"started\", bool_type]]);\n}\nexport function MapTreeModule$$$collapseLHS($stack$$111) {\n MapTreeModule$$$collapseLHS: while (true) {\n const stack = $stack$$111;\n\n if (stack.tail != null) {\n if (stack.head.tag === 1) {\n return stack;\n } else if (stack.head.tag === 2) {\n $stack$$111 = new List(stack.head.fields[2], new List(new MapTree$00602(1, \"MapOne\", stack.head.fields[0], stack.head.fields[1]), new List(stack.head.fields[3], stack.tail)));\n continue MapTreeModule$$$collapseLHS;\n } else {\n $stack$$111 = stack.tail;\n continue MapTreeModule$$$collapseLHS;\n }\n } else {\n return new List();\n }\n\n break;\n }\n}\nexport function MapTreeModule$$$mkIterator(s$$5) {\n return new MapTreeModule$002EMapIterator$00602(MapTreeModule$$$collapseLHS(new List(s$$5, new List())), false);\n}\nexport function MapTreeModule$$$notStarted() {\n throw new Error(\"enumeration not started\");\n}\nexport function MapTreeModule$$$alreadyFinished() {\n throw new Error(\"enumeration already finished\");\n}\nexport function MapTreeModule$$$current(i$$2) {\n if (i$$2.started) {\n const matchValue$$4 = i$$2.stack;\n\n if (matchValue$$4.tail == null) {\n return MapTreeModule$$$alreadyFinished();\n } else if (matchValue$$4.head.tag === 1) {\n return [matchValue$$4.head.fields[0], matchValue$$4.head.fields[1]];\n } else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for current\");\n }\n } else {\n return MapTreeModule$$$notStarted();\n }\n}\nexport function MapTreeModule$$$moveNext(i$$3) {\n if (i$$3.started) {\n const matchValue$$5 = i$$3.stack;\n\n if (matchValue$$5.tail == null) {\n return false;\n } else if (matchValue$$5.head.tag === 1) {\n i$$3.stack = MapTreeModule$$$collapseLHS(matchValue$$5.tail);\n return !(i$$3.stack.tail == null);\n } else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for moveNext\");\n }\n } else {\n i$$3.started = true;\n return !(i$$3.stack.tail == null);\n }\n}\nexport const MapTreeModule$002EmkIEnumerator$0027$00602 = declare(function Map_MapTreeModule_mkIEnumerator_(s$$6) {\n const $this$$1 = this;\n $this$$1.s = s$$6;\n $this$$1.i = MapTreeModule$$$mkIterator($this$$1.s);\n void null;\n});\nexport function MapTreeModule$002EmkIEnumerator$0027$00602$reflection($gen$$115, $gen$$116) {\n return class_type(\"Map.MapTreeModule.mkIEnumerator'`2\", [$gen$$115, $gen$$116], MapTreeModule$002EmkIEnumerator$0027$00602);\n}\nexport function MapTreeModule$002EmkIEnumerator$0027$00602$$$$002Ector$$Z26BC498C(s$$6) {\n return this instanceof MapTreeModule$002EmkIEnumerator$0027$00602 ? MapTreeModule$002EmkIEnumerator$0027$00602.call(this, s$$6) : new MapTreeModule$002EmkIEnumerator$0027$00602(s$$6);\n}\nObject.defineProperty(MapTreeModule$002EmkIEnumerator$0027$00602.prototype, \"Current\", {\n \"get\": function () {\n const __ = this;\n return MapTreeModule$$$current(__.i);\n }\n});\n\nMapTreeModule$002EmkIEnumerator$0027$00602.prototype.MoveNext = function () {\n const __$$1 = this;\n return MapTreeModule$$$moveNext(__$$1.i);\n};\n\nMapTreeModule$002EmkIEnumerator$0027$00602.prototype.Reset = function () {\n const __$$2 = this;\n __$$2.i = MapTreeModule$$$mkIterator(__$$2.s);\n};\n\nMapTreeModule$002EmkIEnumerator$0027$00602.prototype.Dispose = function () {\n void null;\n};\n\nexport function MapTreeModule$$$mkIEnumerator(s$$7) {\n return MapTreeModule$002EmkIEnumerator$0027$00602$$$$002Ector$$Z26BC498C(s$$7);\n}\nexport function MapTreeModule$$$toSeq(s$$8) {\n const en = MapTreeModule$$$mkIEnumerator(s$$8);\n return unfold(function generator(en$$1) {\n if (en$$1.MoveNext()) {\n return [en$$1.Current, en$$1];\n } else {\n return undefined;\n }\n }, en);\n}\nexport const FSharpMap = declare(function Map_Map(comparer$$17, tree) {\n const $this$$2 = this;\n $this$$2.comparer = comparer$$17;\n $this$$2.tree = tree;\n void null;\n});\nexport function FSharpMap$reflection($gen$$120, $gen$$121) {\n return class_type(\"Map.FSharpMap\", [$gen$$120, $gen$$121], FSharpMap);\n}\nexport function FSharpMap$$$$002Ector$$58ADD115(comparer$$17, tree) {\n return this instanceof FSharpMap ? FSharpMap.call(this, comparer$$17, tree) : new FSharpMap(comparer$$17, tree);\n}\nexport function FSharpMap$$get_Comparer(__$$4) {\n return __$$4.comparer;\n}\nexport function FSharpMap$$get_Tree(__$$5) {\n return __$$5.tree;\n}\nexport function FSharpMap$$Add$$5BDDA1(__$$6, k$$28, v$$24) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$6.comparer, MapTreeModule$$$add(__$$6.comparer, k$$28, v$$24, __$$6.tree));\n}\nexport function FSharpMap$$get_IsEmpty(__$$7) {\n return MapTreeModule$$$isEmpty(__$$7.tree);\n}\nexport function FSharpMap$$get_Item$$2B595(__$$8, k$$29) {\n return MapTreeModule$$$find(__$$8.comparer, k$$29, __$$8.tree);\n}\nexport function FSharpMap$$TryGetValue$$5BDDA1(__$$9, k$$30, defValue) {\n const matchValue$$6 = MapTreeModule$$$tryFind(__$$9.comparer, k$$30, __$$9.tree);\n\n if (matchValue$$6 == null) {\n return [false, defValue];\n } else {\n const v$$25 = value$$3(matchValue$$6);\n return [true, v$$25];\n }\n}\nexport function FSharpMap$$TryPick$$72321DD7(__$$10, f$$17) {\n return MapTreeModule$$$tryPick(f$$17, __$$10.tree);\n}\nexport function FSharpMap$$Exists$$Z395DDC35(__$$11, f$$18) {\n return MapTreeModule$$$exists(f$$18, __$$11.tree);\n}\nexport function FSharpMap$$Filter$$Z395DDC35(__$$12, f$$19) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$12.comparer, MapTreeModule$$$filter(__$$12.comparer, f$$19, __$$12.tree));\n}\nexport function FSharpMap$$ForAll$$Z395DDC35(__$$13, f$$20) {\n return MapTreeModule$$$forall(f$$20, __$$13.tree);\n}\nexport function FSharpMap$$Fold(__$$14, f$$21, acc$$11) {\n return MapTreeModule$$$foldBack(f$$21, __$$14.tree, acc$$11);\n}\nexport function FSharpMap$$FoldSection(__$$15, lo$$2, hi$$2, f$$22, acc$$12) {\n return MapTreeModule$$$foldSection(__$$15.comparer, lo$$2, hi$$2, f$$22, __$$15.tree, acc$$12);\n}\nexport function FSharpMap$$Iterate$$1DCFB91D(__$$16, f$$23) {\n MapTreeModule$$$iter(f$$23, __$$16.tree);\n}\nexport function FSharpMap$$MapRange$$6DC7247(__$$17, f$$24) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$17.comparer, MapTreeModule$$$map(f$$24, __$$17.tree));\n}\nexport function FSharpMap$$Map$$Z6F6B671C(__$$18, f$$25) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$18.comparer, MapTreeModule$$$mapi(f$$25, __$$18.tree));\n}\nexport function FSharpMap$$Partition$$Z395DDC35(__$$19, f$$26) {\n const patternInput$$4 = MapTreeModule$$$partition(__$$19.comparer, f$$26, __$$19.tree);\n return [FSharpMap$$$$002Ector$$58ADD115(__$$19.comparer, patternInput$$4[0]), FSharpMap$$$$002Ector$$58ADD115(__$$19.comparer, patternInput$$4[1])];\n}\nexport function FSharpMap$$get_Count(__$$20) {\n return MapTreeModule$$$size(__$$20.tree);\n}\nexport function FSharpMap$$ContainsKey$$2B595(__$$21, k$$31) {\n return MapTreeModule$$$mem(__$$21.comparer, k$$31, __$$21.tree);\n}\nexport function FSharpMap$$Remove$$2B595(__$$22, k$$32) {\n return FSharpMap$$$$002Ector$$58ADD115(__$$22.comparer, MapTreeModule$$$remove(__$$22.comparer, k$$32, __$$22.tree));\n}\nexport function FSharpMap$$TryFind$$2B595(__$$23, k$$33) {\n return MapTreeModule$$$tryFind(__$$23.comparer, k$$33, __$$23.tree);\n}\nexport function FSharpMap$$ToList(__$$24) {\n return MapTreeModule$$$toList(__$$24.tree);\n}\n\nFSharpMap.prototype.toString = function () {\n const this$ = this;\n let str;\n let strings;\n strings = map$$2(function toStr(kv) {\n return format(\"({0}, {1})\", kv[0], kv[1]);\n }, this$);\n str = join(\"; \", strings);\n return \"map [\" + str + \"]\";\n};\n\nFSharpMap.prototype.GetHashCode = function () {\n const this$$$1 = this;\n\n const combineHash = function combineHash(x$$16, y$$3) {\n return (x$$16 << 1) + y$$3 + 631;\n };\n\n let res$$3 = 0;\n const e$$1 = MapTreeModule$$$mkIEnumerator(FSharpMap$$get_Tree(this$$$1));\n\n while (e$$1.MoveNext()) {\n const patternInput$$5 = e$$1.Current;\n const activePatternResult3678 = patternInput$$5;\n res$$3 = combineHash(res$$3, structuralHash(activePatternResult3678[0]));\n res$$3 = combineHash(res$$3, structuralHash(activePatternResult3678[1]));\n }\n\n return Math.abs(res$$3) | 0;\n};\n\nFSharpMap.prototype.Equals = function (that) {\n const this$$$2 = this;\n return this$$$2.CompareTo(that) === 0;\n};\n\nFSharpMap.prototype[Symbol.iterator] = function () {\n const __$$25 = this;\n return toIterator(MapTreeModule$$$mkIEnumerator(__$$25.tree));\n};\n\nFSharpMap.prototype.CompareTo = function (obj) {\n const m$$22 = this;\n let res$$4 = 0;\n let finished = false;\n const e1 = MapTreeModule$$$mkIEnumerator(FSharpMap$$get_Tree(m$$22));\n\n try {\n const e2 = MapTreeModule$$$mkIEnumerator(FSharpMap$$get_Tree(obj));\n\n try {\n while (!finished ? res$$4 === 0 : false) {\n const matchValue$$7 = [e1.MoveNext(), e2.MoveNext()];\n\n if (matchValue$$7[0]) {\n if (matchValue$$7[1]) {\n const kvp1 = e1.Current;\n const kvp2 = e2.Current;\n const c$$10 = m$$22.comparer.Compare(kvp1[0], kvp2[0]) | 0;\n res$$4 = c$$10 !== 0 ? c$$10 : compare(kvp1[1], kvp2[1]);\n } else {\n res$$4 = 1;\n }\n } else if (matchValue$$7[1]) {\n res$$4 = -1;\n } else {\n finished = true;\n }\n }\n\n return res$$4 | 0;\n } finally {\n if (isDisposable(e2)) {\n e2.Dispose();\n } else {\n void null;\n }\n }\n } finally {\n if (isDisposable(e1)) {\n e1.Dispose();\n } else {\n void null;\n }\n }\n};\n\nObject.defineProperty(FSharpMap.prototype, \"size\", {\n \"get\": function () {\n const this$$$3 = this;\n return FSharpMap$$get_Count(this$$$3) | 0;\n }\n});\n\nFSharpMap.prototype.clear = function () {\n throw new Error(\"Map cannot be mutated\");\n};\n\nFSharpMap.prototype.delete = function (_arg1$$1) {\n throw new Error(\"Map cannot be mutated\");\n};\n\nFSharpMap.prototype.entries = function () {\n const this$$$4 = this;\n return MapTreeModule$$$toSeq(FSharpMap$$get_Tree(this$$$4));\n};\n\nFSharpMap.prototype.get = function (k$$34) {\n const this$$$5 = this;\n return FSharpMap$$get_Item$$2B595(this$$$5, k$$34);\n};\n\nFSharpMap.prototype.has = function (k$$35) {\n const this$$$6 = this;\n return FSharpMap$$ContainsKey$$2B595(this$$$6, k$$35);\n};\n\nFSharpMap.prototype.keys = function () {\n const this$$$7 = this;\n const source$$1 = MapTreeModule$$$toSeq(FSharpMap$$get_Tree(this$$$7));\n return map$$2(function mapping(kv$$1) {\n return kv$$1[0];\n }, source$$1);\n};\n\nFSharpMap.prototype.set = function (k$$36, v$$26) {\n throw new Error(\"Map cannot be mutated\");\n};\n\nFSharpMap.prototype.values = function () {\n const this$$$8 = this;\n const source$$2 = MapTreeModule$$$toSeq(FSharpMap$$get_Tree(this$$$8));\n return map$$2(function mapping$$1(kv$$2) {\n return kv$$2[1];\n }, source$$2);\n};\n\nexport function isEmpty(m$$23) {\n return FSharpMap$$get_IsEmpty(m$$23);\n}\nexport function add(k$$37, v$$27, m$$24) {\n return FSharpMap$$Add$$5BDDA1(m$$24, k$$37, v$$27);\n}\nexport function find(k$$38, m$$25) {\n return FSharpMap$$get_Item$$2B595(m$$25, k$$38);\n}\nexport function tryFind(k$$39, m$$26) {\n return FSharpMap$$TryFind$$2B595(m$$26, k$$39);\n}\nexport function remove(k$$40, m$$27) {\n return FSharpMap$$Remove$$2B595(m$$27, k$$40);\n}\nexport function containsKey(k$$41, m$$28) {\n return FSharpMap$$ContainsKey$$2B595(m$$28, k$$41);\n}\nexport function iterate(f$$27, m$$29) {\n FSharpMap$$Iterate$$1DCFB91D(m$$29, f$$27);\n}\nexport function tryPick(f$$28, m$$30) {\n return FSharpMap$$TryPick$$72321DD7(m$$30, f$$28);\n}\nexport function pick(f$$29, m$$31) {\n const matchValue$$8 = tryPick(f$$29, m$$31);\n\n if (matchValue$$8 != null) {\n const res$$5 = value$$3(matchValue$$8);\n return res$$5;\n } else {\n throw new Error(\"key not found\");\n }\n}\nexport function exists(f$$30, m$$32) {\n return FSharpMap$$Exists$$Z395DDC35(m$$32, f$$30);\n}\nexport function filter(f$$31, m$$33) {\n return FSharpMap$$Filter$$Z395DDC35(m$$33, f$$31);\n}\nexport function partition(f$$32, m$$34) {\n return FSharpMap$$Partition$$Z395DDC35(m$$34, f$$32);\n}\nexport function forAll(f$$33, m$$35) {\n return FSharpMap$$ForAll$$Z395DDC35(m$$35, f$$33);\n}\nexport function mapRange(f$$34, m$$36) {\n return FSharpMap$$MapRange$$6DC7247(m$$36, f$$34);\n}\nexport function map(f$$35, m$$37) {\n return FSharpMap$$Map$$Z6F6B671C(m$$37, f$$35);\n}\nexport function fold(f$$36, z, m$$38) {\n return MapTreeModule$$$fold(f$$36, z, FSharpMap$$get_Tree(m$$38));\n}\nexport function foldBack(f$$37, m$$39, z$$1) {\n return MapTreeModule$$$foldBack(f$$37, FSharpMap$$get_Tree(m$$39), z$$1);\n}\nexport function toSeq(m$$40) {\n return MapTreeModule$$$toSeq(FSharpMap$$get_Tree(m$$40));\n}\nexport function findKey(f$$38, m$$41) {\n let _arg1$$2;\n\n const m$$42 = FSharpMap$$get_Tree(m$$41);\n _arg1$$2 = MapTreeModule$$$tryPick(function f$$39(k$$42, v$$28) {\n if (f$$38(k$$42, v$$28)) {\n return some(k$$42);\n } else {\n return undefined;\n }\n }, m$$42);\n\n if (_arg1$$2 == null) {\n throw new Error(\"Key not found\");\n } else {\n const k$$43 = value$$3(_arg1$$2);\n return k$$43;\n }\n}\nexport function tryFindKey(f$$40, m$$43) {\n const m$$44 = FSharpMap$$get_Tree(m$$43);\n return MapTreeModule$$$tryPick(function f$$41(k$$44, v$$29) {\n if (f$$40(k$$44, v$$29)) {\n return some(k$$44);\n } else {\n return undefined;\n }\n }, m$$44);\n}\nexport function ofList(l$$22, comparer$$18) {\n return FSharpMap$$$$002Ector$$58ADD115(comparer$$18, MapTreeModule$$$ofList(comparer$$18, l$$22));\n}\nexport function ofSeq(l$$23, comparer$$19) {\n return FSharpMap$$$$002Ector$$58ADD115(comparer$$19, MapTreeModule$$$ofSeq(comparer$$19, l$$23));\n}\nexport function ofArray(array, comparer$$20) {\n return FSharpMap$$$$002Ector$$58ADD115(comparer$$20, MapTreeModule$$$ofArray(comparer$$20, array));\n}\nexport function toList(m$$45) {\n return FSharpMap$$ToList(m$$45);\n}\nexport function toArray(m$$46) {\n let res$$6;\n const len = FSharpMap$$get_Count(m$$46) | 0;\n res$$6 = new Array(len);\n MapTreeModule$$$copyToArray(FSharpMap$$get_Tree(m$$46), res$$6, 0);\n return res$$6;\n}\nexport function empty(comparer$$21) {\n return FSharpMap$$$$002Ector$$58ADD115(comparer$$21, new MapTree$00602(0, \"MapEmpty\"));\n}\nexport function createMutable(source$$3, comparer$$22) {\n const map$$1 = MutableMap$002400602$0024$0024$0024$0024002Ector$0024$00246623D9B3(source$$3, comparer$$22);\n return map$$1;\n}\nexport function groupBy(projection, xs, comparer$$23) {\n const dict = createMutable(empty$$1(), comparer$$23);\n iterate$$1(function (v$$30) {\n const key = projection(v$$30);\n\n if (dict.has(key)) {\n void dict.get(key).push(v$$30);\n } else {\n const value = dict.set(key, [v$$30]);\n void value;\n }\n }, xs);\n return map$$2(function mapping$$2(kv$$3) {\n return [kv$$3[0], kv$$3[1]];\n }, dict);\n}\nexport function countBy(projection$$1, xs$$1, comparer$$24) {\n const dict$$1 = createMutable(empty$$1(), comparer$$24);\n iterate$$1(function (value$$1) {\n const key$$1 = projection$$1(value$$1);\n const value$$2 = dict$$1.has(key$$1) ? dict$$1.set(key$$1, dict$$1.get(key$$1) + 1) : dict$$1.set(key$$1, 1);\n void value$$2;\n }, xs$$1);\n return map$$2(function mapping$$3(kv$$4) {\n return [kv$$4[0], kv$$4[1]];\n }, dict$$1);\n}\nexport function count(m$$47) {\n return FSharpMap$$get_Count(m$$47);\n}","// export type decimal = Decimal;\nexport var NumberStyles;\n(function (NumberStyles) {\n // None = 0x00000000,\n // AllowLeadingWhite = 0x00000001,\n // AllowTrailingWhite = 0x00000002,\n // AllowLeadingSign = 0x00000004,\n // AllowTrailingSign = 0x00000008,\n // AllowParentheses = 0x00000010,\n // AllowDecimalPoint = 0x00000020,\n // AllowThousands = 0x00000040,\n // AllowExponent = 0x00000080,\n // AllowCurrencySymbol = 0x00000100,\n NumberStyles[NumberStyles[\"AllowHexSpecifier\"] = 512] = \"AllowHexSpecifier\";\n // Integer = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign,\n // HexNumber = AllowLeadingWhite | AllowTrailingWhite | AllowHexSpecifier,\n // Number = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowTrailingSign | AllowDecimalPoint | AllowThousands,\n // Float = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowDecimalPoint | AllowExponent,\n // Currency = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol,\n // Any = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol | AllowExponent,\n})(NumberStyles || (NumberStyles = {}));\nfunction validResponse(regexMatch, radix) {\n const [/*all*/ , sign, prefix, digits] = regexMatch;\n return {\n sign: sign || \"\",\n prefix: prefix || \"\",\n digits,\n radix,\n };\n}\nfunction getRange(unsigned, bitsize) {\n switch (bitsize) {\n case 8: return unsigned ? [0, 255] : [-128, 127];\n case 16: return unsigned ? [0, 65535] : [-32768, 32767];\n case 32: return unsigned ? [0, 4294967295] : [-2147483648, 2147483647];\n default: throw new Error(\"Invalid bit size.\");\n }\n}\nfunction getInvalidDigits(radix) {\n switch (radix) {\n case 2: return /[^0-1]/;\n case 8: return /[^0-7]/;\n case 10: return /[^0-9]/;\n case 16: return /[^0-9a-fA-F]/;\n default:\n throw new Error(\"Invalid Base.\");\n }\n}\nfunction getRadix(prefix, style) {\n if (style & NumberStyles.AllowHexSpecifier) {\n return 16;\n }\n else {\n switch (prefix) {\n case \"0b\":\n case \"0B\": return 2;\n case \"0o\":\n case \"0O\": return 8;\n case \"0x\":\n case \"0X\": return 16;\n default: return 10;\n }\n }\n}\nexport function isValid(str, style, radix) {\n const integerRegex = /^\\s*([\\+\\-])?(0[xXoObB])?([0-9a-fA-F]+)\\s*$/;\n const res = integerRegex.exec(str.replace(/_/g, \"\"));\n if (res != null) {\n const [/*all*/ , /*sign*/ , prefix, digits] = res;\n radix = radix || getRadix(prefix, style);\n const invalidDigits = getInvalidDigits(radix);\n if (!invalidDigits.test(digits)) {\n return validResponse(res, radix);\n }\n }\n return null;\n}\nexport function parse(str, style, unsigned, bitsize, radix) {\n const res = isValid(str, style, radix);\n if (res != null) {\n let v = Number.parseInt(res.sign + res.digits, res.radix);\n if (!Number.isNaN(v)) {\n const [umin, umax] = getRange(true, bitsize);\n if (!unsigned && res.radix !== 10 && v >= umin && v <= umax) {\n v = v << (32 - bitsize) >> (32 - bitsize);\n }\n const [min, max] = getRange(unsigned, bitsize);\n if (v >= min && v <= max) {\n return v;\n }\n }\n }\n throw new Error(\"Input string was not in a correct format.\");\n}\nexport function tryParse(str, style, unsigned, bitsize) {\n try {\n const v = parse(str, style, unsigned, bitsize);\n return [true, v];\n }\n catch (_a) {\n // supress error\n }\n return [false, 0];\n}\nexport function op_UnaryNegation_Int8(x) {\n return x === -128 ? x : -x;\n}\nexport function op_UnaryNegation_Int16(x) {\n return x === -32768 ? x : -x;\n}\nexport function op_UnaryNegation_Int32(x) {\n return x === -2147483648 ? x : -x;\n}\n//# sourceMappingURL=Int32.js.map","namespace Fable.SimpleJson\r\n\r\nopen System\r\nopen Fable.Core\r\nopen FSharp.Reflection\r\nopen System.Numerics\r\nopen System.Collections\r\nopen System.Collections.Generic\r\n\r\nmodule Node =\r\n\r\n []\r\n /// Converts Base64 string into a byte array in Node environment\r\n let bytesFromBase64 (value: string) : byte array = jsNative\r\n\r\nmodule Convert =\r\n []\r\n let internal isBrowser : unit -> bool = jsNative\r\n\r\n let insideBrowser = isBrowser()\r\n\r\n []\r\n let internal insideWorker : bool = jsNative\r\n\r\n []\r\n let internal setProp o k v = jsNative\r\n\r\n type InternalMap =\r\n | MapEmpty\r\n | MapOne of string * Json\r\n | MapNode of string * Json * InternalMap * InternalMap\r\n\r\n let rec flattenMap = function\r\n | MapEmpty -> [ ]\r\n | MapOne (key, value) -> [ key, value ]\r\n | MapNode (key, value, left, right) ->\r\n [ yield! flattenMap left\r\n yield! flattenMap right\r\n yield (key, value) ]\r\n\r\n let (|KeyValue|_|) key (map: Map) =\r\n map\r\n |> Map.tryFind key\r\n |> Option.map (fun value -> key, value, Map.remove key map)\r\n\r\n let (|NonArray|_|) = function\r\n | JArray _ -> None\r\n | json -> Some json\r\n\r\n let (|MapEmpty|_|) json =\r\n match json with\r\n | JString \"MapEmpty\" -> Some json\r\n | _ -> None\r\n\r\n let (|MapKey|_|) = function\r\n | JNumber number -> Some (string number)\r\n | JString key -> Some key\r\n | _ -> None\r\n\r\n let (|MapOne|_|) = function\r\n | JArray [ JString \"MapOne\"; MapKey key; value ] -> Some (key, value)\r\n | _ -> None\r\n\r\n let (|MapNode|_|) = function\r\n | JArray [ JString \"MapNode\"; MapKey key; value; left; right; JNumber _ ] ->\r\n Some (key, value, left, right)\r\n | _ -> None\r\n\r\n let rec generateMap json =\r\n match json with\r\n | MapEmpty _ -> Some InternalMap.MapEmpty\r\n | MapOne (key, value) -> Some (InternalMap.MapOne (key, value))\r\n | MapNode (key, value, left, right) ->\r\n match generateMap left, generateMap right with\r\n | Some leftMap, Some rightMap ->\r\n Some (InternalMap.MapNode(key, value, leftMap, rightMap))\r\n | _ -> None\r\n | _ -> None\r\n\r\n let arrayLike = function\r\n | TypeInfo.Array _ -> true\r\n | TypeInfo.List _ -> true\r\n | TypeInfo.Seq _ -> true\r\n | TypeInfo.Tuple _ -> true\r\n | TypeInfo.Set _ -> true\r\n | _ -> false\r\n\r\n let isRecord = function\r\n | TypeInfo.Record recordType -> true\r\n | _ -> false\r\n\r\n let unionOfRecords = function\r\n | TypeInfo.Union getCases ->\r\n let (unionCases, unionType) = getCases()\r\n unionCases\r\n |> Seq.forall (fun case -> case.CaseTypes.Length = 1 && isRecord case.CaseTypes.[0])\r\n | _ ->\r\n false\r\n\r\n let optional = function\r\n | TypeInfo.Option _ -> true\r\n | _ -> false\r\n\r\n let isQuoted (input: string) =\r\n input.StartsWith \"\\\"\" && input.EndsWith \"\\\"\"\r\n\r\n let removeQuotes (input: string) =\r\n input.Substring(1, input.Length - 2)\r\n\r\n let rec fromJsonAs (input: Json) (typeInfo: Fable.SimpleJson.TypeInfo) : obj =\r\n match input, typeInfo with\r\n | JNumber value, TypeInfo.Float -> unbox value\r\n | JNumber value, TypeInfo.Float32 -> unbox (float32 value)\r\n | JString value, TypeInfo.Float32 -> unbox (float32 value)\r\n // reading number as int -> floor it\r\n | JNumber value, TypeInfo.Int32 -> unbox (JS.Math.floor(value))\r\n | JBool value, TypeInfo.Bool -> unbox value\r\n // reading int from string -> parse it\r\n | JString value, TypeInfo.Int32 -> unbox (int value)\r\n // reading into strings\r\n | JString value, TypeInfo.String -> unbox value\r\n | JNumber value, TypeInfo.String -> unbox (string value)\r\n // decimals\r\n | JString value, TypeInfo.Decimal -> unbox (decimal value)\r\n | JNumber value, TypeInfo.Decimal -> unbox (decimal value)\r\n | JString value, TypeInfo.Short -> unbox (int16 value)\r\n | JNumber value, TypeInfo.Short -> unbox (int16 value)\r\n // Unsigned integers\r\n | JNumber value, TypeInfo.UInt16 -> unbox (uint16 value)\r\n | JString value, TypeInfo.UInt16 -> unbox (uint16 value)\r\n | JNumber value, TypeInfo.UInt32 -> unbox (uint32 value)\r\n | JString value, TypeInfo.UInt32 -> unbox (uint32 value)\r\n | JNumber value, TypeInfo.UInt64 -> unbox (uint64 value)\r\n | JString value, TypeInfo.UInt64 -> unbox (uint64 value)\r\n | JNumber value, TypeInfo.TimeSpan -> unbox (JS.Math.floor value)\r\n | JString value, TypeInfo.Enum getlElemType ->\r\n let (underlyingType, originalType) = getlElemType()\r\n match underlyingType with\r\n | TypeInfo.Int32 ->\r\n match Int32.TryParse(value) with\r\n | true, parsedNumber ->\r\n unbox parsedNumber\r\n | false, _ ->\r\n failwithf \"The value '%s' is not valid for enum of type '%s'\" value originalType.Name\r\n | TypeInfo.Long ->\r\n match Int64.TryParse(value) with\r\n | true, parsedNumber ->\r\n unbox parsedNumber\r\n | false, _ ->\r\n failwithf \"The value '%s' is not valid for enum of type '%s'\" value originalType.Name\r\n | other ->\r\n failwithf \"The value '%s' cannot be converted to enum of type '%s'\" value originalType.Name\r\n | JNumber value, TypeInfo.Enum getElemType ->\r\n let (_, originalType) = getElemType()\r\n unbox value\r\n // byte[] coming from the server is serialized as base64 string\r\n // convert it back to the actual byte array\r\n | JString value, TypeInfo.Array getElemType ->\r\n let elemType = getElemType()\r\n match elemType with\r\n | TypeInfo.Byte ->\r\n if insideWorker || insideBrowser\r\n then unbox (Convert.FromBase64String value)\r\n else unbox (Node.bytesFromBase64 value)\r\n | otherType -> failwithf \"Cannot convert arbitrary string '%s' to %A\" value otherType\r\n\r\n // null values for strings are just the null string\r\n | JNull, TypeInfo.String -> unbox null\r\n | JNull, TypeInfo.Unit -> unbox ()\r\n // int64 as string -> parse it\r\n | JString value, TypeInfo.Long -> unbox (int64 value)\r\n | JString value, TypeInfo.Byte -> unbox (byte value)\r\n | JNumber value, TypeInfo.Byte -> unbox (byte value)\r\n // BigInt as string -> parse it\r\n | JString value, TypeInfo.BigInt -> unbox (BigInteger.Parse value)\r\n | JNumber value, TypeInfo.BigInt -> unbox (bigint (JS.Math.floor(value)))\r\n // parse formatted date time\r\n | JString value, TypeInfo.DateTime -> unbox (DateTime.Parse(value))\r\n // parse formatted date time offset\r\n | JString value, TypeInfo.DateTimeOffset -> unbox (DateTimeOffset.Parse(value))\r\n // deserialize union from objects\r\n // { \"One\": 20 } or {\"One\": [20]} -> One of int\r\n | JObject values, TypeInfo.Union (getTypes) ->\r\n let (cases, unionType) = getTypes()\r\n match Map.toList values with\r\n | [ caseName, JArray values ] ->\r\n cases\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | None ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) cases\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n | Some foundCase when Array.length foundCase.CaseTypes = 1 && arrayLike foundCase.CaseTypes.[0] ->\r\n let deserialized = fromJsonAs (JArray values) foundCase.CaseTypes.[0]\r\n FSharpValue.MakeUnion(foundCase.Info, [| deserialized |])\r\n |> unbox\r\n | Some foundCase when Array.length foundCase.CaseTypes = 1 && optional foundCase.CaseTypes.[0] ->\r\n let parsedOptional = unbox (fromJsonAs (JArray values) foundCase.CaseTypes.[0])\r\n FSharpValue.MakeUnion(foundCase.Info, [| parsedOptional |])\r\n |> unbox\r\n | Some foundCase ->\r\n if Array.length foundCase.CaseTypes = 1\r\n && not (arrayLike foundCase.CaseTypes.[0])\r\n && Array.length foundCase.CaseTypes <> List.length values\r\n then failwithf \"Expected case '%s' to have %d argument types but the JSON data only contained %d values\" foundCase.CaseName (Array.length foundCase.CaseTypes) (List.length values)\r\n let parsedValues =\r\n Array.ofList values\r\n |> Array.zip foundCase.CaseTypes\r\n |> Array.map (fun (valueType, value) -> fromJsonAs value valueType)\r\n FSharpValue.MakeUnion(foundCase.Info, parsedValues)\r\n |> unbox\r\n | [ caseName, NonArray json ] ->\r\n cases\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | Some ({ CaseName = caseName; Info = caseInfo; CaseTypes = [| caseType |] }) ->\r\n FSharpValue.MakeUnion(caseInfo, [| unbox fromJsonAs json caseType |])\r\n |> unbox\r\n | _ ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) cases\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n | otherwise when unionOfRecords typeInfo ->\r\n let discriminators = [\"__typename\"; \"$typename\"; \"$type\" ]\r\n let foundDiscriminatorKey =\r\n discriminators\r\n |> List.tryFind (fun keyword -> Map.containsKey keyword values)\r\n\r\n match foundDiscriminatorKey with\r\n | None ->\r\n failwithf \"Could not serialize the JSON object into the union of records of type %s because the JSON did not contain a known discriminator. Expected '__typename', '$typeName' or '$type'\" unionType.Name\r\n | Some discriminatorKey ->\r\n let discriminatorValueJson = Map.find discriminatorKey values\r\n match discriminatorValueJson with\r\n | JString discriminatorValue ->\r\n let foundUnionCase =\r\n cases\r\n |> Seq.tryFind (fun case -> case.CaseName.ToUpperInvariant() = discriminatorValue.ToUpperInvariant())\r\n\r\n match foundUnionCase with\r\n | None ->\r\n failwithf \"Union of records of type '%s' does not have a matching case '%s'\" unionType.Name discriminatorValue\r\n | Some case ->\r\n // Assuming the case types is [recordType]\r\n // one element of types and the first element is a record\r\n // as satisfied by the unionOfRecords function\r\n let record = unbox (fromJsonAs (JObject values) (case.CaseTypes.[0]))\r\n FSharpValue.MakeUnion(case.Info, [| record |])\r\n | otherwise ->\r\n failwithf \"Union of records of type '%s' cannot be deserialized with the value of the discriminator key is not a string to match against a specific union case\" unionType.Name\r\n | otherwise ->\r\n // TODO!!! Better error messages here\r\n let unexpectedJson = JS.JSON.stringify otherwise\r\n let expectedType = JS.JSON.stringify cases\r\n failwithf \"Expected JSON:\\n%s\\nto match the type\\n%s\" unexpectedJson expectedType\r\n | JNull, TypeInfo.Option _ -> unbox None\r\n | jsonValue, TypeInfo.Option optionalTypeDelayed when jsonValue <> JNull ->\r\n let optionalType = optionalTypeDelayed()\r\n let parsedOptional = unbox (fromJsonAs jsonValue optionalType)\r\n unbox Some parsedOptional\r\n | JString value, TypeInfo.Guid _ -> unbox (System.Guid.Parse(value))\r\n // int64 as a number, convert it to int then to in64\r\n | JNumber value , TypeInfo.Long _ -> unbox int64 (int value)\r\n // int64 as the internal representation from Long.js\r\n // then reconstruct it from the high/low (two integers) components\r\n | JObject dict, TypeInfo.Long _ ->\r\n let get key = Map.tryFind key dict\r\n [ get \"low\"; get \"high\"; get \"unsigned\" ]\r\n |> List.choose id\r\n |> function\r\n | [ JNumber low; JNumber high; JBool _ ] ->\r\n let lowBytes = BitConverter.GetBytes(int low)\r\n let highBytes = BitConverter.GetBytes(int high)\r\n let combinedBytes = Array.concat [ lowBytes; highBytes ]\r\n BitConverter.ToInt64(combinedBytes, 0)\r\n |> unbox\r\n | _ -> failwithf \"Unable to construct int64 from object literal { low: int, high: int, unsigned: bool }\"\r\n // convert a single case string to union\r\n // \"One\" -> One, here is a special case where the case in quoted inside the string\r\n | JString caseName, TypeInfo.Union getTypes when isQuoted caseName ->\r\n let (caseTypes, unionType) = getTypes()\r\n caseTypes\r\n |> Array.tryFind (fun case -> case.CaseName = removeQuotes caseName)\r\n |> function\r\n | Some ({ Info = caseInfo }) -> unbox (FSharpValue.MakeUnion(caseInfo, [||]))\r\n | None ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) caseTypes\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n // convert a single case string to union\r\n // \"One\" -> One\r\n | JString caseName, TypeInfo.Union getTypes ->\r\n let (caseTypes, unionType) = getTypes()\r\n caseTypes\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | Some ({ Info = caseInfo }) -> unbox (FSharpValue.MakeUnion(caseInfo, [||]))\r\n | None ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) caseTypes\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n | JString serializedRecord, TypeInfo.Record getFields ->\r\n fromJsonAs (SimpleJson.parse serializedRecord) typeInfo\r\n // convert unions from arrays\r\n // [\"One\", 20] -> One of int\r\n | JArray caseValue, TypeInfo.Union getTypes ->\r\n let (cases, unionType) = getTypes()\r\n match caseValue with\r\n // Union case without values\r\n | [ JString caseName ] ->\r\n cases\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | Some ({ CaseName = caseName; Info = caseInfo; CaseTypes = caseInfoTypes }) ->\r\n // single case without values\r\n unbox (FSharpValue.MakeUnion(caseInfo, [||]))\r\n | None ->\r\n let caseNames = Array.map (fun case -> sprintf \" '%s' \" case.CaseName) cases\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case '%s' was not valid for type '%s', expected one of the cases [%s]\" caseName unionType.Name expectedCases\r\n | JString caseName :: values ->\r\n cases\r\n |> Array.tryFind (fun case -> case.CaseName = caseName)\r\n |> function\r\n | None ->\r\n let caseNames = Array.map (fun ({ CaseName = name }) -> name) cases\r\n let expectedCases = String.concat \", \" caseNames\r\n failwithf \"Case %s was not valid, expected one of [%s]\" caseName expectedCases\r\n | Some ({ CaseName = foundCaseName; Info = caseInfo; CaseTypes = types }) ->\r\n if Array.length types <> List.length values\r\n then failwithf \"The number of union case parameters for '%s' is different\" foundCaseName\r\n let parsedValues =\r\n Array.ofList values\r\n |> Array.zip types\r\n |> Array.map (fun (valueType, value) -> fromJsonAs value valueType)\r\n FSharpValue.MakeUnion(caseInfo, parsedValues)\r\n |> unbox\r\n | otherwise ->\r\n let unexpectedJson = JS.JSON.stringify otherwise\r\n let expectedType = JS.JSON.stringify cases\r\n failwithf \"Expected JSON:\\n%s\\nto match the type\\n%s\" unexpectedJson expectedType\r\n // Arrays\r\n | JArray values, TypeInfo.Array elementTypeDelayed ->\r\n let elementType = elementTypeDelayed()\r\n values\r\n |> List.map (fun value -> unbox (fromJsonAs value elementType))\r\n |> Array.ofList\r\n |> unbox\r\n // Lists\r\n | JArray values, TypeInfo.List elementTypeDelayed ->\r\n let elementType = elementTypeDelayed()\r\n values\r\n |> List.map (fun value -> unbox (fromJsonAs value elementType))\r\n |> unbox\r\n | JArray values, TypeInfo.Set elementTypeDelayed ->\r\n let elementType = elementTypeDelayed()\r\n values\r\n |> List.map (fun value -> unbox (fromJsonAs value elementType))\r\n |> Set.ofList\r\n |> unbox\r\n\r\n | JArray values, TypeInfo.Seq elementTypeDelayed ->\r\n let elementType = elementTypeDelayed()\r\n let converted = List.map (fun value -> unbox (fromJsonAs value elementType)) values\r\n unbox converted\r\n // Tuples, become just arrays\r\n | JArray array, TypeInfo.Tuple tupleTypesDelayed ->\r\n let tupleTypes = tupleTypesDelayed()\r\n array\r\n |> Array.ofList\r\n |> Array.zip tupleTypes\r\n |> Array.map (fun (jsonType, jsonData) -> fromJsonAs jsonData jsonType)\r\n |> unbox\r\n // Records\r\n | JObject dict, TypeInfo.Record getTypes ->\r\n let fields, recordType = getTypes()\r\n // Match the JSON object literal keys with their types\r\n let recordValues =\r\n let values = Map.toList dict\r\n fields\r\n |> Array.map (fun ({ FieldName = fieldName; FieldType = fieldType }) ->\r\n values\r\n |> List.tryFind (fun (key, value) -> fieldName = key)\r\n |> function\r\n | Some (key, value) -> unbox (fromJsonAs value fieldType)\r\n | None ->\r\n match fieldType with\r\n // field type is an option of something, just return None\r\n | TypeInfo.Option _ -> unbox None\r\n | _ ->\r\n // field type is required and it doens't exist in the JSON\r\n // then generate a nice error message\r\n let dictKeys =\r\n Map.toList dict\r\n |> List.map (fst >> sprintf \"'%s'\")\r\n |> String.concat \", \"\r\n |> sprintf \"[ %s ]\"\r\n let recordFields =\r\n fields\r\n |> Array.map (fun ({ FieldName = name; FieldType = innerFieldType }) ->\r\n match innerFieldType with\r\n | TypeInfo.Option _ -> sprintf \"optional('%s')\" name\r\n | _ -> sprintf \"required('%s')\" name)\r\n |> String.concat \", \"\r\n |> sprintf \"[ %s ]\"\r\n failwithf \"Could not find the required key '%s' in the JSON object literal with keys %s to match with record type '%s' that has fields %s\" fieldName dictKeys recordType.Name recordFields)\r\n unbox (FSharpValue.MakeRecord(recordType, recordValues))\r\n\r\n | JArray tuples, TypeInfo.Map getTypes ->\r\n let (keyType, valueType) = getTypes()\r\n let pairs =\r\n [ for keyValuePair in tuples do\r\n let tuple = fromJsonAs keyValuePair (TypeInfo.Tuple (let a = [| keyType; valueType |] in fun () -> a))\r\n yield tuple ]\r\n match keyType with\r\n | TypeInfo.Int32\r\n | TypeInfo.String\r\n | TypeInfo.Bool ->\r\n pairs\r\n |> unbox<(string * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n | _ ->\r\n pairs\r\n |> unbox<(IStructuralComparable * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n\r\n | JArray tuples, TypeInfo.Dictionary getTypes ->\r\n let (keyType, valueType) = getTypes()\r\n let pairs =\r\n [ for keyValuePair in tuples do\r\n let tuple = fromJsonAs keyValuePair (TypeInfo.Tuple (let a = [| keyType; valueType |] in fun () -> a))\r\n yield tuple ]\r\n let output = System.Collections.Generic.Dictionary()\r\n for (key, value) in (unbox<(IStructuralComparable * obj) list> pairs) do output.Add(unbox key, value)\r\n output\r\n |> unbox\r\n\r\n | JObject dict, TypeInfo.Dictionary getTypes ->\r\n let (keyType, valueType) = getTypes()\r\n dict\r\n |> Map.toList\r\n |> List.map (fun (key, value) -> fromJsonAs (JString key) keyType, fromJsonAs value valueType )\r\n |> fun pairs ->\r\n let output = System.Collections.Generic.Dictionary()\r\n for (key, value) in pairs do output.Add(unbox key, value)\r\n output\r\n |> unbox\r\n\r\n | JArray items, TypeInfo.HashSet getType ->\r\n let elemType = getType()\r\n let hashset = HashSet()\r\n for item in items do\r\n let deserialized = fromJsonAs item elemType\r\n hashset.Add(unbox deserialized) |> ignore\r\n\r\n unbox hashset\r\n\r\n | JObject map, TypeInfo.Map getTypes ->\r\n let (keyType, valueType) = getTypes()\r\n // check whether the map is serialized to it's internal representation\r\n // and convert that to back to a normal map from the data\r\n match Map.tryFind \"comparer\" map, Map.tryFind \"tree\" map with\r\n | Some (JObject comparer), Some (JArray tree) when Map.isEmpty comparer ->\r\n match generateMap (JArray tree) with\r\n | Some internalMap ->\r\n let pairs =\r\n flattenMap internalMap\r\n |> List.map (fun (key, value) ->\r\n let nextKey =\r\n if not (isQuoted key)\r\n then unbox (fromJsonAs (JString key) keyType)\r\n else unbox (fromJsonAs (SimpleJson.parseNative key) keyType)\r\n let nextValue = unbox (fromJsonAs value valueType)\r\n unbox nextKey, nextValue)\r\n match keyType with\r\n | TypeInfo.Int32\r\n | TypeInfo.String\r\n | TypeInfo.Bool ->\r\n pairs\r\n |> unbox<(string * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n | _ ->\r\n pairs\r\n |> unbox<(IStructuralComparable * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n\r\n | None ->\r\n let inputJson = SimpleJson.toString (JArray tree)\r\n failwithf \"Could not generate map from JSON\\n %s\" inputJson\r\n | _ ->\r\n // if comparer and tree are not present,\r\n // assume we are parsing Fable 1 object literal\r\n // and converting that to map\r\n let pairs =\r\n map\r\n |> Map.toList\r\n |> List.map (fun (key, value) ->\r\n let nextKey =\r\n if not (isQuoted key)\r\n then\r\n if Converter.isPrimitive keyType || Converter.enumUnion keyType\r\n then\r\n // for primitive type, just read them as string and parse\r\n unbox (fromJsonAs (JString key) keyType)\r\n else\r\n // server-side JSON can still be complex (for complex types)\r\n // but doesn't have to be quoted, parse again here\r\n unbox (fromJsonAs (SimpleJson.parseNative key) keyType)\r\n else\r\n unbox (fromJsonAs (SimpleJson.parseNative key) keyType)\r\n let nextValue = unbox (fromJsonAs value valueType)\r\n unbox nextKey, nextValue)\r\n\r\n match keyType with\r\n | TypeInfo.Int32\r\n | TypeInfo.String\r\n | TypeInfo.Bool ->\r\n pairs\r\n |> unbox<(string * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n | _ ->\r\n pairs\r\n |> unbox<(IStructuralComparable * obj) list>\r\n |> Map.ofList\r\n |> unbox\r\n | _, TypeInfo.Any getType ->\r\n let unknownType = getType()\r\n failwithf \"Cannot convert %s to %s\" (SimpleJson.toString input) unknownType.FullName\r\n | _ ->\r\n failwithf \"Cannot convert %s to %s\" (SimpleJson.toString input) (JS.JSON.stringify typeInfo)\r\n\r\n let fromJson<'t> json typeInfo =\r\n unbox<'t> (fromJsonAs json typeInfo)\r\n\r\n[]\r\nmodule ConverterExtensions =\r\n type Json with\r\n static member stringify<'t> (x: 't) =\r\n SimpleJson.stringify x\r\n\r\n /// Parses the input string as JSON and tries to convert it as the given type argument\r\n static member inline parseAs<'t> (input: string) : 't =\r\n match SimpleJson.tryParse input with\r\n | None -> failwith \"Couldn't parse the input JSON string because it seems to be invalid\"\r\n | Some inputJson ->\r\n let typeInfo = TypeInfo.createFrom<'t> ()\r\n Convert.fromJson<'t> inputJson typeInfo\r\n\r\n /// Parses the input string as JSON using native parsing and tries to convert it as the given type argument\r\n static member inline parseNativeAs<'t> (input: string) : 't =\r\n let inputJson = SimpleJson.parseNative input\r\n let typeInfo = TypeInfo.createFrom<'t> ()\r\n Convert.fromJson<'t> inputJson typeInfo\r\n\r\n /// Tries to parse the input string as JSON and tries to convert it as the given type argument, returing a (hopefully) useful error message when it fails\r\n static member inline tryParseAs<'t> (input: string) : Result<'t, string> =\r\n try Ok (Json.parseAs<'t> input)\r\n with | ex -> Error ex.Message\r\n\r\n /// Tries to parse the input string as JSON using native parsing and tries to convert it as the given type argument\r\n static member inline tryParseNativeAs<'t> (input: string) : Result<'t, string> =\r\n try Ok (Json.parseNativeAs<'t> input)\r\n with | ex -> Error ex.Message\r\n\r\n /// Tries to convert parsed JSON object as the given type parameter argument, this method is used when you want to apply transformations to the JSON object before parsing\r\n static member inline convertFromJsonAs<'t> (input: Json) : 't =\r\n let typeInfo = TypeInfo.createFrom<'t> ()\r\n Convert.fromJson<'t> input typeInfo\r\n\r\n /// Tries to convert parsed JSON object as the given type parameter argument, this method is used when you want to apply transformations to the JSON object before parsing\r\n static member inline tryConvertFromJsonAs<'t> (input: Json) : Result<'t, string> =\r\n try Ok (Json.convertFromJsonAs<'t> input)\r\n with | ex -> Error ex.Message\r\n","// tslint:disable:ban-types\nexport function bindThis(this$, source) {\n for (const key of Object.keys(source)) {\n if (typeof source[key] === \"function\") {\n source[key] = source[key].bind(this$);\n }\n }\n return source;\n}\n// Object.assign flattens getters and setters\n// See https://stackoverflow.com/questions/37054596/js-es5-how-to-assign-objects-with-setters-and-getters\nexport function extend(target, ...sources) {\n for (const source of sources) {\n for (const key of Object.keys(source)) {\n const descr = Object.getOwnPropertyDescriptor(source, key);\n if (descr) {\n Object.defineProperty(target, key, descr);\n }\n }\n }\n return target;\n}\nexport function isIterable(x) {\n return x != null && typeof x === \"object\" && Symbol.iterator in x;\n}\nexport function isArrayLike(x) {\n return x != null && (Array.isArray(x) || ArrayBuffer.isView(x));\n}\nexport function isComparer(x) {\n return x != null && typeof x.Compare === \"function\";\n}\nexport function isComparable(x) {\n return x != null && typeof x.CompareTo === \"function\";\n}\nexport function isEquatable(x) {\n return x != null && typeof x.Equals === \"function\";\n}\nexport function isHashable(x) {\n return x != null && typeof x.GetHashCode === \"function\";\n}\nexport function isDisposable(x) {\n return x != null && typeof x.Dispose === \"function\";\n}\nexport class Comparer {\n constructor(f) {\n this.Compare = f || compare;\n }\n}\nexport function comparerFromEqualityComparer(comparer) {\n // Sometimes IEqualityComparer also implements IComparer\n if (isComparer(comparer)) {\n return new Comparer(comparer.Compare);\n }\n else {\n return new Comparer((x, y) => {\n const xhash = comparer.GetHashCode(x);\n const yhash = comparer.GetHashCode(y);\n if (xhash === yhash) {\n return comparer.Equals(x, y) ? 0 : -1;\n }\n else {\n return xhash < yhash ? -1 : 1;\n }\n });\n }\n}\n// TODO: Move these three methods to Map and Set modules\nexport function containsValue(v, map) {\n for (const kv of map) {\n if (equals(v, kv[1])) {\n return true;\n }\n }\n return false;\n}\nexport function tryGetValue(map, key, defaultValue) {\n return map.has(key) ? [true, map.get(key)] : [false, defaultValue];\n}\nexport function addToSet(v, set) {\n if (set.has(v)) {\n return false;\n }\n set.add(v);\n return true;\n}\nexport function assertEqual(actual, expected, msg) {\n if (!equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport function assertNotEqual(actual, expected, msg) {\n if (equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport class Lazy {\n constructor(factory) {\n this.factory = factory;\n this.isValueCreated = false;\n }\n get Value() {\n if (!this.isValueCreated) {\n this.createdValue = this.factory();\n this.isValueCreated = true;\n }\n return this.createdValue;\n }\n get IsValueCreated() {\n return this.isValueCreated;\n }\n}\nexport function lazyFromValue(v) {\n return new Lazy(() => v);\n}\nexport function padWithZeros(i, length) {\n let str = i.toString(10);\n while (str.length < length) {\n str = \"0\" + str;\n }\n return str;\n}\nexport function padLeftAndRightWithZeros(i, lengthLeft, lengthRight) {\n let str = i.toString(10);\n while (str.length < lengthLeft) {\n str = \"0\" + str;\n }\n while (str.length < lengthRight) {\n str = str + \"0\";\n }\n return str;\n}\nexport function dateOffset(date) {\n const date1 = date;\n return typeof date1.offset === \"number\"\n ? date1.offset\n : (date.kind === 1 /* UTC */\n ? 0 : date.getTimezoneOffset() * -60000);\n}\nexport function int16ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFF + i + 1 : i;\n return i.toString(radix);\n}\nexport function int32ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFFFFFF + i + 1 : i;\n return i.toString(radix);\n}\nlet ObjectRef = /** @class */ (() => {\n class ObjectRef {\n static id(o) {\n if (!ObjectRef.idMap.has(o)) {\n ObjectRef.idMap.set(o, ++ObjectRef.count);\n }\n return ObjectRef.idMap.get(o);\n }\n }\n ObjectRef.idMap = new WeakMap();\n ObjectRef.count = 0;\n return ObjectRef;\n})();\nexport { ObjectRef };\nexport function stringHash(s) {\n let i = 0;\n let h = 5381;\n const len = s.length;\n while (i < len) {\n h = (h * 33) ^ s.charCodeAt(i++);\n }\n return h;\n}\nexport function numberHash(x) {\n return x * 2654435761 | 0;\n}\n// From https://stackoverflow.com/a/37449594\nexport function combineHashCodes(hashes) {\n if (hashes.length === 0) {\n return 0;\n }\n return hashes.reduce((h1, h2) => {\n return ((h1 << 5) + h1) ^ h2;\n });\n}\nexport function identityHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"string\":\n return stringHash(x);\n default:\n return numberHash(ObjectRef.id(x));\n }\n}\nexport function structuralHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"string\":\n return stringHash(x);\n default: {\n if (isHashable(x)) {\n return x.GetHashCode();\n }\n else if (isArrayLike(x)) {\n const len = x.length;\n const hashes = new Array(len);\n for (let i = 0; i < len; i++) {\n hashes[i] = structuralHash(x[i]);\n }\n return combineHashCodes(hashes);\n }\n else {\n return stringHash(String(x));\n }\n }\n }\n}\nexport function equalArraysWith(x, y, eq) {\n if (x == null) {\n return y == null;\n }\n if (y == null) {\n return false;\n }\n if (x.length !== y.length) {\n return false;\n }\n for (let i = 0; i < x.length; i++) {\n if (!eq(x[i], y[i])) {\n return false;\n }\n }\n return true;\n}\nexport function equalArrays(x, y) {\n return equalArraysWith(x, y, equals);\n}\n// export function equalObjects(x: { [k: string]: any }, y: { [k: string]: any }): boolean {\n// if (x == null) { return y == null; }\n// if (y == null) { return false; }\n// const xKeys = Object.keys(x);\n// const yKeys = Object.keys(y);\n// if (xKeys.length !== yKeys.length) {\n// return false;\n// }\n// xKeys.sort();\n// yKeys.sort();\n// for (let i = 0; i < xKeys.length; i++) {\n// if (xKeys[i] !== yKeys[i] || !equals(x[xKeys[i]], y[yKeys[i]])) {\n// return false;\n// }\n// }\n// return true;\n// }\nexport function equals(x, y) {\n if (x === y) {\n return true;\n }\n else if (x == null) {\n return y == null;\n }\n else if (y == null) {\n return false;\n }\n else if (typeof x !== \"object\") {\n return false;\n }\n else if (isEquatable(x)) {\n return x.Equals(y);\n }\n else if (isArrayLike(x)) {\n return isArrayLike(y) && equalArrays(x, y);\n }\n else if (x instanceof Date) {\n return (y instanceof Date) && compareDates(x, y) === 0;\n }\n else {\n return false;\n }\n}\nexport function compareDates(x, y) {\n let xtime;\n let ytime;\n // DateTimeOffset and DateTime deals with equality differently.\n if (\"offset\" in x && \"offset\" in y) {\n xtime = x.getTime();\n ytime = y.getTime();\n }\n else {\n xtime = x.getTime() + dateOffset(x);\n ytime = y.getTime() + dateOffset(y);\n }\n return xtime === ytime ? 0 : (xtime < ytime ? -1 : 1);\n}\nexport function comparePrimitives(x, y) {\n return x === y ? 0 : (x < y ? -1 : 1);\n}\nexport function compareArraysWith(x, y, comp) {\n if (x == null) {\n return y == null ? 0 : 1;\n }\n if (y == null) {\n return -1;\n }\n if (x.length !== y.length) {\n return x.length < y.length ? -1 : 1;\n }\n for (let i = 0, j = 0; i < x.length; i++) {\n j = comp(x[i], y[i]);\n if (j !== 0) {\n return j;\n }\n }\n return 0;\n}\nexport function compareArrays(x, y) {\n return compareArraysWith(x, y, compare);\n}\nexport function compareObjects(x, y) {\n if (x == null) {\n return y == null ? 0 : 1;\n }\n if (y == null) {\n return -1;\n }\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y);\n if (xKeys.length !== yKeys.length) {\n return xKeys.length < yKeys.length ? -1 : 1;\n }\n xKeys.sort();\n yKeys.sort();\n for (let i = 0, j = 0; i < xKeys.length; i++) {\n const key = xKeys[i];\n if (key !== yKeys[i]) {\n return key < yKeys[i] ? -1 : 1;\n }\n else {\n j = compare(x[key], y[key]);\n if (j !== 0) {\n return j;\n }\n }\n }\n return 0;\n}\nexport function compare(x, y) {\n if (x === y) {\n return 0;\n }\n else if (x == null) {\n return y == null ? 0 : -1;\n }\n else if (y == null) {\n return 1;\n }\n else if (typeof x !== \"object\") {\n return x < y ? -1 : 1;\n }\n else if (isComparable(x)) {\n return x.CompareTo(y);\n }\n else if (isArrayLike(x) && isArrayLike(y)) {\n return compareArrays(x, y);\n }\n else if (x instanceof Date && y instanceof Date) {\n return compareDates(x, y);\n }\n else {\n return 1;\n }\n}\nexport function min(comparer, x, y) {\n return comparer(x, y) < 0 ? x : y;\n}\nexport function max(comparer, x, y) {\n return comparer(x, y) > 0 ? x : y;\n}\nexport function createAtom(value) {\n let atom = value;\n return (value) => {\n if (value === void 0) {\n return atom;\n }\n else {\n atom = value;\n return void 0;\n }\n };\n}\nconst CaseRules = {\n None: 0,\n LowerFirst: 1,\n SnakeCase: 2,\n SnakeCaseAllCaps: 3,\n KebabCase: 4,\n};\nfunction dashify(str, separator) {\n return str.replace(/[a-z]?[A-Z]/g, (m) => m.length === 1\n ? m.toLowerCase()\n : m.charAt(0) + separator + m.charAt(1).toLowerCase());\n}\nfunction changeCase(str, caseRule) {\n switch (caseRule) {\n case CaseRules.LowerFirst:\n return str.charAt(0).toLowerCase() + str.slice(1);\n case CaseRules.SnakeCase:\n return dashify(str, \"_\");\n case CaseRules.SnakeCaseAllCaps:\n return dashify(str, \"_\").toUpperCase();\n case CaseRules.KebabCase:\n return dashify(str, \"-\");\n case CaseRules.None:\n default:\n return str;\n }\n}\nexport function createObj(fields, caseRule = CaseRules.None) {\n function fail(kvPair) {\n throw new Error(\"Cannot infer key and value of \" + String(kvPair));\n }\n const o = {};\n const definedCaseRule = caseRule;\n for (let kvPair of fields) {\n let caseRule = CaseRules.None;\n if (kvPair == null) {\n fail(kvPair);\n }\n // Deflate unions and use the defined case rule\n if (typeof kvPair.toJSON === \"function\") {\n kvPair = kvPair.toJSON();\n caseRule = definedCaseRule;\n }\n if (Array.isArray(kvPair)) {\n switch (kvPair.length) {\n case 0:\n fail(kvPair);\n break;\n case 1:\n o[changeCase(kvPair[0], caseRule)] = true;\n break;\n case 2:\n const value = kvPair[1];\n o[changeCase(kvPair[0], caseRule)] = value;\n break;\n default:\n o[changeCase(kvPair[0], caseRule)] = kvPair.slice(1);\n }\n }\n else if (typeof kvPair === \"string\") {\n o[changeCase(kvPair, caseRule)] = true;\n }\n else {\n fail(kvPair);\n }\n }\n return o;\n}\nexport function jsOptions(mutator) {\n const opts = {};\n mutator(opts);\n return opts;\n}\nexport function round(value, digits = 0) {\n const m = Math.pow(10, digits);\n const n = +(digits ? value * m : value).toFixed(8);\n const i = Math.floor(n);\n const f = n - i;\n const e = 1e-8;\n const r = (f > 0.5 - e && f < 0.5 + e) ? ((i % 2 === 0) ? i : i + 1) : Math.round(n);\n return digits ? r / m : r;\n}\nexport function sign(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n}\nexport function randomNext(min, max) {\n return Math.floor(Math.random() * (max - min)) + min;\n}\nexport function randomBytes(buffer) {\n if (buffer == null) {\n throw new Error(\"Buffer cannot be null\");\n }\n for (let i = 0; i < buffer.length; i += 6) {\n // Pick random 48-bit number. Fill buffer in 2 24-bit chunks to avoid bitwise truncation.\n let r = Math.floor(Math.random() * 281474976710656); // Low 24 bits = chunk 1.\n const rhi = Math.floor(r / 16777216); // High 24 bits shifted via division = chunk 2.\n for (let j = 0; j < 6 && i + j < buffer.length; j++) {\n if (j === 3) {\n r = rhi;\n }\n buffer[i + j] = r & 255;\n r >>>= 8;\n }\n }\n}\nexport function unescapeDataString(s) {\n // https://stackoverflow.com/a/4458580/524236\n return decodeURIComponent((s).replace(/\\+/g, \"%20\"));\n}\nexport function escapeDataString(s) {\n return encodeURIComponent(s).replace(/!/g, \"%21\")\n .replace(/'/g, \"%27\")\n .replace(/\\(/g, \"%28\")\n .replace(/\\)/g, \"%29\")\n .replace(/\\*/g, \"%2A\");\n}\nexport function escapeUriString(s) {\n return encodeURI(s);\n}\n// ICollection.Clear and Count members can be called on Arrays\n// or Dictionaries so we need a runtime check (see #1120)\nexport function count(col) {\n if (isArrayLike(col)) {\n return col.length;\n }\n else {\n let count = 0;\n for (const _ of col) {\n count++;\n }\n return count;\n }\n}\nexport function clear(col) {\n if (isArrayLike(col)) {\n col.splice(0);\n }\n else {\n col.clear();\n }\n}\nconst CURRIED_KEY = \"__CURRIED__\";\nexport function uncurry(arity, f) {\n // f may be a function option with None value\n if (f == null) {\n return undefined;\n }\n // The function is already uncurried\n if (f.length > 1) {\n // if (CURRIED_KEY in f) { // This doesn't always work\n return f;\n }\n let uncurriedFn;\n switch (arity) {\n case 2:\n uncurriedFn = (a1, a2) => f(a1)(a2);\n break;\n case 3:\n uncurriedFn = (a1, a2, a3) => f(a1)(a2)(a3);\n break;\n case 4:\n uncurriedFn = (a1, a2, a3, a4) => f(a1)(a2)(a3)(a4);\n break;\n case 5:\n uncurriedFn = (a1, a2, a3, a4, a5) => f(a1)(a2)(a3)(a4)(a5);\n break;\n case 6:\n uncurriedFn = (a1, a2, a3, a4, a5, a6) => f(a1)(a2)(a3)(a4)(a5)(a6);\n break;\n case 7:\n uncurriedFn = (a1, a2, a3, a4, a5, a6, a7) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7);\n break;\n case 8:\n uncurriedFn = (a1, a2, a3, a4, a5, a6, a7, a8) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8);\n break;\n default:\n throw new Error(\"Uncurrying to more than 8-arity is not supported: \" + arity);\n }\n uncurriedFn[CURRIED_KEY] = f;\n return uncurriedFn;\n}\nexport function curry(arity, f) {\n if (f == null) {\n return undefined;\n }\n if (CURRIED_KEY in f) {\n return f[CURRIED_KEY];\n }\n switch (arity) {\n case 2:\n return (a1) => (a2) => f(a1, a2);\n case 3:\n return (a1) => (a2) => (a3) => f(a1, a2, a3);\n case 4:\n return (a1) => (a2) => (a3) => (a4) => f(a1, a2, a3, a4);\n case 5:\n return (a1) => (a2) => (a3) => (a4) => (a5) => f(a1, a2, a3, a4, a5);\n case 6:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => f(a1, a2, a3, a4, a5, a6);\n case 7:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => f(a1, a2, a3, a4, a5, a6, a7);\n case 8:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => f(a1, a2, a3, a4, a5, a6, a7, a8);\n default:\n throw new Error(\"Currying to more than 8-arity is not supported: \" + arity);\n }\n}\nexport function partialApply(arity, f, args) {\n if (f == null) {\n return undefined;\n }\n else if (CURRIED_KEY in f) {\n f = f[CURRIED_KEY];\n for (let i = 0; i < args.length; i++) {\n f = f(args[i]);\n }\n return f;\n }\n else {\n switch (arity) {\n case 1:\n // Wrap arguments to make sure .concat doesn't destruct arrays. Example\n // [1,2].concat([3,4],5) --> [1,2,3,4,5] // fails\n // [1,2].concat([[3,4],5]) --> [1,2,[3,4],5] // ok\n return (a1) => f.apply(undefined, args.concat([a1]));\n case 2:\n return (a1) => (a2) => f.apply(undefined, args.concat([a1, a2]));\n case 3:\n return (a1) => (a2) => (a3) => f.apply(undefined, args.concat([a1, a2, a3]));\n case 4:\n return (a1) => (a2) => (a3) => (a4) => f.apply(undefined, args.concat([a1, a2, a3, a4]));\n case 5:\n return (a1) => (a2) => (a3) => (a4) => (a5) => f.apply(undefined, args.concat([a1, a2, a3, a4, a5]));\n case 6:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => f.apply(undefined, args.concat([a1, a2, a3, a4, a5, a6]));\n case 7:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => f.apply(undefined, args.concat([a1, a2, a3, a4, a5, a6, a7]));\n case 8:\n return (a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => f.apply(undefined, args.concat([a1, a2, a3, a4, a5, a6, a7, a8]));\n default:\n throw new Error(\"Partially applying to more than 8-arity is not supported: \" + arity);\n }\n }\n}\nexport function mapCurriedArgs(fn, mappings) {\n function mapArg(fn, arg, mappings, idx) {\n const mapping = mappings[idx];\n if (mapping !== 0) {\n const expectedArity = mapping[0];\n const actualArity = mapping[1];\n if (expectedArity > 1) {\n arg = curry(expectedArity, arg);\n }\n if (actualArity > 1) {\n arg = uncurry(actualArity, arg);\n }\n }\n const res = fn(arg);\n if (idx + 1 === mappings.length) {\n return res;\n }\n else {\n return (arg) => mapArg(res, arg, mappings, idx + 1);\n }\n }\n return (arg) => mapArg(fn, arg, mappings, 0);\n}\nexport function addToDict(dict, k, v) {\n if (dict.has(k)) {\n throw new Error(\"An item with the same key has already been added. Key: \" + k);\n }\n dict.set(k, v);\n}\nexport function getItemFromDict(map, key) {\n if (map.has(key)) {\n return map.get(key);\n }\n else {\n throw new Error(`The given key '${key}' was not present in the dictionary.`);\n }\n}\n//# sourceMappingURL=Util.js.map","const littleEndian = true;\nfunction utf16le_encode(str) {\n const bytes = new Uint8Array(str.length * 2);\n const view = new DataView(bytes.buffer);\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n view.setUint16(i * 2, code, littleEndian);\n }\n return bytes;\n}\nfunction utf16le_decode(bytes) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n const chars = new Array(view.byteLength / 2);\n for (let i = 0; i < chars.length; i++) {\n const code = view.getUint16(i * 2, littleEndian);\n chars[i] = String.fromCharCode(code);\n }\n return chars.join(\"\");\n}\nfunction utf8_encode(str) {\n let pos = 0;\n let buf = new Uint8Array(str.length * 3);\n for (let i = 0; i < str.length; i++) {\n let code = str.charCodeAt(i);\n if (code >= 0xD800 && code <= 0xDBFF) {\n const nextCode = (i < str.length) ? str.charCodeAt(i + 1) : 0;\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n i += 1;\n code = (code - 0xD800) * 0x400 + nextCode - 0xDC00 + 0x10000;\n if (code > 0xFFFF) {\n buf[pos++] = (0x1E << 3) | (code >>> 18);\n buf[pos++] = (0x2 << 6) | ((code >>> 12) & 0x3F);\n buf[pos++] = (0x2 << 6) | ((code >>> 6) & 0x3F);\n buf[pos++] = (0x2 << 6) | (code & 0x3F);\n }\n }\n else {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n }\n }\n else if (code <= 0x007F) {\n buf[pos++] = (0x0 << 7) | code;\n }\n else if (code <= 0x07FF) {\n buf[pos++] = (0x6 << 5) | (code >>> 6);\n buf[pos++] = (0x2 << 6) | (code & 0x3F);\n }\n else {\n buf[pos++] = (0xE << 4) | (code >>> 12);\n buf[pos++] = (0x2 << 6) | ((code >>> 6) & 0x3F);\n buf[pos++] = (0x2 << 6) | (code & 0x3F);\n }\n }\n buf = new Uint8Array(buf.buffer.slice(0, pos));\n return buf;\n}\nfunction utf8_decode(bytes) {\n let pos = 0;\n const decodeUtf8 = () => {\n const i1 = bytes[pos++];\n if ((i1 & 0x80) === 0) {\n return i1;\n }\n else if ((i1 & 0xE0) === 0xC0) {\n const i2 = bytes[pos++];\n return ((i1 & 0x1F) << 6) | (i2 & 0x3F);\n }\n else if ((i1 & 0xF0) === 0xE0) {\n const i2 = bytes[pos++];\n const i3 = bytes[pos++];\n return ((i1 & 0x0F) << 12) | ((i2 & 0x3F) << 6) | (i3 & 0x3F);\n }\n else if ((i1 & 0xF8) === 0xF0) {\n const i2 = bytes[pos++];\n const i3 = bytes[pos++];\n const i4 = bytes[pos++];\n return ((i1 & 0x07) << 18) | ((i2 & 0x3F) << 12) | ((i3 & 0x3F) << 6) | (i4 & 0x3F);\n }\n else {\n throw RangeError(\"Invalid UTF8 byte: \" + i1);\n }\n };\n const chars = new Array();\n while (pos < bytes.length) {\n const code = decodeUtf8();\n chars.push(String.fromCodePoint(code));\n }\n return chars.join(\"\");\n}\nclass UTF16LE {\n getBytes(str, index, count) {\n if (index != null && count != null) {\n str = str.substring(index, index + count);\n }\n else if (index != null) {\n str = str.substring(index);\n }\n if (typeof Buffer !== \"undefined\") {\n const bytes = Buffer.from(str, \"utf16le\");\n return new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n }\n else {\n return utf16le_encode(str); // polyfill\n }\n }\n getString(bytes, index, count) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n let buffer = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\n if (index != null && count != null) {\n buffer = buffer.subarray(index, index + count);\n }\n else if (index != null) {\n buffer = buffer.subarray(index);\n }\n if (typeof TextDecoder !== \"undefined\") {\n return new TextDecoder(\"utf-16le\").decode(buffer);\n }\n else if (typeof Buffer !== \"undefined\") {\n return Buffer.from(buffer).toString(\"utf16le\");\n }\n else {\n return utf16le_decode(buffer); // polyfill\n }\n }\n}\nclass UTF8 {\n getBytes(str, index, count) {\n if (index != null && count != null) {\n str = str.substring(index, index + count);\n }\n else if (index != null) {\n str = str.substring(index);\n }\n if (typeof TextEncoder !== \"undefined\") {\n return new TextEncoder().encode(str);\n }\n else if (typeof Buffer !== \"undefined\") {\n const bytes = Buffer.from(str, \"utf8\");\n return new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n }\n else {\n return utf8_encode(str); // polyfill\n }\n }\n getString(bytes, index, count) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n let buffer = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\n if (index != null && count != null) {\n buffer = buffer.subarray(index, index + count);\n }\n else if (index != null) {\n buffer = buffer.subarray(index);\n }\n if (typeof TextDecoder !== \"undefined\") {\n return new TextDecoder().decode(buffer);\n }\n else if (typeof Buffer !== \"undefined\") {\n return Buffer.from(buffer).toString(\"utf8\");\n }\n else {\n return utf8_decode(buffer); // polyfill\n }\n }\n}\nconst _UTF16 = new UTF16LE();\nconst _UTF8 = new UTF8();\nexport function get_Unicode() { return _UTF16; }\nexport function get_UTF8() { return _UTF8; }\n//# sourceMappingURL=Encoding.js.map","[]\r\nmodule Fable.React.Extensions\r\n\r\ntype Browser.Types.Event with\r\n /// Access the value from target\r\n /// Equivalent to `(this.target :?> HTMLInputElement).value`\r\n member this.Value =\r\n (this.target :?> Browser.Types.HTMLInputElement).value\r\n\r\n /// Access the checked property from target\r\n /// Equivalent to `(this.target :?> HTMLInputElement).checked`\r\n member this.Checked =\r\n (this.target :?> Browser.Types.HTMLInputElement).``checked``\r\n","export class CancellationToken {\n constructor(cancelled = false) {\n this._id = 0;\n this._cancelled = cancelled;\n this._listeners = new Map();\n }\n get isCancelled() {\n return this._cancelled;\n }\n cancel() {\n if (!this._cancelled) {\n this._cancelled = true;\n for (const [, listener] of this._listeners) {\n listener();\n }\n }\n }\n addListener(f) {\n const id = this._id;\n this._listeners.set(this._id++, f);\n return id;\n }\n removeListener(id) {\n return this._listeners.delete(id);\n }\n register(f, state) {\n const $ = this;\n const id = this.addListener(state == null ? f : () => f(state));\n return { Dispose() { $.removeListener(id); } };\n }\n}\nexport class OperationCanceledError extends Error {\n constructor() {\n super(\"The operation was canceled\");\n Object.setPrototypeOf(this, OperationCanceledError.prototype);\n }\n}\nexport class Trampoline {\n constructor() {\n this.callCount = 0;\n }\n static get maxTrampolineCallCount() {\n return 2000;\n }\n incrementAndCheck() {\n return this.callCount++ > Trampoline.maxTrampolineCallCount;\n }\n hijack(f) {\n this.callCount = 0;\n setTimeout(f, 0);\n }\n}\nexport function protectedCont(f) {\n return (ctx) => {\n if (ctx.cancelToken.isCancelled) {\n ctx.onCancel(new OperationCanceledError());\n }\n else if (ctx.trampoline.incrementAndCheck()) {\n ctx.trampoline.hijack(() => {\n try {\n f(ctx);\n }\n catch (err) {\n ctx.onError(err);\n }\n });\n }\n else {\n try {\n f(ctx);\n }\n catch (err) {\n ctx.onError(err);\n }\n }\n };\n}\nexport function protectedBind(computation, binder) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: (x) => {\n try {\n binder(x)(ctx);\n }\n catch (ex) {\n ctx.onError(ex);\n }\n },\n onError: ctx.onError,\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n}\nexport function protectedReturn(value) {\n return protectedCont((ctx) => ctx.onSuccess(value));\n}\nexport class AsyncBuilder {\n Bind(computation, binder) {\n return protectedBind(computation, binder);\n }\n Combine(computation1, computation2) {\n return this.Bind(computation1, () => computation2);\n }\n Delay(generator) {\n return protectedCont((ctx) => generator()(ctx));\n }\n For(sequence, body) {\n const iter = sequence[Symbol.iterator]();\n let cur = iter.next();\n return this.While(() => !cur.done, this.Delay(() => {\n const res = body(cur.value);\n cur = iter.next();\n return res;\n }));\n }\n Return(value) {\n return protectedReturn(value);\n }\n ReturnFrom(computation) {\n return computation;\n }\n TryFinally(computation, compensation) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: (x) => {\n compensation();\n ctx.onSuccess(x);\n },\n onError: (x) => {\n compensation();\n ctx.onError(x);\n },\n onCancel: (x) => {\n compensation();\n ctx.onCancel(x);\n },\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n }\n TryWith(computation, catchHandler) {\n return protectedCont((ctx) => {\n computation({\n onSuccess: ctx.onSuccess,\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n onError: (ex) => {\n try {\n catchHandler(ex)(ctx);\n }\n catch (ex2) {\n ctx.onError(ex2);\n }\n },\n });\n });\n }\n Using(resource, binder) {\n return this.TryFinally(binder(resource), () => resource.Dispose());\n }\n While(guard, computation) {\n if (guard()) {\n return this.Bind(computation, () => this.While(guard, computation));\n }\n else {\n return this.Return(void 0);\n }\n }\n Zero() {\n return protectedCont((ctx) => ctx.onSuccess(void 0));\n }\n}\nexport const singleton = new AsyncBuilder();\n//# sourceMappingURL=AsyncBuilder.js.map","import { OperationCanceledError, Trampoline } from \"./AsyncBuilder\";\nimport { CancellationToken } from \"./AsyncBuilder\";\nimport { protectedCont } from \"./AsyncBuilder\";\nimport { protectedBind } from \"./AsyncBuilder\";\nimport { protectedReturn } from \"./AsyncBuilder\";\nimport { choice1Of2, choice2Of2 } from \"./Option\";\nimport { map } from \"./Seq\";\n// Implemented just for type references\nexport class Async {\n}\nfunction emptyContinuation(_x) {\n // NOP\n}\n// MakeAsync: body:(AsyncActivation<'T> -> AsyncReturn) -> Async<'T>\nexport function makeAsync(body) {\n return body;\n}\n// Invoke: computation: Async<'T> -> ctxt:AsyncActivation<'T> -> AsyncReturn\nexport function invoke(computation, ctx) {\n return computation(ctx);\n}\n// CallThenInvoke: ctxt:AsyncActivation<'T> -> result1:'U -> part2:('U -> Async<'T>) -> AsyncReturn\nexport function callThenInvoke(ctx, result1, part2) {\n return part2(result1)(ctx);\n}\n// Bind: ctxt:AsyncActivation<'T> -> part1:Async<'U> -> part2:('U -> Async<'T>) -> AsyncReturn\nexport function bind(ctx, part1, part2) {\n return protectedBind(part1, part2)(ctx);\n}\nexport function createCancellationToken(arg) {\n const token = new CancellationToken(typeof arg === \"boolean\" ? arg : false);\n if (typeof arg === \"number\") {\n setTimeout(() => { token.cancel(); }, arg);\n }\n return token;\n}\nexport function cancel(token) {\n token.cancel();\n}\nexport function cancelAfter(token, ms) {\n setTimeout(() => { token.cancel(); }, ms);\n}\nexport function isCancellationRequested(token) {\n return token != null && token.isCancelled;\n}\nexport function startChild(computation) {\n const promise = startAsPromise(computation);\n // JS Promises are hot, computation has already started\n // but we delay returning the result\n return protectedCont((ctx) => protectedReturn(awaitPromise(promise))(ctx));\n}\nexport function awaitPromise(p) {\n return fromContinuations((conts) => p.then(conts[0]).catch((err) => (err instanceof OperationCanceledError\n ? conts[2] : conts[1])(err)));\n}\nexport function cancellationToken() {\n return protectedCont((ctx) => ctx.onSuccess(ctx.cancelToken));\n}\nexport const defaultCancellationToken = new CancellationToken();\nexport function catchAsync(work) {\n return protectedCont((ctx) => {\n work({\n onSuccess: (x) => ctx.onSuccess(choice1Of2(x)),\n onError: (ex) => ctx.onSuccess(choice2Of2(ex)),\n onCancel: ctx.onCancel,\n cancelToken: ctx.cancelToken,\n trampoline: ctx.trampoline,\n });\n });\n}\nexport function fromContinuations(f) {\n return protectedCont((ctx) => f([ctx.onSuccess, ctx.onError, ctx.onCancel]));\n}\nexport function ignore(computation) {\n return protectedBind(computation, (_x) => protectedReturn(void 0));\n}\nexport function parallel(computations) {\n return awaitPromise(Promise.all(map((w) => startAsPromise(w), computations)));\n}\nexport function sleep(millisecondsDueTime) {\n return protectedCont((ctx) => {\n let tokenId;\n const timeoutId = setTimeout(() => {\n ctx.cancelToken.removeListener(tokenId);\n ctx.onSuccess(void 0);\n }, millisecondsDueTime);\n tokenId = ctx.cancelToken.addListener(() => {\n clearTimeout(timeoutId);\n ctx.onCancel(new OperationCanceledError());\n });\n });\n}\nexport function start(computation, cancellationToken) {\n return startWithContinuations(computation, cancellationToken);\n}\nexport function startImmediate(computation, cancellationToken) {\n return start(computation, cancellationToken);\n}\nexport function startWithContinuations(computation, continuation, exceptionContinuation, cancellationContinuation, cancelToken) {\n if (typeof continuation !== \"function\") {\n cancelToken = continuation;\n continuation = undefined;\n }\n const trampoline = new Trampoline();\n computation({\n onSuccess: continuation ? continuation : emptyContinuation,\n onError: exceptionContinuation ? exceptionContinuation : emptyContinuation,\n onCancel: cancellationContinuation ? cancellationContinuation : emptyContinuation,\n cancelToken: cancelToken ? cancelToken : defaultCancellationToken,\n trampoline,\n });\n}\nexport function startAsPromise(computation, cancellationToken) {\n return new Promise((resolve, reject) => startWithContinuations(computation, resolve, reject, reject, cancellationToken ? cancellationToken : defaultCancellationToken));\n}\nexport default Async;\n//# sourceMappingURL=Async.js.map","namespace Fable.Remoting.Client \r\n\r\nopen Browser\r\nopen Browser.Types \r\nopen Fable.Core\r\n\r\nmodule Http = \r\n\r\n /// Constructs default values for HttpRequest\r\n let private defaultRequestConfig : HttpRequest = {\r\n HttpMethod = GET \r\n Url = \"/\" \r\n Headers = [ ]\r\n RequestBody = Empty \r\n }\r\n\r\n /// Creates a GET request to the specified url\r\n let get (url: string) : HttpRequest = \r\n { defaultRequestConfig \r\n with Url = url\r\n HttpMethod = GET }\r\n \r\n /// Creates a POST request to the specified url\r\n let post (url: string) : HttpRequest = \r\n { defaultRequestConfig \r\n with Url = url\r\n HttpMethod = POST }\r\n\r\n /// Creates a request using the given method and url\r\n let request method url = \r\n { defaultRequestConfig\r\n with Url = url\r\n HttpMethod = method }\r\n \r\n /// Appends a request with headers as key-value pairs\r\n let withHeaders headers (req: HttpRequest) = { req with Headers = headers }\r\n \r\n /// Appends a request with string body content\r\n let withBody body (req: HttpRequest) = { req with RequestBody = body }\r\n\r\n /// Sends the request to the server and asynchronously returns a response\r\n let send (req: HttpRequest) =\r\n Async.FromContinuations <| fun (resolve, _, _) -> \r\n let xhr = XMLHttpRequest.Create()\r\n \r\n match req.HttpMethod with \r\n | GET -> xhr.``open``(\"GET\", req.Url)\r\n | POST -> xhr.``open``(\"POST\", req.Url)\r\n \r\n // set the headers, must be after opening the request\r\n for (key, value) in req.Headers do \r\n xhr.setRequestHeader(key, value)\r\n\r\n xhr.onreadystatechange <- fun _ ->\r\n match xhr.readyState with\r\n | ReadyState.Done -> resolve { StatusCode = unbox xhr.status; ResponseBody = xhr.responseText }\r\n | _ -> ignore() \r\n \r\n match req.RequestBody with \r\n | Empty -> xhr.send()\r\n | RequestBody.Json content -> xhr.send(content)\r\n | Binary content -> xhr.send(content)\r\n\r\n []\r\n let internal createUInt8Array (x: obj) : byte[] = jsNative\r\n \r\n let sendAndReadBinary (req: HttpRequest) = \r\n Async.FromContinuations <| fun (resolve, _, _) -> \r\n let xhr = XMLHttpRequest.Create()\r\n \r\n match req.HttpMethod with \r\n | GET -> xhr.``open``(\"GET\", req.Url)\r\n | POST -> xhr.``open``(\"POST\", req.Url)\r\n \r\n // read response as byte array\r\n xhr.responseType <- \"arraybuffer\"\r\n\r\n // set the headers, must be after opening the request\r\n for (key, value) in req.Headers do \r\n xhr.setRequestHeader(key, value)\r\n\r\n xhr.onreadystatechange <- fun _ ->\r\n match xhr.readyState with\r\n | ReadyState.Done ->\r\n let bytes = createUInt8Array xhr.response\r\n resolve (bytes, xhr.status)\r\n | _ -> \r\n ignore() \r\n \r\n match req.RequestBody with \r\n | Empty -> xhr.send()\r\n | RequestBody.Json content -> xhr.send(content)\r\n | Binary content -> xhr.send(content) ","// tslint:disable:max-line-length\nimport { fromNumber, op_Division, op_Multiply, toNumber } from \"./Long\";\nimport { comparePrimitives, padLeftAndRightWithZeros, padWithZeros } from \"./Util\";\n// TimeSpan in runtime just becomes a number representing milliseconds\n/**\n * Calls:\n * - `Math.ceil` if the `value` is **negative**\n * - `Math.floor` if the `value` is **positive**\n * @param value Value to round\n */\nfunction signedRound(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n}\nexport function create(d = 0, h = 0, m = 0, s = 0, ms = 0) {\n switch (arguments.length) {\n case 1:\n // ticks\n return fromTicks(arguments[0]);\n case 3:\n // h,m,s\n d = 0, h = arguments[0], m = arguments[1], s = arguments[2], ms = 0;\n break;\n default:\n // d,h,m,s,ms\n break;\n }\n return d * 86400000 + h * 3600000 + m * 60000 + s * 1000 + ms;\n}\nexport function fromTicks(ticks) {\n return toNumber(op_Division(ticks, 10000));\n}\nexport function fromDays(d) {\n return create(d, 0, 0, 0);\n}\nexport function fromHours(h) {\n return create(h, 0, 0);\n}\nexport function fromMinutes(m) {\n return create(0, m, 0);\n}\nexport function fromSeconds(s) {\n return create(0, 0, s);\n}\nexport function days(ts) {\n return signedRound(ts / 86400000);\n}\nexport function hours(ts) {\n return signedRound(ts % 86400000 / 3600000);\n}\nexport function minutes(ts) {\n return signedRound(ts % 3600000 / 60000);\n}\nexport function seconds(ts) {\n return signedRound(ts % 60000 / 1000);\n}\nexport function milliseconds(ts) {\n return signedRound(ts % 1000);\n}\nexport function ticks(ts) {\n return op_Multiply(fromNumber(ts), 10000);\n}\nexport function totalDays(ts) {\n return ts / 86400000;\n}\nexport function totalHours(ts) {\n return ts / 3600000;\n}\nexport function totalMinutes(ts) {\n return ts / 60000;\n}\nexport function totalSeconds(ts) {\n return ts / 1000;\n}\nexport function negate(ts) {\n return ts * -1;\n}\nexport function add(ts1, ts2) {\n return ts1 + ts2;\n}\nexport function subtract(ts1, ts2) {\n return ts1 - ts2;\n}\nexport const op_Addition = add;\nexport const op_Subtraction = subtract;\nexport const compare = comparePrimitives;\nexport const compareTo = comparePrimitives;\nexport function duration(x) {\n return Math.abs(x);\n}\nexport function toString(ts, format = \"c\", _provider) {\n if ([\"c\", \"g\", \"G\"].indexOf(format) === -1) {\n throw new Error(\"Custom formats are not supported\");\n }\n const d = Math.abs(days(ts));\n const h = Math.abs(hours(ts));\n const m = Math.abs(minutes(ts));\n const s = Math.abs(seconds(ts));\n const ms = Math.abs(milliseconds(ts));\n const sign = ts < 0 ? \"-\" : \"\";\n return `${sign}${d === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"c\" ? d + \".\" : d + \":\"}${format === \"g\" ? h : padWithZeros(h, 2)}:${padWithZeros(m, 2)}:${padWithZeros(s, 2)}${ms === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"g\" ? \".\" + padWithZeros(ms, 3) : \".\" + padLeftAndRightWithZeros(ms, 3, 7)}`;\n}\nexport function parse(str) {\n const firstDot = str.search(\"\\\\.\");\n const firstColon = str.search(\"\\\\:\");\n if (firstDot === -1 && firstColon === -1) { // There is only a day ex: 4\n const d = parseInt(str, 0);\n if (isNaN(d)) {\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n else {\n return create(d, 0, 0, 0, 0);\n }\n }\n if (firstColon > 0) { // process time part\n // WIP: (-?)(((\\d+)\\.)?([0-9]|0[0-9]|1[0-9]|2[0-3]):(\\d+)(:\\d+(\\.\\d{1,7})?)?|\\d+(?:(?!\\.)))\n const r = /^(-?)((\\d+)\\.)?(?:0*)([0-9]|0[0-9]|1[0-9]|2[0-3]):(?:0*)([0-5][0-9]|[0-9])(:(?:0*)([0-5][0-9]|[0-9]))?\\.?(\\d+)?$/.exec(str);\n if (r != null && r[4] != null && r[5] != null) {\n let d = 0;\n let ms = 0;\n let s = 0;\n const sign = r[1] != null && r[1] === \"-\" ? -1 : 1;\n const h = +r[4];\n const m = +r[5];\n if (r[3] != null) {\n d = +r[3];\n }\n if (r[7] != null) {\n s = +r[7];\n }\n if (r[8] != null) {\n // Depending on the number of decimals passed, we need to adapt the numbers\n switch (r[8].length) {\n case 1:\n ms = +r[8] * 100;\n break;\n case 2:\n ms = +r[8] * 10;\n break;\n case 3:\n ms = +r[8];\n break;\n case 4:\n ms = +r[8] / 10;\n break;\n case 5:\n ms = +r[8] / 100;\n break;\n case 6:\n ms = +r[8] / 1000;\n break;\n case 7:\n ms = +r[8] / 10000;\n break;\n default:\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n }\n return sign * create(d, h, m, s, ms);\n }\n }\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n}\nexport function tryParse(v, _refValue) {\n try {\n return [true, parse(v)];\n }\n catch (_err) {\n return [false, 0];\n }\n}\n//# sourceMappingURL=TimeSpan.js.map","module Fable.Remoting.MsgPack.Read\r\n\r\nopen System\r\nopen System.Text\r\nopen System.Collections\r\nopen System.Collections.Concurrent\r\nopen System.Collections.Generic\r\nopen FSharp.Reflection\r\nopen System.Reflection\r\n\r\nlet interpretStringAs (typ: Type) str =\r\n#if FABLE_COMPILER\r\n box str\r\n#else\r\n if typ = typeof then\r\n box str\r\n else\r\n // todo cacheable\r\n // String enum\r\n let case = FSharpType.GetUnionCases (typ, true) |> Array.find (fun y -> y.Name = str)\r\n FSharpValue.MakeUnion (case, [||], true)\r\n#endif\r\n\r\nlet inline interpretIntegerAs typ n =\r\n if typ = typeof then int32 n |> box\r\n elif typ = typeof then int64 n |> box\r\n elif typ = typeof then int16 n |> box\r\n elif typ = typeof then DateTime (int64 n) |> box\r\n elif typ = typeof then uint32 n |> box\r\n elif typ = typeof then uint64 n |> box\r\n elif typ = typeof then uint16 n |> box\r\n elif typ = typeof then TimeSpan (int64 n) |> box\r\n#if FABLE_COMPILER\r\n elif typ.FullName = \"Microsoft.FSharp.Core.int16`1\" then int16 n |> box\r\n elif typ.FullName = \"Microsoft.FSharp.Core.int32`1\" then int32 n |> box\r\n elif typ.FullName = \"Microsoft.FSharp.Core.int64`1\" then int64 n |> box\r\n#endif\r\n elif typ = typeof then byte n |> box\r\n elif typ = typeof then sbyte n |> box\r\n#if !FABLE_COMPILER\r\n elif typ.IsEnum then Enum.ToObject (typ, int64 n)\r\n#else\r\n elif typ.IsEnum then float n |> box\r\n#endif\r\n else failwithf \"Cannot interpret integer %A as %s.\" n typ.Name\r\n\r\nlet inline interpretFloatAs typ n =\r\n if typ = typeof then float32 n |> box\r\n elif typ = typeof then float n |> box\r\n elif typ = typeof then decimal n |> box\r\n#if FABLE_COMPILER\r\n elif typ.FullName = \"Microsoft.FSharp.Core.float32`1\" then float32 n |> box\r\n elif typ.FullName = \"Microsoft.FSharp.Core.float`1\" then float n |> box\r\n elif typ.FullName = \"Microsoft.FSharp.Core.decimal`1\" then decimal n |> box\r\n#endif\r\n else failwithf \"Cannot interpret float %A as %s.\" n typ.Name\r\n\r\n#if !FABLE_COMPILER\r\ntype DictionaryDeserializer<'k,'v when 'k: equality and 'k: comparison> () =\r\n static let keyType = typeof<'k>\r\n static let valueType = typeof<'v>\r\n\r\n static member Deserialize (len: int, isDictionary, read: Type -> obj) =\r\n if isDictionary then\r\n let dict = Dictionary<'k, 'v> (len)\r\n\r\n for _ in 0 .. len - 1 do\r\n dict.Add (read keyType :?> 'k, read valueType :?> 'v)\r\n\r\n box dict\r\n else\r\n Array.init len (fun _ -> read keyType :?> 'k, read valueType :?> 'v)\r\n |> Map.ofArray\r\n |> box\r\n\r\ntype ListDeserializer<'a> () =\r\n static let argType = typeof<'a>\r\n\r\n static member Deserialize (len: int, read: Type -> obj) =\r\n List.init len (fun _ -> read argType :?> 'a)\r\n |> box\r\n#endif\r\n\r\ntype Reader (data: byte[]) =\r\n let mutable pos = 0\r\n\r\n#if !FABLE_COMPILER\r\n static let arrayReaderCache = ConcurrentDictionary obj> ()\r\n static let mapReaderCache = ConcurrentDictionary obj> ()\r\n static let unionConstructorCache = ConcurrentDictionary obj> ()\r\n static let unionCaseFieldCache = ConcurrentDictionary ()\r\n#endif\r\n\r\n let readInt len m =\r\n#if !FABLE_COMPILER\r\n if BitConverter.IsLittleEndian then\r\n Array.Reverse (data, pos, len)\r\n\r\n pos <- pos + len\r\n m (data, pos - len)\r\n#else\r\n if BitConverter.IsLittleEndian then\r\n let arr = Array.zeroCreate len\r\n \r\n for i in 0 .. len - 1 do\r\n arr.[i] <- data.[pos + len - 1 - i]\r\n \r\n pos <- pos + len\r\n m (arr, 0)\r\n else\r\n pos <- pos + len\r\n m (data, pos - len)\r\n#endif\r\n\r\n member _.ReadByte () =\r\n pos <- pos + 1\r\n data.[pos - 1]\r\n\r\n member _.ReadRawBin len =\r\n pos <- pos + len\r\n data.[ pos - len .. pos - 1 ]\r\n\r\n member _.ReadString len =\r\n pos <- pos + len\r\n Encoding.UTF8.GetString (data, pos - len, len)\r\n\r\n member x.ReadUInt8 () =\r\n x.ReadByte ()\r\n\r\n member x.ReadInt8 () =\r\n x.ReadByte () |> sbyte\r\n\r\n member _.ReadUInt16 () =\r\n readInt 2 BitConverter.ToUInt16\r\n\r\n member _.ReadInt16 () =\r\n readInt 2 BitConverter.ToInt16\r\n\r\n member _.ReadUInt32 () =\r\n readInt 4 BitConverter.ToUInt32\r\n\r\n member _.ReadInt32 () =\r\n readInt 4 BitConverter.ToInt32\r\n\r\n member _.ReadUInt64 () =\r\n readInt 8 BitConverter.ToUInt64\r\n\r\n member _.ReadInt64 () =\r\n readInt 8 BitConverter.ToInt64\r\n\r\n member _.ReadFloat32 () =\r\n readInt 4 BitConverter.ToSingle\r\n\r\n member _.ReadFloat64 () =\r\n readInt 8 BitConverter.ToDouble\r\n\r\n member x.ReadMap (len: int, t: Type) =\r\n#if !FABLE_COMPILER\r\n mapReaderCache.GetOrAdd (t, Func<_, _>(fun (t: Type) ->\r\n let args = t.GetGenericArguments ()\r\n \r\n if args.Length <> 2 then\r\n failwithf \"Expecting %s, but the data contains a map.\" t.Name\r\n\r\n let mapDeserializer = typedefof>.MakeGenericType args\r\n let isDictionary = t.GetGenericTypeDefinition () = typedefof>\r\n let d = Delegate.CreateDelegate (typeof obj), obj>>, mapDeserializer.GetMethod \"Deserialize\") :?> Func obj), obj>\r\n \r\n fun (len, x: Reader) -> d.Invoke (len, isDictionary, x.Read))) (len, x)\r\n#else\r\n let args = t.GetGenericArguments ()\r\n \r\n if args.Length <> 2 then\r\n failwithf \"Expecting %s, but the data contains a map.\" t.Name\r\n\r\n let pairs =\r\n let arr = Array.zeroCreate len\r\n \r\n for i in 0 .. len - 1 do\r\n arr.[i] <- x.Read args.[0] |> box :?> IStructuralComparable, x.Read args.[1]\r\n\r\n arr\r\n\r\n if t.GetGenericTypeDefinition () = typedefof> then\r\n let dict = Dictionary<_, _> len\r\n pairs |> Array.iter dict.Add\r\n box dict\r\n else\r\n Map.ofArray pairs |> box\r\n#endif\r\n\r\n member x.ReadRawArray (len: int, elementType: Type) =\r\n#if !FABLE_COMPILER\r\n let arr = Array.CreateInstance (elementType, len)\r\n\r\n for i in 0 .. len - 1 do\r\n arr.SetValue (x.Read elementType, i)\r\n\r\n arr\r\n#else\r\n let arr = Array.zeroCreate len\r\n\r\n for i in 0 .. len - 1 do\r\n arr.[i] <- x.Read elementType\r\n \r\n arr\r\n#endif\r\n\r\n member x.ReadArray (len, t) =\r\n#if !FABLE_COMPILER\r\n match arrayReaderCache.TryGetValue t with\r\n | true, reader ->\r\n reader (len, x)\r\n | _ ->\r\n#endif\r\n\r\n if FSharpType.IsRecord t then\r\n#if !FABLE_COMPILER\r\n let fieldTypes = FSharpType.GetRecordFields t |> Array.map (fun prop -> prop.PropertyType)\r\n let ctor = FSharpValue.PreComputeRecordConstructor (t, true)\r\n \r\n arrayReaderCache.GetOrAdd (t, fun (_, x: Reader) ->\r\n ctor (fieldTypes |> Array.map x.Read)) (len, x)\r\n#else\r\n let props = FSharpType.GetRecordFields t\r\n FSharpValue.MakeRecord (t, props |> Array.map (fun prop -> x.Read prop.PropertyType))\r\n#endif\r\n elif FSharpType.IsUnion (t, true) then\r\n#if !FABLE_COMPILER\r\n if t.IsGenericType && t.GetGenericTypeDefinition () = typedefof<_ list> then\r\n let argType = t.GetGenericArguments () |> Array.head\r\n let listDeserializer = typedefof>.MakeGenericType argType\r\n let d = Delegate.CreateDelegate (typeof obj), obj>>, listDeserializer.GetMethod \"Deserialize\") :?> Func obj), obj>\r\n\r\n arrayReaderCache.GetOrAdd (t, fun (len, (x: Reader)) -> d.Invoke (len, x.Read)) (len, x)\r\n else\r\n arrayReaderCache.GetOrAdd (t, fun (_, x: Reader) ->\r\n let tag = x.Read typeof :?> int\r\n let case, fieldTypes =\r\n unionCaseFieldCache.GetOrAdd ((t, tag), fun (t, tag) ->\r\n let case = FSharpType.GetUnionCases (t, true) |> Array.find (fun x -> x.Tag = tag)\r\n let fields = case.GetFields ()\r\n case, fields |> Array.map (fun x -> x.PropertyType))\r\n\r\n let fields =\r\n // single parameter is serialized directly, not in an array, saving 1 byte on the array format\r\n if fieldTypes.Length = 1 then\r\n [| x.Read fieldTypes.[0] |]\r\n else\r\n // don't care about this byte, it's going to be a fixarr of length fieldTypes.Length\r\n x.ReadByte () |> ignore\r\n fieldTypes |> Array.map x.Read\r\n\r\n unionConstructorCache.GetOrAdd (case, Func<_, _>(fun case -> FSharpValue.PreComputeUnionConstructor (case, true))) fields) (len, x)\r\n#else \r\n let tag = x.Read typeof :?> int\r\n let case = FSharpType.GetUnionCases (t, true) |> Array.find (fun x -> x.Tag = tag)\r\n let fieldTypes = case.GetFields () |> Array.map (fun x -> x.PropertyType)\r\n\r\n let fields =\r\n // single parameter is serialized directly, not in an array, saving 1 byte on the array format\r\n if fieldTypes.Length = 1 then\r\n [| x.Read fieldTypes.[0] |]\r\n else\r\n // don't care about this byte, it's going to be a fixarr of length fieldTypes.Length\r\n x.ReadByte () |> ignore\r\n fieldTypes |> Array.map x.Read\r\n\r\n FSharpValue.MakeUnion (case, fields, true)\r\n#endif\r\n\r\n#if FABLE_COMPILER // Fable does not recognize Option as a union\r\n elif t.IsGenericType && t.GetGenericTypeDefinition () = typedefof> then\r\n let tag = x.ReadByte ()\r\n\r\n // none case\r\n if tag = 0uy then\r\n x.ReadByte () |> ignore\r\n box null\r\n else\r\n x.Read (t.GetGenericArguments () |> Array.head) |> Some |> box\r\n elif t.IsGenericType && t.GetGenericTypeDefinition () = typedefof<_ list> then\r\n let elementType = t.GetGenericArguments () |> Array.head\r\n [\r\n for _ in 0 .. len - 1 ->\r\n x.Read elementType\r\n ] |> box\r\n#endif\r\n elif FSharpType.IsTuple t then\r\n#if !FABLE_COMPILER\r\n let elementTypes = FSharpType.GetTupleElements t\r\n let tupleCtor = FSharpValue.PreComputeTupleConstructor t\r\n arrayReaderCache.GetOrAdd (t, fun (_, (x: Reader)) -> elementTypes |> Array.map x.Read |> tupleCtor) (len, x)\r\n#else\r\n FSharpValue.MakeTuple (FSharpType.GetTupleElements t |> Array.map x.Read, t)\r\n#endif\r\n elif t.IsArray then\r\n x.ReadRawArray (len, t.GetElementType ()) |> box\r\n elif t = typeof then\r\n let dateTimeTicks = x.Read typeof :?> int64\r\n let timeSpanMinutes = x.Read typeof :?> int16\r\n DateTimeOffset (dateTimeTicks, TimeSpan.FromMinutes (float timeSpanMinutes)) |> box\r\n else\r\n failwithf \"Expecting %s at position %d, but the data contains an array.\" t.Name pos\r\n\r\n member x.ReadBin (len, t) =\r\n if t = typeof then\r\n x.ReadRawBin len |> Guid |> box\r\n elif t = typeof then\r\n x.ReadRawBin len |> box\r\n elif t = typeof then\r\n x.ReadRawBin len |> bigint |> box\r\n else\r\n failwithf \"Expecting %s at position %d, but the data contains bin.\" t.Name pos\r\n\r\n member x.Read t =\r\n match x.ReadByte () with\r\n // fixstr\r\n | b when b ||| 0b00011111uy = 0b10111111uy -> b &&& 0b00011111uy |> int |> x.ReadString |> interpretStringAs t\r\n | Format.Str8 -> x.ReadByte () |> int |> x.ReadString |> interpretStringAs t\r\n | Format.Str16 -> x.ReadUInt16 () |> int |> x.ReadString |> interpretStringAs t\r\n | Format.Str32 -> x.ReadUInt32 () |> int |> x.ReadString |> interpretStringAs t\r\n // fixposnum\r\n | b when b ||| 0b01111111uy = 0b01111111uy -> interpretIntegerAs t b\r\n // fixnegnum\r\n | b when b ||| 0b00011111uy = 0b11111111uy -> sbyte b |> interpretIntegerAs t\r\n | Format.Int64 -> x.ReadInt64 () |> interpretIntegerAs t\r\n | Format.Int32 -> x.ReadInt32 () |> interpretIntegerAs t\r\n | Format.Int16 -> x.ReadInt16 () |> interpretIntegerAs t\r\n | Format.Int8 -> x.ReadInt8 () |> interpretIntegerAs t\r\n | Format.Uint8 -> x.ReadUInt8 () |> interpretIntegerAs t\r\n | Format.Uint16 -> x.ReadUInt16 () |> interpretIntegerAs t\r\n | Format.Uint32 -> x.ReadUInt32 () |> interpretIntegerAs t\r\n | Format.Uint64 -> x.ReadUInt64 () |> interpretIntegerAs t\r\n | Format.Float32 -> x.ReadFloat32 () |> interpretFloatAs t\r\n | Format.Float64 -> x.ReadFloat64 () |> interpretFloatAs t\r\n | Format.Nil -> box null\r\n | Format.True -> box true\r\n | Format.False -> box false\r\n // fixarr\r\n | b when b ||| 0b00001111uy = 0b10011111uy -> x.ReadArray (b &&& 0b00001111uy |> int, t)\r\n | Format.Array16 ->\r\n let len = x.ReadUInt16 () |> int\r\n x.ReadArray (len, t)\r\n | Format.Array32 ->\r\n let len = x.ReadUInt32 () |> int\r\n x.ReadArray (len, t)\r\n // fixmap\r\n | b when b ||| 0b00001111uy = 0b10001111uy -> x.ReadMap (b &&& 0b00001111uy |> int, t)\r\n | Format.Map16 ->\r\n let len = x.ReadUInt16 () |> int\r\n x.ReadMap (len, t)\r\n | Format.Map32 ->\r\n let len = x.ReadUInt32 () |> int\r\n x.ReadMap (len, t)\r\n | Format.Bin8 ->\r\n let len = x.ReadByte () |> int\r\n x.ReadBin (len, t)\r\n | Format.Bin16 ->\r\n let len = x.ReadUInt16 () |> int\r\n x.ReadBin (len, t)\r\n | Format.Bin32 ->\r\n let len = x.ReadUInt32 () |> int\r\n x.ReadBin (len, t)\r\n | b ->\r\n failwithf \"Position %d, byte %d, expected type %s.\" pos b t.Name\r\n","namespace Fable.Remoting.Client\r\n\r\nopen System\r\nopen Fable.Core\r\nopen Fable.SimpleJson\r\nopen Browser.Types\r\nopen Fable.Remoting\r\n\r\nmodule internal Blob =\r\n /// Creates a Blob from the given input string\r\n []\r\n let fromBinaryEncodedText (value: byte[]) : Blob = jsNative\r\n \r\n []\r\n let createFileReader() : FileReader = jsNative\r\n\r\n /// Asynchronously reads the blob data content as string\r\n let readBlobAsText (blob: Blob) : Async =\r\n Async.FromContinuations <| fun (resolve, _, _) ->\r\n let reader = createFileReader()\r\n reader.onload <- fun _ ->\r\n if reader.readyState = FileReaderState.DONE\r\n then resolve (unbox reader.result)\r\n\r\n reader.readAsText(blob)\r\n\r\nmodule Proxy =\r\n\r\n []\r\n let setProp (propName: string) (propValue: obj) (any: obj) : unit = jsNative\r\n\r\n []\r\n let private typed<'a> (x: obj) : 'a = jsNative\r\n\r\n []\r\n let private getAs<'a> (x: obj) (key: string) : 'a = jsNative\r\n \r\n []\r\n let private jsonParse (content: string) : obj = jsNative\r\n \r\n []\r\n let private stringify (x: obj) : string = jsNative\r\n \r\n let combineRouteWithBaseUrl route (baseUrl: string option) = \r\n match baseUrl with\r\n | None -> route\r\n | Some url -> sprintf \"%s%s\" (url.TrimEnd('/')) route\r\n\r\n []\r\n let arguments() : obj[] = jsNative\r\n\r\n /// Extracts the 'T from Async<'T>\r\n let extractAsyncArg (asyncType: Type) = \r\n asyncType.GenericTypeArguments.[0]\r\n\r\n let isByteArray = function \r\n | TypeInfo.Array getElemType ->\r\n match getElemType() with \r\n | TypeInfo.Byte -> true \r\n | otherwise -> false \r\n | otherwise -> false \r\n\r\n let isAsyncOfByteArray = function \r\n | TypeInfo.Async getAsyncType -> \r\n match getAsyncType() with \r\n | TypeInfo.Array getElemType ->\r\n match getElemType() with \r\n | TypeInfo.Byte -> true \r\n | otherwise -> false \r\n | otherwise -> false \r\n | otherwise -> false\r\n\r\n let proxyFetch options typeName (func: RecordField) fieldType =\r\n let funcArgs : (TypeInfo [ ]) = \r\n match func.FieldType with \r\n | TypeInfo.Async inner -> [| func.FieldType |]\r\n | TypeInfo.Promise inner -> [| func.FieldType |]\r\n | TypeInfo.Func getArgs -> getArgs() \r\n | _ -> failwithf \"Field %s does not have a valid definiton\" func.FieldName\r\n\r\n let argumentCount = (Array.length funcArgs) - 1\r\n let returnTypeAsync = Array.last funcArgs\r\n let returnType = \r\n match returnTypeAsync with \r\n | TypeInfo.Async getAsyncTypeArgument -> getAsyncTypeArgument()\r\n | TypeInfo.Promise getPromiseTypeArgument -> getPromiseTypeArgument()\r\n | _ -> failwithf \"Expected field %s to have a return type of Async<'t>\" func.FieldName\r\n\r\n let readAsBinary = isAsyncOfByteArray returnTypeAsync \r\n \r\n let binaryInput = \r\n match func.FieldType with \r\n | TypeInfo.Func getArgs -> \r\n match getArgs() with \r\n | [| input; output |] -> isByteArray input \r\n | otherwise -> false \r\n | otherwise -> false \r\n \r\n let route = options.RouteBuilder typeName func.FieldName\r\n let url = combineRouteWithBaseUrl route options.BaseUrl \r\n let funcNeedParameters = \r\n match funcArgs with \r\n | [| TypeInfo.Async _ |] -> false \r\n | [| TypeInfo.Promise _ |] -> false\r\n | [| TypeInfo.Unit; TypeInfo.Async _ |] -> false \r\n | otherwise -> true \r\n\r\n fun arg0 arg1 arg2 arg3 arg4 arg5 arg6 arg7 ->\r\n\r\n let inputArguments =\r\n if funcNeedParameters \r\n then List.take argumentCount [ box arg0;box arg1;box arg2;box arg3;box arg4;box arg5;box arg6;box arg7 ]\r\n else [ ]\r\n \r\n let contentType = \r\n if binaryInput \r\n then \"application/octet-stream\"\r\n else \"application/json; charset=utf8\"\r\n\r\n async {\r\n let headers =\r\n [ yield \"Content-Type\", contentType\r\n yield \"x-remoting-proxy\", \"true\"\r\n yield! options.CustomHeaders\r\n match options.Authorization with \r\n | Some authToken -> yield \"Authorization\", authToken\r\n | None -> () ]\r\n\r\n let requestBody = \r\n if binaryInput \r\n then RequestBody.Binary (unbox arg0)\r\n else RequestBody.Json (Json.stringify inputArguments)\r\n\r\n match options.ResponseSerialization with\r\n | MessagePack ->\r\n // read as arraybuffer and deserialize\r\n let! (response, statusCode) = \r\n if funcNeedParameters \r\n then \r\n Http.post url\r\n |> Http.withBody requestBody\r\n |> Http.withHeaders headers \r\n |> Http.sendAndReadBinary\r\n else \r\n Http.get url \r\n |> Http.withHeaders headers \r\n |> Http.sendAndReadBinary\r\n \r\n match statusCode with \r\n | 200 ->\r\n let rec getReturnType typ =\r\n if Reflection.FSharpType.IsFunction typ then\r\n let _, res = Reflection.FSharpType.GetFunctionElements typ\r\n getReturnType res\r\n elif typ.IsGenericType then\r\n typ.GetGenericArguments () |> Array.head\r\n else\r\n typ\r\n \r\n return MsgPack.Read.Reader(response).Read (getReturnType fieldType)\r\n | 500 ->\r\n let responseAsBlob = Blob.fromBinaryEncodedText response\r\n let! responseText = Blob.readBlobAsText responseAsBlob\r\n let response = { StatusCode = statusCode; ResponseBody = responseText }\r\n return! raise (ProxyRequestException(response, sprintf \"Internal server error (500) while making request to %s\" url, response.ResponseBody)) \r\n | n ->\r\n let responseAsBlob = Blob.fromBinaryEncodedText response\r\n let! responseText = Blob.readBlobAsText responseAsBlob\r\n let response = { StatusCode = statusCode; ResponseBody = responseText }\r\n return! raise (ProxyRequestException(response, sprintf \"Http error (%d) while making request to %s\" n url, response.ResponseBody))\r\n | Json ->\r\n match readAsBinary with \r\n | true -> \r\n // don't deserialize, read as arraybuffer and convert to byte[]\r\n let! (response, statusCode) = \r\n if funcNeedParameters \r\n then \r\n Http.post url\r\n |> Http.withBody requestBody\r\n |> Http.withHeaders headers \r\n |> Http.sendAndReadBinary\r\n else \r\n Http.get url \r\n |> Http.withHeaders headers \r\n |> Http.sendAndReadBinary\r\n \r\n match statusCode with \r\n | 200 -> \r\n return unbox response \r\n | 500 ->\r\n let responseAsBlob = Blob.fromBinaryEncodedText response\r\n let! responseText = Blob.readBlobAsText responseAsBlob\r\n let response = { StatusCode = statusCode; ResponseBody = responseText }\r\n return! raise (ProxyRequestException(response, sprintf \"Internal server error (500) while making request to %s\" url, response.ResponseBody)) \r\n | n ->\r\n let responseAsBlob = Blob.fromBinaryEncodedText response\r\n let! responseText = Blob.readBlobAsText responseAsBlob\r\n let response = { StatusCode = statusCode; ResponseBody = responseText }\r\n return! raise (ProxyRequestException(response, sprintf \"Http error (%d) while making request to %s\" n url, response.ResponseBody)) \r\n | false ->\r\n // make plain RPC request and let it go through the deserialization pipeline\r\n let! response = \r\n if funcNeedParameters \r\n then \r\n Http.post url\r\n |> Http.withBody requestBody\r\n |> Http.withHeaders headers \r\n |> Http.send \r\n else \r\n Http.get url \r\n |> Http.withHeaders headers \r\n |> Http.send \r\n\r\n match response.StatusCode with \r\n | 200 -> \r\n let parsedJson = SimpleJson.parseNative response.ResponseBody\r\n return Convert.fromJsonAs parsedJson returnType \r\n | 500 -> return! raise (ProxyRequestException(response, sprintf \"Internal server error (500) while making request to %s\" url, response.ResponseBody)) \r\n | n -> return! raise (ProxyRequestException(response, sprintf \"Http error (%d) from server occured while making request to %s\" n url, response.ResponseBody)) \r\n }\r\n","namespace Fable.Remoting.Client \r\n\r\nopen Fable.Core\r\nopen Fable.SimpleJson\r\nopen System\r\n\r\nmodule Remoting = \r\n /// Starts with default configuration for building a proxy\r\n let createApi() = {\r\n CustomHeaders = [ ]\r\n BaseUrl = None\r\n Authorization = None\r\n RouteBuilder = sprintf (\"/%s/%s\") \r\n ResponseSerialization = Json\r\n }\r\n \r\n /// Defines how routes are built using the type name and method name. By default, the generated routes are of the form `/typeName/methodName`.\r\n let withRouteBuilder builder (options: RemoteBuilderOptions) = \r\n { options with RouteBuilder = builder }\r\n\r\n /// Sets the base url for the request. Useful if you are making cross-domain requests \r\n let withBaseUrl url (options: RemoteBuilderOptions) = \r\n { options with BaseUrl = Some url }\r\n\r\n /// Adds custom headers to each request of the proxy\r\n let withCustomHeader headers (options: RemoteBuilderOptions) = \r\n { options with CustomHeaders = headers }\r\n\r\n /// Sets the authorization header of every request from the proxy\r\n let withAuthorizationHeader token (options: RemoteBuilderOptions) = \r\n { options with Authorization = Some token }\r\n\r\n /// Specifies that the API uses binary serialization for responses\r\n let withBinarySerialization (options: RemoteBuilderOptions) = \r\n { options with ResponseSerialization = MessagePack }\r\n\r\ntype Remoting() = \r\n static member buildProxy<'t>(options: RemoteBuilderOptions, [] ?resolver: ITypeResolver<'t>) : 't = \r\n let resolvedType = resolver.Value.ResolveType()\r\n let schemaType = createTypeInfo resolvedType\r\n match schemaType with \r\n | Record getFields ->\r\n let (fields, recordType) = getFields() \r\n let proxy = obj() \r\n let fieldTypes = Reflection.FSharpType.GetRecordFields recordType |> Array.map (fun prop -> prop.Name, prop.PropertyType)\r\n for field in fields do \r\n let normalize n =\r\n let fieldType = fieldTypes |> Array.pick (fun (name, typ) -> if name = field.FieldName then Some typ else None)\r\n\r\n let fn = Proxy.proxyFetch options recordType.Name field fieldType\r\n match n with\r\n | 0 -> box (fn null null null null null null null null)\r\n | 1 -> box (fun a -> \r\n let args = Proxy.arguments()\r\n fn args.[0] null null null null null null null)\r\n | 2 -> box (fun a -> \r\n let args = Proxy.arguments()\r\n fn args.[0] args.[1] null null null null null null)\r\n | 3 -> box (fun a -> \r\n let args = Proxy.arguments()\r\n fn args.[0] args.[1] args.[2] null null null null null)\r\n | 4 -> box (fun a -> \r\n let args = Proxy.arguments()\r\n fn args.[0] args.[1] args.[2] args.[3] null null null null)\r\n | 5 -> box (fun a -> \r\n let args = Proxy.arguments()\r\n fn args.[0] args.[1] args.[2] args.[3] args.[4] null null null)\r\n | 6 -> box (fun a -> \r\n let args = Proxy.arguments()\r\n fn args.[0] args.[1] args.[2] args.[3] args.[4] args.[5] null null)\r\n | 7 -> box (fun a -> \r\n let args = Proxy.arguments()\r\n fn args.[0] args.[1] args.[2] args.[3] args.[4] args.[5] args.[6] null)\r\n | 8 -> box (fun a -> \r\n let args = Proxy.arguments()\r\n fn args.[0] args.[1] args.[2] args.[3] args.[4] args.[5] args.[6] args.[7])\r\n | _ -> failwith \"Only up to 8 arguments are supported\" \r\n let argumentCount = \r\n match field.FieldType with \r\n | Async _ -> 0 \r\n | Promise _ -> 0 \r\n | Func getArgs -> Array.length (getArgs()) - 1\r\n | _ -> 0 \r\n let normalizedProxyFetch = normalize argumentCount\r\n Proxy.setProp field.FieldName normalizedProxyFetch proxy\r\n unbox proxy\r\n | _ -> failwithf \"Exepected type %s to be a valid protocol definition\" resolvedType.FullName \r\n\r\n","namespace Elmish\n\n\n[]\n[]\nmodule internal Option =\n\n let tuple a b =\n match (a,b) with\n | Some a, Some b -> Some (a,b)\n | _ -> None\n\n let ofFunc f arg =\n try\n Some (f arg)\n with _ ->\n None","import { tryValueIfChoice1Of2, tryValueIfChoice2Of2, value } from \"./Option\";\nexport class Observer {\n constructor(onNext, onError, onCompleted) {\n this.OnNext = onNext;\n this.OnError = onError || ((_e) => { return; });\n this.OnCompleted = onCompleted || (() => { return; });\n }\n}\nclass Observable {\n constructor(subscribe) {\n this.Subscribe = subscribe;\n }\n}\nexport function protect(f, succeed, fail) {\n try {\n return succeed(f());\n }\n catch (e) {\n fail(e);\n }\n}\nexport function add(callback, source) {\n source.Subscribe(new Observer(callback));\n}\nexport function choose(chooser, source) {\n return new Observable((observer) => source.Subscribe(new Observer((t) => protect(() => chooser(t), (u) => { if (u != null) {\n observer.OnNext(value(u));\n } }, observer.OnError), observer.OnError, observer.OnCompleted)));\n}\nexport function filter(predicate, source) {\n return choose((x) => predicate(x) ? x : null, source);\n}\nexport function map(mapping, source) {\n return new Observable((observer) => source.Subscribe(new Observer((t) => {\n protect(() => mapping(t), observer.OnNext, observer.OnError);\n }, observer.OnError, observer.OnCompleted)));\n}\nexport function merge(source1, source2) {\n return new Observable((observer) => {\n let stopped = false;\n let completed1 = false;\n let completed2 = false;\n const h1 = source1.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed1 = true;\n if (completed2) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n const h2 = source2.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed2 = true;\n if (completed1) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n return {\n Dispose() {\n h1.Dispose();\n h2.Dispose();\n },\n };\n });\n}\nexport function pairwise(source) {\n return new Observable((observer) => {\n let last;\n return source.Subscribe(new Observer((next) => {\n if (last != null) {\n observer.OnNext([last, next]);\n }\n last = next;\n }, observer.OnError, observer.OnCompleted));\n });\n}\nexport function partition(predicate, source) {\n return [filter(predicate, source), filter((x) => !predicate(x), source)];\n}\nexport function scan(collector, state, source) {\n return new Observable((observer) => {\n return source.Subscribe(new Observer((t) => {\n protect(() => collector(state, t), (u) => { state = u; observer.OnNext(u); }, observer.OnError);\n }, observer.OnError, observer.OnCompleted));\n });\n}\nexport function split(splitter, source) {\n return [\n choose((v) => tryValueIfChoice1Of2(splitter(v)), source),\n choose((v) => tryValueIfChoice2Of2(splitter(v)), source)\n ];\n}\nexport function subscribe(callback, source) {\n return source.Subscribe(new Observer(callback));\n}\n//# sourceMappingURL=Observable.js.map","import { Observer, protect } from \"./Observable\";\nimport { some, tryValueIfChoice1Of2, tryValueIfChoice2Of2, value } from \"./Option\";\nimport { iterate as seqIterate } from \"./Seq\";\nexport class Event {\n constructor(_subscriber, delegates) {\n this._subscriber = _subscriber;\n this.delegates = delegates || new Array();\n }\n Add(f) {\n this._addHandler(f);\n }\n // IEvent methods\n get Publish() {\n return this;\n }\n Trigger(value) {\n seqIterate((f) => f(value), this.delegates);\n }\n // IDelegateEvent methods\n AddHandler(handler) {\n if (this._dotnetDelegates == null) {\n this._dotnetDelegates = new Map();\n }\n const f = (x) => handler(null, x);\n this._dotnetDelegates.set(handler, f);\n this._addHandler(f);\n }\n RemoveHandler(handler) {\n if (this._dotnetDelegates != null) {\n const f = this._dotnetDelegates.get(handler);\n if (f != null) {\n this._dotnetDelegates.delete(handler);\n this._removeHandler(f);\n }\n }\n }\n // IObservable methods\n Subscribe(arg) {\n return typeof arg === \"function\"\n ? this._subscribeFromCallback(arg)\n : this._subscribeFromObserver(arg);\n }\n _addHandler(f) {\n this.delegates.push(f);\n }\n _removeHandler(f) {\n const index = this.delegates.indexOf(f);\n if (index > -1) {\n this.delegates.splice(index, 1);\n }\n }\n _subscribeFromObserver(observer) {\n if (this._subscriber) {\n return this._subscriber(observer);\n }\n const callback = observer.OnNext;\n this._addHandler(callback);\n return { Dispose: () => { this._removeHandler(callback); } };\n }\n _subscribeFromCallback(callback) {\n this._addHandler(callback);\n return { Dispose: () => { this._removeHandler(callback); } };\n }\n}\nexport function add(callback, sourceEvent) {\n sourceEvent.Subscribe(new Observer(callback));\n}\nexport function choose(chooser, sourceEvent) {\n const source = sourceEvent;\n return new Event((observer) => source.Subscribe(new Observer((t) => protect(() => chooser(t), (u) => { if (u != null) {\n observer.OnNext(value(u));\n } }, observer.OnError), observer.OnError, observer.OnCompleted)), source.delegates);\n}\nexport function filter(predicate, sourceEvent) {\n return choose((x) => predicate(x) ? some(x) : undefined, sourceEvent);\n}\nexport function map(mapping, sourceEvent) {\n const source = sourceEvent;\n return new Event((observer) => source.Subscribe(new Observer((t) => protect(() => mapping(t), observer.OnNext, observer.OnError), observer.OnError, observer.OnCompleted)), source.delegates);\n}\nexport function merge(event1, event2) {\n const source1 = event1;\n const source2 = event2;\n return new Event((observer) => {\n let stopped = false;\n let completed1 = false;\n let completed2 = false;\n const h1 = source1.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed1 = true;\n if (completed2) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n const h2 = source2.Subscribe(new Observer((v) => { if (!stopped) {\n observer.OnNext(v);\n } }, (e) => {\n if (!stopped) {\n stopped = true;\n observer.OnError(e);\n }\n }, () => {\n if (!stopped) {\n completed2 = true;\n if (completed1) {\n stopped = true;\n observer.OnCompleted();\n }\n }\n }));\n return {\n Dispose() {\n h1.Dispose();\n h2.Dispose();\n },\n };\n }, source1.delegates.concat(source2.delegates));\n}\nexport function pairwise(sourceEvent) {\n const source = sourceEvent;\n return new Event((observer) => {\n let last;\n return source.Subscribe(new Observer((next) => {\n if (last != null) {\n observer.OnNext([last, next]);\n }\n last = next;\n }, observer.OnError, observer.OnCompleted));\n }, source.delegates);\n}\nexport function partition(predicate, sourceEvent) {\n return [filter(predicate, sourceEvent), filter((x) => !predicate(x), sourceEvent)];\n}\nexport function scan(collector, state, sourceEvent) {\n const source = sourceEvent;\n return new Event((observer) => {\n return source.Subscribe(new Observer((t) => {\n protect(() => collector(state, t), (u) => { state = u; observer.OnNext(u); }, observer.OnError);\n }, observer.OnError, observer.OnCompleted));\n }, source.delegates);\n}\nexport function split(splitter, sourceEvent) {\n return [\n choose((v) => tryValueIfChoice1Of2(splitter(v)), sourceEvent),\n choose((v) => tryValueIfChoice2Of2(splitter(v)), sourceEvent),\n ];\n}\nexport default Event;\n//# sourceMappingURL=Event.js.map","import Event from \"./Event\";\nexport class Timer {\n constructor(interval) {\n this._enabled = false;\n this._isDisposed = false;\n this._intervalId = 0;\n this._timeoutId = 0;\n this.Interval = interval && interval > 0 ? interval : 100;\n this.AutoReset = true;\n this._elapsed = new Event();\n }\n get Elapsed() {\n return this._elapsed;\n }\n get Enabled() {\n return this._enabled;\n }\n set Enabled(x) {\n if (!this._isDisposed && this._enabled !== x) {\n this._enabled = x;\n if (this._enabled) {\n if (this.AutoReset) {\n this._intervalId = setInterval(() => {\n if (!this.AutoReset) {\n this.Enabled = false;\n }\n this._elapsed.Trigger(new Date());\n }, this.Interval);\n }\n else {\n this._timeoutId = setTimeout(() => {\n this.Enabled = false;\n this._timeoutId = 0;\n if (this.AutoReset) {\n this.Enabled = true;\n }\n this._elapsed.Trigger(new Date());\n }, this.Interval);\n }\n }\n else {\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n this._timeoutId = 0;\n }\n if (this._intervalId) {\n clearInterval(this._intervalId);\n this._intervalId = 0;\n }\n }\n }\n }\n Dispose() {\n this.Enabled = false;\n this._isDisposed = true;\n }\n Close() {\n this.Dispose();\n }\n Start() {\n this.Enabled = true;\n }\n Stop() {\n this.Enabled = false;\n }\n}\nexport default Timer;\n//# sourceMappingURL=Timer.js.map","namespace Elmish\n\n(**\nLog\n---------\nBasic cross-platform logging API.\n\n*)\nmodule internal Log =\n\n#if FABLE_COMPILER\n open Fable.Core.JS\n\n let onError (text: string, ex: exn) = console.error (text,ex)\n let toConsole(text: string, o: #obj) = console.log(text,o)\n\n#else\n#if NETSTANDARD2_0\n let onError (text: string, ex: exn) = System.Diagnostics.Trace.TraceError(\"{0}: {1}\", text, ex)\n let toConsole(text: string, o: #obj) = printfn \"%s: %A\" text o\n#else\n let onError (text: string, ex: exn) = System.Console.Error.WriteLine(\"{0}: {1}\", text, ex)\n let toConsole(text: string, o: #obj) = printfn \"%s: %A\" text o\n#endif\n#endif\n\n#if FABLE_COMPILER\nmodule internal Timer =\n open System.Timers\n let delay interval callback =\n let t = new Timer(float interval, AutoReset = false)\n t.Elapsed.Add callback\n t.Enabled <- true\n t.Start()\n#endif\n","(**\nCmd\n---------\nCore abstractions for dispatching messages in Elmish.\n\n*)\n\nnamespace Elmish\n\nopen System\n\n/// Dispatch - feed new message into the processing loop\ntype Dispatch<'msg> = 'msg -> unit\n\n/// Subscription - return immediately, but may schedule dispatch of a message at any time\ntype Sub<'msg> = Dispatch<'msg> -> unit\n\n/// Cmd - container for subscriptions that may produce messages\ntype Cmd<'msg> = Sub<'msg> list\n\n/// Cmd module for creating and manipulating commands\n[]\nmodule Cmd =\n /// Execute the commands using the supplied dispatcher\n let internal exec onError (dispatch: Dispatch<'msg>) (cmd: Cmd<'msg>) =\n cmd |> List.iter (fun call -> try call dispatch with ex -> onError ex)\n\n /// None - no commands, also known as `[]`\n let none : Cmd<'msg> =\n []\n\n /// When emitting the message, map to another type\n let map (f: 'a -> 'msg) (cmd: Cmd<'a>) : Cmd<'msg> =\n cmd |> List.map (fun g -> (fun dispatch -> f >> dispatch) >> g)\n\n /// Aggregate multiple commands\n let batch (cmds: #seq>) : Cmd<'msg> =\n cmds |> List.concat\n\n /// Command to call the subscriber\n let ofSub (sub: Sub<'msg>) : Cmd<'msg> =\n [sub]\n\n module OfFunc =\n /// Command to evaluate a simple function and map the result\n /// into success or error (of exception)\n let either (task: 'a -> _) (arg: 'a) (ofSuccess: _ -> 'msg) (ofError: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n try\n task arg\n |> (ofSuccess >> dispatch)\n with x ->\n x |> (ofError >> dispatch)\n [bind]\n\n /// Command to evaluate a simple function and map the success to a message\n /// discarding any possible error\n let perform (task: 'a -> _) (arg: 'a) (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n try\n task arg\n |> (ofSuccess >> dispatch)\n with x ->\n ()\n [bind]\n\n /// Command to evaluate a simple function and map the error (in case of exception)\n let attempt (task: 'a -> unit) (arg: 'a) (ofError: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n try\n task arg\n with x ->\n x |> (ofError >> dispatch)\n [bind]\n\n /// Command to issue a specific message\n let result (msg:'msg) : Cmd<'msg> =\n [fun dispatch -> dispatch msg]\n\n module OfAsyncWith =\n /// Command that will evaluate an async block and map the result\n /// into success or error (of exception)\n let either (start: Async -> unit) \n (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n async {\n let! r = task arg |> Async.Catch\n dispatch (match r with\n | Choice1Of2 x -> ofSuccess x\n | Choice2Of2 x -> ofError x)\n }\n [bind >> start]\n\n /// Command that will evaluate an async block and map the success\n let perform (start: Async -> unit) \n (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n async {\n let! r = task arg |> Async.Catch\n match r with\n | Choice1Of2 x -> dispatch (ofSuccess x)\n | _ -> ()\n }\n [bind >> start]\n\n /// Command that will evaluate an async block and map the error (of exception)\n let attempt (start: Async -> unit) \n (task: 'a -> Async<_>)\n (arg: 'a)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n async {\n let! r = task arg |> Async.Catch\n match r with\n | Choice2Of2 x -> dispatch (ofError x)\n | _ -> ()\n }\n [bind >> start]\n\n /// Command that will evaluate an async block to the message\n let result (start: Async -> unit) \n (task: Async<'msg>) : Cmd<'msg> =\n let bind dispatch =\n async {\n let! r = task\n dispatch r\n }\n [bind >> start]\n\n module OfAsync =\n#if FABLE_COMPILER\n let start x = Timer.delay 0 (fun _ -> Async.StartImmediate x)\n#else\n let inline start x = Async.Start x\n#endif \n /// Command that will evaluate an async block and map the result\n /// into success or error (of exception)\n let inline either (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.either start task arg ofSuccess ofError\n\n /// Command that will evaluate an async block and map the success\n let inline perform (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.perform start task arg ofSuccess\n\n /// Command that will evaluate an async block and map the error (of exception)\n let inline attempt (task: 'a -> Async<_>)\n (arg: 'a)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.attempt start task arg ofError\n\n /// Command that will evaluate an async block to the message\n let inline result (task: Async<'msg>) : Cmd<'msg> =\n OfAsyncWith.result start task\n\n module OfAsyncImmediate =\n /// Command that will evaluate an async block and map the result\n /// into success or error (of exception)\n let inline either (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.either Async.StartImmediate task arg ofSuccess ofError\n\n /// Command that will evaluate an async block and map the success\n let inline perform (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.perform Async.StartImmediate task arg ofSuccess\n\n /// Command that will evaluate an async block and map the error (of exception)\n let inline attempt (task: 'a -> Async<_>)\n (arg: 'a)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsyncWith.attempt Async.StartImmediate task arg ofError\n\n /// Command that will evaluate an async block to the message\n let inline result (task: Async<'msg>) : Cmd<'msg> =\n OfAsyncWith.result Async.StartImmediate task\n\n#if FABLE_COMPILER\n module OfPromise =\n /// Command to call `promise` block and map the results\n let either (task: 'a -> Fable.Core.JS.Promise<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg)\n (ofError: #exn -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n (task arg)\n .``then``(ofSuccess >> dispatch)\n .catch(unbox >> ofError >> dispatch)\n |> ignore\n [bind]\n\n /// Command to call `promise` block and map the success\n let perform (task: 'a -> Fable.Core.JS.Promise<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg) =\n let bind dispatch =\n (task arg)\n .``then``(ofSuccess >> dispatch)\n |> ignore\n [bind]\n\n /// Command to call `promise` block and map the error\n let attempt (task: 'a -> Fable.Core.JS.Promise<_>)\n (arg:'a)\n (ofError: #exn -> 'msg) : Cmd<'msg> =\n let bind dispatch =\n (task arg)\n .catch(unbox >> ofError >> dispatch)\n |> ignore\n [bind]\n\n /// Command to dispatch the `promise` result\n let result (task: Fable.Core.JS.Promise<'msg>) =\n let bind dispatch =\n task.``then`` dispatch\n |> ignore\n [bind]\n\n []\n let inline ofPromise (task: 'a -> Fable.Core.JS.Promise<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfPromise.either task arg ofSuccess ofError \n#else\n open System.Threading.Tasks\n module OfTask =\n /// Command to call a task and map the results\n let inline either (task: 'a -> Task<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsync.either (task >> Async.AwaitTask) arg ofSuccess ofError\n\n /// Command to call a task and map the success\n let inline perform (task: 'a -> Task<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n OfAsync.perform (task >> Async.AwaitTask) arg ofSuccess\n\n /// Command to call a task and map the error\n let inline attempt (task: 'a -> Task<_>)\n (arg:'a)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsync.attempt (task >> Async.AwaitTask) arg ofError\n\n /// Command and map the task success\n let inline result (task: Task<'msg>) : Cmd<'msg> =\n OfAsync.result (task |> Async.AwaitTask)\n\n []\n let inline ofTask (task: 'a -> Task<_>)\n (arg:'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfTask.either task arg ofSuccess ofError\n#endif\n\n // Synonymous with `OfFunc.result`, may be removed in the future\n let inline ofMsg (msg:'msg) : Cmd<'msg> =\n OfFunc.result msg\n\n []\n let inline ofAsync (task: 'a -> Async<_>)\n (arg: 'a)\n (ofSuccess: _ -> 'msg)\n (ofError: _ -> 'msg) : Cmd<'msg> =\n OfAsync.either task arg ofSuccess ofError\n\n []\n let inline ofFunc (task: 'a -> _) (arg: 'a) (ofSuccess: _ -> 'msg) (ofError: _ -> 'msg) : Cmd<'msg> =\n OfFunc.either task arg ofSuccess ofError\n\n []\n let inline performFunc (task: 'a -> _) (arg: 'a) (ofSuccess: _ -> 'msg) : Cmd<'msg> =\n OfFunc.perform task arg ofSuccess\n\n []\n let attemptFunc (task: 'a -> unit) (arg: 'a) (ofError: _ -> 'msg) : Cmd<'msg> =\n OfFunc.attempt task arg ofError\n\n","\r\nnamespace Shared\r\n\r\nopen System\r\n\r\nmodule Calculations = \r\n\r\n type Derived<'t> =\r\n | Uninitialised\r\n | Calculated of 't\r\n | Overwritten of 't\r\n | Failure of string list\r\n with\r\n member this.Value = \r\n match this with \r\n | Uninitialised -> failwith \"Derived value was not initialised\"\r\n | Failure msg -> failwith <| System.String.Join(\"\\n\", msg)\r\n | Calculated v \r\n | Overwritten v -> v\r\n\r\n member this.HasValue =\r\n match this with\r\n | Calculated _ | Overwritten _ -> true\r\n | Uninitialised | Failure _ -> false\r\n\r\n member this.TryFailureMsg =\r\n match this with\r\n | Failure msg -> msg\r\n | _ -> []\r\n \r\n \r\n type Derived = \r\n\r\n static member Map (f: 't -> 'u) (d: Derived<'t>): Derived<'u> =\r\n match d with\r\n | Uninitialised -> Uninitialised\r\n | Failure msg -> Failure msg\r\n | Calculated v -> Calculated (f v)\r\n | Overwritten v -> Overwritten (f v)\r\n\r\n static member Bind (f: 't -> Derived<'u>) (d: Derived<'t>): Derived<'u> =\r\n let wrap (v: Derived<'u>) (wrapper: 'u -> Derived<'u>) = \r\n if v.HasValue then wrapper v.Value else v\r\n match d with\r\n | Uninitialised -> Uninitialised\r\n | Failure msg -> Failure msg\r\n | Calculated v -> wrap (f v) Calculated\r\n | Overwritten v -> wrap (f v) Overwritten\r\n\r\n static member Rewrap (f: 't -> Derived<'t>) (d: Derived<'t>): Derived<'t> =\r\n if d.HasValue then f d.Value else d\r\n\r\n static member Update (newVal: Derived<'t>) (oldVal: Derived<'t>): Derived<'t> =\r\n match oldVal with\r\n | Uninitialised\r\n | Failure _\r\n | Calculated _ -> newVal\r\n | Overwritten _ -> oldVal\r\n\r\n static member Calc(arg: Derived<'a>, f: 'a -> 't) =\r\n match arg with\r\n | Calculated a\r\n | Overwritten a -> Calculated (f a)\r\n | Uninitialised -> Uninitialised\r\n | Failure msg -> Failure msg\r\n\r\n static member Calc(arg1: Derived<'a1>, arg2: Derived<'a2>, f: 'a1 -> 'a2 -> 't) =\r\n if arg1.HasValue && arg2.HasValue then\r\n Calculated (f arg1.Value arg2.Value)\r\n else\r\n match arg1.TryFailureMsg @ arg2.TryFailureMsg with\r\n | [] -> Uninitialised\r\n | msgs -> Failure msgs\r\n\r\n static member Calc(arg1: Derived<'a1>, arg2: Derived<'a2>, arg3: Derived<'a3>, f: 'a1 -> 'a2 -> 'a3 -> 't) =\r\n let f2 = Derived.Calc(arg1, arg2, f)\r\n Derived.Calc(arg3, f2, (|>))\r\n\r\n static member Calc(arg1: Derived<'a1>, arg2: Derived<'a2>, arg3: Derived<'a3>, arg4: Derived<'a4>, f: 'a1 -> 'a2 -> 'a3 -> 'a4 -> 't) =\r\n let f3 = Derived.Calc(arg1, arg2, arg3, f)\r\n Derived.Calc(arg4, f3, (|>))\r\n\r\n static member Calc(arg1: Derived<'a1>, arg2: Derived<'a2>, arg3: Derived<'a3>, arg4: Derived<'a4>, arg5: Derived<'a5>, f: 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 't) =\r\n let f4 = Derived.Calc(arg1, arg2, arg3, arg4, f)\r\n Derived.Calc(arg5, f4, (|>))\r\n\r\n static member DefaultValue (dv: 't) (d: Derived<'t>): 't =\r\n if d.HasValue then d.Value else dv\r\n\r\n static member Recalc(arg: 't) =\r\n Derived.Update (Calculated arg)\r\n\r\n static member Recalc(arg: Derived<'a>, calc: 'a -> 't) =\r\n Derived.Update (Derived.Calc(arg, calc))\r\n\r\n static member Recalc(arg1: Derived<'a1>, arg2: Derived<'a2>, calc: 'a1 -> 'a2 -> 't) =\r\n Derived.Update (Derived.Calc(arg1, arg2, calc))\r\n\r\n static member Recalc(arg1: Derived<'a1>, arg2: Derived<'a2>, arg3: Derived<'a3>, calc: 'a1 -> 'a2 -> 'a3 -> 't) =\r\n Derived.Update (Derived.Calc(arg1, arg2, arg3, calc))\r\n\r\n static member Recalc(arg1: Derived<'a1>, arg2: Derived<'a2>, arg3: Derived<'a3>, arg4: Derived<'a4>, calc: 'a1 -> 'a2 -> 'a3 -> 'a4 -> 't) =\r\n Derived.Update (Derived.Calc(arg1, arg2, arg3, arg4, calc))\r\n\r\n static member Recalc(arg1: Derived<'a1>, arg2: Derived<'a2>, arg3: Derived<'a3>, arg4: Derived<'a4>, arg5: Derived<'a5>, calc: 'a1 -> 'a2 -> 'a3 -> 'a4 -> 'a5 -> 't) =\r\n Derived.Update (Derived.Calc(arg1, arg2, arg3, arg4, arg5, calc))\r\n\r\n static member IsOverwritten (value: Derived<_>) =\r\n match value with\r\n | Uninitialised\r\n | Failure _\r\n | Calculated _ -> false\r\n | Overwritten _ -> true\r\n\r\n static member ParseDecimal (s: string) =\r\n match Decimal.TryParse s with\r\n | true, value -> Overwritten value\r\n | false, _ -> Failure [(\"Nieprawidłowy format liczby: \" + s)]\r\n\r\n static member ParseDecimal (sd: Derived) =\r\n sd |> Derived.Bind Derived.ParseDecimal\r\n\r\n static member ParseInt (s: string)=\r\n match Int32.TryParse s with\r\n | true, value -> Overwritten value\r\n | false, _ -> Failure [ \"Nieprawidłowy format liczby: \" + s ]\r\n\r\n static member ParseInt (sd: Derived)=\r\n sd |> Derived.Bind Derived.ParseInt\r\n\r\n static member ParseDateTime (s: string) =\r\n match DateTime.TryParse s with\r\n | true, value -> Overwritten value\r\n | false, _ -> Failure [ \"Nieprawidłowy format daty: \" + s ]\r\n\r\n static member ParseDateTime (sd: Derived) =\r\n sd |> Derived.Bind Derived.ParseDateTime\r\n\r\n static member ofList (items: Derived<'t> list): Derived<'t list> =\r\n match items with\r\n | [] -> Calculated []\r\n | h :: t -> Derived.Calc (h, Derived.ofList t, fun h t -> h :: t)\r\n\r\n#if !FABLE_COMPILER\r\n module Config = \r\n\r\n open SqlFun.GeneratorConfig\r\n\r\n let addDerivedConversions<'t> config = \r\n config\r\n |> addParameterConversion (function Overwritten (value: 't) -> Some value | Calculated _ | Failure _ | Uninitialised -> None) \r\n |> addColumnConversion (function Some (value: 't) -> Overwritten value | None -> Uninitialised)\r\n#endif\r\n\r\n","namespace Thoth.Json\nopen System.Text.RegularExpressions\n\ntype JsonValue = obj\n\ntype ErrorReason =\n | BadPrimitive of string * JsonValue\n | BadPrimitiveExtra of string * JsonValue * string\n | BadType of string * JsonValue\n | BadField of string * JsonValue\n | BadPath of string * JsonValue * string\n | TooSmallArray of string * JsonValue\n | FailMessage of string\n | BadOneOf of string list\n\ntype CaseStrategy =\n | PascalCase\n | CamelCase\n | SnakeCase\n\ntype DecoderError = string * ErrorReason\n\ntype Decoder<'T> = string -> JsonValue -> Result<'T, DecoderError>\n\ntype Encoder<'T> = 'T -> JsonValue\n\ntype BoxedDecoder = Decoder\n\ntype BoxedEncoder = Encoder\n\ntype ExtraCoders =\n { Hash: string\n Coders: Map }\n\nmodule internal Util =\n open System.Collections.Generic\n\n type Cache<'Value>() =\n let cache = Dictionary()\n member __.GetOrAdd(key, factory) =\n match cache.TryGetValue(key) with\n | true, x -> x\n | false, _ ->\n let x = factory()\n cache.Add(key, x)\n x\n\n // Tree shaking will remove this if not used\n // so no need to make them lazy in Fable\n let CachedEncoders = Cache()\n let CachedDecoders = Cache()\n\n /// If used from .NET the type resolver won't be injected,\n /// throw a more informative error than just a null reference.\n let inline resolveType (resolver: Fable.Core.ITypeResolver<'T> option): System.Type =\n#if !FABLE_COMPILER\n failwith \"Thoth.Json is only compatible with Fable, use Thoth.Json.Net\"\n#else\n resolver.Value.ResolveType()\n#endif\n\n\n module Casing =\n let lowerFirst (str : string) = str.[..0].ToLowerInvariant() + str.[1..]\n let convert caseStrategy fieldName =\n match caseStrategy with\n | CamelCase -> lowerFirst fieldName \n | SnakeCase -> Regex.Replace(lowerFirst fieldName, \"[A-Z]\",\"_$0\").ToLowerInvariant()\n | PascalCase -> fieldName ","\nnamespace Thoth.Json\nopen System.Text.RegularExpressions\n\n[]\nmodule Decode =\n\n open System.Globalization\n open Fable.Core\n open Fable.Core.JsInterop\n\n module internal Helpers =\n []\n let jsTypeof (_ : JsonValue) : string = jsNative\n\n []\n let isSyntaxError (_ : JsonValue) : bool = jsNative\n\n let inline getField (fieldName: string) (o: JsonValue) = o?(fieldName)\n let inline isString (o: JsonValue) : bool = o :? string\n\n let inline isBoolean (o: JsonValue) : bool = o :? bool\n\n let inline isNumber (o: JsonValue) : bool = jsTypeof o = \"number\"\n\n let inline isArray (o: JsonValue) : bool = JS.Constructors.Array.isArray(o)\n\n []\n let isObject (_ : JsonValue) : bool = jsNative\n\n let inline isNaN (o: JsonValue) : bool = JS.Constructors.Number.isNaN(!!o)\n\n let inline isNullValue (o: JsonValue): bool = isNull o\n\n /// is the value an integer? This returns false for 1.1, NaN, Infinite, ...\n []\n let isIntegralValue (_: JsonValue) : bool = jsNative\n\n []\n let isBetweenInclusive(_v: JsonValue, _min: obj, _max: obj) = jsNative\n\n []\n let isIntFinite (_: JsonValue) : bool = jsNative\n\n let isUndefined (o: JsonValue): bool = jsTypeof o = \"undefined\"\n\n []\n let anyToString (_: JsonValue) : string = jsNative\n\n let inline isFunction (o: JsonValue) : bool = jsTypeof o = \"function\"\n\n let inline objectKeys (o: JsonValue) : string seq = upcast JS.Constructors.Object.keys(o)\n let inline asBool (o: JsonValue): bool = unbox o\n let inline asInt (o: JsonValue): int = unbox o\n let inline asFloat (o: JsonValue): float = unbox o\n let inline asFloat32 (o: JsonValue): float32 = unbox o\n let inline asString (o: JsonValue): string = unbox o\n let inline asArray (o: JsonValue): JsonValue[] = unbox o\n\n let private genericMsg msg value newLine =\n try\n \"Expecting \"\n + msg\n + \" but instead got:\"\n + (if newLine then \"\\n\" else \" \")\n + (Helpers.anyToString value)\n with\n | _ ->\n \"Expecting \"\n + msg\n + \" but decoder failed. Couldn't report given value due to circular structure.\"\n + (if newLine then \"\\n\" else \" \")\n\n let private errorToString (path : string, error) =\n let reason =\n match error with\n | BadPrimitive (msg, value) ->\n genericMsg msg value false\n | BadType (msg, value) ->\n genericMsg msg value true\n | BadPrimitiveExtra (msg, value, reason) ->\n genericMsg msg value false + \"\\nReason: \" + reason\n | BadField (msg, value) ->\n genericMsg msg value true\n | BadPath (msg, value, fieldName) ->\n genericMsg msg value true + (\"\\nNode `\" + fieldName + \"` is unkown.\")\n | TooSmallArray (msg, value) ->\n \"Expecting \" + msg + \".\\n\" + (Helpers.anyToString value)\n | BadOneOf messages ->\n \"The following errors were found:\\n\\n\" + String.concat \"\\n\\n\" messages\n | FailMessage msg ->\n \"The following `failure` occurred with the decoder: \" + msg\n\n match error with\n | BadOneOf _ ->\n // Don't need to show the path here because each error case will show it's own path\n reason\n | _ ->\n \"Error at: `\" + path + \"`\\n\" + reason\n\n ///////////////\n // Runners ///\n /////////////\n\n let fromValue (path : string) (decoder : Decoder<'T>) =\n fun value ->\n match decoder path value with\n | Ok success ->\n Ok success\n | Error error ->\n Error (errorToString error)\n\n let fromString (decoder : Decoder<'T>) =\n fun value ->\n try\n let json = JS.JSON.parse value\n fromValue \"$\" decoder json\n with\n | ex when Helpers.isSyntaxError ex ->\n Error(\"Given an invalid JSON: \" + ex.Message)\n\n let unsafeFromString (decoder : Decoder<'T>) =\n fun value ->\n match fromString decoder value with\n | Ok x -> x\n | Error msg -> failwith msg\n\n []\n let decodeValue (path : string) (decoder : Decoder<'T>) = fromValue path decoder\n\n []\n let decodeString (decoder : Decoder<'T>) = fromString decoder\n\n //////////////////\n // Primitives ///\n ////////////////\n\n let string : Decoder =\n fun path value ->\n if Helpers.isString value then\n Ok(Helpers.asString value)\n else\n (path, BadPrimitive(\"a string\", value)) |> Error\n\n let guid : Decoder =\n fun path value ->\n if Helpers.isString value then\n match System.Guid.TryParse (Helpers.asString value) with\n | true, x -> Ok x\n | _ -> (path, BadPrimitive(\"a guid\", value)) |> Error\n else (path, BadPrimitive(\"a guid\", value)) |> Error\n\n let unit : Decoder =\n fun path value ->\n if Helpers.isNullValue value then\n Ok ()\n else\n (path, BadPrimitive(\"null\", value)) |> Error\n\n let inline private integral\n (name : string)\n (tryParse : (string -> bool * 'T))\n (min : 'T)\n (max : 'T)\n (conv : float -> 'T) : Decoder< 'T > =\n\n fun path value ->\n if Helpers.isNumber value then\n let value : float = unbox value\n if Helpers.isIntegralValue value then\n if (float min) <= value && value <= (float max) then\n Ok(conv value)\n else\n (path, BadPrimitiveExtra(name, value, \"Value was either too large or too small for \" + name)) |> Error\n else\n (path, BadPrimitiveExtra(name, value, \"Value is not an integral value\")) |> Error\n elif Helpers.isString value then\n match tryParse (Helpers.asString value) with\n | true, x -> Ok x\n | _ -> (path, BadPrimitive(name, value)) |> Error\n else\n (path, BadPrimitive(name, value)) |> Error\n\n let sbyte : Decoder =\n integral\n \"a sbyte\"\n System.SByte.TryParse\n System.SByte.MinValue\n System.SByte.MaxValue\n sbyte\n\n /// Alias to Decode.uint8\n let byte : Decoder =\n integral\n \"a byte\"\n System.Byte.TryParse\n System.Byte.MinValue\n System.Byte.MaxValue\n byte\n\n let int16 : Decoder =\n integral\n \"an int16\"\n System.Int16.TryParse\n System.Int16.MinValue\n System.Int16.MaxValue\n int16\n\n let uint16 : Decoder =\n integral\n \"an uint16\"\n System.UInt16.TryParse\n System.UInt16.MinValue\n System.UInt16.MaxValue\n uint16\n\n let int : Decoder =\n integral\n \"an int\"\n System.Int32.TryParse\n System.Int32.MinValue\n System.Int32.MaxValue\n int\n\n let uint32 : Decoder =\n integral\n \"an uint32\"\n System.UInt32.TryParse\n System.UInt32.MinValue\n System.UInt32.MaxValue\n uint32\n\n let int64 : Decoder =\n integral\n \"an int64\"\n System.Int64.TryParse\n System.Int64.MinValue\n System.Int64.MaxValue\n int64\n\n let uint64 : Decoder =\n integral\n \"an uint64\"\n System.UInt64.TryParse\n System.UInt64.MinValue\n System.UInt64.MaxValue\n uint64\n\n let bigint : Decoder =\n fun path value ->\n if Helpers.isNumber value then\n Helpers.asInt value |> bigint |> Ok\n elif Helpers.isString value then\n // TODO: BigInt.TryParse has been added in Fable 2.1.4\n // Don't use it for now to support lower Fable versions\n try\n bigint.Parse (Helpers.asString value) |> Ok\n with _ ->\n (path, BadPrimitive(\"a bigint\", value)) |> Error\n else\n (path, BadPrimitive(\"a bigint\", value)) |> Error\n\n let bool : Decoder =\n fun path value ->\n if Helpers.isBoolean value then\n Ok(Helpers.asBool value)\n else\n (path, BadPrimitive(\"a boolean\", value)) |> Error\n\n let float : Decoder =\n fun path value ->\n if Helpers.isNumber value then\n Ok(Helpers.asFloat value)\n else\n (path, BadPrimitive(\"a float\", value)) |> Error\n\n let float32 : Decoder =\n fun path value ->\n if Helpers.isNumber value then\n Ok(Helpers.asFloat32 value)\n else\n (path, BadPrimitive(\"a float32\", value)) |> Error\n\n let decimal : Decoder =\n fun path value ->\n if Helpers.isNumber value then\n Helpers.asFloat value |> decimal |> Ok\n elif Helpers.isString value then\n match System.Decimal.TryParse (Helpers.asString value) with\n | true, x -> Ok x\n | _ -> (path, BadPrimitive(\"a decimal\", value)) |> Error\n else\n (path, BadPrimitive(\"a decimal\", value)) |> Error\n\n let datetime : Decoder =\n fun path value ->\n if Helpers.isString value then\n match System.DateTime.TryParse (Helpers.asString value) with\n | true, x -> x.ToUniversalTime() |> Ok\n | _ -> (path, BadPrimitive(\"a datetime\", value)) |> Error\n else\n (path, BadPrimitive(\"a datetime\", value)) |> Error\n\n let datetimeOffset : Decoder =\n fun path value ->\n if Helpers.isString value then\n match System.DateTimeOffset.TryParse(Helpers.asString value) with\n | true, x -> Ok x\n | _ -> (path, BadPrimitive(\"a datetimeoffset\", value)) |> Error\n else\n (path, BadPrimitive(\"a datetime\", value)) |> Error\n\n let timespan : Decoder =\n fun path value ->\n if Helpers.isString value then\n match System.TimeSpan.TryParse(Helpers.asString value) with\n | true, x -> Ok x\n | _ -> (path, BadPrimitive(\"a timespan\", value)) |> Error\n else\n (path, BadPrimitive(\"a timespan\", value)) |> Error\n\n /////////////////////////\n // Object primitives ///\n ///////////////////////\n\n let private decodeMaybeNull path (decoder : Decoder<'T>) value =\n // The decoder may be an option decoder so give it an opportunity to check null values\n match decoder path value with\n | Ok v -> Ok(Some v)\n | Error _ when Helpers.isNullValue value -> Ok None\n | Error er -> Error er\n\n let optional (fieldName : string) (decoder : Decoder<'value>) : Decoder<'value option> =\n fun path value ->\n if Helpers.isObject value then\n let fieldValue = Helpers.getField fieldName value\n if Helpers.isUndefined fieldValue then Ok None\n else decodeMaybeNull (path + \".\" + fieldName) decoder fieldValue\n else\n Error(path, BadType(\"an object\", value))\n\n let private badPathError fieldNames currentPath value =\n let currentPath = defaultArg currentPath (\"$\"::fieldNames |> String.concat \".\")\n let msg = \"an object with path `\" + (String.concat \".\" fieldNames) + \"`\"\n Error(currentPath, BadPath (msg, value, List.tryLast fieldNames |> Option.defaultValue \"\"))\n\n let optionalAt (fieldNames : string list) (decoder : Decoder<'value>) : Decoder<'value option> =\n fun firstPath firstValue ->\n ((firstPath, firstValue, None), fieldNames)\n ||> List.fold (fun (curPath, curValue, res) field ->\n match res with\n | Some _ -> curPath, curValue, res\n | None ->\n if Helpers.isNullValue curValue then\n let res = badPathError fieldNames (Some curPath) firstValue\n curPath, curValue, Some res\n elif Helpers.isObject curValue then\n let curValue = Helpers.getField field curValue\n curPath + \".\" + field, curValue, None\n else\n let res = Error(curPath, BadType(\"an object\", curValue))\n curPath, curValue, Some res)\n |> function\n | _, _, Some res -> res\n | lastPath, lastValue, None ->\n if Helpers.isUndefined lastValue then Ok None\n else decodeMaybeNull lastPath decoder lastValue\n\n let field (fieldName: string) (decoder : Decoder<'value>) : Decoder<'value> =\n fun path value ->\n if Helpers.isObject value then\n let fieldValue = Helpers.getField fieldName value\n if Helpers.isUndefined fieldValue then\n Error(path, BadField (\"an object with a field named `\" + fieldName + \"`\", value))\n else\n decoder (path + \".\" + fieldName) fieldValue\n else\n Error(path, BadType(\"an object\", value))\n\n let at (fieldNames: string list) (decoder : Decoder<'value>) : Decoder<'value> =\n fun firstPath firstValue ->\n ((firstPath, firstValue, None), fieldNames)\n ||> List.fold (fun (curPath, curValue, res) field ->\n match res with\n | Some _ -> curPath, curValue, res\n | None ->\n if Helpers.isNullValue curValue then\n let res = badPathError fieldNames (Some curPath) firstValue\n curPath, curValue, Some res\n elif Helpers.isObject curValue then\n let curValue = Helpers.getField field curValue\n if Helpers.isUndefined curValue then\n let res = badPathError fieldNames None firstValue\n curPath, curValue, Some res\n else\n curPath + \".\" + field, curValue, None\n else\n let res = Error(curPath, BadType(\"an object\", curValue))\n curPath, curValue, Some res)\n |> function\n | _, _, Some res -> res\n | lastPath, lastValue, None ->\n decoder lastPath lastValue\n\n let index (requestedIndex: int) (decoder : Decoder<'value>) : Decoder<'value> =\n fun path value ->\n let currentPath = path + \".[\" + (Operators.string requestedIndex) + \"]\"\n if Helpers.isArray value then\n let vArray = Helpers.asArray value\n if requestedIndex < vArray.Length then\n decoder currentPath (vArray.[requestedIndex])\n else\n let msg =\n \"a longer array. Need index `\"\n + (requestedIndex.ToString())\n + \"` but there are only `\"\n + (vArray.Length.ToString())\n + \"` entries\"\n\n (currentPath, TooSmallArray(msg, value))\n |> Error\n else\n (currentPath, BadPrimitive(\"an array\", value))\n |> Error\n\n let option (decoder : Decoder<'value>) : Decoder<'value option> =\n fun path value ->\n if Helpers.isNullValue value then Ok None\n else decoder path value |> Result.map Some\n\n //////////////////////\n // Data structure ///\n ////////////////////\n\n let list (decoder : Decoder<'value>) : Decoder<'value list> =\n fun path value ->\n if Helpers.isArray value then\n let mutable i = -1\n let tokens = Helpers.asArray value\n (Ok [], tokens) ||> Array.fold (fun acc value ->\n i <- i + 1\n match acc with\n | Error _ -> acc\n | Ok acc ->\n match decoder (path + \".[\" + (i.ToString()) + \"]\") value with\n | Error er -> Error er\n | Ok value -> Ok (value::acc))\n |> Result.map List.rev\n else\n (path, BadPrimitive (\"a list\", value))\n |> Error\n\n let seq (decoder : Decoder<'value>) : Decoder<'value seq> =\n fun path value ->\n if Helpers.isArray value then\n let mutable i = -1\n let tokens = Helpers.asArray value\n (Ok (seq []), tokens) ||> Array.fold (fun acc value ->\n i <- i + 1\n match acc with\n | Error _ -> acc\n | Ok acc ->\n match decoder (path + \".[\" + (i.ToString()) + \"]\") value with\n | Error er -> Error er\n | Ok value -> Ok (Seq.append [value] acc))\n |> Result.map Seq.rev\n else\n (path, BadPrimitive (\"a seq\", value))\n |> Error\n\n let array (decoder : Decoder<'value>) : Decoder<'value array> =\n fun path value ->\n if Helpers.isArray value then\n let mutable i = -1\n let tokens = Helpers.asArray value\n let arr = Array.zeroCreate tokens.Length\n (Ok arr, tokens) ||> Array.fold (fun acc value ->\n i <- i + 1\n match acc with\n | Error _ -> acc\n | Ok acc ->\n match decoder (path + \".[\" + (i.ToString()) + \"]\") value with\n | Error er -> Error er\n | Ok value -> acc.[i] <- value; Ok acc)\n else\n (path, BadPrimitive (\"an array\", value))\n |> Error\n\n let keys: Decoder =\n fun path value ->\n if Helpers.isObject value then\n Helpers.objectKeys value |> List.ofSeq |> Ok\n else\n (path, BadPrimitive (\"an object\", value))\n |> Error\n\n let keyValuePairs (decoder : Decoder<'value>) : Decoder<(string * 'value) list> =\n fun path value ->\n match keys path value with\n | Ok objectKeys ->\n (Ok [], objectKeys) ||> List.fold (fun acc prop ->\n match acc with\n | Error _ -> acc\n | Ok acc ->\n match Helpers.getField prop value |> decoder path with\n | Error er -> Error er\n | Ok value -> (prop, value)::acc |> Ok)\n |> Result.map List.rev\n | Error e -> Error e\n\n //////////////////////////////\n // Inconsistent Structure ///\n ////////////////////////////\n\n let oneOf (decoders : Decoder<'value> list) : Decoder<'value> =\n fun path value ->\n let rec runner (decoders : Decoder<'value> list) (errors : string list) =\n match decoders with\n | head::tail ->\n match fromValue path head value with\n | Ok v ->\n Ok v\n | Error error -> runner tail (errors @ [error])\n | [] -> (path, BadOneOf errors) |> Error\n\n runner decoders []\n\n //////////////////////\n // Fancy decoding ///\n ////////////////////\n\n let nil (output : 'a) : Decoder<'a> =\n fun path value ->\n if Helpers.isNullValue value then\n Ok output\n else\n (path, BadPrimitive(\"null\", value)) |> Error\n\n let value _ v = Ok v\n\n let succeed (output : 'a) : Decoder<'a> =\n fun _ _ ->\n Ok output\n\n let fail (msg: string) : Decoder<'a> =\n fun path _ ->\n (path, FailMessage msg) |> Error\n\n let andThen (cb: 'a -> Decoder<'b>) (decoder : Decoder<'a>) : Decoder<'b> =\n fun path value ->\n match decoder path value with\n | Error error -> Error error\n | Ok result -> cb result path value\n\n let all (decoders: Decoder<'a> list): Decoder<'a list> =\n fun path value ->\n let rec runner (decoders: Decoder<'a> list) (values: 'a list) =\n match decoders with\n | decoder :: tail ->\n match decoder path value with\n | Ok value -> runner tail (values @ [ value ])\n | Error error -> Error error\n | [] -> Ok values\n\n runner decoders []\n\n /////////////////////\n // Map functions ///\n ///////////////////\n\n let map\n (ctor : 'a -> 'value)\n (d1 : Decoder<'a>) : Decoder<'value> =\n fun path value ->\n match d1 path value with\n | Ok v1 -> Ok (ctor v1)\n | Error er -> Error er\n\n let map2\n (ctor : 'a -> 'b -> 'value)\n (d1 : Decoder<'a>)\n (d2 : Decoder<'b>) : Decoder<'value> =\n fun path value ->\n match d1 path value, d2 path value with\n | Ok v1, Ok v2 -> Ok (ctor v1 v2)\n | Error er,_ -> Error er\n | _,Error er -> Error er\n\n let map3\n (ctor : 'a -> 'b -> 'c -> 'value)\n (d1 : Decoder<'a>)\n (d2 : Decoder<'b>)\n (d3 : Decoder<'c>) : Decoder<'value> =\n fun path value ->\n match d1 path value, d2 path value, d3 path value with\n | Ok v1, Ok v2, Ok v3 -> Ok (ctor v1 v2 v3)\n | Error er,_,_ -> Error er\n | _,Error er,_ -> Error er\n | _,_,Error er -> Error er\n\n let map4\n (ctor : 'a -> 'b -> 'c -> 'd -> 'value)\n (d1 : Decoder<'a>)\n (d2 : Decoder<'b>)\n (d3 : Decoder<'c>)\n (d4 : Decoder<'d>) : Decoder<'value> =\n fun path value ->\n match d1 path value, d2 path value, d3 path value, d4 path value with\n | Ok v1, Ok v2, Ok v3, Ok v4 -> Ok (ctor v1 v2 v3 v4)\n | Error er,_,_,_ -> Error er\n | _,Error er,_,_ -> Error er\n | _,_,Error er,_ -> Error er\n | _,_,_,Error er -> Error er\n\n let map5\n (ctor : 'a -> 'b -> 'c -> 'd -> 'e -> 'value)\n (d1 : Decoder<'a>)\n (d2 : Decoder<'b>)\n (d3 : Decoder<'c>)\n (d4 : Decoder<'d>)\n (d5 : Decoder<'e>) : Decoder<'value> =\n fun path value ->\n match d1 path value, d2 path value, d3 path value, d4 path value, d5 path value with\n | Ok v1, Ok v2, Ok v3, Ok v4, Ok v5 -> Ok (ctor v1 v2 v3 v4 v5)\n | Error er,_,_,_,_ -> Error er\n | _,Error er,_,_,_ -> Error er\n | _,_,Error er,_,_ -> Error er\n | _,_,_,Error er,_ -> Error er\n | _,_,_,_,Error er -> Error er\n\n let map6\n (ctor : 'a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'value)\n (d1 : Decoder<'a>)\n (d2 : Decoder<'b>)\n (d3 : Decoder<'c>)\n (d4 : Decoder<'d>)\n (d5 : Decoder<'e>)\n (d6 : Decoder<'f>) : Decoder<'value> =\n fun path value ->\n match d1 path value, d2 path value, d3 path value, d4 path value, d5 path value, d6 path value with\n | Ok v1, Ok v2, Ok v3, Ok v4, Ok v5, Ok v6 -> Ok (ctor v1 v2 v3 v4 v5 v6)\n | Error er,_,_,_,_,_ -> Error er\n | _,Error er,_,_,_,_ -> Error er\n | _,_,Error er,_,_,_ -> Error er\n | _,_,_,Error er,_,_ -> Error er\n | _,_,_,_,Error er,_ -> Error er\n | _,_,_,_,_,Error er -> Error er\n\n let map7\n (ctor : 'a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'value)\n (d1 : Decoder<'a>)\n (d2 : Decoder<'b>)\n (d3 : Decoder<'c>)\n (d4 : Decoder<'d>)\n (d5 : Decoder<'e>)\n (d6 : Decoder<'f>)\n (d7 : Decoder<'g>) : Decoder<'value> =\n fun path value ->\n match d1 path value, d2 path value, d3 path value, d4 path value, d5 path value, d6 path value, d7 path value with\n | Ok v1, Ok v2, Ok v3, Ok v4, Ok v5, Ok v6, Ok v7 -> Ok (ctor v1 v2 v3 v4 v5 v6 v7)\n | Error er,_,_,_,_,_,_ -> Error er\n | _,Error er,_,_,_,_,_ -> Error er\n | _,_,Error er,_,_,_,_ -> Error er\n | _,_,_,Error er,_,_,_ -> Error er\n | _,_,_,_,Error er,_,_ -> Error er\n | _,_,_,_,_,Error er,_ -> Error er\n | _,_,_,_,_,_,Error er -> Error er\n\n let map8\n (ctor : 'a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'value)\n (d1 : Decoder<'a>)\n (d2 : Decoder<'b>)\n (d3 : Decoder<'c>)\n (d4 : Decoder<'d>)\n (d5 : Decoder<'e>)\n (d6 : Decoder<'f>)\n (d7 : Decoder<'g>)\n (d8 : Decoder<'h>) : Decoder<'value> =\n fun path value ->\n match d1 path value, d2 path value, d3 path value, d4 path value, d5 path value, d6 path value, d7 path value, d8 path value with\n | Ok v1, Ok v2, Ok v3, Ok v4, Ok v5, Ok v6, Ok v7, Ok v8 -> Ok (ctor v1 v2 v3 v4 v5 v6 v7 v8)\n | Error er,_,_,_,_,_,_,_ -> Error er\n | _,Error er,_,_,_,_,_,_ -> Error er\n | _,_,Error er,_,_,_,_,_ -> Error er\n | _,_,_,Error er,_,_,_,_ -> Error er\n | _,_,_,_,Error er,_,_,_ -> Error er\n | _,_,_,_,_,Error er,_,_ -> Error er\n | _,_,_,_,_,_,Error er,_ -> Error er\n | _,_,_,_,_,_,_,Error er -> Error er\n\n let dict (decoder : Decoder<'value>) : Decoder> =\n map Map.ofList (keyValuePairs decoder)\n\n //////////////////////\n // Object builder ///\n ////////////////////\n\n type IRequiredGetter =\n abstract Field : string -> Decoder<'a> -> 'a\n abstract At : List -> Decoder<'a> -> 'a\n abstract Raw : Decoder<'a> -> 'a\n\n type IOptionalGetter =\n abstract Field : string -> Decoder<'a> -> 'a option\n abstract At : List -> Decoder<'a> -> 'a option\n abstract Raw : Decoder<'a> -> 'a option\n\n type IGetters =\n abstract Required: IRequiredGetter\n abstract Optional: IOptionalGetter\n\n let private unwrapWith (errors: ResizeArray) path (decoder: Decoder<'T>) value: 'T =\n match decoder path value with\n | Ok v -> v\n | Error er -> errors.Add(er); Unchecked.defaultof<'T>\n\n type Getters<'T>(path: string, v: 'T) =\n let mutable errors = ResizeArray()\n let required =\n { new IRequiredGetter with\n member __.Field (fieldName : string) (decoder : Decoder<_>) =\n unwrapWith errors path (field fieldName decoder) v\n member __.At (fieldNames : string list) (decoder : Decoder<_>) =\n unwrapWith errors path (at fieldNames decoder) v\n member __.Raw (decoder: Decoder<_>) =\n unwrapWith errors path decoder v }\n let optional =\n { new IOptionalGetter with\n member __.Field (fieldName : string) (decoder : Decoder<_>) =\n unwrapWith errors path (optional fieldName decoder) v\n member __.At (fieldNames : string list) (decoder : Decoder<_>) =\n unwrapWith errors path (optionalAt fieldNames decoder) v\n member __.Raw (decoder: Decoder<_>) =\n match decoder path v with\n | Ok v -> Some v\n | Error((_, reason) as error) ->\n match reason with\n | BadPrimitive(_,v)\n | BadPrimitiveExtra(_,v,_)\n | BadType(_,v) ->\n if Helpers.isNullValue v then None\n else errors.Add(error); Unchecked.defaultof<_>\n | BadField _\n | BadPath _ -> None\n | TooSmallArray _\n | FailMessage _\n | BadOneOf _ -> errors.Add(error); Unchecked.defaultof<_> }\n member __.Errors: _ list = Seq.toList errors\n interface IGetters with\n member __.Required = required\n member __.Optional = optional\n\n let object (builder: IGetters -> 'value) : Decoder<'value> =\n fun path v ->\n let getters = Getters(path, v)\n let result = builder getters\n match getters.Errors with\n | [] -> Ok result\n | fst::_ as errors ->\n if errors.Length > 1 then\n let errors = List.map errorToString errors\n (path, BadOneOf errors) |> Error\n else\n Error fst\n\n ///////////////////////\n // Tuples decoders ///\n ////////////////////\n\n let tuple2 (decoder1: Decoder<'T1>) (decoder2: Decoder<'T2>) : Decoder<'T1 * 'T2> =\n index 0 decoder1\n |> andThen (fun v1 ->\n index 1 decoder2\n |> andThen (fun v2 ->\n succeed (v1, v2)\n )\n )\n\n let tuple3 (decoder1: Decoder<'T1>)\n (decoder2: Decoder<'T2>)\n (decoder3: Decoder<'T3>) : Decoder<'T1 * 'T2 * 'T3> =\n index 0 decoder1\n |> andThen (fun v1 ->\n index 1 decoder2\n |> andThen (fun v2 ->\n index 2 decoder3\n |> andThen (fun v3 ->\n succeed (v1, v2, v3)\n )\n )\n )\n\n let tuple4 (decoder1: Decoder<'T1>)\n (decoder2: Decoder<'T2>)\n (decoder3: Decoder<'T3>)\n (decoder4: Decoder<'T4>) : Decoder<'T1 * 'T2 * 'T3 * 'T4> =\n index 0 decoder1\n |> andThen (fun v1 ->\n index 1 decoder2\n |> andThen (fun v2 ->\n index 2 decoder3\n |> andThen (fun v3 ->\n index 3 decoder4\n |> andThen (fun v4 ->\n succeed (v1, v2, v3, v4)\n )\n )\n )\n )\n\n let tuple5 (decoder1: Decoder<'T1>)\n (decoder2: Decoder<'T2>)\n (decoder3: Decoder<'T3>)\n (decoder4: Decoder<'T4>)\n (decoder5: Decoder<'T5>) : Decoder<'T1 * 'T2 * 'T3 * 'T4 * 'T5> =\n index 0 decoder1\n |> andThen (fun v1 ->\n index 1 decoder2\n |> andThen (fun v2 ->\n index 2 decoder3\n |> andThen (fun v3 ->\n index 3 decoder4\n |> andThen (fun v4 ->\n index 4 decoder5\n |> andThen (fun v5 ->\n succeed (v1, v2, v3, v4, v5)\n )\n )\n )\n )\n )\n\n let tuple6 (decoder1: Decoder<'T1>)\n (decoder2: Decoder<'T2>)\n (decoder3: Decoder<'T3>)\n (decoder4: Decoder<'T4>)\n (decoder5: Decoder<'T5>)\n (decoder6: Decoder<'T6>) : Decoder<'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6> =\n index 0 decoder1\n |> andThen (fun v1 ->\n index 1 decoder2\n |> andThen (fun v2 ->\n index 2 decoder3\n |> andThen (fun v3 ->\n index 3 decoder4\n |> andThen (fun v4 ->\n index 4 decoder5\n |> andThen (fun v5 ->\n index 5 decoder6\n |> andThen (fun v6 ->\n succeed (v1, v2, v3, v4, v5, v6)\n )\n )\n )\n )\n )\n )\n\n let tuple7 (decoder1: Decoder<'T1>)\n (decoder2: Decoder<'T2>)\n (decoder3: Decoder<'T3>)\n (decoder4: Decoder<'T4>)\n (decoder5: Decoder<'T5>)\n (decoder6: Decoder<'T6>)\n (decoder7: Decoder<'T7>) : Decoder<'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6 * 'T7> =\n index 0 decoder1\n |> andThen (fun v1 ->\n index 1 decoder2\n |> andThen (fun v2 ->\n index 2 decoder3\n |> andThen (fun v3 ->\n index 3 decoder4\n |> andThen (fun v4 ->\n index 4 decoder5\n |> andThen (fun v5 ->\n index 5 decoder6\n |> andThen (fun v6 ->\n index 6 decoder7\n |> andThen (fun v7 ->\n succeed (v1, v2, v3, v4, v5, v6, v7)\n )\n )\n )\n )\n )\n )\n )\n\n let tuple8 (decoder1: Decoder<'T1>)\n (decoder2: Decoder<'T2>)\n (decoder3: Decoder<'T3>)\n (decoder4: Decoder<'T4>)\n (decoder5: Decoder<'T5>)\n (decoder6: Decoder<'T6>)\n (decoder7: Decoder<'T7>)\n (decoder8: Decoder<'T8>) : Decoder<'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6 * 'T7 * 'T8> =\n index 0 decoder1\n |> andThen (fun v1 ->\n index 1 decoder2\n |> andThen (fun v2 ->\n index 2 decoder3\n |> andThen (fun v3 ->\n index 3 decoder4\n |> andThen (fun v4 ->\n index 4 decoder5\n |> andThen (fun v5 ->\n index 5 decoder6\n |> andThen (fun v6 ->\n index 6 decoder7\n |> andThen (fun v7 ->\n index 7 decoder8\n |> andThen (fun v8 ->\n succeed (v1, v2, v3, v4, v5, v6, v7, v8)\n )\n )\n )\n )\n )\n )\n )\n )\n\n ////////////\n // Enum ///\n /////////\n\n #if !FABLE_REPL_LIB\n module Enum =\n\n let inline byte<'TEnum when 'TEnum : enum> : Decoder<'TEnum> =\n byte\n |> andThen (fun value ->\n LanguagePrimitives.EnumOfValue value\n |> succeed\n )\n\n let inline sbyte<'TEnum when 'TEnum : enum> : Decoder<'TEnum> =\n sbyte\n |> andThen (fun value ->\n LanguagePrimitives.EnumOfValue value\n |> succeed\n )\n\n let inline int16<'TEnum when 'TEnum : enum> : Decoder<'TEnum> =\n int16\n |> andThen (fun value ->\n LanguagePrimitives.EnumOfValue value\n |> succeed\n )\n\n let inline uint16<'TEnum when 'TEnum : enum> : Decoder<'TEnum> =\n uint16\n |> andThen (fun value ->\n LanguagePrimitives.EnumOfValue value\n |> succeed\n )\n\n let inline int<'TEnum when 'TEnum : enum> : Decoder<'TEnum> =\n int\n |> andThen (fun value ->\n LanguagePrimitives.EnumOfValue value\n |> succeed\n )\n\n let inline uint32<'TEnum when 'TEnum : enum> : Decoder<'TEnum> =\n uint32\n |> andThen (fun value ->\n LanguagePrimitives.EnumOfValue value\n |> succeed\n )\n #endif\n\n //////////////////\n // Reflection ///\n ////////////////\n\n open FSharp.Reflection\n\n // As generics are erased by Fable, let's just do an unsafe cast for performance\n let inline boxDecoder (d: Decoder<'T>): BoxedDecoder =\n !!d // d >> Result.map box\n\n let inline unboxDecoder (d: BoxedDecoder): Decoder<'T> =\n !!d // d >> Result.map unbox\n\n // This is used to force Fable use a generic comparer for map keys\n let private toMap<'key, 'value when 'key: comparison> (xs: ('key*'value) seq) = Map.ofSeq xs\n let private toSet<'key when 'key: comparison> (xs: 'key seq) = Set.ofSeq xs\n\n let private autoObject (decoderInfos: (string * BoxedDecoder)[]) (path : string) (value: JsonValue) =\n if not (Helpers.isObject value) then\n (path, BadPrimitive (\"an object\", value)) |> Error\n else\n (decoderInfos, Ok []) ||> Array.foldBack (fun (name, decoder) acc ->\n match acc with\n | Error _ -> acc\n | Ok result ->\n Helpers.getField name value\n |> decoder (path + \".\" + name)\n |> Result.map (fun v -> v::result))\n\n let inline private enumDecoder<'UnderlineType when 'UnderlineType : equality>\n (decoder : Decoder<'UnderlineType>)\n (toString : 'UnderlineType -> string)\n (t: System.Type) =\n\n fun path value ->\n match decoder path value with\n | Ok enumValue ->\n System.Enum.GetValues(t)\n |> Seq.cast<'UnderlineType>\n |> Seq.contains enumValue\n |> function\n | true ->\n System.Enum.Parse(t, toString enumValue)\n |> Ok\n | false ->\n (path, BadPrimitiveExtra(t.FullName, value, \"Unkown value provided for the enum\"))\n |> Error\n | Error msg ->\n Error msg\n\n let private autoObject2 (keyDecoder: BoxedDecoder) (valueDecoder: BoxedDecoder) (path : string) (value: JsonValue) =\n if not (Helpers.isObject value) then\n (path, BadPrimitive (\"an object\", value)) |> Error\n else\n (Ok [], Helpers.objectKeys(value)) ||> Seq.fold (fun acc name ->\n match acc with\n | Error _ -> acc\n | Ok acc ->\n match keyDecoder path name with\n | Error er -> Error er\n | Ok k ->\n Helpers.getField name value\n |> valueDecoder (path + \".\" + name)\n |> function\n | Error er -> Error er\n | Ok v -> (k,v)::acc |> Ok)\n\n let private mixedArray msg (decoders: BoxedDecoder[]) (path: string) (values: JsonValue[]): Result =\n if decoders.Length <> values.Length then\n (path, sprintf \"Expected %i %s but got %i\" decoders.Length msg values.Length\n |> FailMessage) |> Error\n else\n (values, decoders, Ok [])\n |||> Array.foldBack2 (fun value decoder acc ->\n match acc with\n | Error _ -> acc\n | Ok result -> decoder path value |> Result.map (fun v -> v::result))\n\n let rec private makeUnion extra caseStrategy t name (path : string) (values: JsonValue[]) =\n let uci =\n FSharpType.GetUnionCases(t, allowAccessToPrivateRepresentation=true)\n |> Array.tryFind (fun x -> x.Name = name)\n match uci with\n | None -> (path, FailMessage(\"Cannot find case \" + name + \" in \" + t.FullName)) |> Error\n | Some uci ->\n if values.Length = 0 then\n FSharpValue.MakeUnion(uci, [||], allowAccessToPrivateRepresentation=true) |> Ok\n else\n let decoders = uci.GetFields() |> Array.map (fun fi -> autoDecoder extra caseStrategy false fi.PropertyType)\n mixedArray \"union fields\" decoders path values\n |> Result.map (fun values -> FSharpValue.MakeUnion(uci, List.toArray values, allowAccessToPrivateRepresentation=true))\n\n and private autoDecodeRecordsAndUnions extra (caseStrategy : CaseStrategy) (isOptional : bool) (t: System.Type) : BoxedDecoder =\n // Add the decoder to extra in case one of the fields is recursive\n let decoderRef = ref Unchecked.defaultof<_>\n let extra = extra |> Map.add t.FullName decoderRef\n let decoder =\n if FSharpType.IsRecord(t, allowAccessToPrivateRepresentation=true) then\n let decoders =\n FSharpType.GetRecordFields(t, allowAccessToPrivateRepresentation=true)\n |> Array.map (fun fi ->\n let name = Util.Casing.convert caseStrategy fi.Name\n name, autoDecoder extra caseStrategy false fi.PropertyType)\n fun path value ->\n autoObject decoders path value\n |> Result.map (fun xs -> FSharpValue.MakeRecord(t, List.toArray xs, allowAccessToPrivateRepresentation=true))\n\n elif FSharpType.IsUnion(t, allowAccessToPrivateRepresentation=true) then\n fun path (value: JsonValue) ->\n if Helpers.isString(value) then\n let name = Helpers.asString value\n makeUnion extra caseStrategy t name path [||]\n elif Helpers.isArray(value) then\n let values = Helpers.asArray value\n let name = Helpers.asString values.[0]\n makeUnion extra caseStrategy t name path values.[1..]\n else (path, BadPrimitive(\"a string or array\", value)) |> Error\n\n else\n if isOptional then\n // The error will only happen at runtime if the value is not null\n // See https://github.com/MangelMaxime/Thoth/pull/84#issuecomment-444837773\n boxDecoder(fun path value -> Error(path, BadType(\"an extra coder for \" + t.FullName, value)))\n else\n // Don't use failwithf here, for some reason F#/Fable compiles it as a function\n // when the return type is a function too, so it doesn't fail immediately\n sprintf \"Cannot generate auto decoder for %s. Please pass an extra decoder.\" t.FullName |> failwith\n decoderRef := decoder\n decoder\n\n and private autoDecoder (extra: Map>) caseStrategy (isOptional : bool) (t: System.Type) : BoxedDecoder =\n let fullname = t.FullName\n match Map.tryFind fullname extra with\n | Some decoderRef -> fun path value -> decoderRef.contents path value\n | None ->\n if t.IsArray then\n let decoder = t.GetElementType() |> autoDecoder extra caseStrategy false\n array decoder |> boxDecoder\n elif t.IsEnum then\n let enumType = System.Enum.GetUnderlyingType(t).FullName\n if enumType = typeof.FullName then\n enumDecoder sbyte Operators.string t |> boxDecoder\n elif enumType = typeof.FullName then\n enumDecoder byte Operators.string t |> boxDecoder\n elif enumType = typeof.FullName then\n enumDecoder int16 Operators.string t |> boxDecoder\n elif enumType = typeof.FullName then\n enumDecoder uint16 Operators.string t |> boxDecoder\n elif enumType = typeof.FullName then\n enumDecoder int Operators.string t |> boxDecoder\n elif enumType = typeof.FullName then\n enumDecoder uint32 Operators.string t |> boxDecoder\n else\n failwithf\n \"\"\"Cannot generate auto decoder for %s.\nThoth.Json.Net only support the folluwing enum types:\n- sbyte\n- byte\n- int16\n- uint16\n- int\n- uint32\nIf you can't use one of these types, please pass an extra decoder.\n \"\"\" t.FullName\n elif t.IsGenericType then\n if FSharpType.IsTuple(t) then\n let decoders = FSharpType.GetTupleElements(t) |> Array.map (autoDecoder extra caseStrategy false)\n fun path value ->\n if Helpers.isArray value then\n mixedArray \"tuple elements\" decoders path (Helpers.asArray value)\n |> Result.map (fun xs -> FSharpValue.MakeTuple(List.toArray xs, t))\n else (path, BadPrimitive (\"an array\", value)) |> Error\n else\n let fullname = t.GetGenericTypeDefinition().FullName\n if fullname = typedefof.FullName then\n t.GenericTypeArguments.[0] |> (autoDecoder extra caseStrategy true) |> option |> boxDecoder\n elif fullname = typedefof.FullName then\n t.GenericTypeArguments.[0] |> (autoDecoder extra caseStrategy false) |> list |> boxDecoder\n // Disable seq support because I don't know how to implement it on Thoth.Json.Net side\n // elif fullname = typedefof.FullName then\n // t.GenericTypeArguments.[0] |> (autoDecoder extra caseStrategy false) |> seq |> boxDecoder\n elif fullname = typedefof< Map >.FullName then\n let keyDecoder = t.GenericTypeArguments.[0] |> autoDecoder extra caseStrategy false\n let valueDecoder = t.GenericTypeArguments.[1] |> autoDecoder extra caseStrategy false\n oneOf [\n autoObject2 keyDecoder valueDecoder\n list (tuple2 keyDecoder valueDecoder)\n ] |> map (fun ar -> toMap (unbox ar) |> box)\n elif fullname = typedefof< Set >.FullName then\n let decoder = t.GenericTypeArguments.[0] |> autoDecoder extra caseStrategy false\n fun path value ->\n match array decoder path value with\n | Error er -> Error er\n | Ok ar -> toSet (unbox ar) |> box |> Ok\n else\n autoDecodeRecordsAndUnions extra caseStrategy isOptional t\n else\n if fullname = typeof.FullName then\n boxDecoder bool\n elif fullname = typedefof.FullName then\n boxDecoder unit\n elif fullname = typeof.FullName then\n boxDecoder string\n elif fullname = typeof.FullName then\n boxDecoder sbyte\n elif fullname = typeof.FullName then\n boxDecoder byte\n elif fullname = typeof.FullName then\n boxDecoder int16\n elif fullname = typeof.FullName then\n boxDecoder uint16\n elif fullname = typeof.FullName then\n boxDecoder int\n elif fullname = typeof.FullName then\n boxDecoder uint32\n elif fullname = typeof.FullName then\n boxDecoder float\n elif fullname = typeof.FullName then\n boxDecoder float32\n // These number types require extra libraries in Fable. To prevent penalizing\n // all users, extra decoders (withInt64, etc) must be passed when they're needed.\n\n // elif fullname = typeof.FullName then\n // boxDecoder int64\n // elif fullname = typeof.FullName then\n // boxDecoder uint64\n // elif fullname = typeof.FullName then\n // boxDecoder bigint\n // elif fullname = typeof.FullName then\n // boxDecoder decimal\n elif fullname = typeof.FullName then\n boxDecoder datetime\n elif fullname = typeof.FullName then\n boxDecoder datetimeOffset\n elif fullname = typeof.FullName then\n boxDecoder timespan\n elif fullname = typeof.FullName then\n boxDecoder guid\n elif fullname = typeof.FullName then\n fun _ v -> Ok v\n else autoDecodeRecordsAndUnions extra caseStrategy isOptional t\n\n let private makeExtra (extra: ExtraCoders option) =\n match extra with\n | None -> Map.empty\n | Some e -> Map.map (fun _ (_,dec) -> ref dec) e.Coders\n\n type Auto =\n static member generateDecoderCached<'T>(?caseStrategy : CaseStrategy, ?extra: ExtraCoders, [] ?resolver: ITypeResolver<'T>): Decoder<'T> =\n let t = Util.resolveType resolver\n let caseStrategy = defaultArg caseStrategy PascalCase\n\n let key =\n t.FullName\n |> (+) (Operators.string caseStrategy)\n |> (+) (extra |> Option.map (fun e -> e.Hash) |> Option.defaultValue \"\")\n\n Util.CachedDecoders.GetOrAdd(key, fun _ ->\n autoDecoder (makeExtra extra) caseStrategy false t) |> unboxDecoder\n\n static member generateDecoder<'T>(?caseStrategy : CaseStrategy, ?extra: ExtraCoders, [] ?resolver: ITypeResolver<'T>): Decoder<'T> =\n let caseStrategy = defaultArg caseStrategy PascalCase\n Util.resolveType resolver\n |> autoDecoder (makeExtra extra) caseStrategy false |> unboxDecoder\n\n static member fromString<'T>(json: string, ?caseStrategy : CaseStrategy, ?extra: ExtraCoders, [] ?resolver: ITypeResolver<'T>): Result<'T, string> =\n let decoder = Auto.generateDecoder(?caseStrategy=caseStrategy, ?extra=extra, ?resolver=resolver)\n fromString decoder json\n\n static member unsafeFromString<'T>(json: string, ?caseStrategy : CaseStrategy, ?extra: ExtraCoders, [] ?resolver: ITypeResolver<'T>): 'T =\n let decoder = Auto.generateDecoder(?caseStrategy=caseStrategy, ?extra=extra, ?resolver=resolver)\n match fromString decoder json with\n | Ok x -> x\n | Error msg -> failwith msg\n","namespace Commons\r\n\r\nopen System\r\nopen Fable.React\r\nopen Fable.React.Props\r\nopen Fable.Core\r\nopen Shared.Reservations\r\nopen Fable.Remoting.Client\r\nopen Thoth.Json\r\nopen Shared.ServerError\r\nopen Shared.Calculations\r\n\r\n\r\nmodule Event = \r\n\r\n let str disp msg (ev: Browser.Types.Event) = disp (msg ev.Value)\r\n\r\n let int disp msg (ev: Browser.Types.Event) = disp (msg (if ev.Value <> \"\" then Some (Int32.Parse ev.Value) else None))\r\n\r\n let dec disp msg (ev: Browser.Types.Event) = disp (msg (if ev.Value <> \"\" then Some (Decimal.Parse ev.Value) else None))\r\n\r\n let check disp msg (ev: Browser.Types.Event) = disp (msg ev.Checked)\r\n\r\n let date disp msg (ev: Browser.Types.Event) =\r\n let [| d; m; y |] = ev.Value.Split(\".\") |> Array.map System.Int32.Parse\r\n let date = System.DateTime(y, m, d)\r\n disp (msg date)\r\n \r\n let none disp msg _ = disp msg\r\n\r\n []\r\n let addListener (id: string, eventName: string, listener: Browser.Types.Event -> unit): unit = jsNative\r\n\r\n let addChangeDateListener (id: string, msgBuilder: System.DateTime -> 'Msg) dispatch: unit =\r\n addListener (id, \"changeDate\", date dispatch msgBuilder)\r\n\r\n let addIfChangedListener (id: string, msgBuilder: bool -> 'Msg) dispatch: unit =\r\n addListener (id, \"ifChanged\", check dispatch msgBuilder)\r\n\r\n []\r\n let addDateRangePickerApplyListener (id: string, listener: (DateTime * DateTime) -> unit): unit = jsNative\r\n\r\nmodule Controls =\r\n\r\n let actionButton attrs icon dispatch msg =\r\n a (attrs @ [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch msg) ]) [ i [ Class icon ] [] ]\r\n\r\n let progressBar color percentage =\r\n div [ Class \"progress progress-xs\" ] [\r\n div [\r\n Class (sprintf \"progress-bar progress-bar-%s\" color)\r\n Style [ Width (sprintf \"%d%%\" percentage) ]\r\n ] []\r\n ]\r\n\r\n let label color text =\r\n span [ Class (sprintf \"label label-%s\" color) ] [ str text ]\r\n\r\n let simpleButton attrs style label icon dispatch msg =\r\n a (attrs @ [ Class (\"btn \" + style); Type \"button\"; OnClick (Event.none dispatch msg) ]) [\r\n i [ Class icon ] [ ]\r\n str label \r\n ]\r\n\r\n let searchBox dispatch change submit =\r\n div [ Class \"input-group input-group-sm hidden-xs\"; Style [Width \"150px\"]] [\r\n input [\r\n Type \"text\"\r\n Class \"form-control pull-right\"\r\n Placeholder \"Szukaj...\"\r\n OnChange (Event.str dispatch change)\r\n ]\r\n div [ Class \"input-group-btn\" ] [\r\n button [\r\n Type \"submit\";\r\n Class \"btn btn-default\"\r\n OnClick (Event.none dispatch submit)\r\n ] [\r\n i [ Class \"fa fa-search\" ] []\r\n ]\r\n ]\r\n ]\r\n\r\n []\r\n let makeDateRangePicker (_: string, _: bool): unit = jsNative\r\n\r\n []\r\n let addApplyDateRangePickerListener (_: string) (_: string array -> unit): unit = jsNative\r\n\r\n []\r\n let addApplyDatePickerListener (_: string) (_: string -> unit): unit = jsNative\r\n\r\n let stringsToDates (dates: string array) =\r\n System.DateTime.Parse(dates.[0]), System.DateTime.Parse(dates.[1])\r\n\r\n let dateRangePickerButton id label dispatch msg =\r\n makeDateRangePicker (id, false)\r\n addApplyDateRangePickerListener id (stringsToDates >> msg >> dispatch)\r\n button [ Type \"button\"; Class \"btn btn-default\"; Id id ] [\r\n span [] [ i [ Class \"fa fa-calendar\" ] [ str <| sprintf \" %s \" label ] ]\r\n i [ Class \"fa fa-caret-down\"] []\r\n ]\r\n\r\n let dateRangePickerInput id (startDate: DateTime, endDate: DateTime) dispatch msg =\r\n makeDateRangePicker (id, false)\r\n addApplyDateRangePickerListener id (stringsToDates >> msg >> dispatch)\r\n div [ Class \"input-group\" ] [\r\n div [ Class \"input-group-addon\"] [\r\n i [ Class \"fa fa-calendar\" ] []\r\n ]\r\n input [\r\n Type \"text\"\r\n Class \"form-control\"\r\n Id id;\r\n Value (sprintf \"%s - %s\" (startDate.ToString(\"dd.MM.yyyy\")) (endDate.ToString(\"dd.MM.yyyy\")))\r\n ]\r\n ]\r\n\r\n let datePickerInput id (date: DateTime) dispatch msg =\r\n makeDateRangePicker (id, true)\r\n addApplyDatePickerListener id (System.DateTime.Parse >> msg >> dispatch)\r\n div [ Class \"input-group\" ] [\r\n div [ Class \"input-group-addon\"] [\r\n i [ Class \"fa fa-calendar\" ] []\r\n ]\r\n input [ Type \"text\"; Class \"form-control\"; Id id; Value (date.ToString(\"dd.MM.yyyy\")) ]\r\n ]\r\n\r\n []\r\n let makeTimePicker (_: string): unit = jsNative\r\n\r\n []\r\n let addChangeTimeTimePickerListener (_: string) (_: string -> unit): unit = jsNative\r\n\r\n []\r\n let timePickerSetTime (_: string) (_: string) = jsNative\r\n\r\n let timePickerInput id (time: string) dispatch msg =\r\n makeTimePicker id\r\n addChangeTimeTimePickerListener id (msg >> dispatch)\r\n \r\n div [ Class \"input-group\" ] [\r\n div [ Class \"input-group-addon\"] [\r\n i [ Class \"fa fa-clock-o\" ] []\r\n ]\r\n input [\r\n Type \"text\"\r\n Class \"form-control\"\r\n Id id\r\n Value time\r\n ]\r\n ]\r\n\r\n []\r\n let makeTimeMaskedInput (_: string) = jsNative\r\n\r\n []\r\n let addMaskedInputChangeEventHandler (_: string, _: string -> unit) = jsNative\r\n\r\n let timeMaskedInput id time dispatch msg =\r\n makeTimeMaskedInput id\r\n addMaskedInputChangeEventHandler (id, msg >> dispatch)\r\n div [ Class \"input-group\" ] [\r\n div [ Class \"input-group-addon\"] [\r\n i [ Class \"fa fa-clock-o\" ] []\r\n ]\r\n input [\r\n Type \"text\"\r\n Class \"form-control\"\r\n Data(\"mask\", \"\")\r\n Id id\r\n Value time\r\n OnChange (Event.str dispatch msg)\r\n MaxLength 5.0\r\n ]\r\n ]\r\n\r\n []\r\n let makeICheck id = jsNative\r\n\r\n []\r\n let addIfChangedListener (_: string) (_: bool -> unit): unit = jsNative\r\n\r\n let checkbox id attrs label value dispatch msg =\r\n makeICheck id\r\n addIfChangedListener id (msg >> dispatch) \r\n div [ Class \"checkbox\" ] [\r\n input (attrs @ [ Id id; Type \"checkbox\"; Checked value ])\r\n span [] [ str (\" \" + label) ] \r\n ]\r\n\r\n []\r\n let makeIRadio id = jsNative\r\n\r\n let radioButton id label name value check dispatch msg =\r\n makeIRadio id\r\n addIfChangedListener id (fun _ -> dispatch msg)\r\n div [ Class \"radio\" ] [\r\n input [ Id id; Name name; Type \"radio\"; Value value; Checked check ]\r\n str label\r\n ]\r\n\r\n []\r\n let makeHtmlEditor id (handler: string -> unit) = jsNative\r\n\r\n []\r\n let getEditorVal id = jsNative\r\n\r\n []\r\n let setEditorVal id value = jsNative\r\n\r\n let htmlEditor id rows value handler =\r\n makeHtmlEditor id handler\r\n setEditorVal id value\r\n textarea [ Id id; Class \"form-control\"; Rows rows; ] []\r\n\r\n []\r\n let getFiles target = jsNative\r\n\r\n let fileUpload (onload: Browser.Types.FileList -> unit) =\r\n a [ Class \"btn btn-file\" ] [\r\n input [\r\n Type \"file\";\r\n Class \"file\";\r\n Multiple true;\r\n Data (\"show-upload\", \"false\");\r\n Data (\"show-caption\", \"true\")\r\n OnChange (fun (event: Browser.Types.Event) -> onload (getFiles event.target))\r\n ]\r\n i [ Class \"fa fa-upload\" ] []\r\n str \" Wybierz pliki\"\r\n ]\r\n\r\nmodule React =\r\n\r\n let inline ofList (els: ReactElement list): ReactElement = unbox(List.toArray els)\r\n\r\n\r\nmodule Auth =\r\n\r\n []\r\n let hash (key: string) = jsNative\r\n\r\nmodule Components =\r\n\r\n let contentHeader title subtitle =\r\n section [ Class \"content-header\" ] [\r\n h1 [] [\r\n str title\r\n small [] [ str subtitle ]\r\n ]\r\n ]\r\n\r\nmodule Modals =\r\n\r\n let messageBox id title message buttons =\r\n div [ Class \"modal fade\"; Id id; Style [ Display DisplayOptions.None ] ] [\r\n div [ Class \"modal-dialog\" ] [\r\n div [ Class \"modal-content\" ] [\r\n div [ Class \"modal-header\"] [\r\n button [ Type \"button\"; Class \"close\"; Data(\"dismiss\", \"modal\"); AriaLabel \"Close\" ] [\r\n span [ AriaHidden true ] [ str \"x\" ]\r\n ]\r\n h4 [Class \"modal-title\"] [ str title ]\r\n ]\r\n div [ Class \"modal-body\" ] [\r\n message\r\n ]\r\n div [ Class \"modal-footer\" ] buttons\r\n ]\r\n ]\r\n ]\r\n\r\n\r\n let confirm id title message dispatch msg =\r\n messageBox id title message [\r\n button [\r\n Type \"button\"\r\n Class \"btn btn-primary pull-left\"\r\n Data(\"dismiss\", \"modal\")\r\n OnClick (Event.none dispatch msg)\r\n ] [\r\n str \"Tak\"\r\n ] \r\n button [ Type \"button\"; Class \"btn btn-default\"; Data(\"dismiss\", \"modal\") ] [str \"Nie\" ]\r\n ]\r\n\r\n let info id title message =\r\n messageBox id title message [\r\n button [ Type \"button\"; Class \"btn btn-default center-block\"; Data(\"dismiss\", \"modal\") ] [str \"OK\" ]\r\n ]\r\n\r\n []\r\n let show id = jsNative\r\n\r\nmodule Forms =\r\n\r\n let formGroup hasError controls =\r\n div [ Class (\"form-group\" + if hasError then \" has-error\" else \"\") ] controls\r\n \r\n let controlWithLabel labWidth ctrlWidth id labText errMsgs control =\r\n let below, rightWidth, right = errMsgs\r\n [\r\n label [ HtmlFor id; Class (labWidth + \" control-label\") ] [\r\n if not (List.isEmpty below && List.isEmpty right) then\r\n yield i [Class \"fa fa-times-circle-o\"] []\r\n yield str \" \"\r\n yield str labText\r\n ]\r\n div [ Class ctrlWidth ] (control :: below)\r\n div [ Class rightWidth ] right \r\n ]\r\n\r\n let errorsBelow errors =\r\n [ for err in errors do\r\n span [ Class \"help-block\" ] [ str err ] \r\n ],\r\n \"\",\r\n []\r\n\r\n let errorsRight errMsgWidth errors =\r\n [],\r\n errMsgWidth,\r\n [ for err in errors do\r\n span [ Class \"help-block\" ] [ str err ] \r\n ]\r\n \r\n\r\n let inputWithLabel labWidth ctrlWidth id labText maxLen valueTag errMsgs handler =\r\n controlWithLabel labWidth ctrlWidth id labText errMsgs\r\n <| input [ Class \"form-control\"; Type \"text\"; Id id; OnChange handler; valueTag; MaxLength maxLen ]\r\n\r\n let passwordWithLabel labWidth ctrlWidth id labText maxLen valueTag errMsgs handler =\r\n controlWithLabel labWidth ctrlWidth id labText errMsgs\r\n <| input [ Class \"form-control\"; Type \"password\"; Id id; OnChange handler; valueTag; MaxLength maxLen ]\r\n\r\n let textareaWithLabel labWidth ctrlWidth rows id labText maxLen value errors handler =\r\n controlWithLabel labWidth ctrlWidth id labText errors\r\n <| textarea [ Class \"form-control\"; Rows rows; Id id; Value value; OnChange handler; MaxLength maxLen ] []\r\n\r\n\r\n let selectWithLabel labWidth ctrlWidth id labText options value errors handler =\r\n controlWithLabel labWidth ctrlWidth id labText errors\r\n <| select [ Class \"form-control\"; OnChange handler ] [\r\n for id, text in options do\r\n option [ Value id; Selected (value = id) ] [ str text ]\r\n ]\r\n\r\n let dateRangePickerWithLabel labWidth ctrlWidth id labText value errMsgs dispatch msg =\r\n controlWithLabel labWidth ctrlWidth id labText errMsgs\r\n <| Controls.dateRangePickerInput id value dispatch msg \r\n \r\n let timePickerWithLabel labWidth ctrlWidth id labText value errMsgs dispatch msg =\r\n controlWithLabel labWidth ctrlWidth id labText errMsgs\r\n <| Controls.timePickerInput id value dispatch msg\r\n\r\n let timeMaskedInputWithLabel labWidth ctrlWidth id labText value errMsgs dispatch msg =\r\n controlWithLabel labWidth ctrlWidth id labText errMsgs\r\n <| Controls.timeMaskedInput id value dispatch msg\r\n\r\n let checkboxWithLabel labWidth ctrlWidth id labText value errMsgs dispatch msg =\r\n controlWithLabel labWidth ctrlWidth id labText errMsgs\r\n <| Controls.checkbox id [] \"\" value dispatch msg\r\n\r\n\r\nmodule Async =\r\n\r\n let Map (f: 'a -> 'b) (v: Async<'a>): Async<'b> =\r\n async {\r\n let! v' = v\r\n return f v'\r\n }\r\n\r\nmodule Option =\r\n\r\n let FromTryParse (succeed, result) =\r\n match succeed with\r\n | true -> Some result\r\n | false -> None\r\n\r\nmodule Decimal =\r\n\r\n []\r\n let format (precision: int) (value: Decimal) = jsNative\r\n\r\n let parseWithDefault def (s: string) = Decimal.TryParse s |> Option.FromTryParse |> Option.defaultValue def\r\n\r\nmodule Int32 =\r\n\r\n let parseWithDefault def (s: string) = Int32.TryParse s |> Option.FromTryParse |> Option.defaultValue def\r\n\r\n[]\r\nmodule DerivedExtensions =\r\n\r\n type Derived with\r\n\r\n static member internal InternalToString (fmt: 't -> string) (dd: Derived<'t>) =\r\n match dd with\r\n | Calculated d\r\n | Overwritten d -> fmt d\r\n | Uninitialised -> \"---\"\r\n | Failure _ -> \"Błąd\" \r\n\r\n static member ToTag format uninitInfo value =\r\n match value with\r\n | Calculated v -> Placeholder (format v)\r\n | Overwritten v -> Value (format v)\r\n | Uninitialised -> Placeholder uninitInfo\r\n | Failure msg -> Placeholder \"Błąd\"\r\n\r\n static member FromOption opt = opt |> Option.map Overwritten |> Option.defaultValue Uninitialised\r\n\r\n static member OfString (s: string) =\r\n if String.IsNullOrEmpty s then\r\n Uninitialised\r\n else\r\n Overwritten s\r\n \r\n static member DecimalToString (precision: int) (dd: Derived) =\r\n dd |> Derived.InternalToString (Decimal.format precision)\r\n\r\n static member ToString (dd: Derived) =\r\n dd |> Derived.InternalToString (Decimal.format 2)\r\n\r\n static member ToString (dd: Derived) =\r\n dd |> Derived.InternalToString string\r\n\r\n static member ToString (dd: Derived) =\r\n dd |> Derived.InternalToString id\r\n\r\n static member ToString (dd: Derived) =\r\n dd |> Derived.InternalToString (fun d -> d.ToString(\"dd.MM.yyyy\"))\r\n\r\n static member FormatDecimal (precision: int) =\r\n Derived.Map (Decimal.format precision)\r\n\r\n static member Format (d: Decimal) =\r\n d |> Decimal.format 2 |> Derived.OfString\r\n\r\n static member Format (dd: Derived) =\r\n dd |> Derived.Map (Decimal.format 2)\r\n\r\nmodule Validation =\r\n\r\n let isValidInt (num: string) = Int32.TryParse num |> fst\r\n let isValidDecimal (num: string) = Decimal.TryParse num |> fst\r\n let isValidTime (time: string) = DateTime.TryParse(time) |> fst\r\n\r\n let isValidDerived (isUnderlyingValueValid: string -> bool) (dnum: Derived) =\r\n dnum.HasValue && isUnderlyingValueValid dnum.Value\r\n\r\n let checkIfValidInt label (num: string) =\r\n [ if not (isValidInt num) then\r\n yield sprintf \"%s nie jest prawidłową liczbą\" label \r\n ]\r\n\r\n let checkIfValidDecimal label (num: string) =\r\n [ if not (isValidDecimal num) then\r\n yield sprintf \"%s nie jest prawidłową liczbą\" label \r\n ]\r\n\r\n let checkIfValidTime label (time: string) =\r\n [ if not (isValidTime time) then\r\n yield sprintf \"%s powinna mieć format hh:mm.\" label \r\n ]\r\n\r\n let checkIfValidOrEmptyDecimal label (num: string) =\r\n [ if not (String.IsNullOrWhiteSpace num) then\r\n yield! checkIfValidDecimal label num\r\n ]\r\n\r\n let checkIfValidOrEmptyTime label (time: string) =\r\n [ if not (String.IsNullOrWhiteSpace time) then\r\n yield! checkIfValidTime label time\r\n ]\r\n\r\n let checkIfDerivedValidInt label (dnum: Derived) =\r\n [ if not (dnum.HasValue && dnum.Value |> Int32.TryParse |> fst) then\r\n yield sprintf \"%s nie jest prawidłową liczbą\" label\r\n ]\r\n\r\n let checkIfDerivedValidDecimal label (dnum: Derived) =\r\n [ if not (dnum.HasValue && dnum.Value |> Decimal.TryParse |> fst) then\r\n yield sprintf \"%s nie jest prawidłową liczbą\" label\r\n ]\r\n\r\nmodule Reservations =\r\n\r\n let getStateName (state: Derived) =\r\n match state with\r\n | Overwritten st\r\n | Calculated st ->\r\n match st with\r\n | DetailedState.New -> \"Nowa\"\r\n | DetailedState.Confirmed -> \"Zatwierdzona\"\r\n | DetailedState.Prepaid -> \"Zaliczka wpłacona\"\r\n | DetailedState.PrepaymentDelayed -> \"Opóźnienie wpłaty zaliczki\"\r\n | DetailedState.Paid -> \"Opłacona\"\r\n | DetailedState.StartsToday -> \"Przyjazd\"\r\n | DetailedState.Pending -> \"W toku\"\r\n | DetailedState.FinishesToday -> \"Wyjazd\"\r\n | DetailedState.Completed -> \"Zakończona\"\r\n | DetailedState.Cancelled -> \"Odwołana\"\r\n | DetailedState.Refused -> \"Odrzucona\"\r\n | s -> sprintf \"Nieprawidłowy: %A\" s\r\n | _ -> sprintf \"Nieprawidłowy: %A\" state\r\n\r\n let getStateColor (state: Derived) =\r\n match state with\r\n | Overwritten st\r\n | Calculated st ->\r\n match st with\r\n | DetailedState.Confirmed -> \"info\"\r\n | DetailedState.New -> \"success\"\r\n | DetailedState.Prepaid -> \"info\"\r\n | DetailedState.PrepaymentDelayed -> \"danger\"\r\n | DetailedState.Paid -> \"info\"\r\n | DetailedState.StartsToday -> \"warning\"\r\n | DetailedState.Pending -> \"info\"\r\n | DetailedState.FinishesToday -> \"info\"\r\n | DetailedState.Completed -> \"info\"\r\n | DetailedState.Cancelled -> \"info\"\r\n | DetailedState.Refused -> \"info\"\r\n | s -> \"danger\"\r\n | _ -> \"danger\"\r\n\r\nmodule Utils =\r\n\r\n let getMultilineMarkup (text: string) =\r\n text.Split('\\n') |> Seq.collect (fun x -> [ br[]; str x ]) |> Seq.toList |> Seq.tail\r\n\r\nmodule ErrorHandling =\r\n\r\n let unpack (createMsg: string * ErrorInfo -> 'm) (baseMessage: string) (ex: Exception) =\r\n createMsg (\r\n baseMessage,\r\n match ex with \r\n | :? ProxyRequestException as ex -> \r\n match Decode.Auto.fromString(ex.ResponseText) with\r\n | Ok { error = e } -> e\r\n | Error e ->\r\n JS.console.error(sprintf \"Error deserialising envelope: %s\" e)\r\n ErrorInfo.Empty \r\n | ex -> ErrorInfo.Empty)\r\n ","module HeaderCommons\r\n\r\nopen System\r\nopen Elmish\r\nopen Fable.Remoting.Client\r\nopen Shared\r\n\r\nopen Commons\r\nopen Shared.LoggedUser\r\nopen Shared.ServerError\r\n\r\n\r\nlet loggedUserApi = \r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\n\r\ntype Msg =\r\n | AccountDataLoaded of BasicAccountData option\r\n | ChangePassword\r\n | AccountDetails\r\n | BankAccount\r\n | Logout\r\n | LogIn\r\n | LoggedOut of unit\r\n | ShowError of string * ErrorInfo\r\n\r\n\r\ntype MessageInfo =\r\n {\r\n Id : int\r\n Icon : string\r\n Sender : string\r\n Subject : string\r\n }\r\n\r\ntype Model =\r\n {\r\n UserName : string\r\n UserIcon : string\r\n Registered : DateTime\r\n Messages : MessageInfo list\r\n LoginPage : string\r\n LoggedIn : bool\r\n }\r\n \r\nopen Fable.React\r\nopen Fable.React.Props\r\n\r\nlet init(loginPage: string): Model * Cmd =\r\n { UserName = \"Niezalogowany\"\r\n UserIcon = \"dist/img/avatar5.png\"\r\n Registered = DateTime.Now\r\n Messages = [\r\n { Id = 1; Sender = \"Adam Majewski\"; Icon = \"dist/img/user2-160x160.jpg\"; Subject = \"Pytanie o parking\" }\r\n ]\r\n LoginPage = loginPage\r\n LoggedIn = false\r\n },\r\n Cmd.OfAsync.either id (loggedUserApi.GetBasicAccountData()) AccountDataLoaded (ErrorHandling.unpack ShowError \"Nie udało się wczytać danych użytkownika.\")\r\n\r\nlet logoutCmd = Cmd.OfAsync.either id (loggedUserApi.Logout()) LoggedOut (ErrorHandling.unpack ShowError \"Nie udało się wylogować.\")\r\n\r\nlet update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | AccountDataLoaded (Some account) ->\r\n { model with\r\n UserName = account.FirstName + \" \" + account.LastName\r\n UserIcon = account.Icon |> Option.defaultValue \"dist/img/avatar5.png\"\r\n LoggedIn = true\r\n }, Cmd.none\r\n | AccountDataLoaded None ->\r\n model, Cmd.none\r\n | LogIn ->\r\n#if DEBUG\r\n Browser.Dom.window.location.href <- model.LoginPage\r\n#else\r\n Browser.Dom.window.location.reload()\r\n#endif \r\n model, Cmd.none\r\n | Logout ->\r\n model, logoutCmd\r\n | LoggedOut () ->\r\n Browser.Dom.window.location.href <- model.LoginPage\r\n model, Cmd.none\r\n | Msg ->\r\n model, Cmd.none\r\n\r\nlet dropdownMenu menuType menuIcon labelType headerText childItems = \r\n li [ Class (\"dropdown \" + menuType) ] [\r\n a [ Style [ Cursor \"pointer\" ]; Class \"dropdown-toggle\"; Data(\"toggle\", \"dropdown\") ] [\r\n i [ Class menuIcon ] []\r\n span [ Class (\"label \" + labelType) ] [ str (childItems |> List.length |> string) ]\r\n ]\r\n ul [ Class \"dropdown-menu\" ] [\r\n li [ Class \"header\" ] [ str headerText ]\r\n li [] [\r\n ul [ Class \"menu\" ] childItems\r\n ]\r\n li [ Class \"footer\" ] [ str \"Pokaż wszystkie\" ]\r\n ]\r\n ]\r\n\r\nlet messageMenu items =\r\n dropdownMenu \"messages-menu\" \"fa fa-envelope-o\" \"label-info\"\r\n (sprintf \"Masz %d nowych wiadomości\" (List.length items)) items\r\n\r\nlet notificationMenu items =\r\n dropdownMenu \"notifications-menu\" \"fa fa-bell-o\" \"label-warning\"\r\n (sprintf \"Masz %d nowych powiadomień\" (List.length items)) items\r\n\r\nlet taskMenu items =\r\n dropdownMenu \"tasks-menu\" \"fa fa-flag-o\" \"label-danger\"\r\n (sprintf \"Masz %d nowych zadań\" (List.length items)) items\r\n\r\nlet messageItem sender icon subject dispatch msg =\r\n li [] [\r\n ul [ Class \"menu\" ] [\r\n li [] [\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch msg) ] [\r\n div [ Class \"pull-left\" ] [\r\n img [ Src icon; Class \"img-circle\"; Alt \"User Image\"] \r\n ]\r\n h4 [] [\r\n str sender\r\n small [] [ i [ Class \"fa fa-clock-o\"] [ str \"5 min\" ] ]\r\n ]\r\n p [] [ str subject ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n\r\nlet notificationItem info icon dispatch msg =\r\n li [] [\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch msg) ] [ i [ Class icon ] []; str info ]\r\n ]\r\n\r\nlet taskItem info color perc dispatch msg =\r\n li [] [\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch msg) ] [\r\n h3 [] [\r\n str info\r\n small [ Class \"pull-right\" ] [ str (sprintf \"%d%%\" perc)]\r\n ]\r\n div [ Class \"progress xs\" ] [\r\n div [\r\n Class (sprintf \"progress-bar progress-bar-%s\" color)\r\n Style [ Width (sprintf \"%d%%\" perc)]\r\n Role \"progressbar\"\r\n AriaValuenow (float perc)\r\n AriaValuemin 0.0\r\n AriaValuemax 100.0\r\n ] [\r\n span [ Class \"sr-only\" ] [ str (sprintf \"Wykonano %d%%\" perc)]\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n\r\nlet userMenu (model: Model) (dispatch : Msg -> unit) =\r\n li [ Class \"dropdown user user-menu\"] [\r\n a [ Style [ Cursor \"pointer\" ]; Class \"dropdown-toggle\"; Data(\"toggle\", \"dropdown\") ] [\r\n img [ Src model.UserIcon; Class \"user-image\"; Alt \"User Image\" ]\r\n span [ Class \"hidden-xs\" ] [ str model.UserName ]\r\n ]\r\n ul [ Class \"dropdown-menu\" ] [\r\n li [ Class \"user-header\" ] [\r\n img [ Src model.UserIcon; Class \"img-circle\"; Alt \"User Image\" ]\r\n p [] [\r\n str model.UserName\r\n small [] [ str <| sprintf \"Użytkownik od %d.%d\" model.Registered.Month model.Registered.Year]\r\n ]\r\n ]\r\n li [ Class \"user-body\"] [\r\n div [ Class \"row\" ] [\r\n div [ Class \"col-xs-4 text-center\" ] [\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch ChangePassword) ] [ str \"Hasło\" ]\r\n ]\r\n div [ Class \"col-xs-4 text-center\" ] [\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch AccountDetails) ] [ str \"Kontakt\" ]\r\n ]\r\n div [ Class \"col-xs-4 text-center\" ] [\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch BankAccount) ] [ str \"Rachunek\" ]\r\n ]\r\n ]\r\n ]\r\n li [ Class \"user-footer\"] [\r\n div [Class \"pull-left\"] [\r\n a [ Style [ Cursor \"pointer\" ]; Class \"btn btn-default btn-flat\"; OnClick (Event.none dispatch AccountDetails) ] [ str \"Profil\" ]\r\n ]\r\n if model.LoggedIn then\r\n div [Class \"pull-right\"] [\r\n a [ Style [ Cursor \"pointer\" ]; Class \"btn btn-default btn-flat\"; OnClick (Event.none dispatch Logout) ] [ str \"Wyloguj\" ]\r\n ]\r\n else\r\n div [Class \"pull-right\"] [\r\n a [ Style [ Cursor \"pointer\" ]; Class \"btn btn-default btn-flat\"; OnClick (Event.none dispatch LogIn) ] [ str \"Zaloguj\" ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n\r\nlet view (menu: ReactElement) (model : Model) (dispatch : Msg -> unit) =\r\n header [ Class \"main-header\" ] [\r\n a [ Href \"/\"; Class \"logo\" ] [\r\n span [ Class \"logo-mini\" ] [ b [] [ str \"Q\" ]; str \"a\" ]\r\n span [ Class \"logo-lg\" ] [ b [] [ str \"Qua\" ]; str \"tera\" ]\r\n ]\r\n nav [ Class \"navbar navbar-static-top\" ] [\r\n a [ Href \"#\"; Class \"sidebar-toggle\"; Data(\"toggle\", \"push-menu\"); Role \"button\" ] [\r\n span [ Class \"sr-only\" ] [ str \"Toggle navigation\" ]\r\n ]\r\n \r\n menu\r\n ]\r\n ]","namespace Shared\r\n\r\nopen Validation\r\n\r\nmodule UserProfile =\r\n\r\n type AccountDetails =\r\n {\r\n FirstName : string\r\n LastName : string\r\n Email : string\r\n Phone : string option\r\n }\r\n\r\n let validateAccountDetails (data: AccountDetails) =\r\n [\r\n checkEmpty \"Imię\" \"e\" data.FirstName |> forField \"FirstName\" \r\n checkEmpty \"Nazwisko\" \"e\" data.LastName |> forField \"LastName\"\r\n checkEmpty \"Email\" \"y\" data.Email |> forField \"Email\"\r\n checkEmpty \"Telefon\" \"y\" data.Email |> forField \"Phone\"\r\n ] |> List.collect id\r\n\r\n type IUserProfileApi =\r\n {\r\n GetAccountDetails: unit -> Async\r\n UpdateAccountDetails: AccountDetails -> Async\r\n GetSalt: unit -> Async\r\n ChangePassword: string * string -> Async\r\n }\r\n","namespace Shared\r\n\r\nopen System\r\nopen System.Text.RegularExpressions\r\n\r\nmodule Validation =\r\n\r\n type ValidationException(message: string) = \r\n inherit Exception(message)\r\n\r\n let ioptstr x = x |> Option.map string |> Option.defaultValue \"\"\r\n let foptstr = Option.map (sprintf \"%.2M\") >> Option.defaultValue \"\"\r\n\r\n let range opt1 opt2 toString =\r\n match opt1, opt2 with\r\n | Some v1, Some v2 -> sprintf \"pomiędzy %s a %s\" (toString v1) (toString v2)\r\n | Some v1, None -> sprintf \"%s lub więcej\" (toString v1)\r\n | None, Some v2 -> sprintf \"%s lub mniej\" (toString v2)\r\n | None, None -> failwithf \"Invalid range: None - None\"\r\n\r\n let checkEmpty label suffix value =\r\n [ if System.String.IsNullOrEmpty value then\r\n yield sprintf \"%s nie może pozostać pust%s\" label suffix\r\n ]\r\n\r\n let checkNone label suffix value =\r\n [ if Option.isNone value then\r\n yield sprintf \"%s nie może pozostać pust%s\" label suffix\r\n ]\r\n\r\n let checkInt label minVal maxVal value = \r\n [ if (minVal |> Option.map ((<) value) |> Option.defaultValue false) || (maxVal |> Option.map ((>) value) |> Option.defaultValue false) then\r\n yield sprintf \"%s poza dopuszczalnym zakresem %s: %d\" label (range minVal maxVal string) value\r\n ]\r\n\r\n let checkMoney label (maxVal: Decimal option) (money: Decimal) = \r\n [ if money < 0.0m || (maxVal |> Option.map ((>) money) |> Option.defaultValue false) then\r\n yield sprintf \"%s poza dopuszczalnym zakresem %s: %.2M\" label (range (Some 0.0M) maxVal (sprintf \"%.2M\")) money\r\n ]\r\n\r\n let checkPercentage label percentage = \r\n [ if percentage < 0 || percentage > 100 then\r\n yield sprintf \"%s poza dopuszczalnym zakresem (0 - 100): %d\" label percentage\r\n ]\r\n\r\n let checkDuplicates groupingKey createMessage l = \r\n l \r\n |> List.groupBy groupingKey\r\n |> List.filter (snd >> List.length >> (<=) 2) \r\n |> List.map (fun (k, l) -> createMessage k (List.length l))\r\n\r\n let checkOverlaps getFrom getTo format createMessage l =\r\n if List.isEmpty l then\r\n []\r\n else\r\n let sl = l |> List.sortBy getFrom\r\n List.zip (List.take (sl.Length - 1) sl) (List.tail sl)\r\n |> List.filter (fun (p1, p2) -> getTo p1 >= getFrom p2)\r\n |> List.map (fun (p1, p2) -> createMessage (format p1) (format p2))\r\n\r\n \r\n let checkAggregatedOverlaps getFrom getTo format createMessage maxOverlap l =\r\n if List.isEmpty l then\r\n []\r\n else\r\n let sl = l |> List.sortBy getFrom\r\n sl\r\n |> List.map (fun e -> e :: sl |> List.filter (fun ep -> getFrom e > getFrom ep && getFrom e < getTo ep))\r\n |> List.filter (List.length >> (<) maxOverlap)\r\n |> List.map (List.map format >> createMessage)\r\n\r\n let checkPasswordStrength pwd =\r\n [\r\n if String.length pwd < 8 then\r\n \"Hasło jest za krótkie (powinno mieć co najmniej 8 znaków)\"\r\n if not (Regex.Match(pwd, \"[^A-Z^a-z^0-9]\").Success && Regex.Match(pwd, \"[0-9]\").Success) then\r\n \"Hasło powinno zawierać litery, cyfry i znaki specjalne\"\r\n ] \r\n\r\n let forField (name: string) (messages: string list) =\r\n messages |> List.map (fun msg -> name, msg)\r\n\r\n let getErrorsOf name errors =\r\n errors |> List.filter (fst >> (=) name) |> List.map snd\r\n\r\n let raiseOnFail errors =\r\n if errors|> List.length > 0 then\r\n raise <| ValidationException (errors |> List.map snd |> String.concat \"\\n\")\r\n\r\n\r\n let combine (phase1: 't -> (string * string) list) (phase2: 't -> (string * string) list) (model: 't) =\r\n match phase1 model with\r\n | [] -> phase2 model\r\n | errors -> errors\r\n","namespace Shared\r\n\r\n\r\nopen Validation\r\nopen System\r\n\r\nmodule Resorts = \r\n\r\n type ResortStatus =\r\n | Open = 1\r\n | Closed = 2\r\n\r\n type ResortUsageInfo = \r\n {\r\n Id : int\r\n Name : string\r\n StartingReservations : int\r\n NewReservations : int\r\n PrepDelayedReservations : int\r\n UnrepliedMessages : int\r\n }\r\n\r\n type ResortSummary =\r\n {\r\n Id : int\r\n Name : string\r\n HasPaymentMethod : bool\r\n Address : Address\r\n PendingReservations : int\r\n Rooms : int\r\n Status : ResortStatus\r\n }\r\n\r\n type AgeGroup =\r\n {\r\n AgeTo : int\r\n PricePercentage : int\r\n }\r\n\r\n type ArrangementType = \r\n {\r\n Id : int\r\n Description : string\r\n }\r\n\r\n type ApplicationScope =\r\n {\r\n From : DateTime\r\n To : DateTime\r\n }\r\n\r\n type PriceListTemplate =\r\n {\r\n Id : int\r\n Name : string\r\n PriceChangePercentage : int\r\n Scopes : ApplicationScope list\r\n }\r\n\r\n type Resort = \r\n {\r\n Id : int\r\n OwnerId : int\r\n Name : string\r\n ShortTime : int\r\n EmptySpacePricePercentage : int\r\n PrepaymentPercentage : int\r\n PrepaymentWaitPeriod : int\r\n AutoConfirm : bool\r\n MaxRentalTime : int option // days\r\n MaxRentalAdvance : int option // months\r\n Address : Address\r\n HasPaymentMethod : bool\r\n Unavailabilities : Unavailability list\r\n AgeGroups : AgeGroup list\r\n ArrangementTypes : ArrangementType list\r\n PriceListTemplates : PriceListTemplate list\r\n }\r\n static member Empty =\r\n { Id = 0\r\n OwnerId = 0\r\n Name = \"\"\r\n ShortTime = 0\r\n EmptySpacePricePercentage = 0\r\n PrepaymentPercentage = 0\r\n PrepaymentWaitPeriod = 0\r\n AutoConfirm = true\r\n MaxRentalTime = None\r\n MaxRentalAdvance = None\r\n HasPaymentMethod = false\r\n Address = Address.Empty\r\n Unavailabilities = []\r\n AgeGroups = []\r\n ArrangementTypes = []\r\n PriceListTemplates = []\r\n }\r\n\r\n type ReservationRef =\r\n {\r\n Id : int\r\n Rooms : string list\r\n FirstName : string\r\n LastName : string\r\n From : DateTime\r\n To : DateTime\r\n Adults : int\r\n }\r\n\r\n type PartnerReference = \r\n {\r\n ResortId : int\r\n Name : string\r\n Key : string\r\n }\r\n\r\n let validateResort(resort: Resort) = \r\n [\r\n yield! checkEmpty \"Nazwa\" \"a\" resort.Name |> forField \"Name\"\r\n yield! checkEmpty \"Miejscowość\" \"a\" resort.Address.City |> forField \"City\"\r\n yield! checkEmpty \"Kod pocztowy\" \"y\" resort.Address.ZipCode |> forField \"ZipCode\"\r\n yield! checkEmpty \"Ulica\" \"a\" resort.Address.Street |> forField \"Street\"\r\n yield! checkEmpty \"Numer\" \"y\" resort.Address.Number |> forField \"Number\"\r\n\r\n yield! checkPercentage \"Zaliczka\" resort.PrepaymentPercentage |> forField \"PrepaymentPercentage\"\r\n yield! checkPercentage \"Niewykorzystane miejsce\" resort.EmptySpacePricePercentage |> forField \"EmptySpacePricePercentage\"\r\n yield! checkInt \"Czas wynajmu krótkoterminowego\" (Some 0) None resort.ShortTime |> forField \"ShortTime\"\r\n\r\n yield!\r\n resort.ArrangementTypes \r\n |> checkDuplicates (fun a -> a.Description) (sprintf \"Element występuje wielokrotnie na liście dodatków: %s (%d)\")\r\n |> forField \"ArrangementTypes\"\r\n\r\n yield!\r\n resort.Unavailabilities \r\n |> checkDuplicates (fun a -> a.From.ToString(\"dd.MM.yyyy\")) (sprintf \"Kilka okresów niedostępności ma taką samą datę początkową: %s (%d)\")\r\n |> forField \"Unavailabilities\"\r\n\r\n yield!\r\n resort.Unavailabilities \r\n |> checkOverlaps\r\n (fun u -> u.From) (fun u -> u.To) (fun u -> u.From.ToString(\"dd.MM.yyyy\") + \"-\" + u.To.ToString(\"dd.MM.yyyy\"))\r\n (sprintf \"Okresy niedostępności nakładają się: %s i %s\")\r\n |> forField \"Unavailabilities\"\r\n\r\n yield! \r\n resort.Unavailabilities \r\n |> List.filter (fun a -> a.From >= a.To)\r\n |> List.map (fun a -> sprintf \"Błędny okres niedostępności: %A - %A\" a.From a.To)\r\n |> forField \"Unavailabilities\"\r\n\r\n yield!\r\n resort.AgeGroups\r\n |> checkDuplicates (fun pp -> pp.AgeTo) (sprintf \"Grupa wiekowa pojawia się wielokrotnie: %A (%d)\")\r\n |> forField \"AgeGroupPolicies\"\r\n\r\n yield!\r\n resort.PriceListTemplates |> List.collect (fun pt -> pt.Scopes |> List.map (fun s -> s, pt))\r\n |> checkOverlaps\r\n (fun (s, _) -> s.From) (fun (s, _) -> s.To) (fun (s, t) -> sprintf \"%s [%s - %s]\" t.Name (s.From.ToString(\"dd.MM.yyyy\")) (s.To.ToString(\"dd.MM.yyyy\")))\r\n (sprintf \"Okresy obowiązywania cenników nakładają się: %s i %s\")\r\n |> forField \"PriceListTemplates\"\r\n\r\n for pp in resort.AgeGroups do \r\n yield! checkInt \"Wiek dla grupy\" (Some 0) None pp.AgeTo |> forField \"AgeGroups\"\r\n yield! checkPercentage (sprintf \"Procent ceny dla grupy do %d lat\" pp.AgeTo) pp.PricePercentage |> forField \"AgeGroupPolicies\"\r\n ]\r\n\r\n\r\n\r\n type IResortApi =\r\n {\r\n GetResortUsageInfos : unit -> Async\r\n GetResortSummaries : unit -> Async\r\n GetResort : int -> Async\r\n ValidateReservations : Resort -> Async<(ReservationRef * string list) list>\r\n SaveResort : Resort -> Async\r\n CanDeleteResort : int -> Async\r\n DeleteResort : int -> Async\r\n GetReferredResortId : string * string -> Async\r\n UpdatePartnerReference : string * string * int -> Async\r\n DeletePartnerReference : string * string -> Async\r\n }","module SidebarCommons\r\n\r\nopen Elmish\r\nopen Fable.Remoting.Client\r\nopen Shared\r\n\r\nopen Commons\r\nopen Shared.LoggedUser\r\nopen Shared.ServerError\r\n\r\nlet loggedUserApi = \r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\ntype Msg =\r\n | AccountDataLoaded of BasicAccountData option\r\n | ShowError of string * ErrorInfo\r\n | ChangePassword\r\n | UserData\r\n | Preferences\r\n | Search\r\n | SearchTextChanged of string\r\n\r\ntype Model =\r\n {\r\n UserName : string\r\n UserIcon : string\r\n IsLoggedIn : bool\r\n SearchText : string\r\n }\r\n static member NotLoggedIn =\r\n { UserName = \"Niezalogowany\"\r\n UserIcon = \"dist/img/avatar5.png\"\r\n IsLoggedIn = false\r\n SearchText = \"\"\r\n }\r\n\r\n\r\nlet init(): Model * Cmd =\r\n Model.NotLoggedIn\r\n , Cmd.OfAsync.either id (loggedUserApi.GetBasicAccountData()) AccountDataLoaded (ErrorHandling.unpack ShowError \"Nie udało się odczytać danych użytkownika.\")\r\n \r\n\r\nlet update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | AccountDataLoaded (Some account) ->\r\n { model with\r\n UserName = account.FirstName + \" \" + account.LastName\r\n UserIcon = account.Icon |> Option.defaultValue \"dist/img/avatar5.png\"\r\n IsLoggedIn = true\r\n }, Cmd.none\r\n | AccountDataLoaded None ->\r\n model, Cmd.none\r\n | SearchTextChanged t ->\r\n { model with SearchText = t }, Cmd.none\r\n | Search ->\r\n model, Cmd.none\r\n\r\nopen Fable.React\r\nopen Fable.React.Props\r\n\r\nlet userPanel (model: Model) (dispatch : Msg -> unit) =\r\n div [ Class \"user-panel\"] [\r\n div [ Class \"pull-left image\" ] [\r\n img [ Src model.UserIcon; Class \"img-circle\"; Alt \"User Image\"]\r\n ]\r\n div [ Class \"pull-left info\" ] [\r\n p [] [ str model.UserName ]\r\n a [] [ i [ Class \"fa fa-circle text-success\"] []; str \"Online\" ]\r\n ]\r\n ]\r\n\r\nlet searchForm (model: Model) (dispatch : Msg -> unit) = \r\n form [ Action \"#\"; Method \"get\"; Class \"sidebar-form\" ] [\r\n div [ Class \"input-group\" ] [\r\n input [\r\n Type \"text\"\r\n Class \"form-control\"\r\n Placeholder \"Szukaj...\"\r\n Value model.SearchText\r\n OnChange (Event.str dispatch SearchTextChanged)\r\n ]\r\n span [ Class \"input-group-btn\" ] [\r\n button [\r\n Type \"submit\"\r\n Name \"search\"\r\n Class \"btn btn-flat\"\r\n OnClick (Event.none dispatch Search)\r\n ] [\r\n i [ Class \"fa fa-search\" ] []\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\nlet menuItem model name icon active dispatch msg =\r\n li [ if active then Class \"active\" ] [\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch msg) ] [\r\n i [ Class icon ] [ ]\r\n span [] [ str (\" \" + name) ]\r\n ]\r\n ]\r\n\r\nlet menuItemWithLabels model name icon active labels dispatch msg =\r\n li [ if active then Class \"active\" ] [\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch msg) ] [\r\n i [ Class icon ] [ ]\r\n span [] [ str (\" \" + name) ]\r\n if labels |> List.length > 0 then\r\n span [ Class \"pull-right-container\" ] labels\r\n ]\r\n ]\r\n \r\n \r\nlet submenu name icon childItems =\r\n li [ Class \"treeview\" ] [\r\n a [ Style [ Cursor \"pointer\" ] ] [\r\n i [ Class icon ] []; span [] [ str name ]\r\n span [ Class \"pull-right-container\" ] [\r\n i [ Class \"fa fa-angle-left pull-right\" ] []\r\n ]\r\n ]\r\n ul [ Class \"treeview-menu\" ] childItems\r\n ]\r\n\r\n\r\nlet view (sidebarMenu: ReactElement) (model : Model) (dispatch : Msg -> unit) =\r\n aside [ Class \"main-sidebar\" ] [\r\n section [ Class \"sidebar\" ] [\r\n userPanel model dispatch\r\n searchForm model dispatch\r\n sidebarMenu \r\n ]\r\n ]\r\n\r\n\r\n","namespace Shared\r\n\r\nopen System\r\nopen Resorts\r\nopen Calculations\r\nopen Validation\r\n#if !FABLE_COMPILER\r\nopen SqlFun\r\n#endif\r\n\r\n\r\nmodule Rooms =\r\n\r\n type RoomStatus =\r\n | Open = 1\r\n | Closed = 2\r\n\r\n type RoomSummary =\r\n {\r\n Id : int\r\n Name : string\r\n Volume : int\r\n PendingReservations : int\r\n Status : RoomStatus\r\n }\r\n \r\n type AgeGroupPricing = \r\n {\r\n AgeTo : int\r\n ShortTimePrice : Derived\r\n LongTimePrice : Derived\r\n }\r\n static member Zeros (ageGroup: AgeGroupPricing) = \r\n {\r\n AgeTo = ageGroup.AgeTo\r\n ShortTimePrice = ageGroup.ShortTimePrice |> Derived.Recalc 0M\r\n LongTimePrice = ageGroup.LongTimePrice |> Derived.Recalc 0M\r\n }\r\n\r\n type PayType = \r\n#if FABLE_COMPILER\r\n | Once = 1\r\n | PerDay = 2\r\n#else\r\n | [] Once = 1\r\n | [] PerDay = 2\r\n#endif\r\n\r\n type Arrangement = \r\n {\r\n Type : ArrangementType\r\n ExtraCharge : decimal\r\n PayType : PayType\r\n }\r\n\r\n type ArrangementAvailability = \r\n {\r\n Type : ArrangementType\r\n AvailableUnits : int\r\n }\r\n\r\n type ArrangementVariant = \r\n {\r\n No : int\r\n Availabilities : ArrangementAvailability list\r\n }\r\n\r\n type PriceList =\r\n {\r\n#if !FABLE_COMPILER\r\n []\r\n#endif\r\n TemplateId : int\r\n ShortTimePrice : Derived\r\n LongTimePrice : Derived\r\n ShortEmptySpacePrice : Derived\r\n LongEmptySpacePrice : Derived\r\n AgeGroupPricings : AgeGroupPricing list\r\n }\r\n\r\n type Occupancy =\r\n {\r\n ReservationId : int\r\n From : DateTime\r\n To : DateTime\r\n }\r\n\r\n type RoomType =\r\n {\r\n#if !FABLE_COMPILER\r\n []\r\n#endif\r\n Id : string\r\n SingularNominative : string\r\n PluralNominative : string\r\n SingularGenitive : string\r\n PluralGenitive : string\r\n }\r\n static member Empty =\r\n {\r\n Id = \"\"\r\n SingularNominative = \"\"\r\n PluralNominative = \"\"\r\n SingularGenitive = \"\"\r\n PluralGenitive = \"\"\r\n }\r\n\r\n type Room = \r\n {\r\n Id : int\r\n ResortId : int\r\n Name : string\r\n ShortDescription : string\r\n DetailedDescription : string\r\n Capacity : int\r\n AdditionalCapacity : int\r\n ShortTimePrice : decimal\r\n LongTimePrice : decimal\r\n ShortEmptySpacePrice : Derived\r\n LongEmptySpacePrice : Derived\r\n PrepaymentPercentage : Derived\r\n Volume : int\r\n AgeGroupPricings : AgeGroupPricing list\r\n Arrangements : Arrangement list\r\n ArrangementVariants : ArrangementVariant list\r\n Unavailabilities : Unavailability list\r\n PriceLists : PriceList list\r\n Occupancies : Occupancy list\r\n RoomType : RoomType\r\n }\r\n static member Empty =\r\n {\r\n Id = 0\r\n ResortId = 0\r\n Name = \"\"\r\n ShortDescription = \"\"\r\n DetailedDescription = \"\"\r\n Capacity = 0\r\n AdditionalCapacity = 0\r\n ShortTimePrice = 0m\r\n LongTimePrice = 0m\r\n ShortEmptySpacePrice = Uninitialised\r\n LongEmptySpacePrice = Uninitialised\r\n PrepaymentPercentage = Uninitialised\r\n Volume = 0\r\n AgeGroupPricings = []\r\n Arrangements = []\r\n ArrangementVariants = []\r\n Unavailabilities = []\r\n PriceLists = []\r\n Occupancies = []\r\n RoomType = RoomType.Empty\r\n }\r\n\r\n type RoomCalculationData =\r\n {\r\n ShortTimePrice : Derived\r\n LongTimePrice : Derived\r\n ShortEmptySpacePrice : Derived\r\n LongEmptySpacePrice : Derived\r\n PrepaymentPercentage : Derived\r\n AgeGroupPricings : AgeGroupPricing list\r\n PriceLists : PriceList list\r\n }\r\n static member FromRoom (room: Room) =\r\n {\r\n ShortTimePrice = Overwritten room.ShortTimePrice\r\n LongTimePrice = Overwritten room.LongTimePrice\r\n ShortEmptySpacePrice = room.ShortEmptySpacePrice\r\n LongEmptySpacePrice = room.LongEmptySpacePrice\r\n PrepaymentPercentage = room.PrepaymentPercentage\r\n AgeGroupPricings = room.AgeGroupPricings\r\n PriceLists = room.PriceLists\r\n }\r\n static member UpdateRoom (room: Room) (calcData: RoomCalculationData) =\r\n { room with\r\n ShortEmptySpacePrice = room.ShortEmptySpacePrice |> Derived.Update calcData.ShortEmptySpacePrice\r\n LongEmptySpacePrice = room.LongEmptySpacePrice |> Derived.Update calcData.LongEmptySpacePrice\r\n PrepaymentPercentage = room.PrepaymentPercentage |> Derived.Update calcData.PrepaymentPercentage\r\n AgeGroupPricings = calcData.AgeGroupPricings\r\n PriceLists = calcData.PriceLists\r\n }\r\n\r\n let joinMatching rightList matches leftList = \r\n [ for left in leftList do\r\n yield left, rightList |> List.tryFind (matches left)\r\n ] \r\n\r\n let recalcPriceList (resort: Resort) (room: RoomCalculationData) (pl: PriceList, tmplOpt: PriceListTemplate option) =\r\n match tmplOpt with\r\n | Some template ->\r\n let initial = \r\n { pl with\r\n ShortTimePrice = pl.ShortTimePrice |> Derived.Recalc (room.ShortTimePrice, (*) (1M + decimal(template.PriceChangePercentage)/100M))\r\n LongTimePrice = pl.LongTimePrice |> Derived.Recalc (room.LongTimePrice, (*) (1M + decimal(template.PriceChangePercentage)/100.0M))\r\n }\r\n let initial =\r\n { initial with\r\n ShortEmptySpacePrice = initial.ShortEmptySpacePrice |> Derived.Recalc (initial.ShortTimePrice, (*) (decimal(resort.EmptySpacePricePercentage)/100.0M))\r\n LongEmptySpacePrice = initial.LongEmptySpacePrice |> Derived.Recalc (initial.LongTimePrice, (*) (decimal(resort.EmptySpacePricePercentage)/100.0M))\r\n }\r\n { initial with\r\n AgeGroupPricings =\r\n initial.AgeGroupPricings\r\n |> joinMatching resort.AgeGroups (fun pg tmpl -> pg.AgeTo = tmpl.AgeTo)\r\n |> List.map (fun (p, ppo) -> \r\n ppo |> Option.map (fun pp -> \r\n { p with \r\n ShortTimePrice = p.ShortTimePrice |> Derived.Recalc (initial.ShortTimePrice, (*) (decimal(pp.PricePercentage)/100m))\r\n LongTimePrice = p.LongTimePrice |> Derived.Recalc (initial.LongTimePrice, (*) (decimal(pp.PricePercentage)/100m))\r\n }) |> Option.defaultValue p) \r\n }\r\n | None -> pl\r\n\r\n let calculateRoom (resort: Resort) (room: RoomCalculationData) =\r\n let roomInitial = \r\n { room with\r\n ShortEmptySpacePrice = room.ShortEmptySpacePrice |> Derived.Recalc (room.ShortTimePrice, (*) (decimal(resort.EmptySpacePricePercentage)/100m))\r\n LongEmptySpacePrice = room.LongEmptySpacePrice |> Derived.Recalc (room.LongTimePrice, (*) (decimal(resort.EmptySpacePricePercentage)/100m))\r\n PrepaymentPercentage = room.PrepaymentPercentage |> Derived.Recalc resort.PrepaymentPercentage\r\n AgeGroupPricings = \r\n room.AgeGroupPricings \r\n |> joinMatching resort.AgeGroups (fun p pp -> p.AgeTo = pp.AgeTo)\r\n |> List.map (fun (p, ppo) -> \r\n ppo |> Option.map (fun pp -> \r\n { p with \r\n ShortTimePrice = p.ShortTimePrice |> Derived.Recalc (room.ShortTimePrice, (*) (decimal(pp.PricePercentage)/100m))\r\n LongTimePrice = p.LongTimePrice |> Derived.Recalc (room.LongTimePrice, (*) (decimal(pp.PricePercentage)/100m))\r\n }) |> Option.defaultValue (AgeGroupPricing.Zeros p))\r\n }\r\n { roomInitial with\r\n PriceLists =\r\n room.PriceLists\r\n |> joinMatching resort.PriceListTemplates (fun pl tmpl -> pl.TemplateId = tmpl.Id)\r\n |> List.map (recalcPriceList resort roomInitial)\r\n }\r\n\r\n let recalcRoom (resort: Resort) (room: Room) =\r\n room\r\n |> RoomCalculationData.FromRoom\r\n |> calculateRoom resort\r\n |> RoomCalculationData.UpdateRoom room\r\n\r\n let createInitialAgeGroupPricings (resort: Resort) = \r\n resort.AgeGroups\r\n |> List.map (fun pp ->\r\n { AgeTo = pp.AgeTo\r\n ShortTimePrice = Uninitialised \r\n LongTimePrice = Uninitialised \r\n })\r\n\r\n let createInitialPriceLists (resort: Resort) =\r\n resort.PriceListTemplates\r\n |> List.map (fun tmpl ->\r\n { TemplateId = tmpl.Id\r\n ShortTimePrice = Uninitialised \r\n LongTimePrice = Uninitialised\r\n ShortEmptySpacePrice = Uninitialised\r\n LongEmptySpacePrice = Uninitialised \r\n AgeGroupPricings =\r\n resort.AgeGroups\r\n |> List.map (fun pp ->\r\n { AgeTo = pp.AgeTo\r\n ShortTimePrice = Uninitialised \r\n LongTimePrice = Uninitialised \r\n })\r\n })\r\n\r\n let validateAgeGroupPricings (postfix: string) (ageGroups: AgeGroupPricing list) =\r\n [\r\n yield!\r\n ageGroups\r\n |> checkDuplicates (fun p -> p.AgeTo) (sprintf \"Grupa wiekowa występuje wielokrotnie na liście: do %d lat (%d)\")\r\n |> forField (\"AgeGroupPricings\" + postfix)\r\n for p in ageGroups do\r\n yield! checkInt \"Wiek dla grupy\" (Some 0) None p.AgeTo |> forField \"AgeGroupPricings\"\r\n yield!\r\n checkMoney (sprintf \"Cena wynajmu długoterminowego dla grupy do %d lat\" p.AgeTo) None p.LongTimePrice.Value\r\n |> forField (\"AgeGroupPricings\" + postfix)\r\n yield!\r\n checkMoney (sprintf \"Cena wynajmu krótkoterminowego dla grupy do %d lat\" p.AgeTo) None p.ShortTimePrice.Value\r\n |> forField (\"AgeGroupPricings\" + postfix)\r\n ]\r\n\r\n let validateRoom (room: Room) = \r\n [\r\n yield! checkEmpty \"Nazwa\" \"a\" room.Name |> forField \"Name\"\r\n yield! checkEmpty \"Opis\" \"y\" room.ShortDescription |> forField \"ShortDescription\"\r\n yield! checkMoney \"Cena wynajmu długoterminowego\" None room.LongTimePrice |> forField \"LongTimePrice\"\r\n yield! checkMoney \"Cena wynajmu krótkoterminowego\" None room.ShortTimePrice |> forField \"ShortTimePrice\"\r\n yield! checkMoney \"Cena niewykorzystanego miejsca\" None room.LongEmptySpacePrice.Value |> forField \"EmptySpacePrice\"\r\n yield! checkPercentage \"Zaliczka\" room.PrepaymentPercentage.Value |> forField \"PrepaymentPercentage\"\r\n yield! checkInt \"Maks. liczba osób\" (Some 1) None room.Capacity |> forField \"Capacity\"\r\n yield! checkInt \"Dodatkowe miejsce\" (Some 0) None room.Capacity |> forField \"AdditionalCapacity\"\r\n yield! checkInt \"Ilość (liczba takich samych lokali)\" (Some 1) None room.Volume |> forField \"Volume\"\r\n yield! validateAgeGroupPricings \"\" room.AgeGroupPricings\r\n for pl in room.PriceLists do\r\n yield!\r\n checkMoney \"Cena niewykorzystanego miejsca\" None pl.LongEmptySpacePrice.Value\r\n |> forField (\"EmptySpacePrice\" + pl.TemplateId.ToString())\r\n yield!\r\n checkMoney \"Cena wynajmu długoterminowego\" None pl.LongTimePrice.Value\r\n |> forField (\"LongTimePrice\" + pl.TemplateId.ToString())\r\n yield!\r\n checkMoney \"Cena wynajmu krótkoterminowego\" None pl.ShortTimePrice.Value\r\n |> forField (\"ShortTimePrice\" + pl.TemplateId.ToString())\r\n yield! validateAgeGroupPricings (pl.TemplateId.ToString()) pl.AgeGroupPricings\r\n yield!\r\n room.ArrangementVariants\r\n |> checkDuplicates (fun v -> v.No) (sprintf \"Numer wariantu występuje wielokrotnie: %d (%d)\")\r\n |> forField \"ArrangementVariants\"\r\n for a in room.Arrangements do\r\n yield!\r\n checkMoney (sprintf \"Dodatkowa opłata za %s\" a.Type.Description) None a.ExtraCharge\r\n |> forField \"Arrangements\"\r\n for v in room.ArrangementVariants do\r\n for a in v.Availabilities do\r\n yield!\r\n checkInt (sprintf \"Liczba dostępnych elementów %s w wariancie %d\" a.Type.Description v.No) (Some 1) None a.AvailableUnits\r\n |> forField \"ArrangementVariants\"\r\n yield!\r\n room.Unavailabilities\r\n |> checkAggregatedOverlaps\r\n (fun u -> u.From) (fun u -> u.To) (fun u -> u.From.ToString(\"dd.MM.yyyy\") + \"-\" + u.To.ToString(\"dd.MM.yyyy\"))\r\n (String.concat \", \" >> sprintf \"Za dużo nakładających się okresów niedostępności: %s\")\r\n room.Volume \r\n |> forField \"Unavailabilities\"\r\n ]\r\n\r\n type IRoomApi =\r\n {\r\n GetRoomSummaries: int -> Async\r\n CanDeleteRoom: int -> Async\r\n DeleteRoom: int -> Async\r\n GetRoom: int -> Async\r\n GetResort: int -> Async\r\n ValidateReservations: Room -> Async<(ReservationRef * string list) list>\r\n SaveRoom: Room -> Async\r\n }\r\n\r\n type IGalleryApi =\r\n {\r\n Load: int -> Async\r\n Add: int * string * string -> Async\r\n Remove: int * string -> Async\r\n Move: int * string * string -> Async\r\n }","module Rooms\r\n\r\nopen System\r\nopen Elmish\r\nopen Fable.React\r\nopen Fable.React.Props\r\nopen Fable.Remoting.Client\r\nopen Commons\r\nopen Shared\r\nopen Shared.Rooms\r\nopen Shared.Calculations\r\nopen Shared.Resorts\r\nopen Fable.Core\r\nopen Shared.ServerError\r\nopen System.IO\r\n\r\nlet roomApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\ntype ResortRef =\r\n {\r\n Id : int\r\n Name : string\r\n HasPaymentMethod : bool\r\n }\r\n static member FromResort (resort: Resort) =\r\n {\r\n Id = resort.Id\r\n Name = resort.Name\r\n HasPaymentMethod = resort.HasPaymentMethod\r\n }\r\n\r\nmodule RoomDetails =\r\n\r\n module AgeGroupEditor = \r\n\r\n type Msg =\r\n | RemoveAgeGroup of AgeGroupPricing\r\n | AddAgeGroup\r\n | AgeToChanged of int option\r\n | ShortTimePriceChanged of string\r\n | LongTimePriceChanged of string\r\n\r\n type EditedAgeGroupPricing =\r\n {\r\n AgeTo : int\r\n ShortTimePrice : Derived\r\n LongTimePrice : Derived\r\n AvailableAges : int list\r\n }\r\n static member Empty = {\r\n AgeTo = 0\r\n ShortTimePrice = Uninitialised\r\n LongTimePrice = Uninitialised\r\n AvailableAges = []\r\n }\r\n member this.IsComplete =\r\n this.AgeTo <> 0 &&\r\n (not this.ShortTimePrice.HasValue || Validation.isValidDecimal this.ShortTimePrice.Value) && \r\n (not this.LongTimePrice.HasValue || Validation.isValidDecimal this.LongTimePrice.Value) \r\n\r\n type Model =\r\n {\r\n Items : AgeGroupPricing list\r\n Editor : EditedAgeGroupPricing\r\n }\r\n static member Empty =\r\n {\r\n Items = []\r\n Editor = EditedAgeGroupPricing.Empty\r\n }\r\n static member FromAgeGroupPricingList ageGroups =\r\n {\r\n Items = ageGroups\r\n Editor = EditedAgeGroupPricing.Empty\r\n }\r\n static member UpdateAvailableAges (resort: Resort) (model: Model) =\r\n { model with\r\n Editor =\r\n { model.Editor with\r\n AvailableAges =\r\n resort.AgeGroups |> List.map (fun a -> a.AgeTo)\r\n |> List.except (model.Items |> List.map (fun a -> a.AgeTo))\r\n }\r\n }\r\n static member UpdateDerived (ageGroups: AgeGroupPricing list) (model: Model) =\r\n { model with\r\n Items = model.Items |> List.map (fun ag ->\r\n let dg = ageGroups |> List.find (fun dg -> dg.AgeTo = ag.AgeTo)\r\n { ag with\r\n ShortTimePrice = ag.ShortTimePrice |> Derived.Update dg.ShortTimePrice\r\n LongTimePrice = ag.LongTimePrice |> Derived.Update dg.LongTimePrice\r\n })\r\n }\r\n\r\n let ageLabel age =\r\n sprintf \"Do %d %s\" age (if age = 1 then \"roku\" else \"lat\")\r\n\r\n let view (model: Model) dispatch =\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ Width \"30%\" ] ] [ str \"Wiek\" ]\r\n th [] [ str \"Cena wynajmu krótkoterm.\"; br []; str \" (od osoby)\" ]\r\n th [] [ str \"Cena wynajmu długoterm.\"; br []; str \" (od osoby)\" ]\r\n th [] []\r\n ]\r\n for p in model.Items do\r\n tr [] [\r\n td [] [ str <| ageLabel p.AgeTo ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| Derived.ToString p.ShortTimePrice ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| Derived.ToString p.LongTimePrice ]\r\n td [] [ Controls.actionButton [] \"fa fa-remove\" dispatch (RemoveAgeGroup p) ]\r\n ]\r\n tr [] [ \r\n td [] [\r\n select [\r\n Class \"form-control\"\r\n OnChange (Event.int dispatch AgeToChanged)\r\n Value model.Editor.AgeTo\r\n ] [\r\n option [ Value 0 ] [ str \"\" ]\r\n for age in model.Editor.AvailableAges do\r\n option [ Value age ] [ str <| ageLabel age ]\r\n ]\r\n ]\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n OnChange (Event.str dispatch (ShortTimePriceChanged))\r\n Derived.ToTag id \"\" model.Editor.ShortTimePrice\r\n MaxLength 8.0\r\n ]\r\n ]\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n OnChange (Event.str dispatch (LongTimePriceChanged))\r\n Derived.ToTag id \"\" model.Editor.LongTimePrice\r\n MaxLength 8.0\r\n ]\r\n ]\r\n td [] [\r\n Controls.actionButton [ Disabled (not model.Editor.IsComplete) ] \"fa fa-plus\" dispatch AddAgeGroup\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n let update (msg: Msg) (model: Model) =\r\n match msg with\r\n | RemoveAgeGroup p ->\r\n { model with Items = model.Items |> List.filter ((<>) p) }, Cmd.none\r\n | AddAgeGroup ->\r\n if model.Editor.IsComplete then\r\n { model with\r\n Items = {\r\n AgeTo = model.Editor.AgeTo\r\n ShortTimePrice = model.Editor.ShortTimePrice |> Derived.ParseDecimal\r\n LongTimePrice = model.Editor.LongTimePrice |> Derived.ParseDecimal\r\n } :: model.Items |> List.sortBy (fun a -> a.AgeTo)\r\n Editor = EditedAgeGroupPricing.Empty\r\n }, Cmd.none\r\n else\r\n model, Cmd.none\r\n | AgeToChanged age ->\r\n { model with\r\n Editor = { model.Editor with AgeTo = age |> Option.defaultValue 0 }\r\n }, Cmd.none\r\n | ShortTimePriceChanged stp ->\r\n { model with\r\n Editor = { model.Editor with ShortTimePrice = Derived.OfString stp }\r\n }, Cmd.none\r\n | LongTimePriceChanged ltp ->\r\n { model with\r\n Editor = { model.Editor with LongTimePrice = Derived.OfString ltp }\r\n }, Cmd.none\r\n\r\n module ArrangementEditor = \r\n\r\n type Msg =\r\n | RemoveArrangement of Arrangement\r\n | AddArrangement\r\n | ArrangementTypeChanged of int option\r\n | ExtraChargeChanged of string\r\n | PayTypeChanged of int option\r\n\r\n type EditedArrangement =\r\n {\r\n Type : ArrangementType option\r\n ExtraCharge : string\r\n PayType : PayType option\r\n AvailableArrangementTypes : ArrangementType list\r\n }\r\n static member Empty = {\r\n Type = None\r\n ExtraCharge = \"\"\r\n PayType = None\r\n AvailableArrangementTypes = []\r\n }\r\n member this.IsComplete = this.Type.IsSome && Validation.isValidDecimal this.ExtraCharge && this.PayType.IsSome\r\n\r\n type Model =\r\n {\r\n Resort : Resort\r\n Items : Arrangement list\r\n Editor : EditedArrangement\r\n }\r\n static member Empty resort =\r\n {\r\n Resort = resort\r\n Items = []\r\n Editor = EditedArrangement.Empty\r\n }\r\n static member FromArrangementList resort arrangements =\r\n {\r\n Resort = resort\r\n Items = arrangements\r\n Editor = EditedArrangement.Empty\r\n }\r\n static member UpdateAvailableArrangementTypes (resort: Resort) (model: Model) =\r\n { model with\r\n Editor =\r\n { model.Editor with\r\n AvailableArrangementTypes =\r\n resort.ArrangementTypes\r\n |> List.except (model.Items |> List.map (fun a -> a.Type))\r\n }\r\n }\r\n\r\n let view (model: Model) dispatch =\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [] [ str \"Rodzaj\" ]\r\n th [ Style [ Width \"20%\" ] ] [ str \"Dopłata (PLN)\" ]\r\n th [] []\r\n th [] []\r\n ]\r\n for a in model.Items do\r\n tr [] [\r\n td [] [ str a.Type.Description ]\r\n td [ Style [TextAlign TextAlignOptions.Right ] ] [ str <| Decimal.format 2 a.ExtraCharge ]\r\n td [] [ str (match a.PayType with PayType.PerDay -> \"dziennie\" | PayType.Once -> \"jednorazowo\" | _ -> failwith \"Unknown PayType\") ]\r\n td [] [ Controls.actionButton [] \"fa fa-remove\" dispatch (RemoveArrangement a)]\r\n ]\r\n tr [] [\r\n td [] [\r\n select [ Class \"form-control\"; OnChange (Event.int dispatch ArrangementTypeChanged) ] [\r\n option [ Value 0 ] []\r\n for at in model.Editor.AvailableArrangementTypes do\r\n option [ Value at.Id; Selected (Some at = model.Editor.Type) ] [ str at.Description ]\r\n ]\r\n ]\r\n td [] [\r\n input [\r\n Class \"form-control\";\r\n OnChange (Event.str dispatch ExtraChargeChanged);\r\n Value model.Editor.ExtraCharge\r\n MaxLength 8.0\r\n ]\r\n ]\r\n td [] [\r\n select [ Class \"form-control\"; OnChange (Event.int dispatch PayTypeChanged) ] [\r\n option [ Value 0 ] []\r\n option [ Value PayType.PerDay; Selected (model.Editor.PayType = Some PayType.PerDay) ] [ str \"dziennie\" ]\r\n option [ Value PayType.Once; Selected (model.Editor.PayType = Some PayType.Once) ] [ str \"jednorazowo\" ]\r\n ]\r\n ]\r\n td [] [\r\n Controls.actionButton [ Disabled (not model.Editor.IsComplete) ] \"fa fa-plus\" dispatch AddArrangement\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | RemoveArrangement a ->\r\n { model with Items = model.Items |> List.filter ((<>) a) }\r\n |> Model.UpdateAvailableArrangementTypes model.Resort, Cmd.none\r\n | AddArrangement ->\r\n if model.Editor.IsComplete then\r\n { model with\r\n Items = model.Items @ [ {\r\n Type = model.Editor.Type.Value\r\n ExtraCharge = Decimal.Parse model.Editor.ExtraCharge\r\n PayType = model.Editor.PayType.Value\r\n } ]\r\n Editor = EditedArrangement.Empty\r\n }\r\n |> Model.UpdateAvailableArrangementTypes model.Resort, Cmd.none\r\n else\r\n model, Cmd.none\r\n | ArrangementTypeChanged idopt ->\r\n { model with\r\n Editor =\r\n { model.Editor with\r\n Type = idopt |> Option.bind (fun id -> model.Resort.ArrangementTypes |> List.tryFind (fun at -> at.Id = id))\r\n }\r\n }, Cmd.none\r\n | PayTypeChanged ptopt ->\r\n { model with\r\n Editor =\r\n { model.Editor with\r\n PayType = ptopt |> Option.map LanguagePrimitives.EnumOfValue \r\n }\r\n }, Cmd.none\r\n | ExtraChargeChanged ec ->\r\n { model with Editor = { model.Editor with ExtraCharge = ec } }, Cmd.none\r\n\r\n\r\n module UnavailabilityEditor = \r\n\r\n type Msg =\r\n | RemoveUnavailability of Unavailability\r\n | AddUnavailability\r\n | UnavailabilityPeriodChanged of DateTime * DateTime\r\n | UnavailabilityNotesChanged of string\r\n\r\n type EditedUnavailability =\r\n {\r\n From : DateTime\r\n To : DateTime\r\n Notes : string\r\n }\r\n static member Empty = { From = DateTime.Today; To = DateTime.Today; Notes = \"\" }\r\n\r\n type Model =\r\n {\r\n Items : Unavailability list\r\n Editor : EditedUnavailability\r\n }\r\n static member Empty =\r\n {\r\n Items = []\r\n Editor = EditedUnavailability.Empty\r\n }\r\n static member FromUnavailabilityList unavailabilities =\r\n {\r\n Items = unavailabilities\r\n Editor = EditedUnavailability.Empty\r\n }\r\n\r\n let view (model: Model) dispatch =\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [] [ str \"Od\" ]\r\n th [] [ str \"Do\" ]\r\n th [] [ str \"Opis\" ]\r\n th [] []\r\n ]\r\n for u in model.Items do\r\n tr [] [\r\n td [] [ str <| u.From.ToString(\"dd.MM.yyyy\") ]\r\n td [] [ str <| u.To.ToString(\"dd.MM.yyyy\") ]\r\n td [] [ str (u.Notes |> Option.defaultValue \"\") ]\r\n td [] [ Controls.actionButton [] \"fa fa-remove\" dispatch (RemoveUnavailability u) ]\r\n ]\r\n tr [] [\r\n td [ ColSpan 2 ] [\r\n Controls.dateRangePickerInput \"addUnavailability\" (model.Editor.From, model.Editor.To) dispatch UnavailabilityPeriodChanged\r\n ]\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n OnChange (Event.str dispatch UnavailabilityNotesChanged)\r\n Value (model.Editor.Notes)\r\n MaxLength 120.0\r\n ]\r\n ]\r\n td [] [ Controls.actionButton [] \"fa fa-plus\" dispatch AddUnavailability ]\r\n ]\r\n ]\r\n ]\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | RemoveUnavailability u ->\r\n { model with Items = model.Items |> List.filter ((<>) u) }, Cmd.none\r\n | AddUnavailability ->\r\n { model with\r\n Items = {\r\n Unavailability.From = model.Editor.From\r\n To = model.Editor.To\r\n Notes = match model.Editor.Notes with\r\n | \"\" -> None\r\n | s -> Some s\r\n } :: model.Items |> List.sort\r\n Editor = EditedUnavailability.Empty\r\n }, Cmd.none\r\n | UnavailabilityPeriodChanged (f, t) ->\r\n { model with Editor = { model.Editor with From = f; To = t } }, Cmd.none\r\n | UnavailabilityNotesChanged notes ->\r\n { model with Editor = { model.Editor with Notes = notes } }, Cmd.none\r\n\r\n\r\n module ArrangementVariantEditor = \r\n\r\n type Msg =\r\n | RemoveArrangementVariant of ArrangementVariant\r\n | AddArrangementVariant\r\n | AvailableUnitsChanged of ArrangementType * string\r\n\r\n type EditedArrangementVariant =\r\n {\r\n No : int\r\n Availabilities : (ArrangementType * string) list\r\n }\r\n static member Empty =\r\n {\r\n No = 0\r\n Availabilities = []\r\n }\r\n static member Update (tp, units) (variant: EditedArrangementVariant) =\r\n { variant with\r\n Availabilities = (tp, units) :: (variant.Availabilities |> List.filter (fst >> (<>) tp))\r\n }\r\n\r\n type Model =\r\n { \r\n Items : ArrangementVariant list\r\n Editor : EditedArrangementVariant\r\n AvailableTypes : ArrangementType list\r\n }\r\n static member Empty =\r\n {\r\n Items = []\r\n Editor = EditedArrangementVariant.Empty\r\n AvailableTypes = []\r\n }\r\n static member FromArrangementVariantList variants =\r\n {\r\n Items = variants\r\n Editor = EditedArrangementVariant.Empty\r\n AvailableTypes = []\r\n }\r\n static member NextArrangementVariantNo (model: Model) =\r\n match model.Items with\r\n | [] -> 1\r\n | l -> (l |> List.map (fun v -> v.No) |> List.max) + 1\r\n static member UpdateAvailableTypes types model =\r\n { model with AvailableTypes = types }\r\n \r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | RemoveArrangementVariant av ->\r\n { model with\r\n Items = model.Items |> List.filter ((<>) av)\r\n }, Cmd.none\r\n | AddArrangementVariant ->\r\n { model with\r\n Items = model.Items @ [ {\r\n No = model |> Model.NextArrangementVariantNo\r\n Availabilities =\r\n model.Editor.Availabilities\r\n |> List.filter (snd >> String.IsNullOrEmpty >> not)\r\n |> List.map (fun (t, u) -> { Type = t; AvailableUnits = Int32.Parse u })\r\n }]\r\n Editor = EditedArrangementVariant.Empty\r\n }, Cmd.none\r\n | AvailableUnitsChanged (t, u) ->\r\n { model with\r\n Editor = model.Editor |> EditedArrangementVariant.Update (t, u)\r\n }, Cmd.none\r\n\r\n let view (model: Model) dispatch =\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [] [ str \"Nr\" ]\r\n for at in model.AvailableTypes do\r\n th [] [ str at.Description ]\r\n th [] []\r\n ]\r\n for v in model.Items do\r\n tr [] [\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| string v.No ]\r\n for at in model.AvailableTypes do\r\n match v.Availabilities |> List.tryFind (fun aa -> aa.Type = at) with\r\n | Some aa -> td [ Style [TextAlign TextAlignOptions.Right ] ] [ str <| string aa.AvailableUnits ]\r\n | None -> td [ Style [TextAlign TextAlignOptions.Center ] ] [ str \"---\" ]\r\n td [] [ Controls.actionButton [] \"fa fa-remove\" dispatch (RemoveArrangementVariant v) ]\r\n ]\r\n tr [] [\r\n td [ Style [TextAlign TextAlignOptions.Right ] ] [ str <| string (model |> Model.NextArrangementVariantNo) ]\r\n for at in model.AvailableTypes do\r\n td [] [\r\n input [\r\n Class \"form-control\";\r\n OnChange (Event.str dispatch (fun units -> AvailableUnitsChanged (at, units)));\r\n Value (model.Editor.Availabilities |> List.tryFind (fst >> (=) at) |> Option.map snd |> Option.defaultValue \"\")\r\n MaxLength 3.0\r\n ]\r\n ]\r\n td [] [ Controls.actionButton [] \"fa fa-plus\" dispatch AddArrangementVariant ]\r\n ]\r\n ]\r\n ]\r\n\r\n module PriceListEditor = \r\n\r\n type Msg =\r\n | ShortTimePriceChanged of string\r\n | LongTimePriceChanged of string\r\n | ShortEmptySpacePriceChanged of string\r\n | LongEmptySpacePriceChanged of string\r\n | AgeGroupMsg of AgeGroupEditor.Msg\r\n\r\n type Model =\r\n {\r\n TemplateId : int\r\n Name : string\r\n ShortTimePrice : Derived\r\n ShortTimePriceErrors : string list\r\n LongTimePrice : Derived\r\n LongTimePriceErrors : string list\r\n ShortEmptySpacePrice : Derived\r\n ShortEmptySpacePriceErrors : string list\r\n LongEmptySpacePrice : Derived\r\n LongEmptySpacePriceErrors : string list\r\n AgeGroups : AgeGroupEditor.Model\r\n AgeGroupErrors : string list\r\n }\r\n\r\n static member Empty =\r\n {\r\n TemplateId = 0\r\n Name = \"\"\r\n ShortTimePrice = Calculated \"\"\r\n ShortTimePriceErrors = []\r\n LongTimePrice = Calculated \"\"\r\n LongTimePriceErrors = []\r\n ShortEmptySpacePrice = Calculated \"\"\r\n ShortEmptySpacePriceErrors = []\r\n LongEmptySpacePrice = Calculated \"\"\r\n LongEmptySpacePriceErrors = []\r\n AgeGroups = AgeGroupEditor.Model.Empty\r\n AgeGroupErrors = []\r\n }\r\n\r\n static member FromRoom (room: Room) =\r\n {\r\n TemplateId = 0\r\n Name = \"Cennik podstawowy\"\r\n ShortTimePrice = room.ShortTimePrice |> Derived.Format \r\n ShortTimePriceErrors = []\r\n LongTimePrice = room.LongTimePrice |> Derived.Format \r\n LongTimePriceErrors = []\r\n ShortEmptySpacePrice = room.ShortEmptySpacePrice |> Derived.Format\r\n ShortEmptySpacePriceErrors = []\r\n LongEmptySpacePrice = room.LongEmptySpacePrice |> Derived.Format\r\n LongEmptySpacePriceErrors = []\r\n AgeGroups = AgeGroupEditor.Model.FromAgeGroupPricingList room.AgeGroupPricings\r\n AgeGroupErrors = []\r\n }\r\n\r\n static member FromPriceList (priceList: PriceList, name: string) =\r\n {\r\n TemplateId = priceList.TemplateId\r\n Name = name\r\n ShortTimePrice = priceList.ShortTimePrice |> Derived.Format\r\n ShortTimePriceErrors = []\r\n LongTimePrice = priceList.LongTimePrice |> Derived.Format\r\n LongTimePriceErrors = []\r\n ShortEmptySpacePrice = priceList.ShortEmptySpacePrice |> Derived.Format\r\n ShortEmptySpacePriceErrors = []\r\n LongEmptySpacePrice = priceList.LongEmptySpacePrice |> Derived.Format\r\n LongEmptySpacePriceErrors = []\r\n AgeGroups = AgeGroupEditor.Model.FromAgeGroupPricingList priceList.AgeGroupPricings\r\n AgeGroupErrors = []\r\n }\r\n\r\n static member ToRoom (model: Model) (room: Room) =\r\n {\r\n room with\r\n ShortTimePrice = model.ShortTimePrice |> Derived.ParseDecimal |> Derived.DefaultValue 0M\r\n LongTimePrice = model.LongTimePrice |> Derived.ParseDecimal |> Derived.DefaultValue 0M\r\n ShortEmptySpacePrice = model.ShortEmptySpacePrice |> Derived.ParseDecimal\r\n LongEmptySpacePrice = model.LongEmptySpacePrice |> Derived.ParseDecimal\r\n AgeGroupPricings = model.AgeGroups.Items\r\n }\r\n\r\n static member ToRoomCalculationData (model: Model) (calcData: RoomCalculationData) =\r\n {\r\n calcData with\r\n ShortTimePrice = model.ShortTimePrice |> Derived.ParseDecimal \r\n LongTimePrice = model.LongTimePrice |> Derived.ParseDecimal\r\n ShortEmptySpacePrice = model.ShortEmptySpacePrice |> Derived.ParseDecimal\r\n LongEmptySpacePrice = model.LongEmptySpacePrice |> Derived.ParseDecimal\r\n AgeGroupPricings = model.AgeGroups.Items\r\n }\r\n\r\n static member ToPriceList (model: Model) =\r\n {\r\n PriceList.TemplateId = model.TemplateId\r\n ShortTimePrice = model.ShortTimePrice |> Derived.ParseDecimal\r\n LongTimePrice = model.LongTimePrice |> Derived.ParseDecimal\r\n ShortEmptySpacePrice = model.ShortEmptySpacePrice |> Derived.ParseDecimal\r\n LongEmptySpacePrice = model.LongEmptySpacePrice |> Derived.ParseDecimal\r\n AgeGroupPricings = model.AgeGroups.Items\r\n }\r\n\r\n static member FromRoomCalculationData (room: RoomCalculationData) (model: Model) =\r\n { model with\r\n ShortEmptySpacePrice = model.ShortEmptySpacePrice |> Derived.Update (room.ShortEmptySpacePrice |> Derived.Format)\r\n LongEmptySpacePrice = model.LongEmptySpacePrice |> Derived.Update (room.LongEmptySpacePrice |> Derived.Format)\r\n AgeGroups = model.AgeGroups |> AgeGroupEditor.Model.UpdateDerived room.AgeGroupPricings\r\n }\r\n\r\n static member UpdateDerived (pl: PriceList) (model: Model) =\r\n { model with\r\n ShortTimePrice = model.ShortTimePrice |> Derived.Update (pl.ShortTimePrice |> Derived.Format)\r\n LongTimePrice = model.LongTimePrice |> Derived.Update (pl.LongTimePrice |> Derived.Format)\r\n ShortEmptySpacePrice = model.ShortEmptySpacePrice |> Derived.Update (pl.ShortEmptySpacePrice |> Derived.Format)\r\n LongEmptySpacePrice = model.LongEmptySpacePrice |> Derived.Update (pl.LongEmptySpacePrice |> Derived.Format)\r\n AgeGroups = model.AgeGroups |> AgeGroupEditor.Model.UpdateDerived pl.AgeGroupPricings\r\n }\r\n\r\n static member WithErrors (errors: (string * string) list) (model: Model) =\r\n let getErrorsOf name =\r\n let postfix = if model.TemplateId = 0 then \"\" else model.TemplateId.ToString()\r\n errors |> Validation.getErrorsOf (name + postfix)\r\n { model with\r\n ShortTimePriceErrors = getErrorsOf \"ShortTimePrice\"\r\n LongTimePriceErrors = getErrorsOf \"LongTimePrice\"\r\n LongEmptySpacePriceErrors = getErrorsOf \"EmptySpacePrice\"\r\n AgeGroupErrors = getErrorsOf \"AgeGroupPricings\"\r\n }\r\n\r\n member this.HasErrors =\r\n not (this.ShortTimePriceErrors.IsEmpty &&\r\n this.LongTimePriceErrors.IsEmpty &&\r\n this.LongEmptySpacePriceErrors.IsEmpty &&\r\n this.AgeGroupErrors.IsEmpty)\r\n\r\n static member UpdateAvailableAges resort (model: Model) =\r\n { model with AgeGroups = model.AgeGroups |> AgeGroupEditor.Model.UpdateAvailableAges resort }\r\n \r\n let view model dispatch =\r\n div [\r\n Class <| sprintf \"tab-pane %s\" (if model.TemplateId = 0 then \"active\" else \"\")\r\n Id <| sprintf \"priceList%d\" model.TemplateId\r\n ] [\r\n\r\n Forms.formGroup (not model.ShortTimePriceErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-2\" (sprintf \"shortTimePrice%d\" model.TemplateId) \"Cena wynajmu krótkoterm. (od osoby)\" 8.0\r\n (Derived.ToTag id \"\" model.ShortTimePrice)\r\n (Forms.errorsRight \"col-sm-4\" model.ShortTimePriceErrors)\r\n (Event.str dispatch ShortTimePriceChanged)\r\n\r\n Forms.formGroup (not model.LongTimePriceErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-2\" (sprintf \"longTimePrice%d\" model.TemplateId) \"Cena wynajmu długoterm. (od osoby)\" 8.0\r\n (Derived.ToTag id \"\" model.LongTimePrice)\r\n (Forms.errorsRight \"col-sm-4\" model.LongTimePriceErrors)\r\n (Event.str dispatch LongTimePriceChanged)\r\n\r\n Forms.formGroup (not model.ShortEmptySpacePriceErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-2\" (sprintf \"shortEmptySpacePrice%d\" model.TemplateId) \"Cena niewykorzystanego miejsca krótkoterm.\" 8.0\r\n (Derived.ToTag id \"\" model.ShortEmptySpacePrice)\r\n (Forms.errorsRight \"col-sm-4\" model.ShortEmptySpacePriceErrors)\r\n (Event.str dispatch ShortEmptySpacePriceChanged)\r\n \r\n Forms.formGroup (not model.LongEmptySpacePriceErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-2\" (sprintf \"longEmptySpacePrice%d\" model.TemplateId) \"Cena niewykorzystanego miejsca długoterm.\" 8.0\r\n (Derived.ToTag id \"\" model.LongEmptySpacePrice)\r\n (Forms.errorsRight \"col-sm-4\" model.LongEmptySpacePriceErrors)\r\n (Event.str dispatch LongEmptySpacePriceChanged)\r\n\r\n Forms.formGroup (not model.AgeGroupErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-5\" (sprintf \"ageGroupPricings%d\" model.TemplateId) \"Grupy wiekowe\"\r\n (Forms.errorsBelow model.AgeGroupErrors)\r\n (AgeGroupEditor.view model.AgeGroups (AgeGroupMsg >> dispatch))\r\n ]\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | ShortTimePriceChanged stp->\r\n { model with ShortTimePrice = stp |> Derived.OfString }, Cmd.none\r\n | LongTimePriceChanged ltp ->\r\n { model with LongTimePrice = ltp |> Derived.OfString }, Cmd.none\r\n | ShortEmptySpacePriceChanged sesp ->\r\n { model with ShortEmptySpacePrice = sesp |> Derived.OfString }, Cmd.none \r\n | LongEmptySpacePriceChanged lesp ->\r\n { model with LongEmptySpacePrice = lesp |> Derived.OfString }, Cmd.none \r\n | AgeGroupMsg msg ->\r\n let agMdl, agCmd = AgeGroupEditor.update msg model.AgeGroups \r\n { model with AgeGroups = agMdl }, Cmd.map AgeGroupMsg agCmd\r\n\r\n\r\n type Msg =\r\n | ResortDetailsLoaded of Resort * RoomType list\r\n | RoomDetailsLoaded of Room * Resort * RoomType list\r\n | RoomTypeChanged of string\r\n | NameChanged of string\r\n | ShortDescriptionChanged of string\r\n | DetailedDescriptionChanged of string\r\n | CapacityChanged of string\r\n | AdditionalCapacityChanged of string\r\n | PrepaymentPercentageChanged of string\r\n | PriceListMsg of int * PriceListEditor.Msg\r\n | VolumeChanged of string \r\n | ArrangementMsg of ArrangementEditor.Msg\r\n | ArrangementVariantMsg of ArrangementVariantEditor.Msg\r\n | UnavailabilityMsg of UnavailabilityEditor.Msg\r\n | ValidateReservations\r\n | ReservationsValidated of (ReservationRef * string list) list\r\n | Save\r\n | Close\r\n | ShowError of string * ErrorInfo\r\n \r\n type Model =\r\n {\r\n Id : int\r\n Resort : Resort\r\n Name : string\r\n NameErrors : string list\r\n ShortDescription : string\r\n ShortDescriptionErrors : string list\r\n DetailedDescription : string\r\n DetailedDescriptionErrors : string list\r\n Capacity : string\r\n CapacityErrors : string list\r\n AdditionalCapacity : string\r\n AdditionalCapacityErrors : string list\r\n PrepaymentPercentage : Derived\r\n PrepaymentPercentageErrors : string list\r\n Volume : string\r\n VolumeErrors : string list\r\n Arrangements : ArrangementEditor.Model\r\n ArrangementErrors : string list\r\n ArrangementVariants : ArrangementVariantEditor.Model\r\n ArrangementVariantErrors : string list\r\n Unavailabilities : UnavailabilityEditor.Model\r\n UnavailabilityErrors : string list\r\n PriceLists : PriceListEditor.Model list\r\n ReferenceLink : string\r\n ReservationValidation : (ReservationRef * string list) list\r\n Occupancies : Occupancy list\r\n RoomType : RoomType\r\n RoomTypes : RoomType list\r\n }\r\n\r\n static member Empty =\r\n {\r\n Id = 0\r\n Resort = Resort.Empty\r\n Name = \"\"\r\n NameErrors = []\r\n ShortDescription = \"\"\r\n \r\n ShortDescriptionErrors = []\r\n DetailedDescription = \"\"\r\n DetailedDescriptionErrors = []\r\n Capacity = \"\"\r\n CapacityErrors = []\r\n AdditionalCapacity = \"\"\r\n AdditionalCapacityErrors = []\r\n PrepaymentPercentage = Uninitialised\r\n PrepaymentPercentageErrors = []\r\n Volume = \"\"\r\n VolumeErrors = []\r\n Arrangements = ArrangementEditor.Model.Empty Resort.Empty\r\n ArrangementErrors = []\r\n ArrangementVariants = ArrangementVariantEditor.Model.Empty\r\n ArrangementVariantErrors = []\r\n Unavailabilities = UnavailabilityEditor.Model.Empty\r\n UnavailabilityErrors = []\r\n PriceLists = [ PriceListEditor.Model.Empty ]\r\n ReferenceLink = \"\"\r\n ReservationValidation = []\r\n Occupancies = []\r\n RoomType = RoomType.Empty\r\n RoomTypes = []\r\n }\r\n\r\n static member BuildPriceListModels (templates: PriceListTemplate list) (room: Room) =\r\n PriceListEditor.Model.FromRoom room\r\n ::\r\n (room.PriceLists\r\n |> List.map (Model.CreatePriceListModel templates))\r\n\r\n static member FromRoom (resort: Resort) (room: Room) (roomTypes: RoomType list): Model =\r\n {\r\n Id = room.Id\r\n Resort = resort\r\n Name = room.Name\r\n NameErrors = []\r\n ShortDescription = room.ShortDescription \r\n ShortDescriptionErrors = []\r\n DetailedDescription = room.DetailedDescription\r\n DetailedDescriptionErrors = []\r\n Capacity = room.Capacity.ToString()\r\n CapacityErrors = []\r\n AdditionalCapacity = room.AdditionalCapacity.ToString()\r\n AdditionalCapacityErrors = []\r\n PrepaymentPercentage = room.PrepaymentPercentage |> Derived.Map string\r\n PrepaymentPercentageErrors = []\r\n Volume = room.Volume.ToString()\r\n VolumeErrors = []\r\n Arrangements = ArrangementEditor.Model.FromArrangementList resort room.Arrangements\r\n ArrangementErrors = []\r\n ArrangementVariants = ArrangementVariantEditor.Model.FromArrangementVariantList room.ArrangementVariants\r\n ArrangementVariantErrors = []\r\n Unavailabilities = UnavailabilityEditor.Model.FromUnavailabilityList room.Unavailabilities\r\n UnavailabilityErrors = []\r\n PriceLists = Model.BuildPriceListModels resort.PriceListTemplates room\r\n ReferenceLink = if room.Id <> 0 then\r\n sprintf \"https://%s/make-reservation?room=%d\" Browser.Dom.window.location.host room.Id\r\n else\r\n \"\"\r\n ReservationValidation = []\r\n Occupancies = room.Occupancies\r\n RoomType = room.RoomType\r\n RoomTypes = roomTypes\r\n }\r\n |> Model.UpdateAvailableArrangementTypes\r\n |> Model.UpdateAvailableAges\r\n\r\n static member ToRoom (model: Model): Room =\r\n {\r\n Id = model.Id\r\n ResortId = model.Resort.Id\r\n Name = model.Name\r\n ShortDescription = model.ShortDescription\r\n DetailedDescription = model.DetailedDescription\r\n Capacity = Int32.Parse model.Capacity\r\n AdditionalCapacity = Int32.Parse model.AdditionalCapacity\r\n ShortTimePrice = 0M\r\n LongTimePrice = 0M\r\n ShortEmptySpacePrice = Uninitialised\r\n LongEmptySpacePrice = Uninitialised\r\n PrepaymentPercentage = model.PrepaymentPercentage |> Derived.ParseInt\r\n Volume = Int32.Parse model.Volume\r\n AgeGroupPricings = []\r\n Arrangements = model.Arrangements.Items\r\n ArrangementVariants = model.ArrangementVariants.Items\r\n Unavailabilities = model.Unavailabilities.Items\r\n PriceLists = model.PriceLists.Tail |> List.map PriceListEditor.Model.ToPriceList\r\n Occupancies = model.Occupancies\r\n RoomType = model.RoomType\r\n\r\n }\r\n |> PriceListEditor.Model.ToRoom model.PriceLists.Head\r\n\r\n static member ToCalculationData (model: Model): RoomCalculationData =\r\n {\r\n ShortTimePrice = Uninitialised\r\n LongTimePrice = Uninitialised\r\n ShortEmptySpacePrice = Uninitialised\r\n LongEmptySpacePrice = Uninitialised\r\n PrepaymentPercentage = model.PrepaymentPercentage |> Derived.ParseInt\r\n AgeGroupPricings = []\r\n PriceLists = model.PriceLists.Tail |> List.map PriceListEditor.Model.ToPriceList\r\n }\r\n |> PriceListEditor.Model.ToRoomCalculationData model.PriceLists.Head\r\n\r\n static member FromCalculationData (calcData: RoomCalculationData) (model: Model) =\r\n { model with\r\n PrepaymentPercentage =\r\n model.PrepaymentPercentage |> Derived.Update (calcData.PrepaymentPercentage |> Derived.Map string)\r\n PriceLists =\r\n (model.PriceLists\r\n |> List.head\r\n |> PriceListEditor.Model.FromRoomCalculationData calcData)\r\n ::\r\n (model.PriceLists\r\n |> List.tail\r\n |> List.map (fun plm ->\r\n let pl = calcData.PriceLists |> List.find (fun pl -> pl.TemplateId = plm.TemplateId)\r\n PriceListEditor.Model.UpdateDerived pl plm))\r\n }\r\n\r\n static member Validate (model: Model) =\r\n [\r\n yield! Validation.checkIfValidInt \"Max. liczba osób\" model.Capacity |> Validation.forField \"Capacity\"\r\n yield! Validation.checkIfDerivedValidInt \"Zaliczka\" model.PrepaymentPercentage |> Validation.forField \"PrepaymentPercentage\"\r\n yield! Validation.checkIfValidInt \"Liczba lokali\" model.Volume |> Validation.forField \"Volume\"\r\n ]\r\n\r\n static member WithErrors (errors: (string * string) list) (model: Model) =\r\n {\r\n model with\r\n NameErrors = errors |> Validation.getErrorsOf \"Name\"\r\n ShortDescriptionErrors = errors |> Validation.getErrorsOf \"ShortDescription\"\r\n DetailedDescriptionErrors = errors |> Validation.getErrorsOf \"DetailedDescription\"\r\n CapacityErrors = errors |> Validation.getErrorsOf \"Capacity\"\r\n AdditionalCapacityErrors = errors |> Validation.getErrorsOf \"AdditionalCapacity\"\r\n PrepaymentPercentageErrors = errors |> Validation.getErrorsOf \"PrepaymentPercentage\"\r\n VolumeErrors = errors |> Validation.getErrorsOf \"Volume\"\r\n ArrangementErrors = errors |> Validation.getErrorsOf \"Arrangements\"\r\n ArrangementVariantErrors = errors |> Validation.getErrorsOf \"ArrangementVariants\"\r\n UnavailabilityErrors = errors |> Validation.getErrorsOf \"Unavailabilities\"\r\n PriceLists = model.PriceLists |> List.map (PriceListEditor.Model.WithErrors errors)\r\n }\r\n\r\n static member Recalc (model: Model) =\r\n model |> Model.FromCalculationData (model |> Model.ToCalculationData |> calculateRoom model.Resort)\r\n\r\n static member CreatePriceListModel templates pl =\r\n PriceListEditor.Model.FromPriceList(pl, (templates |> List.find (fun pt -> pt.Id = pl.TemplateId)).Name)\r\n\r\n static member AddInitialPriceLists (model: Model) =\r\n { model with\r\n PriceLists =\r\n { PriceListEditor.Model.Empty with\r\n Name = \"Cennik podstawowy\"\r\n AgeGroups = AgeGroupEditor.Model.Empty |> AgeGroupEditor.Model.UpdateAvailableAges model.Resort\r\n } \r\n ::\r\n (createInitialPriceLists model.Resort |> List.map (Model.CreatePriceListModel model.Resort.PriceListTemplates)) \r\n }\r\n\r\n static member UpdateAvailableAges (model: Model) =\r\n { model with \r\n PriceLists = model.PriceLists |> List.map (PriceListEditor.Model.UpdateAvailableAges model.Resort)\r\n }\r\n\r\n static member UpdateAvailableArrangementTypes (model: Model) =\r\n { model with \r\n Arrangements =\r\n model.Arrangements\r\n |> ArrangementEditor.Model.UpdateAvailableArrangementTypes model.Resort\r\n ArrangementVariants =\r\n model.ArrangementVariants\r\n |> ArrangementVariantEditor.Model.UpdateAvailableTypes (model.Arrangements.Items |> List.map (fun a -> a.Type))\r\n }\r\n\r\n let priceListEditorPane(models: PriceListEditor.Model list) dispatch =\r\n div [ Class \"nav-tabs-custom\" ] [\r\n ul [Class \"nav nav-tabs\"] [\r\n for pl in models do\r\n li [ Class (if pl.TemplateId = 0 then \"active\" else \"\") ] [ \r\n a [\r\n Href <| sprintf \"#priceList%d\" pl.TemplateId;\r\n Data(\"toggle\", \"tab\"); AriaExpanded(pl.TemplateId = 0)\r\n ] [\r\n b [ if pl.HasErrors then Style [ Color \"red\" ] ] [\r\n str (pl.Name + \" \")\r\n if pl.HasErrors then i [Class \"fa fa-times-circle-o\" ] []\r\n ] \r\n ] \r\n ]\r\n ]\r\n div [ Class \"tab-content\" ] [\r\n for pl in models do\r\n PriceListEditor.view pl (fun msg -> dispatch (PriceListMsg (pl.TemplateId, msg))) \r\n ]\r\n ]\r\n \r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n \r\n JS.console.error(sprintf \"ROOMTYPES: %A\" (model.RoomTypes |> List.map (fun rt -> rt.Id, rt.SingularNominative, rt = model.RoomType)))\r\n\r\n div [ Class \"box box-info\" ] [\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Dane pokoju\" ]\r\n ]\r\n form [ Class \"form-horizontal\"] [\r\n div [ Class \"box-body\" ] [\r\n\r\n input [ Hidden true; Id \"prevent-subscriptions\" ]\r\n\r\n Forms.formGroup false\r\n <| Forms.selectWithLabel \"col-sm-3\" \"col-sm-9\" \"roomType\" \"Typ\"\r\n (model.RoomTypes |> List.map (fun rt -> rt.Id, rt.SingularNominative)) \r\n model.RoomType.Id\r\n (Forms.errorsBelow [])\r\n (Event.str dispatch RoomTypeChanged)\r\n\r\n Forms.formGroup (not model.NameErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-9\" \"name\" \"Nazwa\" 150.0 \r\n (Value model.Name)\r\n (Forms.errorsBelow model.NameErrors)\r\n (Event.str dispatch NameChanged)\r\n\r\n Forms.formGroup (not model.ShortDescriptionErrors.IsEmpty)\r\n <| Forms.textareaWithLabel \"col-sm-3\" \"col-sm-9\" 3 \"shortDescription\" \"Opis skrócony\" 512.0\r\n model.ShortDescription\r\n (Forms.errorsBelow model.ShortDescriptionErrors)\r\n (Event.str dispatch ShortDescriptionChanged)\r\n\r\n Forms.formGroup (not model.DetailedDescriptionErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-9\" \"detailedDescription\" \"Opis szczegółowy\"\r\n (Forms.errorsBelow model.DetailedDescriptionErrors)\r\n (Controls.htmlEditor \"detailedDescription\" 10 model.DetailedDescription (DetailedDescriptionChanged >> dispatch))\r\n\r\n Forms.formGroup (not model.CapacityErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"capacity\" \"Max. liczba osób\" 3.0\r\n (Value model.Capacity)\r\n (Forms.errorsRight \"col-sm-4\" model.CapacityErrors)\r\n (Event.str dispatch CapacityChanged)\r\n\r\n Forms.formGroup (not model.AdditionalCapacityErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"additionalCapacity\" \"Dodatkowe miejsce\" 3.0\r\n (Value model.AdditionalCapacity)\r\n (Forms.errorsRight \"col-sm-4\" model.AdditionalCapacityErrors)\r\n (Event.str dispatch AdditionalCapacityChanged)\r\n\r\n Forms.formGroup (not model.PrepaymentPercentageErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"prepaymentPercentage\" \"Procent zaliczki\" 3.0\r\n (Derived.ToTag id \"\" model.PrepaymentPercentage)\r\n (Forms.errorsRight \"col-sm-4\" model.PrepaymentPercentageErrors)\r\n (Event.str dispatch PrepaymentPercentageChanged)\r\n\r\n Forms.formGroup (not model.VolumeErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"volume\" \"Liczba lokali\" 3.0\r\n (Value model.Volume)\r\n (Forms.errorsRight \"col-sm-4\" model.VolumeErrors)\r\n (Event.str dispatch VolumeChanged)\r\n\r\n br []\r\n priceListEditorPane model.PriceLists dispatch\r\n\r\n Forms.formGroup (not model.ArrangementErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-6\" \"arrangements\" \"Dodatkowe wyposażenie\"\r\n (Forms.errorsBelow model.ArrangementErrors)\r\n (ArrangementEditor.view model.Arrangements (ArrangementMsg >> dispatch))\r\n\r\n Forms.formGroup (not model.ArrangementErrors.IsEmpty)\r\n <| Forms.controlWithLabel\r\n \"col-sm-3\"\r\n (sprintf \"col-sm-%d\" (Math.Min(model.Arrangements.Items.Length + 3, 9)))\r\n \"arrangementVariants\"\r\n \"Warianty dodatkowego wyposażenia\"\r\n (Forms.errorsBelow model.ArrangementVariantErrors)\r\n (ArrangementVariantEditor.view model.ArrangementVariants (ArrangementVariantMsg >> dispatch))\r\n\r\n Forms.formGroup (not model.UnavailabilityErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-5\" \"unavailabilities\" \"Zamknięty w dniach\"\r\n (Forms.errorsBelow model.UnavailabilityErrors)\r\n (UnavailabilityEditor.view model.Unavailabilities (UnavailabilityMsg >> dispatch))\r\n\r\n Forms.formGroup (not model.Resort.HasPaymentMethod)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-5\" \"referenceLink\" \"Link do rezerwacji\"\r\n (Forms.errorsBelow\r\n [ if not model.Resort.HasPaymentMethod then\r\n \"Nie wprowadzono danych do przelewu bankowego\"\r\n ])\r\n (if model.Resort.HasPaymentMethod then\r\n a [ Class \"form-control\"; Style [ Border \"none\" ]; Id \"referenceLink\"; Href model.ReferenceLink; Target \"_blank\" ] [ str model.ReferenceLink ]\r\n else\r\n label [ Class \"control-label\" ] [ str \"Link do rezerwacji jest niedostępny\" ])\r\n ]\r\n ]\r\n div [ Class \"box-footer\" ] [\r\n div [ Class \"pull-right\"] [ \r\n Controls.simpleButton [] \"btn-primary\" \" Zapisz\" \"fa fa-save\" dispatch ValidateReservations\r\n str \" \"\r\n Controls.simpleButton [] \"btn-default\" \" Anuluj\" \"fa fa-times\" dispatch Close\r\n ]\r\n ]\r\n\r\n Modals.confirm\r\n \"reservationValidationInfo\"\r\n \"Ostrzeżenie\"\r\n (p [] [\r\n str \"Po wprowadzeniu zmian następujące rezerwacje staną się błędne:\"\r\n table [ Class \"table\"] [\r\n tbody [] [\r\n for res, errors in model.ReservationValidation do\r\n tr [] [\r\n td [] [ str (res.FirstName + \" \" + res.LastName) ]\r\n td [] [ str (res.From.ToString(\"dd.MM.yyyy\")) ]\r\n td [] [ str (res.To.ToString(\"dd.MM.yyyy\")) ]\r\n td [] [\r\n for err in errors do\r\n str err\r\n br []\r\n\r\n ]\r\n ]\r\n ]\r\n ]\r\n str \"i nie będzie można ich modyfikować bez zmiany warunków tak, aby nie pojawiały się błędy.\"\r\n br []\r\n str \"Czy na pewno chcesz zapisać zmiany?\"\r\n ])\r\n dispatch Save\r\n ]\r\n\r\n\r\n let getResortCmd resortId =\r\n Cmd.OfAsync.either id (roomApi.GetResort resortId) ResortDetailsLoaded (ErrorHandling.unpack ShowError \"Nie udało się wczytać danych ośrodka\")\r\n \r\n let getRoomCmd roomId = \r\n Cmd.OfAsync.either id (roomApi.GetRoom roomId) RoomDetailsLoaded (ErrorHandling.unpack ShowError \"Nie udało się wczytać danych pokoju\")\r\n\r\n let validateReservationsCmd room =\r\n Cmd.OfAsync.either id (roomApi.ValidateReservations room) ReservationsValidated (ErrorHandling.unpack ShowError \"Nie udało się sprawdzić wpływu zmian na istniejące rezerwacje\")\r\n\r\n let saveRoomCmd room =\r\n Cmd.OfAsync.either id (roomApi.SaveRoom room) (fun _ -> Close) (ErrorHandling.unpack ShowError \"Nie udało się zapisać zmian\")\r\n\r\n let replaceItem getKey ritem items =\r\n [ for item in items do\r\n if getKey item = getKey ritem then\r\n yield ritem\r\n else\r\n yield item\r\n ]\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | ResortDetailsLoaded (resort, roomTypes) ->\r\n { model with Resort = resort; RoomTypes = roomTypes } |> Model.AddInitialPriceLists, Cmd.none\r\n | RoomDetailsLoaded (room, resort, roomTypes) ->\r\n Model.FromRoom resort (recalcRoom resort room) roomTypes, Cmd.none\r\n | RoomTypeChanged roomTypeId ->\r\n { model with\r\n RoomType =\r\n model.RoomTypes |> List.tryFind (fun rt -> rt.Id = roomTypeId)\r\n |> Option.defaultValue model.RoomType\r\n }, Cmd.none\r\n | NameChanged name ->\r\n { model with Name = name }, Cmd.none\r\n | ShortDescriptionChanged desc ->\r\n { model with ShortDescription = desc }, Cmd.none\r\n | DetailedDescriptionChanged desc ->\r\n { model with DetailedDescription = desc }, Cmd.none\r\n | CapacityChanged cap ->\r\n { model with Capacity = cap }, Cmd.none\r\n | AdditionalCapacityChanged cap ->\r\n { model with AdditionalCapacity = cap }, Cmd.none \r\n | PriceListMsg (tmplId, msg) ->\r\n let pl = model.PriceLists |> List.find (fun pl -> pl.TemplateId = tmplId)\r\n let plMdl, plCmd = PriceListEditor.update msg pl \r\n { model with PriceLists = model.PriceLists |> replaceItem (fun pl -> pl.TemplateId) plMdl }\r\n |> Model.Recalc \r\n |> Model.UpdateAvailableAges, Cmd.map (fun msg -> PriceListMsg(tmplId, msg)) plCmd\r\n | PrepaymentPercentageChanged pp ->\r\n { model with PrepaymentPercentage = Derived.OfString pp } |> Model.Recalc, Cmd.none\r\n | VolumeChanged vol ->\r\n { model with Volume = vol }, Cmd.none \r\n | ArrangementMsg msg ->\r\n let arMdl, arCmd = ArrangementEditor.update msg model.Arrangements\r\n { model with Arrangements = arMdl } |> Model.UpdateAvailableArrangementTypes, Cmd.map ArrangementMsg arCmd\r\n | ArrangementVariantMsg msg ->\r\n let avMdl, avCmd = ArrangementVariantEditor.update msg model.ArrangementVariants\r\n { model with ArrangementVariants = avMdl }, Cmd.map ArrangementVariantMsg avCmd\r\n | UnavailabilityMsg msg ->\r\n let unMdl, unCmd = UnavailabilityEditor.update msg model.Unavailabilities\r\n { model with Unavailabilities = unMdl }, Cmd.map UnavailabilityMsg unCmd\r\n | ValidateReservations ->\r\n let errors = model |> Validation.combine Model.Validate (Model.ToRoom >> validateRoom) \r\n if errors.Length > 0 then\r\n model |> Model.WithErrors errors, Cmd.none\r\n else\r\n model, validateReservationsCmd (model |> Model.ToRoom)\r\n | ReservationsValidated result ->\r\n if not result.IsEmpty then\r\n Modals.show \"reservationValidationInfo\"\r\n { model with ReservationValidation = result }, Cmd.none\r\n else\r\n model, Cmd.ofMsg Save\r\n | Save ->\r\n let errors = model |> Validation.combine Model.Validate (Model.ToRoom >> validateRoom) \r\n if errors.Length > 0 then\r\n model |> Model.WithErrors errors, Cmd.none\r\n else\r\n model, saveRoomCmd (model |> Model.ToRoom)\r\n | _ ->\r\n model, Cmd.none\r\n\r\nmodule RoomGallery =\r\n \r\n type Model =\r\n {\r\n RoomId : int\r\n Pictures : string list\r\n UploadsTotal : int\r\n UploadsCompleted : int\r\n Resort : ResortRef\r\n } \r\n member this.Percentage = int(100.0 * float(this.UploadsCompleted)/float(this.UploadsTotal))\r\n\r\n type Msg =\r\n | PicturesLoaded of string list\r\n | UploadFiles of Browser.Types.FileList\r\n | UploadCompleted of string * string\r\n | PictureAdded of string\r\n | MovePictureLeft of string\r\n | MovePictureRight of string\r\n | RemovePicture of string\r\n | UpdateCompleted\r\n | Close\r\n | ShowError of string * ErrorInfo\r\n\r\n let galleryApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\n let loadGalleryCmd roomId =\r\n Cmd.OfAsync.either id (galleryApi.Load roomId) PicturesLoaded (ErrorHandling.unpack ShowError \"Nie udało się pobrać zdjęć\")\r\n\r\n let addPictureCmd (roomId, name, base64) =\r\n Cmd.OfAsync.either id (galleryApi.Add (roomId, name, base64)) PictureAdded (ErrorHandling.unpack ShowError \"Nie udało się dodać zdjęcia\")\r\n\r\n let movePictureCmd (roomId, source, target) =\r\n Cmd.OfAsync.either id (galleryApi.Move (roomId, source, target)) (fun _ -> UpdateCompleted) (ErrorHandling.unpack ShowError \"Nie udało się zmienić kolejności zdjęć\")\r\n\r\n let removePictureCmd (roomId, pic) =\r\n Cmd.OfAsync.either id (galleryApi.Remove (roomId, pic)) (fun _ -> UpdateCompleted) (ErrorHandling.unpack ShowError \"Nie udało się usunąć zdjęcia\")\r\n\r\n let uploadFileCmd (file: Browser.Types.File) =\r\n let reader = Browser.Dom.FileReader.Create()\r\n Cmd.ofSub (fun dispatch ->\r\n reader.onload <- (fun _ -> dispatch <| UploadCompleted (file.name, unbox reader.result))\r\n reader.readAsBinaryString file)\r\n\r\n let init(roomId: int, resort: ResortRef): Model * Cmd =\r\n { RoomId = roomId; Pictures = []; UploadsTotal = 0; UploadsCompleted = 0; Resort = resort },\r\n loadGalleryCmd roomId\r\n\r\n let view (model: Model) dispatch =\r\n div [ Class \"box\" ] [\r\n div [ Class \"box-header\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Zdjęcia\" ]\r\n div [Class \"box-tools\" ] [ \r\n Controls.fileUpload (UploadFiles >> dispatch)\r\n str \" \"\r\n Controls.simpleButton [] \"\" \" Zamknij\" \"fa fa-times\" dispatch Close\r\n if model.UploadsTotal > 0 then\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n td [Style [ Width \"40px\" ] ] [ str \"Pobieranie\" ]\r\n td [ Style [ Width \"100px\" ] ] [ Controls.progressBar \"blue\" model.Percentage ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n div [ Class \"box-body no-padding\"] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n for row in model.Pictures |> List.chunkBySize 3 do\r\n tr [] [\r\n for pic in row do\r\n td [] [\r\n div [ Style [Width \"312px\"; Border \"solid 1px silver\"; Padding \"5px 5px 5px 5px\" ] ] [\r\n img [ Style [ Width \"300px\" ]; Src (sprintf \"/gallery/room-%d/%s\" model.RoomId pic) ]\r\n div [ Style [ Width \"300px\"; TextAlign TextAlignOptions.Right ] ] [\r\n Controls.actionButton [ Title \"Przesuń w lewo\" ] \"fa fa-arrow-circle-left\" dispatch (MovePictureLeft pic)\r\n str \" \"\r\n Controls.actionButton [ Title \"Przesuń w prawo\" ] \"fa fa-arrow-circle-right\" dispatch (MovePictureRight pic)\r\n str \" \"\r\n Controls.actionButton [ Title \"Usuń\" ] \"fa fa-remove\" dispatch (RemovePicture pic)\r\n ] \r\n ] \r\n ]\r\n ] \r\n ]\r\n ]\r\n ]\r\n ] \r\n\r\n let update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | PicturesLoaded pictures ->\r\n { model with Pictures = pictures }, Cmd.none\r\n | UploadFiles fileList ->\r\n { model with UploadsTotal = model.UploadsTotal + fileList.length },\r\n Cmd.batch [\r\n for i in 0.. fileList.length - 1 do\r\n uploadFileCmd fileList.[i]\r\n ]\r\n | UploadCompleted (name, bytes) ->\r\n let base64 = Browser.Dom.window.btoa bytes\r\n { model with UploadsCompleted = model.UploadsCompleted + 1 },\r\n addPictureCmd (model.RoomId, name, base64)\r\n | PictureAdded name ->\r\n let total, completed =\r\n if model.UploadsTotal = model.UploadsCompleted then\r\n 0, 0\r\n else\r\n model.UploadsTotal, model.UploadsCompleted\r\n { model with\r\n Pictures = model.Pictures @ [ name ]\r\n UploadsTotal = total\r\n UploadsCompleted = completed\r\n }, Cmd.none\r\n | MovePictureLeft pic ->\r\n let prev = (model.Pictures |> List.findIndex ((=) pic)) - 1\r\n model, if prev >= 0 then movePictureCmd (model.RoomId, pic, model.Pictures |> List.item prev) else Cmd.none\r\n | MovePictureRight pic ->\r\n let prev = (model.Pictures |> List.findIndex ((=) pic)) + 1\r\n model, if prev < model.Pictures.Length then movePictureCmd (model.RoomId, pic, model.Pictures |> List.item prev) else Cmd.none\r\n | RemovePicture pic ->\r\n model, removePictureCmd (model.RoomId, pic)\r\n | UpdateCompleted ->\r\n model, loadGalleryCmd model.RoomId\r\n | ShowError _ \r\n | Close -> failwith \"Should be handled upper level\"\r\n\r\n\r\nmodule RoomList =\r\n\r\n type Msg =\r\n | RoomsLoaded of ResortRef * RoomSummary list\r\n | New\r\n | Edit of int\r\n | Gallery of int\r\n | Remove of int\r\n | RemovalPossibilityChecked of int * bool\r\n | RemoveConfirmed of int\r\n | ShowError of string * ErrorInfo\r\n | Close\r\n\r\n type RoomSummaryModel =\r\n {\r\n Id : int\r\n Name : string\r\n Utilisation : int\r\n UtilisationColor : string\r\n Status : string\r\n StatusColor : string\r\n }\r\n static member FromSummary (rs: RoomSummary) =\r\n let utilisation = int(Math.Round(float(rs.PendingReservations)/float(rs.Volume) * 100.0))\r\n {\r\n Id = rs.Id\r\n Name = rs.Name\r\n Utilisation = utilisation\r\n UtilisationColor =\r\n if utilisation < 25 then \"red\"\r\n elif utilisation < 50 then \"yellow\"\r\n elif utilisation < 75 then \"blue\"\r\n else \"green\"\r\n Status =\r\n match rs.Status with\r\n | RoomStatus.Open -> \"Czynny\"\r\n | RoomStatus.Closed -> \"Zamknięty\"\r\n | _ -> \"Nieznany\"\r\n StatusColor = \r\n match rs.Status with\r\n | RoomStatus.Open -> \"success\"\r\n | RoomStatus.Closed -> \"danger\"\r\n | _ -> \"warning\"\r\n }\r\n\r\n type Deletion =\r\n | ConfirmDelete of int * string\r\n | CanNotDelete of string\r\n | NoDeleteRequest\r\n \r\n type Model =\r\n {\r\n Resort : ResortRef\r\n Rooms : RoomSummaryModel list\r\n Deletion : Deletion\r\n }\r\n static member Empty = { Resort = { Id = 0; Name = \"\"; HasPaymentMethod = false }; Rooms = []; Deletion = NoDeleteRequest }\r\n static member FromSummaryList (resort: ResortRef, rooms: RoomSummary list) =\r\n {\r\n Resort = resort\r\n Rooms = rooms |> List.map RoomSummaryModel.FromSummary\r\n Deletion = NoDeleteRequest \r\n }\r\n\r\n let view (model: Model) dispatch = \r\n div [ Class \"box\" ] [\r\n div [ Class \"box-header\" ] [\r\n h3 [ Class \"box-title\" ] [ str model.Resort.Name ]\r\n div [Class \"box-tools\"] [ \r\n Controls.simpleButton [] \"\" \" Nowy\" \"fa fa-file-o\" dispatch New\r\n Controls.simpleButton [] \"\" \" Zamknij\" \"fa fa-times\" dispatch Close\r\n ]\r\n ]\r\n div [ Class \"box-body no-padding\"] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n yield tr [] [\r\n th [] [ str \"Nazwa\" ]\r\n th [] [ str \"Obłożenie\" ]\r\n th [ Style [ Width \"5%\"] ] []\r\n th [ Style [ Width \"5%\"] ] [ str \"Status\" ]\r\n th [ Style [ Width \"10%\"] ] [ str \"\" ]\r\n ]\r\n for r in model.Rooms do\r\n yield tr [] [\r\n td [] [ str r.Name ]\r\n td [] [ Controls.progressBar r.UtilisationColor r.Utilisation ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\r\n str (sprintf \"%d%%\" r.Utilisation)\r\n ]\r\n td [ Style [ TextAlign TextAlignOptions.Center ] ] [\r\n Controls.label r.StatusColor r.Status\r\n ]\r\n td [ Style [TextAlign TextAlignOptions.Center ] ] [\r\n Controls.actionButton [ Title \"Edytuj\" ] \"fa fa-edit\" dispatch (Edit r.Id)\r\n str \" \"\r\n Controls.actionButton [ Title \"Zdjęcia\" ] \"fa fa-image\" dispatch (Gallery r.Id)\r\n str \" \"\r\n Controls.actionButton [ Title \"Usuń\"; Data(\"toggle\", \"modal\"); Data(\"target\", \"#confirmRoomDelete\") ] \"fa fa-remove\" dispatch (Remove r.Id)\r\n str \" \"\r\n if model.Resort.HasPaymentMethod then\r\n a [ Title \"Link do rezerwacji\"; Href <| sprintf \"/make-reservation?room=%d\" r.Id; Target \"_blank\" ] [ i [ Class \"fa fa-calendar\" ] [] ]\r\n else\r\n span [ Style [ Color \"tomato\" ]; Title \"Link do rezerwacji jest niedostępny.\\nNie wprowadzono danych do przelewu bankowego.\" ] [ i [ Class \"fa fa-calendar\" ] [] ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n match model.Deletion with\r\n | ConfirmDelete (id, name) ->\r\n Modals.confirm\r\n \"confirmRoomDelete\" \"Potwierdź\"\r\n (p [] [str (sprintf \"Czy na pewno chcesz usunąć pokój %s?\" name) ])\r\n dispatch (RemoveConfirmed id)\r\n | CanNotDelete name ->\r\n Modals.info\r\n \"confirmRoomDelete\"\r\n \"Błąd\"\r\n (p [] [str (sprintf \"Nie można usunąć pokoju %s. Należy najpierw odrzucić wszystkie niezakończone rezerwacje.\" name)])\r\n | NoDeleteRequest ->\r\n Modals.info \"confirmRoomDelete\" \"Info\" (p [] [str \"Nie ma nic do usunięcia\" ])\r\n ]\r\n\r\n let getRoomSummariesCmd (resort: ResortRef) =\r\n Cmd.OfAsync.either id (roomApi.GetRoomSummaries resort.Id) (fun items -> RoomsLoaded (resort, items)) (ErrorHandling.unpack ShowError \"Nie udało się wczytać listy pokojów.\")\r\n\r\n let canDeleteRoomCmd roomId =\r\n Cmd.OfAsync.either id (roomApi.CanDeleteRoom roomId) (fun check -> RemovalPossibilityChecked (roomId, check)) (ErrorHandling.unpack ShowError \"Nie udało się sprawdzić możliwości usunięcia pokoju.\")\r\n\r\n let deleteRoomCmd (resort: ResortRef, roomId) =\r\n let performDelete = async {\r\n do! roomApi.DeleteRoom roomId\r\n return! roomApi.GetRoomSummaries resort.Id\r\n }\r\n Cmd.OfAsync.either id performDelete (fun items -> RoomsLoaded (resort, items)) (ErrorHandling.unpack ShowError \"Nie udało się usunąć pokoju.\")\r\n\r\n\r\n let update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | RoomsLoaded (id, items) ->\r\n Model.FromSummaryList (id, items), Cmd.none\r\n | Remove id ->\r\n model, canDeleteRoomCmd id\r\n | RemovalPossibilityChecked (id, possible) ->\r\n let newModel =\r\n { model with\r\n Deletion = model.Rooms\r\n |> List.tryFind (fun r -> r.Id = id)\r\n |> Option.map (fun r -> if possible then ConfirmDelete (id, r.Name) else CanNotDelete r.Name)\r\n |> Option.defaultValue NoDeleteRequest\r\n }\r\n newModel, Cmd.none\r\n | RemoveConfirmed id ->\r\n { model with Deletion = NoDeleteRequest }, deleteRoomCmd (model.Resort, id)\r\n | _ ->\r\n failwithf \"Invalid function: %A, %A\" msg model\r\n\r\n\r\ntype Msg =\r\n | FormMsg of RoomDetails.Msg\r\n | ListMsg of RoomList.Msg\r\n | GalleryMsg of RoomGallery.Msg\r\n | Close \r\n | ShowError of string * ErrorInfo\r\n\r\ntype Model =\r\n | Details of RoomDetails.Model\r\n | Items of RoomList.Model\r\n | Gallery of RoomGallery.Model\r\n static member Empty = Items RoomList.Model.Empty \r\n\r\nlet view (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n match model with\r\n | Items rooms -> RoomList.view rooms (ListMsg >> dispatch)\r\n | Details room -> RoomDetails.view room (FormMsg >> dispatch)\r\n | Gallery gallery -> RoomGallery.view gallery (GalleryMsg >> dispatch)\r\n ]\r\n\r\n\r\nlet update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg, model with\r\n | ListMsg RoomList.Close, _ ->\r\n model, Cmd.ofMsg Close\r\n | ListMsg RoomList.New, Items rooms ->\r\n Details RoomDetails.Model.Empty, Cmd.map FormMsg (RoomDetails.getResortCmd rooms.Resort.Id)\r\n | ListMsg (RoomList.Edit roomId), _ ->\r\n Details RoomDetails.Model.Empty, Cmd.map FormMsg (RoomDetails.getRoomCmd roomId)\r\n | ListMsg (RoomList.Gallery roomId), Items items ->\r\n let gmdl, gcmd = RoomGallery.init (roomId, items.Resort)\r\n Gallery gmdl, Cmd.map GalleryMsg gcmd\r\n | ListMsg (RoomList.ShowError (msg, err)), _\r\n | FormMsg (RoomDetails.ShowError (msg, err)), _\r\n | GalleryMsg (RoomGallery.ShowError (msg, err)), _->\r\n model, Cmd.ofMsg (ShowError (msg, err))\r\n | FormMsg RoomDetails.Close, Details room ->\r\n Items RoomList.Model.Empty, Cmd.map ListMsg (RoomList.getRoomSummariesCmd <| ResortRef.FromResort room.Resort)\r\n | FormMsg msg, Details details ->\r\n let dtModel, dtMsg = RoomDetails.update msg details \r\n Details dtModel, Cmd.map FormMsg dtMsg\r\n | ListMsg msg, Items items ->\r\n let lsModel, lsMsg = RoomList.update msg items\r\n Items lsModel, Cmd.map ListMsg lsMsg\r\n | GalleryMsg RoomGallery.Close, Gallery gallery ->\r\n Items RoomList.Model.Empty, Cmd.map ListMsg (RoomList.getRoomSummariesCmd gallery.Resort)\r\n | GalleryMsg msg, Gallery gmdl ->\r\n let gModel, gMsg = RoomGallery.update msg gmdl\r\n Gallery gModel, Cmd.map GalleryMsg gMsg\r\n | _, _ ->\r\n failwith \"Invalid function\"","module AccommodationBase\r\n\r\nopen System\r\nopen Elmish\r\nopen Fable.React\r\nopen Fable.React.Props\r\nopen Fable.Remoting.Client\r\nopen Commons\r\nopen Shared\r\nopen Shared.Resorts\r\nopen Shared.ServerError\r\n\r\n\r\nlet resortApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\nmodule ResortDetails =\r\n\r\n module PriceListTemplateEditor = \r\n\r\n type Msg =\r\n | AddPriceListTemplate\r\n | EditPriceListTemplate of PriceListTemplate\r\n | UpdatePriceListTemplate\r\n | CancelPriceListTemplate\r\n | RemovePriceListTemplate of PriceListTemplate\r\n | PriceListTemplateNameChanged of string\r\n | PriceChangePercentageChanged of string\r\n | AddApplicationScope of DateTime * DateTime\r\n | RemoveApplicationScope of ApplicationScope\r\n\r\n type EditedPriceListTemplate =\r\n {\r\n Id : int\r\n Name : string\r\n PriceChangePercentage : string\r\n Scopes : ApplicationScope list\r\n }\r\n member this.IsComplete =\r\n not (String.IsNullOrEmpty this.Name) && Validation.isValidInt this.PriceChangePercentage && this.Scopes.Length > 0\r\n static member Empty =\r\n {\r\n Id = 0\r\n Name = \"\"\r\n PriceChangePercentage = \"\"\r\n Scopes = []\r\n }\r\n static member FromTemplate (template: PriceListTemplate) = \r\n {\r\n Id = template.Id\r\n Name = template.Name\r\n PriceChangePercentage = template.PriceChangePercentage.ToString()\r\n Scopes = template.Scopes\r\n }\r\n static member ToTemplate (template: EditedPriceListTemplate) =\r\n {\r\n PriceListTemplate.Id = template.Id\r\n Name = template.Name\r\n PriceChangePercentage = Int32.Parse template.PriceChangePercentage\r\n Scopes = template.Scopes\r\n }\r\n\r\n type Model =\r\n {\r\n Items : (PriceListTemplate * bool) list\r\n Editor : EditedPriceListTemplate\r\n }\r\n static member Empty =\r\n {\r\n Items = []\r\n Editor = EditedPriceListTemplate.Empty\r\n }\r\n static member FromTemplateList (templates: PriceListTemplate list) =\r\n {\r\n Items = templates |> List.map (fun t -> t, false)\r\n Editor = EditedPriceListTemplate.Empty\r\n }\r\n static member ToTemplateList (model: Model) =\r\n model.Items |> List.map fst\r\n\r\n let priceListTmplLineEditor (template: EditedPriceListTemplate) dispatch buttons =\r\n tr [] [\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n OnChange (Event.str dispatch PriceListTemplateNameChanged)\r\n Value template.Name\r\n MaxLength 80.0\r\n ]\r\n ]\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n OnChange (Event.str dispatch PriceChangePercentageChanged)\r\n Value template.PriceChangePercentage\r\n MaxLength 4.0\r\n ]\r\n ]\r\n td [] [\r\n Controls.dateRangePickerInput \"addApplicationScope\" (DateTime.Today, DateTime.Today) dispatch AddApplicationScope\r\n for s in template.Scopes do\r\n span [] [ str <| sprintf \"%s - %s\" (s.From.ToString(\"dd.MM.yyyy\")) (s.To.ToString(\"dd.MM.yyyy\")) ]\r\n str \" \"\r\n Controls.actionButton [] \"fa fa-times\" dispatch (RemoveApplicationScope s)\r\n br [] \r\n ]\r\n td [] buttons\r\n ]\r\n\r\n let view model dispatch =\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [] [ str \"Nazwa\" ]\r\n th [] [ str \"Zmiana ceny\" ]\r\n th [] [ str \"Obowiązywanie\" ]\r\n th [] []\r\n ]\r\n for pt, isEdited in model.Items do\r\n if isEdited then\r\n priceListTmplLineEditor model.Editor dispatch [\r\n Controls.actionButton [ Disabled (not model.Editor.IsComplete) ] \"fa fa-check\" dispatch UpdatePriceListTemplate\r\n str \" \"\r\n Controls.actionButton [] \"fa fa-ban\" dispatch CancelPriceListTemplate\r\n ]\r\n else\r\n tr [] [\r\n td [] [ str pt.Name ]\r\n td [ Style [TextAlign TextAlignOptions.Right ] ] [ \r\n str (if pt.PriceChangePercentage < 0\r\n then pt.PriceChangePercentage.ToString() + \"%\"\r\n else \"+\" + pt.PriceChangePercentage.ToString() + \"%\")\r\n ]\r\n td [] [\r\n for s in pt.Scopes do\r\n span [] [ str <| sprintf \"%s - %s\" (s.From.ToString(\"dd.MM.yyyy\")) (s.To.ToString(\"dd.MM.yyyy\")) ]\r\n br []\r\n ]\r\n td [] [\r\n Controls.actionButton [] \"fa fa-edit\" dispatch (EditPriceListTemplate pt)\r\n str \" \"\r\n Controls.actionButton [] \"fa fa-times\" dispatch (RemovePriceListTemplate pt)\r\n ]\r\n ]\r\n if model.Items |> List.forall (snd >> not) then\r\n priceListTmplLineEditor model.Editor dispatch [\r\n Controls.actionButton [ Disabled (not model.Editor.IsComplete) ] \"fa fa-plus\" dispatch AddPriceListTemplate \r\n ]\r\n ]\r\n ]\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | PriceChangePercentageChanged pc ->\r\n { model with Editor = { model.Editor with PriceChangePercentage = pc } }, Cmd.none\r\n | PriceListTemplateNameChanged name ->\r\n { model with Editor = { model.Editor with Name = name } }, Cmd.none\r\n | AddApplicationScope (f, t) ->\r\n { model with\r\n Editor = {model.Editor with Scopes = { From = f; To = t} :: model.Editor.Scopes |> List.sort }\r\n }, Cmd.none\r\n | RemoveApplicationScope s ->\r\n { model with\r\n Editor = { model.Editor with Scopes = model.Editor.Scopes |> List.filter ((<>) s) }\r\n }, Cmd.none\r\n | AddPriceListTemplate ->\r\n if model.Editor.IsComplete then\r\n { model with\r\n Items = model.Items @ [ model.Editor |> EditedPriceListTemplate.ToTemplate, false]\r\n Editor = EditedPriceListTemplate.Empty\r\n }, Cmd.none\r\n else\r\n model, Cmd.none\r\n | RemovePriceListTemplate pt ->\r\n { model with Items = model.Items |> List.filter (fst >> (<>) pt) }, Cmd.none\r\n | EditPriceListTemplate pt ->\r\n { model with\r\n Items = model.Items |> List.map (fun (t, _) -> t, t = pt)\r\n Editor = pt |> EditedPriceListTemplate.FromTemplate\r\n }, Cmd.none\r\n | UpdatePriceListTemplate ->\r\n if model.Editor.IsComplete then\r\n { model with\r\n Items = \r\n model.Items\r\n |> List.map (function\r\n | (t, true) -> model.Editor |> EditedPriceListTemplate.ToTemplate, false\r\n | (t, false) -> t, false)\r\n Editor = EditedPriceListTemplate.Empty \r\n }, Cmd.none\r\n else\r\n model, Cmd.none\r\n | CancelPriceListTemplate ->\r\n { model with\r\n Items = model.Items |> List.map (fun (t, _) -> t, false)\r\n Editor = EditedPriceListTemplate.Empty\r\n }, Cmd.none\r\n\r\n\r\n module UnavailabilityEditor = \r\n\r\n type Msg =\r\n | RemoveUnavailability of Unavailability\r\n | AddUnavailability\r\n | UnavailabilityPeriodChanged of DateTime * DateTime\r\n | UnavailabilityNotesChanged of string\r\n\r\n type EditedUnavailability =\r\n {\r\n From : DateTime\r\n To : DateTime\r\n Notes : string\r\n }\r\n static member Empty = { From = DateTime.Today; To = DateTime.Today; Notes = \"\" }\r\n\r\n type Model =\r\n {\r\n Editor : EditedUnavailability\r\n Items : Unavailability list\r\n }\r\n static member Empty =\r\n {\r\n Editor = EditedUnavailability.Empty\r\n Items = []\r\n }\r\n static member FromUnavailabilityList unavailabilities =\r\n {\r\n Editor = EditedUnavailability.Empty\r\n Items = unavailabilities\r\n }\r\n\r\n let view model dispatch =\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [] [ str \"Od\" ]\r\n th [] [ str \"Do\" ]\r\n th [] [ str \"Opis\" ]\r\n th [] []\r\n ]\r\n for u in model.Items do\r\n tr [] [\r\n td [] [ str <| u.From.ToString(\"dd.MM.yyyy\") ]\r\n td [] [ str <| u.To.ToString(\"dd.MM.yyyy\") ]\r\n td [] [ str (u.Notes |> Option.defaultValue \"\") ]\r\n td [] [ Controls.actionButton [] \"fa fa-remove\" dispatch (RemoveUnavailability u) ]\r\n ]\r\n tr [] [\r\n td [ ColSpan 2 ] [\r\n Controls.dateRangePickerInput \"addUnavailability\" (model.Editor.From, model.Editor.To) dispatch UnavailabilityPeriodChanged\r\n ]\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n OnChange (Event.str dispatch UnavailabilityNotesChanged)\r\n Value (model.Editor.Notes)\r\n MaxLength 120.0\r\n ]\r\n ]\r\n td [] [ Controls.actionButton [] \"fa fa-plus\" dispatch AddUnavailability ]\r\n ]\r\n ]\r\n ]\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | RemoveUnavailability u ->\r\n { model with Items = model.Items |> List.filter ((<>) u) }, Cmd.none\r\n | AddUnavailability ->\r\n { model with\r\n Items = {\r\n Unavailability.From = model.Editor.From\r\n To = model.Editor.To\r\n Notes = match model.Editor.Notes with\r\n | \"\" -> None\r\n | s -> Some s\r\n } :: model.Items |> List.sort\r\n Editor = EditedUnavailability.Empty\r\n }, Cmd.none\r\n | UnavailabilityPeriodChanged (f, t) ->\r\n { model with Editor = { model.Editor with From = f; To = t } }, Cmd.none\r\n | UnavailabilityNotesChanged notes ->\r\n { model with Editor = { model.Editor with Notes = notes } }, Cmd.none\r\n\r\n\r\n module AgeGroupEditor = \r\n\r\n type Msg =\r\n | AgeToChanged of string\r\n | PricePercentageChanged of string\r\n | AddAgeGroup\r\n | RemoveAgeGroup of AgeGroup\r\n\r\n type EditedAgeGroup =\r\n {\r\n AgeTo : string\r\n PricePercentage : string\r\n }\r\n member this.IsIncomplete =\r\n not (Validation.isValidInt this.AgeTo && Validation.isValidInt this.PricePercentage)\r\n static member Empty = {\r\n AgeTo = \"\"\r\n PricePercentage = \"\"\r\n }\r\n \r\n type Model =\r\n {\r\n Items : AgeGroup list\r\n Editor : EditedAgeGroup\r\n }\r\n static member Empty =\r\n {\r\n Items = []\r\n Editor = EditedAgeGroup.Empty\r\n }\r\n static member FromAgeGroupList ageGroups =\r\n {\r\n Items = ageGroups\r\n Editor = EditedAgeGroup.Empty\r\n }\r\n\r\n let view (model: Model) dispatch =\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n yield tr [] [\r\n th [] [ str \"Wiek\" ]\r\n th [] [ str \"Proc. ceny\" ]\r\n th [] []\r\n ]\r\n for pp in model.Items do\r\n yield tr [] [\r\n td [ Style [TextAlign TextAlignOptions.Right ] ] [ str <| pp.AgeTo.ToString() ]\r\n td [ Style [TextAlign TextAlignOptions.Right ] ] [ str <| pp.PricePercentage.ToString() ]\r\n td [] [ Controls.actionButton [] \"fa fa-remove\" dispatch (RemoveAgeGroup pp) ]\r\n ]\r\n yield tr [] [\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n Type \"text\"\r\n OnChange (Event.str dispatch AgeToChanged)\r\n Value model.Editor.AgeTo\r\n MaxLength 2.0\r\n ]\r\n ]\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n Type \"text\"\r\n OnChange (Event.str dispatch PricePercentageChanged)\r\n Value model.Editor.PricePercentage\r\n MaxLength 4.0\r\n ]\r\n ] \r\n td [] [\r\n Controls.actionButton [ Disabled model.Editor.IsIncomplete ] \"fa fa-plus\" dispatch AddAgeGroup\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | AgeToChanged ageTo -> { model with Editor = { model.Editor with AgeTo = ageTo } }, Cmd.none\r\n | PricePercentageChanged perc -> { model with Editor = { model.Editor with PricePercentage = perc } }, Cmd.none\r\n | AddAgeGroup ->\r\n if model.Editor.IsIncomplete then\r\n model, Cmd.none\r\n else\r\n { model with\r\n Items = {\r\n AgeGroup.AgeTo = Int32.Parse model.Editor.AgeTo\r\n PricePercentage = Int32.Parse model.Editor.PricePercentage\r\n } :: model.Items \r\n |> List.sortBy (fun pp -> pp.AgeTo)\r\n Editor = EditedAgeGroup.Empty\r\n }, Cmd.none\r\n | RemoveAgeGroup pp ->\r\n { model with Items = model.Items |> List.filter ((<>) pp) }, Cmd.none\r\n\r\n\r\n module ArrangementTypeEditor = \r\n\r\n type Msg =\r\n | RemoveArrangementType of ArrangementType\r\n | AddArrangementType\r\n | UpdateArrangementType\r\n | CancelArrangementType\r\n | EditArrangementType of ArrangementType\r\n | ArrangementTypeDescriptionChanged of string\r\n\r\n type Model =\r\n {\r\n Items : (ArrangementType * bool) list\r\n Editor : string\r\n }\r\n static member Empty = { Items = []; Editor = \"\" }\r\n static member FromArrangementTypeList arrangementTypes =\r\n {\r\n Items = arrangementTypes |> List.map (fun a -> a, false)\r\n Editor = \"\"\r\n }\r\n static member ToArrangementTypeList model =\r\n model.Items |> List.map fst\r\n\r\n let view (model: Model) dispatch =\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [] [ str \"Nazwa\" ]\r\n th [] []\r\n ]\r\n for a, isEdited in model.Items do\r\n if isEdited then\r\n tr [] [\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n Type \"text\"\r\n OnChange (Event.str dispatch ArrangementTypeDescriptionChanged)\r\n Value model.Editor\r\n MaxLength 180.0\r\n ]\r\n ]\r\n td [] [\r\n Controls.actionButton [] \"fa fa-check\" dispatch UpdateArrangementType\r\n str \" \"\r\n Controls.actionButton [] \"fa fa-ban\" dispatch CancelArrangementType\r\n ]\r\n ]\r\n else\r\n tr [] [\r\n td [] [ str a.Description ]\r\n td [] [\r\n Controls.actionButton [] \"fa fa-edit\" dispatch (EditArrangementType a)\r\n str \" \"\r\n Controls.actionButton [] \"fa fa-remove\" dispatch (RemoveArrangementType a)\r\n ]\r\n ]\r\n if model.Items |> List.forall (snd >> not) then\r\n tr [] [\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n Type \"text\"\r\n OnChange (Event.str dispatch ArrangementTypeDescriptionChanged)\r\n Value model.Editor\r\n MaxLength 180.0\r\n ]\r\n ]\r\n td [] [\r\n Controls.actionButton [] \"fa fa-plus\" dispatch AddArrangementType\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | RemoveArrangementType a ->\r\n { model with Items = model.Items |> List.filter (fst >> (<>) a) }, Cmd.none\r\n | AddArrangementType ->\r\n if System.String.IsNullOrEmpty model.Editor then\r\n model, Cmd.none\r\n else\r\n { model with\r\n Items = ({ Id = 0; Description = model.Editor }, false) :: model.Items |> List.sortBy (fun (a, _) -> a.Description)\r\n Editor = \"\"\r\n }, Cmd.none\r\n | EditArrangementType a ->\r\n { model with\r\n Items = model.Items |> List.map (fun (at, _) -> at, (at = a))\r\n Editor = a.Description\r\n }, Cmd.none\r\n | CancelArrangementType ->\r\n { model with\r\n Items = model.Items |> List.map (fun (at, _) ->at, false)\r\n Editor = \"\"\r\n }, Cmd.none\r\n | UpdateArrangementType ->\r\n { model with\r\n Items =\r\n model.Items\r\n |> List.map (function\r\n | (at, true) -> { at with Description = model.Editor }, false\r\n | (at, false) -> at, false)\r\n Editor = \"\"\r\n }, Cmd.none\r\n | ArrangementTypeDescriptionChanged desc ->\r\n { model with Editor = desc }, Cmd.none\r\n\r\n type Msg =\r\n | ResortDetailsLoaded of Resort\r\n | NameChanged of string\r\n | CityChanged of string\r\n | ZipCodeChanged of string\r\n | StreetChanged of string\r\n | NumberChanged of string\r\n | ShortTimeChanged of string\r\n | PrepaymentPercChanged of string\r\n | PrepaymentWaitPeriodChanged of string\r\n | AutoConfirmChanged of bool\r\n | MaxRentalTimeChanged of string\r\n | MaxRentalAdvanceChanged of string\r\n | EmptySpacePricePercChanged of string\r\n | PriceListTemplateMsg of PriceListTemplateEditor.Msg\r\n | UnavailabilityMsg of UnavailabilityEditor.Msg\r\n | AgeGroupMsg of AgeGroupEditor.Msg\r\n | ArrangementTypeMsg of ArrangementTypeEditor.Msg\r\n | ValidateReservations\r\n | ReservationsValidated of (ReservationRef * string list) list\r\n | Save\r\n | ResortSaved of int\r\n | Close\r\n | ShowError of string * ErrorInfo\r\n\r\n \r\n type Address =\r\n {\r\n City : string\r\n CityErrors : string list\r\n Street : string\r\n StreetErrors : string list\r\n Number : string\r\n NumberErrors : string list\r\n ZipCode : string\r\n ZipCodeErrors : string list\r\n }\r\n\r\n type Model =\r\n {\r\n Id : int\r\n OwnerId : int\r\n Name : string\r\n NameErrors : string list\r\n Address : Address\r\n ShortTime : string\r\n ShortTimeErrors : string list\r\n EmptySpacePricePercentage : string\r\n EmptySpacePricePercErrors : string list\r\n PrepaymentPercentage : string\r\n PrepaymentPercentageErrors : string list\r\n PrepaymentWaitPeriod : string\r\n PrepaymentWaitPeriodErrors : string list\r\n AutoConfirm : bool\r\n MaxRentalTime : string\r\n MaxRentalTimeErrors : string list\r\n MaxRentalAdvance : string\r\n MaxRentalAdvanceErrors : string list\r\n HasPaymentMethod : bool\r\n PriceListTemplates : PriceListTemplateEditor.Model\r\n PriceListTemplateErrors : string list\r\n AgeGroups : AgeGroupEditor.Model\r\n AgeGroupErrors : string list\r\n Unavailabilities : UnavailabilityEditor.Model\r\n UnavailabilityErrors : string list\r\n ArrangementTypes : ArrangementTypeEditor.Model\r\n ArrangementTypeErrors : string list\r\n ReferenceLink : string\r\n ReservationValidation : (ReservationRef * string list) list\r\n PartnerKey : (string * string ) option\r\n }\r\n static member Empty =\r\n {\r\n Id = 0\r\n OwnerId = 0\r\n Name = \"\"\r\n NameErrors = []\r\n Address = {\r\n City = \"\"\r\n CityErrors = []\r\n Street = \"\"\r\n StreetErrors = []\r\n Number = \"\"\r\n NumberErrors = []\r\n ZipCode = \"\"\r\n ZipCodeErrors = []\r\n }\r\n ShortTime = \"\"\r\n ShortTimeErrors = []\r\n EmptySpacePricePercentage = \"\"\r\n EmptySpacePricePercErrors = []\r\n PrepaymentPercentage = \"\"\r\n PrepaymentPercentageErrors = []\r\n PrepaymentWaitPeriod = \"\"\r\n PrepaymentWaitPeriodErrors = []\r\n AutoConfirm = true\r\n MaxRentalTime = \"\"\r\n MaxRentalTimeErrors = []\r\n MaxRentalAdvance = \"\"\r\n MaxRentalAdvanceErrors = []\r\n HasPaymentMethod = false\r\n PriceListTemplates = PriceListTemplateEditor.Model.Empty\r\n PriceListTemplateErrors = []\r\n Unavailabilities = UnavailabilityEditor.Model.Empty\r\n UnavailabilityErrors = []\r\n AgeGroups = AgeGroupEditor.Model.Empty\r\n AgeGroupErrors = []\r\n ArrangementTypes = ArrangementTypeEditor.Model.Empty\r\n ArrangementTypeErrors = []\r\n ReferenceLink = \"\"\r\n ReservationValidation = []\r\n PartnerKey = None\r\n }\r\n static member FromPartnerKey (partnerKey: (string * string) option) =\r\n { Model.Empty with PartnerKey = partnerKey }\r\n static member FromResort (resort: Resort) =\r\n {\r\n Id = resort.Id\r\n OwnerId = resort.OwnerId\r\n Name = resort.Name\r\n NameErrors = []\r\n Address = {\r\n City = resort.Address.City\r\n CityErrors = []\r\n Street = resort.Address.Street\r\n StreetErrors = []\r\n Number = resort.Address.Number\r\n NumberErrors = []\r\n ZipCode = resort.Address.ZipCode\r\n ZipCodeErrors = []\r\n }\r\n ShortTime = resort.ShortTime.ToString()\r\n ShortTimeErrors = []\r\n EmptySpacePricePercentage = resort.EmptySpacePricePercentage.ToString()\r\n EmptySpacePricePercErrors = []\r\n PrepaymentPercentage = resort.PrepaymentPercentage.ToString()\r\n PrepaymentPercentageErrors = []\r\n PrepaymentWaitPeriod = resort.PrepaymentWaitPeriod.ToString()\r\n PrepaymentWaitPeriodErrors = []\r\n AutoConfirm = resort.AutoConfirm\r\n MaxRentalTime = resort.MaxRentalTime |> Option.map string |> Option.defaultValue \"\"\r\n MaxRentalTimeErrors = []\r\n MaxRentalAdvance = resort.MaxRentalAdvance |> Option.map string |> Option.defaultValue \"\"\r\n MaxRentalAdvanceErrors = []\r\n HasPaymentMethod = resort.HasPaymentMethod\r\n PriceListTemplates = PriceListTemplateEditor.Model.FromTemplateList resort.PriceListTemplates\r\n PriceListTemplateErrors = []\r\n Unavailabilities = UnavailabilityEditor.Model.FromUnavailabilityList resort.Unavailabilities \r\n UnavailabilityErrors = []\r\n AgeGroups = AgeGroupEditor.Model.FromAgeGroupList resort.AgeGroups \r\n AgeGroupErrors = []\r\n ArrangementTypes = ArrangementTypeEditor.Model.FromArrangementTypeList resort.ArrangementTypes \r\n ArrangementTypeErrors = []\r\n ReferenceLink = if resort.Id <> 0 then\r\n sprintf \"https://%s/make-reservation?resort=%d\" Browser.Dom.window.location.host resort.Id\r\n else\r\n \"\"\r\n ReservationValidation = []\r\n PartnerKey = None\r\n }\r\n static member ToResort (details: Model): Resort =\r\n {\r\n Id = details.Id\r\n OwnerId = details.OwnerId\r\n Name = details.Name\r\n HasPaymentMethod = details.HasPaymentMethod\r\n Address = {\r\n City = details.Address.City\r\n Street = details.Address.Street\r\n Number = details.Address.Number\r\n ZipCode = details.Address.ZipCode\r\n }\r\n ShortTime = Int32.Parse details.ShortTime\r\n EmptySpacePricePercentage = Int32.Parse details.EmptySpacePricePercentage\r\n PrepaymentPercentage = Int32.Parse details.PrepaymentPercentage\r\n PrepaymentWaitPeriod = Int32.Parse details.PrepaymentWaitPeriod\r\n AutoConfirm = details.AutoConfirm\r\n MaxRentalTime = if String.IsNullOrEmpty details.MaxRentalTime then None else Some (Int32.Parse details.MaxRentalTime)\r\n MaxRentalAdvance = if String.IsNullOrEmpty details.MaxRentalAdvance then None else Some (Int32.Parse details.MaxRentalAdvance)\r\n Unavailabilities = details.Unavailabilities.Items\r\n AgeGroups = details.AgeGroups.Items\r\n ArrangementTypes = ArrangementTypeEditor.Model.ToArrangementTypeList details.ArrangementTypes \r\n PriceListTemplates = PriceListTemplateEditor.Model.ToTemplateList details.PriceListTemplates\r\n }\r\n static member WithErrors (errors: (string * string) list) (details: Model) =\r\n {\r\n details with\r\n NameErrors = errors |> Validation.getErrorsOf \"Name\"\r\n Address = {\r\n details.Address with\r\n CityErrors = errors |> Validation.getErrorsOf \"City\"\r\n StreetErrors = errors |> Validation.getErrorsOf \"Street\"\r\n NumberErrors = errors |> Validation.getErrorsOf \"Number\"\r\n ZipCodeErrors = errors |> Validation.getErrorsOf \"ZipCode\"\r\n }\r\n ShortTimeErrors = errors |> Validation.getErrorsOf \"ShortTime\"\r\n EmptySpacePricePercErrors = errors |> Validation.getErrorsOf \"EmptySpacePricePercentage\"\r\n PrepaymentPercentageErrors = errors |> Validation.getErrorsOf \"PrepaymentPercentage\"\r\n PrepaymentWaitPeriodErrors = errors |> Validation.getErrorsOf \"PrepaymentWaitPeriod\"\r\n MaxRentalTimeErrors = errors |> Validation.getErrorsOf \"MaxRentalTime\"\r\n MaxRentalAdvanceErrors = errors |> Validation.getErrorsOf \"MaxRentalAdvance\"\r\n PriceListTemplateErrors = errors |> Validation.getErrorsOf \"PriceListTemplates\"\r\n UnavailabilityErrors = errors |> Validation.getErrorsOf \"Unavailabilities\"\r\n AgeGroupErrors = errors |> Validation.getErrorsOf \"AgeGroups\"\r\n ArrangementTypeErrors = errors |> Validation.getErrorsOf \"ArrangementTypes\"\r\n }\r\n\r\n \r\n let view (model: Model) dispatch = \r\n React.ofList [\r\n div [ Class \"box box-info\" ] [\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Dane obiektu\" ]\r\n ]\r\n form [ Class \"form-horizontal\"] [\r\n div [ Class \"box-body\" ] [\r\n \r\n Forms.formGroup (not model.NameErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-9\" \"name\" \"Nazwa\" 180.0\r\n (Value model.Name)\r\n (Forms.errorsBelow model.NameErrors)\r\n (Event.str dispatch NameChanged)\r\n \r\n Forms.formGroup (not model.Address.CityErrors.IsEmpty || not model.Address.ZipCodeErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-5\" \"city\" \"Miejscowość\" 120.0\r\n (Value model.Address.City)\r\n (Forms.errorsBelow model.Address.CityErrors)\r\n (Event.str dispatch CityChanged)\r\n @ Forms.inputWithLabel \"col-sm-2\" \"col-sm-2\" \"zipCode\" \"Kod pocztowy\" 10.0\r\n (Value model.Address.ZipCode)\r\n (Forms.errorsBelow model.Address.ZipCodeErrors)\r\n (Event.str dispatch ZipCodeChanged)\r\n \r\n Forms.formGroup (not model.Address.StreetErrors.IsEmpty || not model.Address.NumberErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-5\" \"street\" \"Ulica\" 180.0\r\n (Value model.Address.Street)\r\n (Forms.errorsBelow model.Address.StreetErrors)\r\n (Event.str dispatch StreetChanged)\r\n @ Forms.inputWithLabel \"col-sm-2\" \"col-sm-2\" \"number\" \"Numer\" 20.0\r\n (Value model.Address.Number)\r\n (Forms.errorsBelow model.Address.NumberErrors)\r\n (Event.str dispatch NumberChanged)\r\n \r\n Forms.formGroup (not model.ShortTimeErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"shortTime\" \"Czas najmu krótkoterminowego (dni)\" 2.0\r\n (Value model.ShortTime)\r\n (Forms.errorsRight \"col-sm-4\" model.ShortTimeErrors)\r\n (Event.str dispatch ShortTimeChanged)\r\n\r\n Forms.formGroup (not model.PrepaymentWaitPeriodErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"prepaymentWaitPeriod\" \"Czas oczekiwania na zaliczkę (dni)\" 2.0\r\n (Value model.PrepaymentWaitPeriod)\r\n (Forms.errorsRight \"col-sm-4\" model.PrepaymentWaitPeriodErrors)\r\n (Event.str dispatch PrepaymentWaitPeriodChanged)\r\n\r\n Forms.formGroup (not model.MaxRentalTimeErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"maxRentalTime\" \"Maksymalny czas wynajmu (dni)\" 3.0\r\n (Value model.MaxRentalTime)\r\n (Forms.errorsRight \"col-sm-4\" model.MaxRentalTimeErrors)\r\n (Event.str dispatch MaxRentalTimeChanged)\r\n\r\n Forms.formGroup (not model.MaxRentalAdvanceErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"maxRentalAdvance\" \"Maksymalne wyprzedzenie (mies.)\" 2.0\r\n (Value model.MaxRentalAdvance)\r\n (Forms.errorsRight \"col-sm-4\" model.MaxRentalAdvanceErrors)\r\n (Event.str dispatch MaxRentalAdvanceChanged)\r\n\r\n Forms.formGroup false\r\n <| Forms.checkboxWithLabel \"col-sm-3\" \"col-sm-1\" \"autoConfirm\" \"Automatyczne zatwierdzanie nowych rezerwacji\" \r\n model.AutoConfirm\r\n (Forms.errorsRight \"col-sm-4\" [])\r\n dispatch AutoConfirmChanged\r\n\r\n Forms.formGroup (not model.PrepaymentPercentageErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"prepaymentPercentage\" \"Zaliczka (%)\" 3.0\r\n (Value model.PrepaymentPercentage)\r\n (Forms.errorsRight \"col-sm-4\" model.PrepaymentPercentageErrors)\r\n (Event.str dispatch PrepaymentPercChanged)\r\n \r\n Forms.formGroup (not model.EmptySpacePricePercErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"emptySpacePricePercentage\" \"Opłata za niewykorzystane miejsce (%)\" 3.0\r\n (Value model.EmptySpacePricePercentage)\r\n (Forms.errorsRight \"col-sm-4\" model.EmptySpacePricePercErrors)\r\n (Event.str dispatch EmptySpacePricePercChanged)\r\n \r\n Forms.formGroup (not model.AgeGroupErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-4\" \"ageGroups\" \"Grupy wiekowe\"\r\n (Forms.errorsRight \"col-sm-4\" model.AgeGroupErrors)\r\n (AgeGroupEditor.view model.AgeGroups (AgeGroupMsg >> dispatch))\r\n\r\n Forms.formGroup (not model.PriceListTemplateErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-8\" \"priceListTemplates\" \"Cenniki niestandardowe\"\r\n (Forms.errorsBelow model.PriceListTemplateErrors)\r\n (PriceListTemplateEditor.view model.PriceListTemplates (PriceListTemplateMsg >> dispatch))\r\n \r\n Forms.formGroup (not model.ArrangementTypeErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-4\" \"arrangementTypes\" \"Dodatkowe wyposażenie\"\r\n (Forms.errorsRight \"col-sm-4\" model.ArrangementTypeErrors)\r\n (ArrangementTypeEditor.view model.ArrangementTypes (ArrangementTypeMsg >> dispatch))\r\n\r\n Forms.formGroup (not model.UnavailabilityErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-5\" \"unavailabilities\" \"Zamknięty w dniach\"\r\n (Forms.errorsBelow model.UnavailabilityErrors)\r\n (UnavailabilityEditor.view model.Unavailabilities (UnavailabilityMsg >> dispatch))\r\n\r\n if not <| String.IsNullOrEmpty model.ReferenceLink then\r\n Forms.formGroup (not model.HasPaymentMethod)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-5\" \"referenceLink\" \"Link do rezerwacji\"\r\n (Forms.errorsBelow\r\n [ if not model.HasPaymentMethod then\r\n \"Nie wprowadzono danych do przelewu bankowego\"\r\n ])\r\n (if model.HasPaymentMethod then\r\n a [ Class \"form-control\"; Style [ Border \"none\" ]; Id \"referenceLink\"; Href model.ReferenceLink; Target \"_blank\" ] [ str model.ReferenceLink ]\r\n else\r\n label [ Class \"control-label\" ] [ str \"Link do rezerwacji jest niedostępny\" ])\r\n ]\r\n ]\r\n div [ Class \"box-footer\" ] [\r\n div [ Class \"pull-right\"] [\r\n Controls.simpleButton [] \"btn-primary\" \" Zapisz\" \"fa fa-save\" dispatch ValidateReservations\r\n str \" \"\r\n Controls.simpleButton [] \"btn-default\" \" Anuluj\" \"fa fa-times\" dispatch Close\r\n ]\r\n ]\r\n Modals.confirm\r\n \"reservationValidationInfo\"\r\n \"Ostrzeżenie\"\r\n (p [] [\r\n str \"Po wprowadzeniu zmian następujące rezerwacje staną się błędne:\"\r\n table [ Class \"table\"] [\r\n tbody [] [\r\n for res, errors in model.ReservationValidation do\r\n tr [] [\r\n td [ ColSpan 4] [\r\n for room in res.Rooms do\r\n str room\r\n br []\r\n ]\r\n ]\r\n tr [] [\r\n td [] [ str (res.FirstName + \" \" + res.LastName) ]\r\n td [] [ str (res.From.ToString(\"dd.MM.yyyy\")) ]\r\n td [] [ str (res.To.ToString(\"dd.MM.yyyy\")) ]\r\n td [] [\r\n for err in errors do\r\n str err\r\n br []\r\n\r\n ]\r\n ]\r\n ]\r\n ]\r\n \r\n str \"i nie będzie można ich modyfikować bez zmiany warunków tak, aby nie pojawiały się błędy.\"\r\n br []\r\n str \"Czy na pewno chcesz zapisać zmiany?\"\r\n ])\r\n dispatch Save\r\n ]\r\n ]\r\n\r\n \r\n let getResortCmd resId =\r\n Cmd.OfAsync.either id (resortApi.GetResort resId) ResortDetailsLoaded (ErrorHandling.unpack ShowError \"Nie udało się wczytać danych ośrodka\")\r\n\r\n let saveResortCmd resort =\r\n Cmd.OfAsync.either id (resortApi.SaveResort resort) ResortSaved (ErrorHandling.unpack ShowError \"Nie udało się zapisać zmian\")\r\n\r\n let validateReservationsCmd room =\r\n Cmd.OfAsync.either id (resortApi.ValidateReservations room) ReservationsValidated (ErrorHandling.unpack ShowError \"Nie udało się sprawdzić wpływu zmian na istniejące rezerwacje\")\r\n\r\n let updatePartnerReferenceCmd resortId (partner, key) =\r\n Cmd.OfAsync.either id (resortApi.UpdatePartnerReference (partner, key, resortId)) (fun () -> Close) (ErrorHandling.unpack ShowError \"Nie udało się zmienić danych partnera.\")\r\n\r\n\r\n let validateModel (model: Model) =\r\n [\r\n yield! Validation.checkIfValidInt \"Czas wynajmu krótkoterminowego\" model.ShortTime |> Validation.forField \"ShortTime\"\r\n yield! Validation.checkIfValidInt \"Zaliczka\" model.PrepaymentPercentage |> Validation.forField \"PrepaymentPercentage\"\r\n yield! Validation.checkIfValidInt \"Czas na wpłatę zaliczki\" model.PrepaymentWaitPeriod |> Validation.forField \"PrepaymentWaitPeriod\"\r\n yield! Validation.checkIfValidInt \"Opłata za niewykorzystane miejsce\" model.EmptySpacePricePercentage |> Validation.forField \"EmptySpacePricePercentage\"\r\n if not (String.IsNullOrEmpty model.MaxRentalTime) then\r\n yield! Validation.checkIfValidInt \"Maksymalny czas wynajmu\" model.MaxRentalTime |> Validation.forField \"MaxRentalTime\"\r\n if not (String.IsNullOrEmpty model.MaxRentalAdvance) then\r\n yield! Validation.checkIfValidInt \"Maksymalne wyprzedzenie\" model.MaxRentalAdvance |> Validation.forField \"MaxRentalAdvance\"\r\n ]\r\n\r\n \r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd = \r\n match msg with\r\n | ResortDetailsLoaded resort -> Model.FromResort resort, Cmd.none\r\n | NameChanged name -> { model with Name = name }, Cmd.none\r\n | CityChanged city -> { model with Address = { model.Address with City = city } }, Cmd.none\r\n | ZipCodeChanged zipCode -> { model with Address = { model.Address with ZipCode = zipCode } }, Cmd.none\r\n | StreetChanged street -> { model with Address = { model.Address with Street = street } }, Cmd.none\r\n | NumberChanged number -> { model with Address = { model.Address with Number = number } }, Cmd.none\r\n | ShortTimeChanged shortTime -> { model with ShortTime = shortTime }, Cmd.none\r\n | PrepaymentPercChanged perc -> { model with PrepaymentPercentage = perc }, Cmd.none\r\n | PrepaymentWaitPeriodChanged wt -> { model with PrepaymentWaitPeriod = wt }, Cmd.none\r\n | MaxRentalTimeChanged mrt -> { model with MaxRentalTime = mrt }, Cmd.none\r\n | MaxRentalAdvanceChanged mra -> { model with MaxRentalAdvance = mra }, Cmd.none\r\n | AutoConfirmChanged auto -> { model with AutoConfirm = auto }, Cmd.none\r\n | EmptySpacePricePercChanged perc -> { model with EmptySpacePricePercentage = perc }, Cmd.none\r\n | PriceListTemplateMsg msg ->\r\n let ptModel, ptCmd = PriceListTemplateEditor.update msg model.PriceListTemplates\r\n { model with PriceListTemplates = ptModel }, Cmd.map PriceListTemplateMsg ptCmd\r\n | UnavailabilityMsg msg ->\r\n let unMdl, unCmd = UnavailabilityEditor.update msg model.Unavailabilities\r\n {model with Unavailabilities = unMdl }, Cmd.map UnavailabilityMsg unCmd\r\n | AgeGroupMsg msg ->\r\n let agMdl, agMsg = AgeGroupEditor.update msg model.AgeGroups\r\n { model with AgeGroups = agMdl }, Cmd.map AgeGroupMsg agMsg\r\n | ArrangementTypeMsg msg ->\r\n let atMdl, atMsg = ArrangementTypeEditor.update msg model.ArrangementTypes\r\n { model with ArrangementTypes = atMdl }, Cmd.map ArrangementTypeMsg atMsg\r\n | ValidateReservations ->\r\n let errors = model |> Validation.combine validateModel (Model.ToResort >> validateResort) \r\n if errors.Length > 0 then\r\n model |> Model.WithErrors errors, Cmd.none\r\n else\r\n model, validateReservationsCmd (model |> Model.ToResort)\r\n | ReservationsValidated result ->\r\n if not result.IsEmpty then\r\n Modals.show \"reservationValidationInfo\"\r\n { model with ReservationValidation = result }, Cmd.none\r\n else\r\n model, Cmd.ofMsg Save\r\n | Save ->\r\n let errors = model |> Validation.combine validateModel (Model.ToResort >> validateResort)\r\n if errors.IsEmpty then\r\n model, saveResortCmd (Model.ToResort model)\r\n else\r\n model |> Model.WithErrors errors, Cmd.none\r\n | ResortSaved resortId ->\r\n model, model.PartnerKey |> Option.map (updatePartnerReferenceCmd resortId) |> Option.defaultValue (Cmd.ofMsg Close)\r\n | Close -> failwith \"Close should be handled upper level\" \r\n \r\n\r\nmodule ResortList = \r\n\r\n type Msg =\r\n | ResortsLoaded of ResortSummary list\r\n | PartnerReferenceLoaded of int option\r\n | New of (string * string) option\r\n | Edit of int\r\n | Remove of int\r\n | RemovalPossibilityChecked of int * bool\r\n | RemoveConfirmed of int\r\n | ResortRemoved\r\n | ShowRooms of int * string * bool\r\n | UpdatePartnerReferredResort of int\r\n | DeletePartnerReference \r\n | PartnerReferenceUpdated of int option\r\n | ShowError of string * ErrorInfo\r\n\r\n \r\n type ResortSummaryModel =\r\n {\r\n Id : int\r\n Name : string\r\n Address : string\r\n Utilisation : int\r\n UtilisationColor : string\r\n Status : string\r\n StatusColor : string\r\n HasPaymentMethod : bool\r\n }\r\n static member FromSummary (rs: Shared.Resorts.ResortSummary) =\r\n let utilisation = int(Math.Round(float(rs.PendingReservations)/float(rs.Rooms) * 100.0))\r\n {\r\n Id = rs.Id\r\n Name = rs.Name\r\n Address = sprintf \"%s %s, %s %s\" rs.Address.Street rs.Address.Number rs.Address.ZipCode rs.Address.City\r\n Utilisation = utilisation\r\n UtilisationColor =\r\n if utilisation < 25 then \"red\"\r\n elif utilisation < 50 then \"yellow\"\r\n elif utilisation < 75 then \"blue\"\r\n else \"green\"\r\n Status =\r\n match rs.Status with\r\n | ResortStatus.Open -> \"Czynny\"\r\n | ResortStatus.Closed -> \"Zamknięty\"\r\n | _ -> \"Nieznany\"\r\n StatusColor = \r\n match rs.Status with\r\n | ResortStatus.Open -> \"success\"\r\n | ResortStatus.Closed -> \"danger\"\r\n | _ -> \"warning\"\r\n HasPaymentMethod = rs.HasPaymentMethod\r\n }\r\n\r\n type Deletion =\r\n | ConfirmDelete of int * string\r\n | CanNotDelete of string\r\n | NoDeleteRequest\r\n\r\n\r\n type PartnerReference =\r\n {\r\n Partner : string\r\n Key : string\r\n ResortId: int option\r\n }\r\n\r\n type Model =\r\n {\r\n Resorts : ResortSummaryModel list\r\n PartnerReference : PartnerReference option\r\n Deletion : Deletion\r\n }\r\n static member Empty = { Resorts = []; PartnerReference = None; Deletion = NoDeleteRequest }\r\n static member WithSummaryList (resorts: Shared.Resorts.ResortSummary list) (model: Model) =\r\n { model with\r\n Resorts = resorts |> List.map ResortSummaryModel.FromSummary\r\n }\r\n static member FromPartnerReference (partnerRef: (string * string) option) =\r\n { Model.Empty with\r\n PartnerReference = partnerRef |> Option.map (fun (p, k) -> { Partner = p; Key = k; ResortId = None } )\r\n }\r\n member this.PartnerKey =\r\n this.PartnerReference |> Option.bind (fun pr -> if pr.ResortId.IsSome then None else Some (pr.Partner, pr.Key))\r\n\r\n\r\n let getResortSummariesCmd =\r\n Cmd.OfAsync.either id (resortApi.GetResortSummaries()) ResortsLoaded (ErrorHandling.unpack ShowError \"Nie udało się wczytać listy ośrodków.\")\r\n\r\n let getReferredResortIdCmd (partner, key) =\r\n Cmd.OfAsync.either id (resortApi.GetReferredResortId (partner, key)) PartnerReferenceLoaded (ErrorHandling.unpack ShowError (sprintf \"Nie udało się pobrać przyporządkowania do ośrodka z '%s'.\" partner))\r\n\r\n let updatePartnerReferenceCmd (partner, key, resortId) =\r\n Cmd.OfAsync.either id (resortApi.UpdatePartnerReference (partner, key, resortId)) (fun () -> PartnerReferenceUpdated (Some resortId)) (ErrorHandling.unpack ShowError (sprintf \"Nie udało się zmienić przyporządkowania do ośrodka z '%s'.\" partner))\r\n\r\n let deletePartnerReferenceCmd (partner, key) =\r\n Cmd.OfAsync.either id (resortApi.DeletePartnerReference (partner, key)) (fun () -> PartnerReferenceUpdated None) (ErrorHandling.unpack ShowError (sprintf \"Nie udało się usunąć przyporządkowania do ośrodka z '%s'.\" partner))\r\n\r\n let canDeleteResortCmd resortId =\r\n Cmd.OfAsync.either id (resortApi.CanDeleteResort resortId) (fun check -> RemovalPossibilityChecked (resortId, check)) (ErrorHandling.unpack ShowError \"Nie udało się sprawdzić możliwości usunięcia ośrodka.\")\r\n\r\n let deleteResortCmd resortId =\r\n Cmd.OfAsync.either id (resortApi.DeleteResort resortId) (fun () -> ResortRemoved) (ErrorHandling.unpack ShowError \"Nie udało się usunąć ośrodka.\")\r\n \r\n let init(partnerKey: (string * string) option): Model * Cmd =\r\n Model.FromPartnerReference partnerKey,\r\n Cmd.batch <| getResortSummariesCmd :: (partnerKey |> Option.map (getReferredResortIdCmd) |> Option.toList)\r\n\r\n let view (model: Model) dispatch = \r\n div [ Class \"box\" ] [\r\n div [ Class \"box-header\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Moje obiekty\" ]\r\n div [Class \"box-tools\"] [\r\n let icon =\r\n model.PartnerReference\r\n |> Option.map (fun pr -> if pr.ResortId.IsSome then \"fa fa-file-o\" else \"fa fa-link\")\r\n |> Option.defaultValue \"fa fa-file-o\"\r\n Controls.simpleButton [] \"\" \" Nowy\" icon dispatch (New model.PartnerKey)\r\n ]\r\n ]\r\n div [ Class \"box-body no-padding\"] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n yield tr [] [\r\n if model.PartnerReference.IsSome then \r\n th [ Style [ Width \"5%\" ] ] [ str \"Powiązanie\" ]\r\n th [] [ str \"Nazwa\" ]\r\n th [] [ str \"Adres\" ]\r\n th [] [ str \"Obłożenie\" ]\r\n th [ Style [ Width \"5%\"] ] []\r\n th [ Style [ Width \"5%\"] ] [ str \"Status\" ]\r\n th [ Style [ Width \"10%\"] ] [ str \"\" ]\r\n ]\r\n for r in model.Resorts do\r\n yield tr [] [\r\n if model.PartnerReference.IsSome then\r\n td [ Style [ TextAlign TextAlignOptions.Center ] ] [\r\n if model.PartnerReference.Value.ResortId = Some r.Id then\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch DeletePartnerReference) ] [\r\n i [ Class \"fa fa-link\" ] []\r\n ]\r\n else\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch (UpdatePartnerReferredResort r.Id)) ] [\r\n i [ Class \"fa fa-unlink\"; Style [ Opacity \"50%\"] ] []\r\n ]\r\n ]\r\n td [] [ str r.Name ]\r\n td [] [ str r.Address ]\r\n td [] [ Controls.progressBar r.UtilisationColor r.Utilisation ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\r\n str (sprintf \"%d%%\" r.Utilisation)\r\n ]\r\n td [ Style [ TextAlign TextAlignOptions.Center ] ] [\r\n Controls.label r.StatusColor r.Status\r\n ]\r\n td [ Style [TextAlign TextAlignOptions.Center ] ] [\r\n Controls.actionButton [ Title \"Edytuj\" ] \"fa fa-edit\" dispatch (Edit r.Id)\r\n str \" \"\r\n Controls.actionButton [ Title \"Pokoje\" ] \"fa fa-bed\" dispatch (ShowRooms (r.Id, r.Name, r.HasPaymentMethod))\r\n str \" \"\r\n Controls.actionButton [ Title \"Usuń\"; Data(\"toggle\", \"modal\"); Data(\"target\", \"#confirmResortDelete\") ] \"fa fa-remove\" dispatch (Remove r.Id)\r\n str \" \"\r\n if r.HasPaymentMethod then\r\n a [ Title \"Link do rezerwacji\"; Href <| sprintf \"/make-reservation?resort=%d\" r.Id; Target \"_blank\" ] [ i [ Class \"fa fa-calendar\" ] [] ]\r\n else\r\n span [ Style [ Color \"tomato\" ]; Title \"Link do rezerwacji jest niedostępny.\\nNie wprowadzono danych do przelewu bankowego.\" ] [ i [ Class \"fa fa-calendar\" ] [] ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n match model.Deletion with\r\n | ConfirmDelete (id, name) ->\r\n Modals.confirm\r\n \"confirmResortDelete\" \"Potwierdź\"\r\n (p [] [ str (sprintf \"Czy na pewno chcesz usunąć ośrodek %s?\" name) ])\r\n dispatch (RemoveConfirmed id)\r\n | CanNotDelete name ->\r\n Modals.info\r\n \"confirmResortDelete\"\r\n \"Błąd\"\r\n (p [] [ str (sprintf \"Nie można usunąć ośrodka %s. Należy najpierw usunąć wszystkie pokoje.\" name) ])\r\n | NoDeleteRequest ->\r\n Modals.info \"confirmResortDelete\" \"Info\" (p [] [ str \"Nie ma nic do usunięcia\" ])\r\n ]\r\n\r\n let update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | ResortsLoaded items ->\r\n model |> Model.WithSummaryList items, Cmd.none\r\n | PartnerReferenceLoaded resortId ->\r\n { model with\r\n PartnerReference = model.PartnerReference |> Option.map (fun pr -> { pr with ResortId = resortId })\r\n }, Cmd.none\r\n | UpdatePartnerReferredResort resortId ->\r\n model, updatePartnerReferenceCmd (model.PartnerReference.Value.Partner, model.PartnerReference.Value.Key, resortId)\r\n | DeletePartnerReference ->\r\n model, deletePartnerReferenceCmd (model.PartnerReference.Value.Partner, model.PartnerReference.Value.Key)\r\n | PartnerReferenceUpdated resortId ->\r\n { model with\r\n PartnerReference = model.PartnerReference |> Option.map (fun pr -> { pr with ResortId = resortId })\r\n }, Cmd.none\r\n | Remove id ->\r\n model, canDeleteResortCmd id\r\n | RemovalPossibilityChecked (id, possible) ->\r\n let newModel =\r\n { model with\r\n Deletion =\r\n model.Resorts\r\n |> List.tryFind (fun r -> r.Id = id)\r\n |> Option.map (fun r -> if possible then ConfirmDelete (id, r.Name) else CanNotDelete r.Name)\r\n |> Option.defaultValue NoDeleteRequest\r\n }\r\n newModel, Cmd.none\r\n | RemoveConfirmed id ->\r\n { model with Deletion = NoDeleteRequest }, deleteResortCmd id\r\n | ResortRemoved ->\r\n model, Cmd.batch <| getResortSummariesCmd :: (model.PartnerReference |> Option.map (fun pr -> getReferredResortIdCmd (pr.Partner, pr.Key)) |> Option.toList)\r\n | _ ->\r\n failwithf \"Invalid function: %A, %A\" msg model\r\n\r\ntype Msg =\r\n | FormMsg of ResortDetails.Msg\r\n | ListMsg of ResortList.Msg\r\n | RoomsMsg of Rooms.Msg\r\n | ShowError of string * ErrorInfo\r\n\r\n\r\ntype Submodel =\r\n | Items of ResortList.Model\r\n | Details of ResortDetails.Model\r\n | Rooms of Rooms.Model\r\n\r\ntype Model =\r\n {\r\n Submodel : Submodel\r\n PartnerKey : (string * string ) option\r\n }\r\n\r\nlet init(partnerKey: (string * string) option): Model * Cmd =\r\n let model, cmd = ResortList.init partnerKey\r\n { Submodel = Items model; PartnerKey = partnerKey }, Cmd.map ListMsg cmd\r\n \r\n\r\nlet view (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n Components.contentHeader \"Baza noclegowa\" \"\" \r\n div [ Class \"content\" ] [\r\n div [ Class \"row\" ] [\r\n div [ Class \"col-xs-12\" ] [\r\n match model.Submodel with\r\n | Items resorts -> ResortList.view resorts (ListMsg >> dispatch)\r\n | Details resort -> ResortDetails.view resort (FormMsg >> dispatch)\r\n | Rooms rooms -> Rooms.view rooms (RoomsMsg >> dispatch)\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\nlet update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg, model.Submodel with\r\n | ListMsg (ResortList.New partnerKey), Items _ ->\r\n { model with Submodel = Details (ResortDetails.Model.FromPartnerKey partnerKey) }, Cmd.none\r\n | ListMsg (ResortList.Edit resId), _ ->\r\n { model with Submodel = Details ResortDetails.Model.Empty }, Cmd.map FormMsg (ResortDetails.getResortCmd resId)\r\n | ListMsg (ResortList.ShowRooms (resortId, name, hasPaymentMethod)), _ ->\r\n { model with Submodel = Rooms Rooms.Model.Empty },\r\n Cmd.map (Rooms.ListMsg >> RoomsMsg) (Rooms.RoomList.getRoomSummariesCmd { Id = resortId; Name = name; HasPaymentMethod = hasPaymentMethod })\r\n | RoomsMsg Rooms.Close, _ \r\n | FormMsg ResortDetails.Close, _ ->\r\n let rlModel, rlCmd = ResortList.init model.PartnerKey\r\n { model with Submodel = Items rlModel }, Cmd.map ListMsg rlCmd\r\n | ListMsg (ResortList.ShowError (msg, err)), _\r\n | FormMsg (ResortDetails.ShowError (msg, err)), _ \r\n | RoomsMsg (Rooms.ShowError (msg, err)), _ ->\r\n model, Cmd.ofMsg (ShowError (msg, err))\r\n | FormMsg msg, Details details ->\r\n let dtModel, dtMsg = ResortDetails.update msg details \r\n { model with Submodel = Details dtModel }, Cmd.map FormMsg dtMsg\r\n | ListMsg msg, Items items ->\r\n let lsModel, lsMsg = ResortList.update msg items\r\n { model with Submodel = Items lsModel }, Cmd.map ListMsg lsMsg\r\n | RoomsMsg msg, Rooms rooms ->\r\n let rModel, rMsg = Rooms.update msg rooms\r\n { model with Submodel = Rooms rModel }, Cmd.map RoomsMsg rMsg\r\n | _, _ ->\r\n failwith \"Invalid function\"\r\n\r\n\r\n \r\n","namespace Shared\r\n\r\nopen System\r\n#if !FABLE_COMPILER\r\nopen SqlFun\r\n#endif\r\nopen Calculations\r\nopen Validation\r\nopen Resorts\r\nopen Rooms\r\nopen PaymentMethods\r\n\r\nmodule Reservations =\r\n\r\n type OrdererData = \r\n {\r\n OrdererId : int option\r\n FirstName : string\r\n LastName : string\r\n Email : string\r\n Phone : string\r\n }\r\n static member Empty =\r\n {\r\n OrdererId = None\r\n FirstName = \"\"\r\n LastName = \"\"\r\n Email = \"\"\r\n Phone = \"\"\r\n }\r\n\r\n type Arrangement = \r\n {\r\n Type : ArrangementType\r\n Units : int\r\n }\r\n \r\n []\r\n type BaseState =\r\n#if !FABLE_COMPILER\r\n | [] New = 1 \r\n | [] Confirmed = 2\r\n | [] Prepaid = 3\r\n | [] Completed = 4 \r\n | [] Cancelled = 5\r\n | [] Refused = 6\r\n#else\r\n | New = 1 \r\n | Confirmed = 2\r\n | Prepaid = 3\r\n | Completed = 4 \r\n | Cancelled = 5\r\n | Refused = 6\r\n#endif\r\n\r\n []\r\n type DetailedState =\r\n | New = 1\r\n | Confirmed = 2\r\n | Prepaid = 3\r\n | PrepaymentDelayed = 4\r\n | Paid = 5\r\n | StartsToday = 6\r\n | Pending = 7\r\n | FinishesToday = 8\r\n | Completed = 9\r\n | Cancelled = 10\r\n | Refused = 11\r\n\r\n type IReservationStateComponents =\r\n abstract member RSFrom: DateTime\r\n abstract member RSTo: DateTime\r\n abstract member RSBaseState: BaseState\r\n abstract member RSPrice: Derived\r\n abstract member RSPrepaymentDeadline: DateTime\r\n abstract member RSPayments: decimal\r\n abstract member RSPrepayment: Derived\r\n\r\n\r\n type Payment = \r\n {\r\n Amount: decimal\r\n PaidAt: DateTime\r\n }\r\n\r\n []\r\n type Party =\r\n#if !FABLE_COMPILER\r\n | [] Resort = 1\r\n | [] Guest = 2\r\n#else\r\n | Resort = 1\r\n | Guest = 2\r\n#endif\r\n\r\n type Message =\r\n {\r\n AddedAt : DateTime\r\n Party : Party\r\n Content : string\r\n }\r\n\r\n type Allocation =\r\n {\r\n Id : int\r\n RoomId : int\r\n Adults : Derived\r\n Children : int list\r\n Arrangements : Arrangement list\r\n Price : Derived\r\n }\r\n\r\n type Reservation = \r\n {\r\n Id : int\r\n ResortId : int\r\n Orderer : OrdererData\r\n From : DateTime\r\n To : DateTime\r\n Allocations : Allocation list\r\n Payments : Payment list\r\n Messages : Message list\r\n Notes : string\r\n Price : Derived\r\n PriceIsFixed : bool\r\n Prepayment : Derived\r\n PrepaymentIsFixed : bool\r\n PrepaymentDeadline : DateTime\r\n DeclaredArrival : DateTime option\r\n BaseState : BaseState\r\n DetailedState : DetailedState\r\n }\r\n static member Empty =\r\n {\r\n Id = 0\r\n ResortId = 0\r\n Orderer = OrdererData.Empty\r\n From = DateTime()\r\n To = DateTime()\r\n Allocations = []\r\n Payments = []\r\n Messages = []\r\n Notes = \"\"\r\n Price = Calculated 0m\r\n PriceIsFixed = false\r\n Prepayment = Calculated 0m\r\n PrepaymentIsFixed = false\r\n PrepaymentDeadline = DateTime()\r\n DeclaredArrival = None\r\n BaseState = BaseState.New\r\n DetailedState = DetailedState.New\r\n }\r\n member this.Adults = Derived.Calc(this.Allocations |> List.map (fun a -> a.Adults) |> Derived.ofList, List.sum)\r\n // TODO: remove after switching calculation tests to ReservationCalculationData\r\n interface IReservationStateComponents with\r\n member this.RSFrom = this.From\r\n member this.RSTo = this.To\r\n member this.RSBaseState = this.BaseState\r\n member this.RSPrice = this.Price\r\n member this.RSPrepayment = this.Prepayment\r\n member this.RSPrepaymentDeadline = this.PrepaymentDeadline\r\n member this.RSPayments = this.Payments |> List.sumBy (fun p -> p.Amount)\r\n\r\n\r\n type ReservationSummary = \r\n {\r\n Id : int\r\n ResortId : int\r\n Resort : string\r\n Rooms : (string * int) list\r\n From : DateTime\r\n To : DateTime\r\n FirstName : string\r\n LastName : string\r\n Email : string\r\n Phone : string\r\n Adults : int\r\n Children : int\r\n Price : decimal option\r\n Prepayment : decimal option\r\n PrepaymentDeadline : DateTime\r\n Payments : decimal\r\n DeclaredArrival : DateTime option\r\n BaseState : BaseState \r\n DetailedState : Derived\r\n }\r\n interface IReservationStateComponents with\r\n member this.RSFrom = this.From\r\n member this.RSTo = this.To\r\n member this.RSBaseState = this.BaseState\r\n member this.RSPrice = this.Price |> Option.map Calculated |> Option.defaultValue Uninitialised\r\n member this.RSPrepayment = this.Prepayment |> Option.map Calculated |> Option.defaultValue Uninitialised\r\n member this.RSPrepaymentDeadline = this.PrepaymentDeadline\r\n member this.RSPayments = this.Payments\r\n\r\n\r\n let calculateState (calcData: IReservationStateComponents, currentDate: DateTime) =\r\n Derived.Calc(calcData.RSPrice, calcData.RSPrepayment,\r\n fun price prepayment ->\r\n match calcData.RSBaseState with\r\n | BaseState.New ->\r\n DetailedState.New\r\n | BaseState.Confirmed ->\r\n if currentDate = calcData.RSFrom then // More important, than payment status\r\n DetailedState.StartsToday\r\n elif currentDate = calcData.RSTo then\r\n DetailedState.FinishesToday\r\n elif currentDate > calcData.RSFrom && currentDate < calcData.RSTo then\r\n DetailedState.Pending\r\n elif calcData.RSPayments >= price then \r\n DetailedState.Paid\r\n elif calcData.RSPayments >= prepayment then\r\n DetailedState.Prepaid\r\n elif currentDate > calcData.RSPrepaymentDeadline then \r\n DetailedState.PrepaymentDelayed\r\n else\r\n DetailedState.Confirmed\r\n | BaseState.Prepaid ->\r\n if currentDate = calcData.RSFrom then\r\n DetailedState.StartsToday\r\n elif currentDate = calcData.RSTo then\r\n DetailedState.FinishesToday\r\n elif currentDate > calcData.RSFrom && currentDate < calcData.RSTo then\r\n DetailedState.Pending\r\n elif calcData.RSPayments >= price then \r\n DetailedState.Paid\r\n else\r\n DetailedState.Prepaid\r\n | BaseState.Completed ->\r\n DetailedState.Completed\r\n | BaseState.Cancelled ->\r\n DetailedState.Cancelled\r\n | BaseState.Refused ->\r\n DetailedState.Refused\r\n | s ->\r\n failwithf \"Invalid reservation state: %A\" s)\r\n \r\n\r\n type ReservationCalculationData =\r\n {\r\n From : DateTime\r\n To : DateTime\r\n Allocations : Allocation list\r\n Payments : Payment list\r\n Price : Derived\r\n Prepayment : Derived\r\n PrepaymentDeadline : DateTime\r\n BaseState : BaseState\r\n DetailedState : Derived\r\n }\r\n static member FromReservation (reservation: Reservation) =\r\n {\r\n From = reservation.From\r\n To = reservation.To\r\n Allocations = reservation.Allocations\r\n Payments = reservation.Payments\r\n Price = reservation.Price\r\n Prepayment = reservation.Prepayment\r\n PrepaymentDeadline = reservation.PrepaymentDeadline\r\n BaseState = reservation.BaseState\r\n DetailedState = Calculated reservation.DetailedState\r\n }\r\n static member UpdateReservation (reservation: Reservation) (data: ReservationCalculationData) =\r\n { reservation with\r\n Price = data.Price\r\n Prepayment = data.Prepayment\r\n BaseState = data.BaseState\r\n PrepaymentDeadline = data.PrepaymentDeadline\r\n DetailedState = data.DetailedState.Value \r\n }\r\n interface IReservationStateComponents with\r\n member this.RSFrom = this.From\r\n member this.RSTo = this.To\r\n member this.RSBaseState = this.BaseState\r\n member this.RSPrice = this.Price\r\n member this.RSPrepayment = this.Prepayment\r\n member this.RSPrepaymentDeadline = this.PrepaymentDeadline\r\n member this.RSPayments = this.Payments |> List.sumBy (fun p -> p.Amount)\r\n \r\n\r\n let updateState (date: DateTime) (rs: ReservationSummary) =\r\n { rs with\r\n DetailedState = calculateState (rs, date)\r\n }\r\n\r\n let pricingsByAge (pricings: AgeGroupPricing list, defaultPricing: AgeGroupPricing) (children: int list) = \r\n [ for age in children do\r\n yield pricings |> List.tryFind (fun p -> p.AgeTo >= age) |> Option.defaultValue defaultPricing\r\n ]\r\n\r\n let paidChildren (children: int list, ageGroups: AgeGroupPricing list) =\r\n children\r\n |> List.filter (fun age -> ageGroups |> List.forall (fun ag -> ag.AgeTo < age || ag.ShortTimePrice.Value > 0m || ag.LongTimePrice.Value > 0m))\r\n |> List.length\r\n\r\n let fullyPaidChildren (children: int list, ageGroups: AgeGroupPricing list) =\r\n children\r\n |> List.filter (fun age -> ageGroups |> List.forall (fun ag -> ag.AgeTo < age))\r\n |> List.length\r\n\r\n let updateOccupancies (reservation: Reservation) (room: Room) = \r\n { room with\r\n Occupancies =\r\n [ for o in room.Occupancies do\r\n if o.ReservationId <> reservation.Id then\r\n yield o\r\n for a in reservation.Allocations do\r\n if a.RoomId = room.Id then\r\n yield { ReservationId = reservation.Id; From = reservation.From; To = reservation.To }\r\n ]\r\n |> List.sortBy (fun o -> o.From) \r\n }\r\n\r\n let getMaxAllocationCount (resFrom: DateTime, resTo: DateTime) (room: Room) =\r\n [ for u in room.Unavailabilities do\r\n if u.From <= resTo && u.To >= resFrom then\r\n yield u.From, 1\r\n yield u.To.AddDays(1.0), -1\r\n for o in room.Occupancies do \r\n if o.From < resTo && o.To > resFrom then\r\n yield o.From.AddHours(18.0), 1\r\n yield o.To.AddHours(14.0), -1\r\n ]\r\n |> List.groupBy fst\r\n |> List.sortBy fst\r\n |> List.map (snd >> List.sumBy snd)\r\n |> List.scan (+) 0\r\n |> List.max\r\n\r\n let getRoomAvalability (resFrom: DateTime, resTo: DateTime) (room: Room) =\r\n let allocs = room |> getMaxAllocationCount (resFrom, resTo)\r\n room.Volume - allocs \r\n\r\n let roomIsAvailable (resort: Resort, resFrom: DateTime, resTo: DateTime) (room: Room) = \r\n if resort.Unavailabilities |> List.exists (fun u -> u.From <= resTo && u.To >= resFrom) then\r\n false\r\n else\r\n let av = room |> getRoomAvalability (resFrom, resTo)\r\n av > 0\r\n\r\n let roomIsCorrectlyAllocated (resort: Resort, room: Room) (reservation: Reservation) =\r\n if resort.Unavailabilities |> List.exists (fun u -> u.From <= reservation.To && u.To >= reservation.From) then\r\n false\r\n else\r\n room |> getRoomAvalability (reservation.From, reservation.To) >= 0\r\n\r\n let monthDiff (d1: DateTime, d2: DateTime) =\r\n (d2.Month - d1.Month + 12) % 12 \r\n\r\n let roomById roomId (rooms: Room list) =\r\n rooms |> List.find (fun r -> r.Id = roomId)\r\n\r\n let validateReservation (resort: Resort, rooms: Room list, currentDate: DateTime) (reservation: Reservation) = \r\n [\r\n if reservation.From >= reservation.To then\r\n yield \"From\", \"Niepoprawny termin rezerwacji - data wyjazdu musi być późniejsza, niż data przyjazdu\"\r\n\r\n if resort.MaxRentalTime |> Option.map (fun t -> t < int((reservation.To - reservation.From).TotalDays)) |> Option.defaultValue false then\r\n yield \"From\", sprintf \"Zbyt długi okres wynajmu. Maksymalny czas wynajmu wynosi %d dni.\" resort.MaxRentalTime.Value\r\n\r\n if resort.MaxRentalAdvance |> Option.map (fun t -> t < monthDiff(currentDate, reservation.From)) |> Option.defaultValue false then\r\n yield \"From\", sprintf \"Zbyt odległy termin rezerwacji. Maksymalne wyprzedzenie wynosi %d mies.\" resort.MaxRentalAdvance.Value\r\n\r\n for room in reservation.Allocations |> List.map (fun a -> rooms |> roomById a.RoomId) |> List.distinct do\r\n if not (reservation |> roomIsCorrectlyAllocated(resort, room)) then\r\n yield \"From\", sprintf \"'%s' jest niedostępny w podanym terminie\" room.Name\r\n \r\n yield! checkEmpty \"Imię\" \"e\" reservation.Orderer.FirstName |> forField \"FirstName\"\r\n yield! checkEmpty \"Nazwisko\" \"e\" reservation.Orderer.LastName |> forField \"LastName\"\r\n yield! checkEmpty \"Telefon\" \"y\" reservation.Orderer.Phone |> forField \"Phone\"\r\n yield! checkEmpty \"Email\" \"y\" reservation.Orderer.Email |> forField \"Email\"\r\n\r\n for allocation, i in Seq.zip reservation.Allocations (Seq.initInfinite id) do\r\n\r\n for age in allocation.Children do\r\n yield! checkInt \"Wiek dziecka\" (Some 0) None age |> forField (sprintf \"Children%d\" i)\r\n\r\n let room = rooms |> roomById allocation.RoomId\r\n\r\n let utilisation =\r\n allocation.Adults.Value + \r\n fullyPaidChildren (\r\n allocation.Children,\r\n room.AgeGroupPricings @ (room.PriceLists |> List.collect (fun pl -> pl.AgeGroupPricings)))\r\n \r\n yield! checkInt \"Liczba osób (dorośli + dzieci)\" (Some 1) (Some (room.Capacity + room.AdditionalCapacity)) utilisation |> forField (sprintf \"Capacity%d\" i)\r\n \r\n for a in allocation.Arrangements do\r\n yield! checkInt (sprintf \"Liczba dodatków %s\" a.Type.Description) (Some 1) None a.Units |> forField (sprintf \"Arrangements%d\" i)\r\n\r\n let suitableVariants = \r\n [ for v in room.ArrangementVariants do\r\n let incapable = \r\n allocation.Arrangements\r\n |> joinMatching v.Availabilities (fun a a' -> a.Type.Id = a'.Type.Id)\r\n |> List.tryFind (fun (a, a') -> a' |> Option.map (fun a' -> a.Units > a'.AvailableUnits) |> Option.defaultValue true)\r\n if Option.isNone incapable then\r\n yield v\r\n ]\r\n\r\n if allocation.Arrangements.Length > 0 && suitableVariants.Length = 0 then\r\n yield (sprintf \"ArrangementVariants%d\" i), \"Wybór lub liczebność dodatków jest nieprawidłowa\"\r\n ]\r\n\r\n\r\n let calculatePricePart\r\n (rooms: Room list,\r\n calcData: ReservationCalculationData,\r\n dateFrom: DateTime,\r\n dateTo: DateTime,\r\n useLongTimePrice: bool,\r\n priceList: PriceList option)\r\n =\r\n [ for allocation in calcData.Allocations do\r\n let room = rooms |> roomById allocation.RoomId\r\n let shortTimePrice, longTimePrice, shortEmptySpacePrice, longEmptySpacePrice, ageGroups =\r\n match priceList with\r\n | Some pl -> pl.ShortTimePrice, pl.LongTimePrice, pl.ShortEmptySpacePrice, pl.LongEmptySpacePrice, pl.AgeGroupPricings\r\n | None -> Calculated room.ShortTimePrice, Calculated room.LongTimePrice, room.ShortEmptySpacePrice, room.LongEmptySpacePrice, room.AgeGroupPricings\r\n\r\n room.Id,\r\n Derived.Calc(shortTimePrice, longTimePrice, shortEmptySpacePrice, longEmptySpacePrice, allocation.Adults,\r\n fun shortTimePrice longTimePrice shortEmptySpacePrice longEmptySpacePrice adults -> \r\n let days = Math.Round((dateTo - dateFrom).TotalDays) |> int\r\n let adults = (if useLongTimePrice then longTimePrice else shortTimePrice) * decimal(adults)\r\n let adultPricing: AgeGroupPricing = { \r\n AgeTo = 0\r\n ShortTimePrice = Overwritten shortTimePrice\r\n LongTimePrice = Overwritten longTimePrice\r\n }\r\n\r\n let children = \r\n allocation.Children\r\n |> pricingsByAge (ageGroups, adultPricing)\r\n |> List.map (fun p -> if useLongTimePrice then p.LongTimePrice.Value else p.ShortTimePrice.Value)\r\n |> List.sum\r\n let basePrice = (adults + children) * decimal(days)\r\n \r\n let utilisation = allocation.Adults.Value + paidChildren (allocation.Children, ageGroups)\r\n let emptySpacePrice = if useLongTimePrice then longEmptySpacePrice else shortEmptySpacePrice\r\n let emptySpace =\r\n if utilisation < room.Capacity then // because of AdditionalCapacity\r\n decimal(room.Capacity - utilisation) * emptySpacePrice * decimal(days)\r\n else\r\n 0m\r\n\r\n let arrangements = \r\n allocation.Arrangements\r\n |> joinMatching room.Arrangements (fun a a' -> a.Type.Id = a'.Type.Id)\r\n |> List.map (fun (ra, a) -> a |> Option.map (fun a -> a.PayType, a.ExtraCharge * decimal(ra.Units)))\r\n |> List.choose id\r\n let paidOnce = arrangements |> List.filter (fst >> (=) PayType.Once) |> List.sumBy snd\r\n let paidPerDay = (arrangements |> List.filter (fst >> (=) PayType.PerDay) |> List.sumBy snd) * decimal(days)\r\n \r\n basePrice + paidOnce + paidPerDay + emptySpace)\r\n ]\r\n \r\n let mergeParts (part1: (int * Derived) list, part2: (int * Derived) list) =\r\n [ for roomId, price1 in part1 do\r\n let price2 = part2 |> List.tryFind (fst >> (=) roomId) |> Option.map snd\r\n roomId, price2 |> Option.map (fun p2 -> Derived.Calc(price1, p2, (+))) |> Option.defaultValue price1\r\n ]\r\n\r\n let rec calculateParts\r\n (rooms: Room list,\r\n calcData: ReservationCalculationData,\r\n involvedPriceLists: (ApplicationScope * PriceList) list,\r\n dateFrom: DateTime,\r\n dateTo: DateTime,\r\n useLongTimePrice: bool)\r\n =\r\n match involvedPriceLists with\r\n | [] ->\r\n calculatePricePart (rooms, calcData, dateFrom, dateTo, useLongTimePrice, None)\r\n | (scope, pl) :: further ->\r\n if dateFrom < scope.From then\r\n let part = calculatePricePart (rooms, calcData, dateFrom, scope.From, useLongTimePrice, None)\r\n let furtherParts = calculateParts (rooms, calcData, involvedPriceLists, scope.From, dateTo, useLongTimePrice)\r\n mergeParts(part, furtherParts)\r\n elif dateFrom >= scope.From && dateTo <= scope.To then\r\n let part = calculatePricePart (rooms, calcData, dateFrom, dateTo, useLongTimePrice, Some pl)\r\n part\r\n elif dateFrom >= scope.From && dateTo > scope.To then\r\n let part = calculatePricePart (rooms, calcData, dateFrom, scope.To.AddDays(1.0), useLongTimePrice, Some pl)\r\n let furtherParts = calculateParts (rooms, calcData, further, scope.To.AddDays(1.0), dateTo, useLongTimePrice)\r\n mergeParts(part, furtherParts)\r\n else\r\n failwith \"Should never happen\"\r\n\r\n let ofYear year (date: DateTime) = \r\n if DateTime.IsLeapYear year && date.Month = 2 && date.Day = 29 then\r\n DateTime(year, 2, 28)\r\n else\r\n DateTime(year, date.Month, date.Day)\r\n\r\n let preparePriceListTemplates(resort, yearFrom, yearTo) =\r\n { resort with\r\n PriceListTemplates =\r\n [ for year in yearFrom..yearTo do\r\n for pt in resort.PriceListTemplates do\r\n { pt with\r\n Scopes =\r\n [ for s in pt.Scopes do\r\n { s with From = s.From |> ofYear year; To = s.To |> ofYear year }\r\n ]\r\n }\r\n ]\r\n }\r\n\r\n let calculateAllocationPrices (resort: Resort, rooms: Room list) (calcData: ReservationCalculationData) =\r\n let resort = preparePriceListTemplates(resort, calcData.From.Year, calcData.To.Year)\r\n let involvedPriceLists =\r\n [ for a in calcData.Allocations do\r\n let room = rooms |> roomById a.RoomId\r\n for pl in room.PriceLists do\r\n for sc in (resort.PriceListTemplates |> List.find (fun t -> t.Id = pl.TemplateId)).Scopes do\r\n if sc.To >= calcData.From && sc.From <= calcData.To then\r\n yield sc, pl\r\n ]\r\n |> List.distinct\r\n |> List.sortBy fst\r\n let useLongTimePrice = (calcData.To - calcData.From).TotalDays > float(resort.ShortTime)\r\n calculateParts (rooms, calcData, involvedPriceLists, calcData.From, calcData.To, useLongTimePrice)\r\n\r\n let calculatePrepayment (resort: Resort, rooms: Room list) (allocationPrices: (int * Derived) list) =\r\n let allocationPrepayments = \r\n [ for roomId, price in allocationPrices do\r\n let room = rooms |> roomById roomId\r\n Derived.Calc(price, room.PrepaymentPercentage, fun price percentage -> price * decimal(percentage) / 100m)\r\n ]\r\n |> Derived.ofList\r\n Derived.Calc(allocationPrepayments, List.sum)\r\n\r\n let calculateReservation (resort: Resort, rooms: Room list, date: DateTime) (calcData: ReservationCalculationData) =\r\n let prices = calcData |> calculateAllocationPrices (resort, rooms)\r\n let price = Derived.Calc(prices |> List.map snd |> Derived.ofList, List.sum)\r\n let autoConfirm = calcData.BaseState = BaseState.New && resort.AutoConfirm\r\n let temp = \r\n { calcData with\r\n Price = calcData.Price |> Derived.Update price\r\n Prepayment = calcData.Prepayment |> Derived.Update (prices |> calculatePrepayment (resort, rooms))\r\n PrepaymentDeadline = if calcData.BaseState = BaseState.New then\r\n date.AddDays(float(resort.PrepaymentWaitPeriod))\r\n else\r\n calcData.PrepaymentDeadline\r\n BaseState = if autoConfirm then BaseState.Confirmed else calcData.BaseState\r\n }\r\n { temp with DetailedState = calculateState (temp, date) }\r\n\r\n let recalcReservation (resort: Resort, rooms: Room list, date: DateTime) (reservation: Reservation) =\r\n reservation\r\n |> ReservationCalculationData.FromReservation\r\n |> calculateReservation (resort, rooms, date)\r\n |> ReservationCalculationData.UpdateReservation reservation\r\n\r\n let childrenOccupancy (room: Room, children: int list) =\r\n children\r\n |> List.filter (fun age -> room.AgeGroupPricings |> List.forall (fun p -> p.AgeTo < age || p.LongTimePrice.Value <> 0m))\r\n |> List.length\r\n \r\n\r\n let baseFilterRooms (resort: Resort, dateFrom: DateTime, dateTo: DateTime, days: int, adults: int option, children: int list) (rooms: Room list) =\r\n let filteredByCapacity =\r\n adults\r\n |> Option.map (fun a -> rooms |> List.filter (fun r -> r.Capacity + r.AdditionalCapacity >= a + childrenOccupancy(r, children)))\r\n |> Option.defaultValue rooms\r\n if days = 0 then\r\n filteredByCapacity |> List.map (fun r -> r, [ dateFrom, dateTo ])\r\n else\r\n [ for d in 0..int(Math.Round(dateTo.Subtract(dateFrom).TotalDays)) - days do\r\n let df = dateFrom.AddDays (float(d))\r\n let dt = dateFrom.AddDays (float(d + days))\r\n for r in filteredByCapacity do\r\n if r |> roomIsAvailable(resort, df, dt) then\r\n r, (df, dt)\r\n ]\r\n |> List.groupBy fst\r\n |> List.map (fun (r, ps) -> r, ps |> List.map snd)\r\n\r\n let rec aggregatePeriods (periods: (DateTime * DateTime) list) =\r\n match periods with\r\n | [] -> []\r\n | (df, dt) :: rest ->\r\n let ovl, nonovl = rest |> List.partition (fst >> (>=) dt)\r\n if List.isEmpty ovl then\r\n (df, dt) :: (aggregatePeriods nonovl)\r\n else\r\n aggregatePeriods ((df, ovl |> List.map snd |> List.max) :: aggregatePeriods nonovl)\r\n\r\n let estimatePrice (resort: Resort, room: Room, adults: int, children: int list) (dateFrom: DateTime, dateTo: DateTime) =\r\n let calcData =\r\n {\r\n From = dateFrom\r\n To = dateTo\r\n Allocations = [\r\n {\r\n Id = 0\r\n RoomId = room.Id\r\n Adults = Calculated adults\r\n Children = children\r\n Arrangements = []\r\n Price = Uninitialised\r\n }\r\n ]\r\n Payments = []\r\n Price = Uninitialised\r\n Prepayment = Uninitialised\r\n PrepaymentDeadline = DateTime()\r\n BaseState = BaseState.New\r\n DetailedState = Calculated DetailedState.New\r\n }\r\n\r\n Derived.Calc(\r\n calcData |> calculateAllocationPrices (resort, [ room |> recalcRoom resort ])\r\n |> List.map snd\r\n |> Derived.ofList,\r\n List.sum)\r\n\r\n\r\n let filterRooms\r\n (resort: Resort, dateFrom: DateTime, dateTo: DateTime, days: int)\r\n (rooms: Room list) =\r\n rooms\r\n |> baseFilterRooms (resort, dateFrom, dateTo, days, None, [])\r\n |> List.map (fun (r, avail) -> r, aggregatePeriods avail)\r\n \r\n let filterAndPriceRooms\r\n (resort: Resort, dateFrom: DateTime, dateTo: DateTime, days: int, adults: int, children: int list)\r\n (rooms: Room list) =\r\n rooms\r\n |> baseFilterRooms (resort, dateFrom, dateTo, days, Some adults, children)\r\n |> List.map (fun (r, avail) ->\r\n let prices = avail |> List.map (estimatePrice (resort, r, adults, children))\r\n r, \r\n prices |> List.min,\r\n prices |> List.max,\r\n aggregatePeriods avail)\r\n\r\n let validateFilter (resort: Resort, currentDate: DateTime, dateFrom: DateTime, dateTo: DateTime, days: int) =\r\n [\r\n if resort.MaxRentalTime |> Option.map ((>) days) |> Option.defaultValue false then\r\n yield \"Days\", sprintf \"Zbyt długi okres wynajmu. Maksymalny czas wynajmu wynosi %d dni.\" resort.MaxRentalTime.Value\r\n\r\n if days > int(Math.Round((dateTo - dateFrom).TotalDays)) then\r\n yield \"Days\", \"Zadeklarowana liczba dni nie może przekraczać liczby dni pomiedzy datą rozpoczęcia a datą zakończenia\"\r\n\r\n if resort.MaxRentalAdvance |> Option.map ((>) (monthDiff(currentDate, dateFrom))) |> Option.defaultValue false then\r\n yield \"From\", sprintf \"Zbyt odległy termin rezerwacji. Maksymalne wyprzedzenie wynosi %d mies.\" resort.MaxRentalAdvance.Value\r\n ]\r\n\r\n type IOwnerReservationApi =\r\n {\r\n GetOwnerReservationSummaries : bool -> Async\r\n GetResortReservationSummaries : int * bool -> Async\r\n GetRoomReservationSummaries : int * bool -> Async\r\n GetReservation : int -> Async\r\n SaveReservation : Reservation -> Async\r\n ConfirmReservation : Reservation * int -> Async\r\n AcceptPrepayment : Reservation -> Async\r\n RefuseReservation : Reservation -> Async\r\n WarnOnPrepaymentDelay : int -> Async\r\n }\r\n\r\n type IOrdererReservationApi =\r\n {\r\n GetReservation : int * Guid -> Async\r\n GetRoom : int -> Async\r\n GetResort : int -> Async\r\n GetResortByPartnerKey : string * string -> Async\r\n SaveReservation : Reservation * Guid -> Async\r\n SendMessage : int * string * Guid -> Async\r\n CancelReservation : int * string * Guid -> Async\r\n }","module Reservations\r\n\r\nopen System\r\nopen Elmish\r\nopen Fable.React\r\nopen Fable.React.Props\r\nopen Fable.Remoting.Client\r\nopen Commons\r\nopen Commons.Reservations\r\nopen Shared\r\nopen Shared.Reservations\r\nopen Shared.Resorts\r\nopen Shared.Rooms\r\nopen Calculations\r\nopen Fable.Core\r\nopen Shared.ServerError\r\n\r\n\r\nlet reservationApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\n\r\n[]\r\ntype Parent =\r\n | Owner\r\n | Room of int * string\r\n | Resort of int * string\r\n\r\n\r\nmodule ReservationDetails =\r\n\r\n type Msg =\r\n | ReservationDetailsLoaded of Reservation * Resort * Room list\r\n | PaymentVisibilityChanged\r\n | PriceChanged of string\r\n | PrepaymentChanged of string\r\n | NewPaymentChanged of string\r\n | NewPaymentDateChanged of DateTime\r\n | RemovePayment of Payment\r\n | NewMessageChanged of string\r\n | NotesChanged of string\r\n | Save\r\n | Close\r\n | Confirm\r\n | AcceptPrepayment\r\n | Refuse\r\n | ShowError of string * ErrorInfo\r\n\r\n type Model =\r\n {\r\n Reservation : Reservation\r\n Resort : Resort\r\n Rooms : Room list\r\n Price : Derived\r\n PriceErrors : string list\r\n Prepayment : Derived\r\n PrepaymentErrors : string list\r\n ShowPayments : bool\r\n Payments : Payment list\r\n NewPaymentDate : DateTime\r\n NewPayment : string\r\n NewPaymentErrors : string list\r\n Notes : string\r\n NewMessage : string\r\n NewMessageErrors : string list\r\n }\r\n // TODO: restoring single-room reservations\r\n member this.Adults =\r\n Derived.Calc(this.Reservation.Allocations |> List.map (fun a -> a.Adults) |> Derived.ofList, List.sum)\r\n member this.Children =\r\n this.Reservation.Allocations |> List.collect (fun a -> a.Children)\r\n member this.Arrangements =\r\n this.Reservation.Allocations |> List.collect (fun a -> a.Arrangements)\r\n static member Empty =\r\n {\r\n Reservation = Reservation.Empty\r\n Resort = Resort.Empty\r\n Rooms = []\r\n Price = Calculated \"\"\r\n PriceErrors = []\r\n Prepayment = Calculated \"\"\r\n PrepaymentErrors = []\r\n ShowPayments = false\r\n Payments = []\r\n NewPaymentDate = DateTime.Today\r\n NewPayment = \"\"\r\n NewPaymentErrors = []\r\n Notes = \"\"\r\n NewMessage = \"\"\r\n NewMessageErrors = []\r\n }\r\n static member init (reservation, resort, rooms) = \r\n {\r\n Reservation = reservation\r\n Resort = resort\r\n Rooms = rooms |> List.map (recalcRoom resort)\r\n Price = (if reservation.PriceIsFixed then Overwritten else Calculated) (Decimal.format 2 reservation.Price.Value)\r\n PriceErrors = []\r\n Prepayment = (if reservation.PrepaymentIsFixed then Overwritten else Calculated) (Decimal.format 2 reservation.Prepayment.Value)\r\n PrepaymentErrors = []\r\n ShowPayments = false\r\n Payments = reservation.Payments\r\n NewPaymentDate = DateTime.Today\r\n NewPayment = \"\"\r\n NewPaymentErrors = []\r\n Notes = reservation.Notes\r\n NewMessage = \"\"\r\n NewMessageErrors = []\r\n }\r\n static member Recalc (model: Model) =\r\n let prices = \r\n { model.Reservation with Price = Calculated 0.0m }\r\n |> ReservationCalculationData.FromReservation \r\n |> calculateAllocationPrices (model.Resort, model.Rooms) \r\n { model with\r\n Price =\r\n model.Price |> Derived.Update (\r\n Derived.Calc(prices |> List.map snd |> Derived.ofList, List.sum)|> Derived.Format) \r\n Prepayment =\r\n model.Prepayment |> Derived.Update (\r\n prices \r\n |> calculatePrepayment (model.Resort, model.Rooms)\r\n |> Derived.Format)\r\n }\r\n static member Validate (model: Model) =\r\n [\r\n yield! Validation.checkIfDerivedValidDecimal \"Cena\" model.Price |> Validation.forField \"Price\"\r\n yield! Validation.checkIfDerivedValidDecimal \"Zaliczka\" model.Prepayment |> Validation.forField \"Prepayment\"\r\n yield! Validation.checkIfValidOrEmptyDecimal \"Nowa wpłata\" model.NewPayment |> Validation.forField \"NewPayment\"\r\n ]\r\n static member WithErrors (errors: (string * string) list) (model: Model) =\r\n { model with\r\n PriceErrors = errors |> Validation.getErrorsOf \"Price\"\r\n PrepaymentErrors = errors |> Validation.getErrorsOf \"Prepayment\"\r\n NewPaymentErrors = errors |> Validation.getErrorsOf \"NewPayment\"\r\n NewMessageErrors = errors |> Validation.getErrorsOf \"NewMessage\"\r\n }\r\n\r\n let getReservationCmd reservationId =\r\n Cmd.OfAsync.either id (reservationApi.GetReservation reservationId) ReservationDetailsLoaded (ErrorHandling.unpack ShowError \"Nie udało się wczytać rezerwacji.\")\r\n\r\n let saveReservationCmd reservation =\r\n Cmd.OfAsync.either id (reservationApi.SaveReservation reservation) (fun _ -> Close) (ErrorHandling.unpack ShowError \"Nie udało się zapisać zmian.\")\r\n\r\n let refuseReservationCmd reservation =\r\n Cmd.OfAsync.either id (reservationApi.RefuseReservation reservation) (fun _ -> Close) (ErrorHandling.unpack ShowError \"Nie udało się odrzucić rezerwacji.\")\r\n\r\n let acceptPrepaymentCmd reservation =\r\n Cmd.OfAsync.either id (reservationApi.AcceptPrepayment reservation) (fun _ -> Close) (ErrorHandling.unpack ShowError \"Nie udało się zaakceptować zaliczki.\")\r\n \r\n let confirmReservationCmd waitPeriod reservation =\r\n Cmd.OfAsync.either id (reservationApi.ConfirmReservation(reservation, waitPeriod)) (fun _ -> Close) (ErrorHandling.unpack ShowError \"Nie udało się zatwierdzić rezerwacji.\")\r\n\r\n\r\n let updateReservation (model: Model) =\r\n { model.Reservation with\r\n DeclaredArrival = model.Reservation.DeclaredArrival |> Option.map (fun d -> System.DateTime(d.Ticks, DateTimeKind.Utc))\r\n Price = Overwritten (model.Price.Value |> Decimal.Parse)\r\n PriceIsFixed = Derived.IsOverwritten model.Price\r\n Prepayment = Overwritten (model.Prepayment.Value |> Decimal.Parse)\r\n PrepaymentIsFixed = Derived.IsOverwritten model.Prepayment\r\n Payments =\r\n model.Payments @ \r\n if Validation.isValidDecimal model.NewPayment then\r\n [ { PaidAt = model.NewPaymentDate; Amount = Decimal.Parse model.NewPayment } ]\r\n else\r\n []\r\n Messages =\r\n model.Reservation.Messages @\r\n if not (String.IsNullOrWhiteSpace model.NewMessage) then\r\n [ { AddedAt = DateTime.Now; Party = Party.Resort; Content = model.NewMessage } ]\r\n else\r\n []\r\n Notes = model.Notes\r\n }\r\n\r\n let validateAndRun (model: Model) cmd =\r\n let errors = Model.Validate model\r\n if not errors.IsEmpty then\r\n model |> Model.WithErrors errors, Cmd.none\r\n else\r\n model, cmd (updateReservation model)\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | ReservationDetailsLoaded (reservation, resort, rooms) ->\r\n let rrooms = rooms |> List.map (recalcRoom resort)\r\n let rres = reservation |> recalcReservation(resort, rrooms, DateTime.Today)\r\n Model.init (rres, resort, rooms), Cmd.none \r\n | PaymentVisibilityChanged ->\r\n { model with ShowPayments = not model.ShowPayments }, Cmd.none\r\n | PriceChanged pr ->\r\n { model with Price = pr |> Derived.OfString \r\n } |> Model.Recalc, Cmd.none\r\n | PrepaymentChanged prp -> \r\n { model with Prepayment = prp |> Derived.OfString \r\n } |> Model.Recalc, Cmd.none\r\n | NewPaymentChanged pmt ->\r\n { model with NewPayment = pmt }, Cmd.none\r\n | NewPaymentDateChanged dt ->\r\n { model with NewPaymentDate = dt }, Cmd.none\r\n | RemovePayment p ->\r\n { model with Payments = model.Payments |> List.filter ((<>) p)\r\n } |> Model.Recalc, Cmd.none\r\n | NewMessageChanged cmt ->\r\n { model with NewMessage = cmt }, Cmd.none\r\n | NotesChanged notes ->\r\n { model with Notes = notes }, Cmd.none\r\n | Save ->\r\n validateAndRun model saveReservationCmd \r\n | Confirm ->\r\n validateAndRun model (confirmReservationCmd model.Resort.PrepaymentWaitPeriod)\r\n | AcceptPrepayment ->\r\n validateAndRun model acceptPrepaymentCmd\r\n | Refuse ->\r\n if String.IsNullOrEmpty model.NewMessage then\r\n { model with NewMessageErrors = [\"Odrzucenie rezerwacji wymaga wyjaśnienia\"] }, Cmd.none\r\n else\r\n validateAndRun model refuseReservationCmd\r\n\r\n\r\n let adultsLabel num =\r\n match num % 10 with\r\n | 1 when num = 1 -> \"osoba dorosła\"\r\n | 2 | 3 | 4 -> \"osoby dorosłe\"\r\n | _ -> \"osób doroslych\"\r\n\r\n let childrenLabel ageList =\r\n match ageList |> List.last with\r\n | 1 -> \"rok\"\r\n | 2 | 3 | 4 -> \"lata\"\r\n | _ -> \"lat\"\r\n\r\n let reservationInfo model =\r\n div [ Class \"col-xs-6\" ] [\r\n div [ Class \"table-responsive\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Termin:\" ]\r\n td [] [ str <| model.Reservation.From.ToString(\"dd.MM.yyyy\") + \" - \" + model.Reservation.To.ToString(\"dd.MM.yyyy\") ]\r\n ]\r\n for a in model.Reservation.Allocations do\r\n let room = model.Rooms |> roomById a.RoomId\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| room.RoomType.SingularNominative + \":\" ]\r\n td [] [ str room.Name ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Liczba gości:\" ]\r\n td [] [\r\n span [] [str <| sprintf \"%s %s\" (Derived.ToString a.Adults) (Derived.ToString (Derived.Calc(a.Adults, adultsLabel))) ]\r\n if not a.Children.IsEmpty then\r\n span [] [ str <| sprintf \", dzieci: %s %s\" (a.Children |> List.map string |> String.concat \", \") (childrenLabel a.Children) ]\r\n ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Dodatki:\" ]\r\n td [] [\r\n if a.Arrangements.IsEmpty then\r\n str \"Nic nie wybrano\"\r\n else\r\n for ar in a.Arrangements do\r\n span [] [ str <| sprintf \"%s (%d)\" ar.Type.Description ar.Units ]\r\n br []\r\n ]\r\n ]\r\n ]\r\n ]\r\n ] \r\n ]\r\n\r\n let ordererInfo model =\r\n div [ Class \"col-xs-6\" ] [\r\n div [ Class \"table-responsive\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n let orderer = model.Reservation.Orderer\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Zamawiający:\" ]\r\n td [] [ str <| orderer.FirstName + \" \" + orderer.LastName ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Telefon:\" ]\r\n td [] [ a [ Href (\"callto:\" + orderer.Phone) ] [str orderer.Phone ] ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Email:\" ]\r\n td [] [ a [Href (\"mailto:\" + orderer.Email) ] [ str orderer.Email ] ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Godzina przyjazdu:\" ]\r\n td [] [ str (model.Reservation.DeclaredArrival |> Option.map (fun t -> t.ToString(\"HH:mm\")) |> Option.defaultValue \"\") ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n let paymentForm model dispatch =\r\n div [ Class \"col-xs-6\" ] [\r\n form [ Class \"form-horizontal\"] [\r\n\r\n div [Class \"row\"] [\r\n div [ Class \"col-xs-6\" ] [\r\n Forms.formGroup (not model.PriceErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-6\" \"col-sm-6\" \"price\" \"Cena:\" 9.0 \r\n (Derived.ToTag id \"\" model.Price)\r\n (Forms.errorsBelow model.PriceErrors)\r\n (Event.str dispatch PriceChanged)\r\n Forms.formGroup (not model.PrepaymentErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-6\" \"col-sm-6\" \"prepayment\" \"Zaliczka:\" 9.0 \r\n (Derived.ToTag id \"\" model.Prepayment)\r\n (Forms.errorsBelow model.PrepaymentErrors)\r\n (Event.str dispatch PrepaymentChanged)\r\n ]\r\n \r\n div [ Class \"col-xs-6\" ] [\r\n\r\n table [Class \"table\"] [\r\n tbody [] [\r\n tr [] [\r\n th [] [ str \"Wpłacono:\" ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\r\n str <| sprintf \"%s zł\" (Decimal.format 2 (model.Payments |> List.sumBy (fun p -> p.Amount)))\r\n ]\r\n td [] [\r\n Controls.actionButton []\r\n (if model.ShowPayments then \"fa fa-minus-square-o\" else \"fa fa-plus-square-o\")\r\n dispatch\r\n PaymentVisibilityChanged\r\n ]\r\n ]\r\n if model.ShowPayments then\r\n for p in model.Payments do\r\n tr [] [\r\n td [] [ str <| p.PaidAt.ToString(\"dd.MM.yyyy\") ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\r\n str <| sprintf \"%s zł\" (Decimal.format 2 p.Amount)\r\n ]\r\n td [] [\r\n Controls.actionButton [] \"fa fa-remove\" dispatch (RemovePayment p)\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n ] \r\n \r\n div [Class \"row\"] [\r\n div [Class \"col-xs-12\"] [\r\n Forms.formGroup (not model.NewPaymentErrors.IsEmpty) \r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-3\" \"newPayment\" \"Nowa wpłata:\" 9.0\r\n (Value model.NewPayment)\r\n (Forms.errorsBelow [])\r\n (Event.str dispatch NewPaymentChanged)\r\n @ Forms.controlWithLabel \"col-sm-2\" \"col-sm-4\" \"newPaymentDate\" \"Na dzień:\"\r\n (Forms.errorsBelow model.NewPaymentErrors)\r\n (Controls.datePickerInput \"newPaymentDate\" model.NewPaymentDate dispatch NewPaymentDateChanged)\r\n ] \r\n ]\r\n \r\n ]\r\n ]\r\n\r\n let notesEditor model dispatch =\r\n div [ Class \"col-xs-6\" ] [\r\n form [ Class \"form-horizontal\"] [ \r\n Forms.formGroup false\r\n <| Forms.textareaWithLabel \"col-sm-3\" \"col-sm-9\" 6 \"notes\" \"Notatki:\" 1024.0 \r\n model.Notes\r\n (Forms.errorsBelow [])\r\n (Event.str dispatch NotesChanged)\r\n ]\r\n ]\r\n \r\n let messageEditor model dispatch =\r\n div [ Class \"col-xs-11\" ] [\r\n div [ Class \"table-responsive\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n for cmt in model.Reservation.Messages do\r\n tr [] [\r\n td [] [\r\n div [] [\r\n b [] [ str (match cmt.Party with Party.Guest -> \"Zamawiający\" | Party.Resort -> \"My\") ]\r\n span [ Class \"pull-right\" ] [ str <| cmt.AddedAt.ToString(\"dd.MM.yyyy\") ]\r\n ]\r\n div [] [ str cmt.Content ] \r\n ] \r\n ] \r\n ]\r\n ]\r\n\r\n Forms.formGroup (not model.NewMessageErrors.IsEmpty)\r\n <| Forms.textareaWithLabel \"col-sm-2\" \"col-sm-12\" 3 \"newMessage\" \"Nowa wiadomość:\" 1024.0\r\n model.NewMessage\r\n (Forms.errorsBelow model.NewMessageErrors)\r\n (Event.str dispatch NewMessageChanged)\r\n ]\r\n ]\r\n\r\n let transitionButtons dispatch =\r\n div [ Class \"pull-right\"] [\r\n Controls.simpleButton [] \"btn-primary\" \" Zapisz\" \"fa fa-save\" dispatch Save\r\n str \" \"\r\n Controls.simpleButton [] \"btn-default\" \" Zatwierdź\" \"fa fa-check\" dispatch Confirm\r\n str \" \"\r\n Controls.simpleButton [] \"btn-default\" \" Odrzuć\" \"fa fa-ban\" dispatch Refuse\r\n str \" \"\r\n Controls.simpleButton [] \"btn-default\" \" Zaakceptuj zaliczkę\" \"fa fa-credit-card\" dispatch AcceptPrepayment\r\n str \" \"\r\n Controls.simpleButton [] \"btn-default\" \" Anuluj\" \"fa fa-times\" dispatch Close\r\n ]\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n div [ Class \"box box-info\" ] [\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str model.Resort.Name ]\r\n h3 [ Class \"box-title pull-right\" ] [\r\n Controls.label (getStateColor <| Calculated model.Reservation.DetailedState) (getStateName <| Calculated model.Reservation.DetailedState)\r\n ]\r\n ] \r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n\r\n div [ Class \"col-xs-12\" ] [\r\n\r\n div [ Class \"row\" ] [\r\n reservationInfo model\r\n ordererInfo model\r\n ]\r\n\r\n div [ Class \"row\" ] [ \r\n paymentForm model dispatch\r\n notesEditor model dispatch\r\n ]\r\n\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Korespondencja z zamawiającym\" ]\r\n ]\r\n div [Class \"box-body no-padding\" ] [\r\n messageEditor model dispatch\r\n ]\r\n \r\n \r\n div [ Class \"box-footer\" ] [\r\n transitionButtons dispatch\r\n ]\r\n ]\r\n ]\r\n ]\r\n \r\n\r\n\r\nmodule ReservationList =\r\n\r\n type Msg =\r\n | ReservationsLoaded of Parent * ReservationSummary list\r\n | RefreshReservationList\r\n | ShowAll of bool\r\n | Edit of int\r\n | WarnOnPrepaymentDelay of int\r\n | PrepaymentDelayWarningSent\r\n | ShowError of string * ErrorInfo\r\n | Close\r\n \r\n type ReservationSummaryModel =\r\n {\r\n Id : int\r\n Resort : string\r\n Rooms : (string * int) list\r\n From : DateTime\r\n To : DateTime\r\n FirstName : string\r\n LastName : string\r\n Email : string\r\n Phone : string\r\n Adults : int\r\n Children : int\r\n Price : decimal option\r\n DeclaredArrival : DateTime option\r\n State : string\r\n StateColor : string\r\n WarningButton : bool\r\n }\r\n static member FromSummary (summary: ReservationSummary) =\r\n {\r\n Id = summary.Id\r\n Resort = summary.Resort\r\n Rooms = summary.Rooms\r\n From = summary.From\r\n To = summary.To\r\n FirstName = summary.FirstName\r\n LastName = summary.LastName\r\n Email = summary.Email\r\n Phone = summary.Phone\r\n Adults = summary.Adults\r\n Children = summary.Children\r\n Price = summary.Price\r\n DeclaredArrival = summary.DeclaredArrival\r\n State = getStateName summary.DetailedState\r\n StateColor = getStateColor summary.DetailedState\r\n WarningButton = summary.DetailedState = Calculated DetailedState.PrepaymentDelayed\r\n }\r\n\r\n type Model =\r\n {\r\n Parent : Parent\r\n ShowAll : bool\r\n Reservations : ReservationSummaryModel list\r\n }\r\n static member Empty = { Parent = Parent.Owner; ShowAll = false; Reservations = [] }\r\n static member FromSummaryList (parent: Parent, showAll: bool, reservations: ReservationSummary list) =\r\n {\r\n Parent = parent\r\n ShowAll = showAll\r\n Reservations = reservations |> List.map (updateState DateTime.Today >> ReservationSummaryModel.FromSummary)\r\n }\r\n\r\n let getRoomList (r: ReservationSummaryModel) =\r\n [ match r.Rooms with\r\n | [ room, 1 ] -> str room\r\n | _ ->\r\n for room, cnt in r.Rooms do\r\n str <| sprintf \"%s (%d)\" room cnt\r\n br []\r\n ]\r\n\r\n let view (model: Model) dispatch = \r\n div [ Class \"box\" ] [\r\n div [ Class \"box-header\" ] [\r\n h3 [ Class \"box-title\" ] [\r\n match model.Parent with\r\n | Parent.Owner -> str \"Wszystkie\"\r\n | Parent.Resort (_, name)\r\n | Parent.Room (_, name) -> str name\r\n ]\r\n div [ Class \"box-tools pull-right\" ] [\r\n Controls.checkbox \"showAll\" [] \"Pokaż zakończone\" model.ShowAll dispatch ShowAll\r\n ]\r\n ]\r\n \r\n div [ Class \"box-body no-padding\"] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n match model.Parent with\r\n | Parent.Owner ->\r\n th [] [ str \"Obiekt\" ]\r\n th [] [ str \"Pokój\" ]\r\n | Parent.Resort _ ->\r\n th [] [ str \"Pokój\" ]\r\n | Parent.Room _ -> ()\r\n th [] [ str \"Termin\" ]\r\n th [] [ str \"Opłata\" ]\r\n th [ Style [ Width \"5%\"] ] [ str \"Dorośli\" ]\r\n th [ Style [ Width \"5%\"] ] [ str \"Dzieci\" ]\r\n th [] [ str \"Etap\" ]\r\n th [ Style [ Width \"5%\"] ] [ str \"\" ]\r\n ]\r\n for r in model.Reservations do\r\n tr [] [\r\n match model.Parent with\r\n | Parent.Owner ->\r\n td [] [ str r.Resort ]\r\n td [] (getRoomList r)\r\n | Parent.Resort _ ->\r\n td [] (getRoomList r)\r\n | Parent.Room _-> ()\r\n td [] [ str (r.From.ToString(\"dd.MM.yyyy\") + \" - \" + r.To.ToString(\"dd.MM.yyyy\")) ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\r\n str (r.Price |> Option.map (Decimal.format 2) |> Option.defaultValue \"-\")\r\n ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\r\n str (sprintf \"%d\" r.Adults)\r\n ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\r\n str (sprintf \"%d\" r.Children)\r\n ]\r\n td [ Style [ TextAlign TextAlignOptions.Center ] ] [\r\n Controls.label r.StateColor r.State\r\n ]\r\n td [ Style [TextAlign TextAlignOptions.Center ] ] [\r\n Controls.actionButton [ Title \"Edytuj\" ] \"fa fa-edit\" dispatch (Edit r.Id)\r\n if r.WarningButton then \r\n str \" \"\r\n Controls.actionButton [ Title \"Wyślij ponaglenie\" ] \"fa fa-bell\" dispatch (WarnOnPrepaymentDelay r.Id)\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n Modals.info \"prepaymentDelayWarningConfirmation\" \"Informacja\"\r\n (p [] [ str \"Ponaglenie w związku z opóźnieniem wpłaty zaliczki zostało wysłane.\" ])\r\n ]\r\n\r\n \r\n let getReservationSummariesCmd parentId showAll =\r\n match parentId with\r\n | Parent.Owner ->\r\n Cmd.OfAsync.either id (reservationApi.GetOwnerReservationSummaries showAll) (fun items -> ReservationsLoaded (parentId, items)) (ErrorHandling.unpack ShowError \"Nie udało się wczytać listy rezerwacji.\")\r\n | Parent.Resort (resortId, _) ->\r\n Cmd.OfAsync.either id (reservationApi.GetResortReservationSummaries (resortId, showAll)) (fun items -> ReservationsLoaded (parentId, items)) (ErrorHandling.unpack ShowError \"Nie udało się wczytać listy rezerwacji.\")\r\n | Parent.Room (roomId, _) ->\r\n Cmd.OfAsync.either id (reservationApi.GetRoomReservationSummaries (roomId, showAll)) (fun items -> ReservationsLoaded (parentId, items)) (ErrorHandling.unpack ShowError \"Nie udało się wczytać listy rezerwacji.\")\r\n\r\n let warnOnPrepaymentDelayCmd reservationId =\r\n Cmd.OfAsync.either id (reservationApi.WarnOnPrepaymentDelay reservationId) (fun () -> PrepaymentDelayWarningSent) (ErrorHandling.unpack ShowError \"Nie udało się wysłać ponaglenia.\")\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | ReservationsLoaded (parentId, reservations) ->\r\n Model.FromSummaryList(parentId, model.ShowAll, reservations), Cmd.none\r\n | RefreshReservationList ->\r\n model, getReservationSummariesCmd model.Parent model.ShowAll\r\n | ShowAll toggle ->\r\n { model with ShowAll = toggle }, getReservationSummariesCmd model.Parent toggle\r\n | WarnOnPrepaymentDelay reservationId ->\r\n model, warnOnPrepaymentDelayCmd reservationId\r\n | PrepaymentDelayWarningSent ->\r\n Modals.show \"prepaymentDelayWarningConfirmation\"\r\n model, Cmd.none\r\n | _ ->\r\n model, Cmd.none\r\n\r\n let subscribe () =\r\n let sub dispatch =\r\n Browser.Dom.window.setInterval (\r\n (fun _ ->\r\n if Browser.Dom.document.getElementById(\"prevent-subscriptions\") = null then\r\n dispatch RefreshReservationList\r\n ),\r\n 1000*60)\r\n |> ignore\r\n Cmd.ofSub sub\r\n\r\ntype Msg =\r\n | FormMsg of ReservationDetails.Msg\r\n | ListMsg of ReservationList.Msg\r\n | Close \r\n | ShowError of string * ErrorInfo\r\n\r\ntype Model =\r\n | Details of Parent * bool * ReservationDetails.Model\r\n | Items of ReservationList.Model \r\n static member Empty = Items ReservationList.Model.Empty\r\n\r\nlet init (parent: Parent): Model * Cmd =\r\n Items ReservationList.Model.Empty, Cmd.map ListMsg (ReservationList.getReservationSummariesCmd parent false)\r\n\r\nlet view (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n Components.contentHeader \"Rezerwacje\" \"\" //[] dispatch\r\n div [ Class \"content\" ] [\r\n div [ Class \"row\" ] [\r\n div [ Class \"col-xs-12\" ] [\r\n match model with\r\n | Items reservations -> ReservationList.view reservations (ListMsg >> dispatch)\r\n | Details (_, _, reservation) -> ReservationDetails.view reservation (FormMsg >> dispatch)\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\nlet update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg, model with\r\n | ListMsg (ReservationList.Edit resId), Items model ->\r\n Details (model.Parent, model.ShowAll, ReservationDetails.Model.Empty), Cmd.map FormMsg (ReservationDetails.getReservationCmd resId)\r\n | ListMsg (ReservationList.ShowError (msg, err)), _\r\n | FormMsg (ReservationDetails.ShowError (msg, err)), _ ->\r\n model, Cmd.ofMsg (ShowError (msg, err))\r\n | FormMsg ReservationDetails.Close, Details (parent, showAll, _) ->\r\n Items { ReservationList.Model.Empty with Parent = parent; ShowAll = showAll }, Cmd.map ListMsg (ReservationList.getReservationSummariesCmd parent showAll) \r\n | ListMsg msg, Items items ->\r\n let lsModel, lsMsg = ReservationList.update msg items\r\n Items lsModel, Cmd.map ListMsg lsMsg\r\n | FormMsg msg, Details (parent, showAll, details) ->\r\n let frmModel, frmCmd = ReservationDetails.update msg details\r\n Details (parent, showAll, frmModel), Cmd.map FormMsg frmCmd\r\n | _ ->\r\n JS.console.error (sprintf \"UNHADLED MESSAGE: %A\" msg)\r\n model, Cmd.none\r\n\r\n\r\nlet subscribe () = Cmd.map ListMsg (ReservationList.subscribe ())","namespace Shared\r\n\r\nmodule Utils =\r\n\r\n let concatRoomNames (names: (string * int) list) =\r\n match names with\r\n | [ name, 1 ] -> name\r\n | _ -> names |> List.map (fun (name, count) -> sprintf \"%s (%d)\" name count) |> String.concat \", \"\r\n\r\n\r\n","module Messages\r\n\r\nopen System\r\nopen Elmish\r\nopen Fable.React\r\nopen Fable.React.Props\r\nopen Fable.Remoting.Client\r\nopen Commons\r\nopen Shared\r\nopen Shared.Messages\r\nopen Shared.Utils\r\nopen Fable.Core\r\nopen Shared.ServerError\r\n\r\n\r\nmodule MessagetList = \r\n\r\n type Msg =\r\n | MessageListLoaded of Reservations.Parent * Message list\r\n | RefreshMessageList\r\n | StartResponse of int * DateTime\r\n | ContentChanged of string\r\n | SendResponse\r\n | ResponseSent\r\n | CancelResponse\r\n | ShowReservation of int\r\n | ShowError of string * ErrorInfo\r\n\r\n type Response =\r\n {\r\n ReservationId : int\r\n AddedAt : DateTime\r\n Content : string\r\n Sent : bool\r\n }\r\n\r\n type Model =\r\n {\r\n Parent : Reservations.Parent\r\n Messages : Message list\r\n Response : Response\r\n }\r\n static member Empty =\r\n {\r\n Parent = Reservations.Parent.Owner\r\n Messages = []\r\n Response = { ReservationId = 0; AddedAt = System.DateTime(0L); Content = \"\"; Sent = false }\r\n }\r\n\r\n let view (model: Model) dispatch = \r\n div [ Class \"box\" ] [\r\n div [ Class \"box-header\" ] [\r\n h3 [ Class \"box-title\" ] [\r\n match model.Parent with\r\n | Reservations.Parent.Owner -> str \"Wszystkie\"\r\n | Reservations.Parent.Resort (_, name)\r\n | Reservations.Parent.Room (_, name) -> str name\r\n ]\r\n ]\r\n\r\n div [ Class \"box-body no-padding\"] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n for m in model.Messages do\r\n let roomInfo =\r\n match model.Parent with\r\n | Reservations.Parent.Owner -> m.Resort + \" / \" + (m.Rooms |> concatRoomNames)\r\n | Reservations.Parent.Resort _ -> m.Rooms |> concatRoomNames\r\n | Reservations.Parent.Room _-> \"\"\r\n tr [] [\r\n td [] [\r\n div [ Style [ MarginBottom \"10px\" ] ] [\r\n i [ Class \"icon fa fa-envelope-o\"; Style [ Width \"30px\"; Display DisplayOptions.InlineBlock ] ] []\r\n b [ Style [ Width \"150px\"; Display DisplayOptions.InlineBlock ] ] [\r\n a [ Style [ Cursor \"pointer\" ]; OnClick (Event.none dispatch (ShowReservation m.ReservationId)) ] [ str m.Orderer ]\r\n ]\r\n span [] [str <| sprintf \"%s, od %s do %s\" roomInfo (m.From.ToString(\"dd.MM.yyyy\")) (m.To.ToString(\"dd.MM.yyyy\"))]\r\n small [ Class \"pull-right\"] [str (m.AddedAt.ToString(\"dd.MM.yyyy\")) ]\r\n ]\r\n p [ Style [MarginLeft \"30px\"] ] [\r\n str m.Content\r\n if m.ReservationId <> model.Response.ReservationId then\r\n div [ Class \"pull-right\" ] [\r\n Controls.simpleButton [] \"btn-default\" \" Odpowiedz\" \"fa fa-reply\" dispatch (StartResponse (m.ReservationId, m.AddedAt))\r\n ]\r\n ]\r\n if m.ReservationId = model.Response.ReservationId && m.AddedAt = model.Response.AddedAt then\r\n if model.Response.Sent then\r\n div [ Class \"form-group has-success\" ] [\r\n label [ Class \"control-label\" ] [ str \"Wiadomość została wysłana\" ]\r\n ]\r\n else\r\n div [] [\r\n div [ Class \"col-sm-10\" ] [\r\n input [ Class \"form-control\"; OnChange (Event.str dispatch ContentChanged); MaxLength 1024.0 ] \r\n ]\r\n div [ Class \"pull-right\" ] [\r\n Controls.simpleButton [] \"btn-default\" \" Wyślij\" \"fa fa-send\" dispatch SendResponse\r\n str \" \"\r\n Controls.simpleButton [] \"btn-default\" \" Anuluj\" \"fa fa-times\" dispatch CancelResponse\r\n ] \r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n \r\n \r\n let messageApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n \r\n let getMessagesCmd parentId =\r\n match parentId with\r\n | Reservations.Parent.Owner ->\r\n Cmd.OfAsync.either id (messageApi.GetOwnerMessages ()) (fun items -> MessageListLoaded (parentId, items)) (ErrorHandling.unpack ShowError \"Nie udało się wczytać wiadomości.\")\r\n | Reservations.Parent.Resort (resortId, _) ->\r\n Cmd.OfAsync.either id (messageApi.GetResortMessages resortId) (fun items -> MessageListLoaded (parentId, items)) (ErrorHandling.unpack ShowError \"Nie udało się wczytać wiadomości.\")\r\n | Reservations.Parent.Room (_, _) ->\r\n Cmd.ofMsg (ShowError (\"Nie udało się wczytać wiadomości.\", ErrorInfo.Empty)) \r\n\r\n let saveResponseCmd (reservationId, responseText) =\r\n Cmd.OfAsync.either id (messageApi.Respond(reservationId, responseText)) (fun () -> ResponseSent) (ErrorHandling.unpack ShowError \"Nie udało się wysłać wiadomości.\")\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | MessageListLoaded (parentId, messages) ->\r\n { model with\r\n Parent = parentId;\r\n Messages = messages;\r\n Response =\r\n if model.Response.Sent then\r\n { ReservationId = 0; Content = \"\"; AddedAt = System.DateTime(0L); Sent = false }\r\n else\r\n model.Response\r\n }, Cmd.none\r\n | RefreshMessageList ->\r\n model, getMessagesCmd model.Parent\r\n | StartResponse (resId, date) ->\r\n { model with Response = { ReservationId = resId; AddedAt = date; Content = \"\"; Sent = false } }, Cmd.none\r\n | ContentChanged content ->\r\n { model with Response = { model.Response with Content = content } }, Cmd.none\r\n | SendResponse ->\r\n model, saveResponseCmd (model.Response.ReservationId, model.Response.Content)\r\n | ResponseSent ->\r\n { model with Response = { model.Response with Sent = true } }, getMessagesCmd model.Parent\r\n | CancelResponse ->\r\n { model with Response = { ReservationId = 0; Content = \"\"; AddedAt = System.DateTime(0L); Sent = false } }, Cmd.none\r\n | _ ->\r\n model, Cmd.none\r\n\r\n let init (parent: Reservations.Parent): Model * Cmd =\r\n Model.Empty, getMessagesCmd parent\r\n\r\n let subscribe _ =\r\n let sub dispatch =\r\n Browser.Dom.window.setInterval (\r\n (fun _ ->\r\n if Browser.Dom.document.getElementById(\"prevent-subscriptions\") = null then\r\n dispatch RefreshMessageList\r\n ),\r\n 1000*60)\r\n |> ignore\r\n Cmd.ofSub sub\r\n\r\ntype Msg =\r\n | MessageListMsg of MessagetList.Msg\r\n | ReservationMsg of Reservations.ReservationDetails.Msg\r\n | ShowError of string * ErrorInfo\r\n\r\ntype Model =\r\n | MessageListModel of MessagetList.Model\r\n | ReservationModel of Reservations.Parent * Reservations.ReservationDetails.Model\r\n\r\n\r\nlet update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg, model with\r\n | MessageListMsg (MessagetList.ShowError (msg, err)), _\r\n | ReservationMsg (Reservations.ReservationDetails.ShowError (msg, err)), _ ->\r\n model, Cmd.ofMsg (ShowError (msg, err))\r\n | ReservationMsg Reservations.ReservationDetails.Close, ReservationModel (parent, _) ->\r\n let cmMdl, cmCmd = MessagetList.init parent\r\n MessageListModel cmMdl, Cmd.map MessageListMsg cmCmd\r\n | MessageListMsg (MessagetList.ShowReservation resId), MessageListModel model ->\r\n ReservationModel (model.Parent, Reservations.ReservationDetails.Model.Empty),\r\n Cmd.map ReservationMsg (Reservations.ReservationDetails.getReservationCmd resId)\r\n | MessageListMsg msg, MessageListModel model ->\r\n let clMdl, clCmd = MessagetList.update msg model\r\n MessageListModel clMdl, Cmd.map MessageListMsg clCmd\r\n | ReservationMsg msg, ReservationModel (parent, model) ->\r\n let rsMdl, rsCmd = Reservations.ReservationDetails.update msg model\r\n ReservationModel (parent, rsMdl), Cmd.map ReservationMsg rsCmd\r\n\r\n\r\nlet init (parent: Reservations.Parent): Model * Cmd =\r\n let clMdl, clCmd = MessagetList.init parent\r\n MessageListModel clMdl, Cmd.map MessageListMsg clCmd\r\n\r\nlet view (model: Model) dispatch =\r\n React.ofList [\r\n Components.contentHeader \"Wiadomości\" \"\" \r\n div [ Class \"content\" ] [\r\n div [ Class \"row\" ] [\r\n div [ Class \"col-xs-12\" ] [\r\n match model with\r\n | MessageListModel mdl ->\r\n MessagetList.view mdl (MessageListMsg >> dispatch)\r\n | ReservationModel (_, mdl) ->\r\n Reservations.ReservationDetails.view mdl (ReservationMsg >> dispatch)\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\nlet subscribe () = Cmd.map MessageListMsg (MessagetList.subscribe ())\r\n \r\n ","module UserProfile\r\n\r\nopen System\r\nopen Elmish\r\nopen Fable.Remoting.Client\r\nopen Shared\r\nopen Fable.React\r\nopen Fable.React.Props\r\n\r\nopen Commons\r\nopen Shared.UserProfile\r\nopen Shared.PaymentMethods\r\nopen Shared.Validation\r\nopen Fable.Core\r\nopen Shared.ServerError\r\n\r\nlet userProfileApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\nlet paymentApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\nmodule ContentHeader =\r\n\r\n let wrap content =\r\n React.ofList [\r\n Components.contentHeader \"Profil użytkownika\" \"\" \r\n div [ Class \"content\" ] [\r\n div [ Class \"row\" ] [\r\n div [ Class \"col-xs-12\" ] [\r\n content\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\nmodule AccountDetails =\r\n\r\n type Msg =\r\n | AccountDetailsLoaded of AccountDetails\r\n | FirstNameChanged of string\r\n | LastNameChanged of string\r\n | EmailChanged of string\r\n | PhoneChanged of string\r\n | Save\r\n | AccountDetailsUpdated of unit\r\n | ShowError of string * ErrorInfo\r\n\r\n type Model =\r\n {\r\n FirstName : string\r\n FirstNameErrors : string list\r\n LastName : string \r\n LastNameErrors : string list\r\n Email : string\r\n EmailErrors : string list\r\n Phone : string \r\n PhoneErrors : string list\r\n Finished : bool\r\n }\r\n static member Empty =\r\n {\r\n FirstName = \"\"\r\n FirstNameErrors = []\r\n LastName = \"\" \r\n LastNameErrors = []\r\n Email = \"\"\r\n EmailErrors = []\r\n Phone = \"\" \r\n PhoneErrors = []\r\n Finished = false\r\n }\r\n static member FromAccountDetails (details: AccountDetails) =\r\n {\r\n FirstName = details.FirstName\r\n FirstNameErrors = []\r\n LastName = details.LastName \r\n LastNameErrors = []\r\n Email = details.Email\r\n EmailErrors = []\r\n Phone = details.Phone |> Option.defaultValue \"\"\r\n PhoneErrors = []\r\n Finished = false\r\n }\r\n static member ToAccountDetails (model: Model) =\r\n {\r\n FirstName = model.FirstName\r\n LastName = model.LastName \r\n Email = model.Email\r\n Phone = if String.IsNullOrEmpty model.Phone then None else Some model.Phone\r\n }\r\n static member WithErrors errors (model: Model) =\r\n { model with\r\n FirstNameErrors = errors |> getErrorsOf \"FirstName\"\r\n LastNameErrors = errors |> getErrorsOf \"LastName\"\r\n EmailErrors = errors |> getErrorsOf \"Email\"\r\n PhoneErrors = errors |> getErrorsOf \"Phone\"\r\n }\r\n\r\n let accountDetailsCmd =\r\n Cmd.OfAsync.either id (userProfileApi.GetAccountDetails()) AccountDetailsLoaded (ErrorHandling.unpack ShowError \"Nie udało się odczytać danych użytkownika.\")\r\n\r\n let updateAccountDetailsCmd details =\r\n Cmd.OfAsync.either id (userProfileApi.UpdateAccountDetails details) AccountDetailsUpdated (ErrorHandling.unpack ShowError \"Nie udało się zapisać danych użytkownika.\")\r\n\r\n\r\n let init (): Model * Cmd =\r\n Model.Empty, accountDetailsCmd\r\n\r\n let update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | AccountDetailsLoaded details ->\r\n details |> Model.FromAccountDetails, Cmd.none\r\n | FirstNameChanged name ->\r\n { model with FirstName = name }, Cmd.none\r\n | LastNameChanged name ->\r\n { model with LastName = name }, Cmd.none\r\n | EmailChanged email ->\r\n { model with Email = email }, Cmd.none\r\n | PhoneChanged phone ->\r\n { model with Phone = phone }, Cmd.none\r\n | Save ->\r\n let errors = model |> Model.ToAccountDetails |> validateAccountDetails\r\n if errors.IsEmpty then\r\n model, model |> Model.ToAccountDetails |> updateAccountDetailsCmd\r\n else\r\n model |> Model.WithErrors errors, Cmd.none\r\n | AccountDetailsUpdated () ->\r\n { model with Finished = true }, Cmd.none\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) = \r\n ContentHeader.wrap\r\n <| div [ Class \"box box-info\" ] [\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Moje dane\" ]\r\n ]\r\n form [ Class \"form-horizontal\"] [\r\n div [ Class \"box-body\" ] [\r\n \r\n Forms.formGroup (not model.FirstNameErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-2\" \"col-sm-6\" \"firstName\" \"Imię\" 50.0 \r\n (Value model.FirstName)\r\n (Forms.errorsBelow model.FirstNameErrors)\r\n (Event.str dispatch FirstNameChanged)\r\n\r\n Forms.formGroup (not model.LastNameErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-2\" \"col-sm-6\" \"LastName\" \"Nazwisko\" 50.0 \r\n (Value model.LastName)\r\n (Forms.errorsBelow model.LastNameErrors)\r\n (Event.str dispatch LastNameChanged)\r\n\r\n Forms.formGroup (not model.EmailErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-2\" \"col-sm-6\" \"email\" \"Email\" 120.0 \r\n (Value model.Email)\r\n (Forms.errorsBelow model.EmailErrors)\r\n (Event.str dispatch EmailChanged)\r\n\r\n Forms.formGroup (not model.PhoneErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-2\" \"col-sm-6\" \"phone\" \"Telefon\" 15.0 \r\n (Value model.Phone)\r\n (Forms.errorsBelow model.PhoneErrors)\r\n (Event.str dispatch PhoneChanged)\r\n\r\n div [ Class \"form-group has-success\" ] [\r\n div [ Class \"col-xs-offset-3\" ] [\r\n if model.Finished then\r\n yield label [ Class \"control-label\" ] [ str \"Dane zostały zmienione.\" ]\r\n ] \r\n ]\r\n ]\r\n ]\r\n div [ Class \"box-footer\" ] [\r\n div [ Class \"col-sm-5 pull-right\"] [\r\n Controls.simpleButton [] \"btn-primary\" \" Zapisz\" \"fa fa-save\" dispatch Save\r\n ]\r\n ]\r\n ]\r\n\r\n\r\nmodule ChangePassword =\r\n\r\n type Msg =\r\n | OldPasswordChanged of string\r\n | Password1Changed of string\r\n | Password2Changed of string\r\n | Save\r\n | PasswordUpdated of bool\r\n | ShowError of string * ErrorInfo\r\n\r\n type Model =\r\n {\r\n OldPassword : string\r\n Password1 : string\r\n Password1Errors : string list\r\n Password2 : string\r\n Password2Errors : string list\r\n Success : bool option\r\n }\r\n static member Empty =\r\n {\r\n OldPassword = \"\"\r\n Password1 = \"\"\r\n Password1Errors = []\r\n Password2 = \"\"\r\n Password2Errors = []\r\n Success = None\r\n }\r\n member this.HasErrors = not (this.Password1Errors.IsEmpty && this.Password2Errors.IsEmpty)\r\n\r\n let validate (model: Model) =\r\n { model with\r\n Password1Errors = checkPasswordStrength model.Password1 \r\n Password2Errors = [ if model.Password1 <> model.Password2 then \"Hasła są niezgodne\" ] \r\n }\r\n\r\n let updatePasswordCmd (oldPwd, newPwd) =\r\n let cmd = async {\r\n let! salt = userProfileApi.GetSalt()\r\n let sltOldPwd = Auth.hash (oldPwd + salt.ToString())\r\n let sltNewPwd = Auth.hash (newPwd + salt.ToString())\r\n return! userProfileApi.ChangePassword (sltOldPwd, sltNewPwd)\r\n }\r\n Cmd.OfAsync.either id cmd PasswordUpdated (ErrorHandling.unpack ShowError \"Nie udało się zmodyfikować hasła.\")\r\n\r\n let init (): Model * Cmd =\r\n Model.Empty, Cmd.none\r\n\r\n let update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | OldPasswordChanged pwd ->\r\n { model with OldPassword = pwd }, Cmd.none\r\n | Password1Changed pwd ->\r\n { model with Password1 = pwd }, Cmd.none\r\n | Password2Changed pwd ->\r\n { model with Password2 = pwd }, Cmd.none\r\n | Save ->\r\n let validated = validate model\r\n if validated.HasErrors then\r\n validated, Cmd.none\r\n else\r\n model, updatePasswordCmd (model.OldPassword, model.Password1)\r\n | PasswordUpdated result ->\r\n { model with Success = Some result }, Cmd.none\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) = \r\n ContentHeader.wrap\r\n <| div [ Class \"box box-info\" ] [\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Moje dane\" ]\r\n ]\r\n form [ Class \"form-horizontal\"] [\r\n div [ Class \"box-body\" ] [\r\n \r\n Forms.formGroup false\r\n <| Forms.passwordWithLabel \"col-sm-2\" \"col-sm-6\" \"oldPassword\" \"Stare hasło\" 64.0 \r\n (Value model.OldPassword)\r\n (Forms.errorsBelow [])\r\n (Event.str dispatch OldPasswordChanged)\r\n\r\n Forms.formGroup (not model.Password1Errors.IsEmpty)\r\n <| Forms.passwordWithLabel \"col-sm-2\" \"col-sm-6\" \"password1\" \"Nowe hasło\" 64.0 \r\n (Value model.Password1)\r\n (Forms.errorsBelow model.Password1Errors)\r\n (Event.str dispatch Password1Changed)\r\n\r\n Forms.formGroup (not model.Password2Errors.IsEmpty)\r\n <| Forms.passwordWithLabel \"col-sm-2\" \"col-sm-6\" \"password2\" \"Powtórz nowe hasło\" 64.0 \r\n (Value model.Password2)\r\n (Forms.errorsBelow model.Password2Errors)\r\n (Event.str dispatch Password2Changed)\r\n\r\n match model.Success with\r\n | Some succ ->\r\n div [ Class <| \"form-group \" + (if succ then \"has-success\" else \"has-error\")] [\r\n div [ Class \"col-xs-offset-3\" ] [\r\n label [ Class \"control-label\" ] [\r\n if succ then\r\n str \"Hasło zostało zmienione.\"\r\n else\r\n str \"Stare hasło jest błędne.\"\r\n ]\r\n ] \r\n ]\r\n | None ->\r\n div [] []\r\n ]\r\n ]\r\n div [ Class \"box-footer\" ] [\r\n div [ Class \"col-sm-5 pull-right\"] [\r\n Controls.simpleButton [] \"btn-primary\" \" Zapisz\" \"fa fa-save\" dispatch Save\r\n ]\r\n ]\r\n ]\r\n\r\nmodule BankAccount =\r\n\r\n type Msg =\r\n | BankAccountLoaded of BankAccount option\r\n | OwnerNameChanged of string\r\n | AccountNumberChanged of string\r\n | BankNameChanged of string\r\n | CityChanged of string\r\n | StreetChanged of string\r\n | NumberChanged of string\r\n | ZipCodeChanged of string\r\n | PasswordChanged of string\r\n | Save\r\n | ShowError of string* ErrorInfo\r\n | BankAccountUpdated of bool\r\n\r\n type Address =\r\n {\r\n City : string\r\n CityErrors : string list\r\n Street : string\r\n StreetErrors : string list\r\n Number : string\r\n NumberErrors : string list\r\n ZipCode : string\r\n ZipCodeErrors : string list\r\n }\r\n\r\n type Model =\r\n {\r\n OwnerName : string\r\n OwnerNameErrors : string list\r\n OwnerAddress : Address\r\n AccountNumber : string\r\n AccountNumberErrors : string list\r\n BankName : string\r\n BankNameErrors : string list\r\n Password : string\r\n Success : bool option\r\n }\r\n static member Empty =\r\n {\r\n OwnerName = \"\"\r\n OwnerNameErrors = []\r\n OwnerAddress = {\r\n City = \"\"\r\n CityErrors = []\r\n Street = \"\"\r\n StreetErrors = []\r\n Number = \"\"\r\n NumberErrors = []\r\n ZipCode = \"\"\r\n ZipCodeErrors = []\r\n }\r\n AccountNumber = \"\"\r\n AccountNumberErrors = []\r\n BankName = \"\"\r\n BankNameErrors = []\r\n Password = \"\"\r\n Success = None\r\n }\r\n static member FromBankAccount (account: BankAccount) =\r\n {\r\n OwnerName = account.OwnerName\r\n OwnerNameErrors = []\r\n OwnerAddress = {\r\n City = account.OwnerAddress.City\r\n CityErrors = []\r\n Street = account.OwnerAddress.Street\r\n StreetErrors = []\r\n Number = account.OwnerAddress.Number\r\n NumberErrors = []\r\n ZipCode = account.OwnerAddress.ZipCode\r\n ZipCodeErrors = []\r\n }\r\n AccountNumber = account.AccountNumber\r\n AccountNumberErrors = []\r\n BankName = account.BankName\r\n BankNameErrors = []\r\n Password = \"\"\r\n Success = None\r\n }\r\n static member ToBankAccount (model: Model) =\r\n {\r\n OwnerName = model.OwnerName\r\n OwnerAddress = {\r\n City = model.OwnerAddress.City\r\n Street = model.OwnerAddress.Street\r\n Number = model.OwnerAddress.Number\r\n ZipCode = model.OwnerAddress.ZipCode\r\n }\r\n AccountNumber = model.AccountNumber\r\n BankName = model.BankName\r\n }\r\n static member WithErrors errors (model: Model) =\r\n { model with\r\n OwnerNameErrors = errors |> getErrorsOf \"OwnerName\"\r\n OwnerAddress = {\r\n model.OwnerAddress with\r\n CityErrors = errors |> getErrorsOf \"City\"\r\n StreetErrors = errors |> getErrorsOf \"Street\"\r\n NumberErrors = errors |> getErrorsOf \"Number\"\r\n ZipCodeErrors = errors |> getErrorsOf \"ZipCode\"\r\n }\r\n AccountNumberErrors = errors |> getErrorsOf \"AccountNumber\"\r\n BankNameErrors = errors |> getErrorsOf \"BankName\"\r\n }\r\n\r\n let bankAccountCmd =\r\n let cmd = async {\r\n JS.console.error(\"bankAccountCmd/1\")\r\n let! account = paymentApi.GetBankAccount()\r\n JS.console.error(\"bankAccountCmd/2\")\r\n return account\r\n }\r\n Cmd.OfAsync.either id cmd BankAccountLoaded (ErrorHandling.unpack ShowError \"Nie udało się odczytać danych rachunku bankowego.\")\r\n\r\n let updateBankAccount (account, pwd) =\r\n let cmd = async {\r\n let! salt = userProfileApi.GetSalt()\r\n let sltPwd = Auth.hash (pwd + salt.ToString())\r\n return! paymentApi.SaveBankAccount (account, sltPwd)\r\n }\r\n Cmd.OfAsync.either id cmd BankAccountUpdated (ErrorHandling.unpack ShowError \"Nie udało się zmodyfikować danych rachunku bankowego.\")\r\n\r\n let init (): Model * Cmd =\r\n JS.console.error(\"BankAccount.init()\")\r\n Model.Empty, bankAccountCmd\r\n\r\n let update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | BankAccountLoaded (Some account) ->\r\n JS.console.error(\"BankAccountLoaded Some\")\r\n account |> Model.FromBankAccount, Cmd.none\r\n | BankAccountLoaded None ->\r\n JS.console.error(\"BankAccountLoaded None\")\r\n model, Cmd.none\r\n | OwnerNameChanged name ->\r\n { model with OwnerName = name }, Cmd.none\r\n | AccountNumberChanged number ->\r\n { model with AccountNumber = number }, Cmd.none\r\n | BankNameChanged name ->\r\n { model with BankName = name }, Cmd.none\r\n | PasswordChanged pwd ->\r\n { model with Password = pwd }, Cmd.none\r\n | CityChanged city ->\r\n { model with OwnerAddress = { model.OwnerAddress with City = city } }, Cmd.none\r\n | StreetChanged street ->\r\n { model with OwnerAddress = { model.OwnerAddress with Street = street } }, Cmd.none\r\n | NumberChanged number ->\r\n { model with OwnerAddress = { model.OwnerAddress with Number = number } }, Cmd.none\r\n | ZipCodeChanged code ->\r\n { model with OwnerAddress = { model.OwnerAddress with ZipCode = code } }, Cmd.none\r\n | Save ->\r\n let errors = model |> Model.ToBankAccount |> validateBankAccount\r\n if errors.IsEmpty then\r\n model, updateBankAccount (model |> Model.ToBankAccount, model.Password)\r\n else\r\n model |> Model.WithErrors errors, Cmd.none\r\n | BankAccountUpdated success ->\r\n { model with Success = Some success }, Cmd.none\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) = \r\n ContentHeader.wrap\r\n <| div [ Class \"box box-info\" ] [\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Rachunek bankowy\" ]\r\n ]\r\n form [ Class \"form-horizontal\"] [\r\n div [ Class \"box-body\" ] [\r\n\r\n Forms.formGroup (not model.OwnerNameErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-2\" \"col-sm-9\" \"ownerName\" \"Właściciel\" 120.0 \r\n (Value model.OwnerName)\r\n (Forms.errorsBelow model.OwnerNameErrors)\r\n (Event.str dispatch OwnerNameChanged)\r\n\r\n Forms.formGroup (not model.OwnerAddress.CityErrors.IsEmpty || not model.OwnerAddress.ZipCodeErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-2\" \"col-sm-5\" \"city\" \"Miejscowość\" 120.0\r\n (Value model.OwnerAddress.City)\r\n (Forms.errorsBelow model.OwnerAddress.CityErrors)\r\n (Event.str dispatch CityChanged)\r\n @ Forms.inputWithLabel \"col-sm-2\" \"col-sm-2\" \"zipCode\" \"Kod pocztowy\" 10.0\r\n (Value model.OwnerAddress.ZipCode)\r\n (Forms.errorsBelow model.OwnerAddress.ZipCodeErrors)\r\n (Event.str dispatch ZipCodeChanged)\r\n \r\n Forms.formGroup (not model.OwnerAddress.StreetErrors.IsEmpty || not model.OwnerAddress.NumberErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-2\" \"col-sm-5\" \"street\" \"Ulica\" 180.0\r\n (Value model.OwnerAddress.Street)\r\n (Forms.errorsBelow model.OwnerAddress.StreetErrors)\r\n (Event.str dispatch StreetChanged)\r\n @ Forms.inputWithLabel \"col-sm-2\" \"col-sm-2\" \"number\" \"Numer\" 20.0\r\n (Value model.OwnerAddress.Number)\r\n (Forms.errorsBelow model.OwnerAddress.NumberErrors)\r\n (Event.str dispatch NumberChanged)\r\n\r\n Forms.formGroup (not model.AccountNumberErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-2\" \"col-sm-9\" \"accountNumber\" \"Numer rachunku\" 26.0 \r\n (Value model.AccountNumber)\r\n (Forms.errorsBelow model.AccountNumberErrors)\r\n (Event.str dispatch AccountNumberChanged)\r\n\r\n Forms.formGroup (not model.BankNameErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-2\" \"col-sm-9\" \"bankName\" \"Bank\" 120.0 \r\n (Value model.BankName)\r\n (Forms.errorsBelow model.BankNameErrors)\r\n (Event.str dispatch BankNameChanged)\r\n\r\n Forms.formGroup false\r\n <| Forms.passwordWithLabel \"col-sm-2\" \"col-sm-6\" \"password\" \"Hasło\" 64.0 \r\n (Value model.Password)\r\n (Forms.errorsBelow [])\r\n (Event.str dispatch PasswordChanged)\r\n\r\n match model.Success with\r\n | Some succ ->\r\n div [ Class <| \"form-group \" + (if succ then \"has-success\" else \"has-error\")] [\r\n div [ Class \"col-xs-offset-3\" ] [\r\n label [ Class \"control-label\" ] [\r\n if succ then\r\n str \"Dane rachunku zostały zmienione.\"\r\n else\r\n str \"Hasło jest błędne.\"\r\n ]\r\n ] \r\n ]\r\n | None ->\r\n div [] []\r\n ]\r\n ]\r\n div [ Class \"box-footer\" ] [\r\n div [ Class \"col-sm-2 pull-right\"] [\r\n Controls.simpleButton [] \"btn-primary\" \" Zapisz\" \"fa fa-save\" dispatch Save\r\n ]\r\n ]\r\n ]","module OwnerPanel\r\n\r\nopen Fable.Core\r\nopen Commons\r\nopen Shared.ServerError\r\n\r\ntype Parameters =\r\n | ReservationId of int\r\n | PartnerKey of string * string\r\n | Empty\r\n\r\n\r\nmodule Header = \r\n \r\n open System\r\n open Elmish\r\n open Fable.Remoting.Client\r\n open Shared\r\n open Fable.React\r\n open Fable.React.Props\r\n \r\n open Commons\r\n\r\n type Msg =\r\n | CommonsMsg of HeaderCommons.Msg\r\n | ShowError of string * ErrorInfo\r\n | Msg\r\n \r\n type MessageInfo =\r\n {\r\n Id : int\r\n Icon : string\r\n Sender : string\r\n Subject : string\r\n }\r\n \r\n type Model =\r\n {\r\n Commons : HeaderCommons.Model\r\n Messages : MessageInfo list\r\n }\r\n \r\n let headerMenu model dispatch =\r\n div [ Class \"navbar-custom-menu\" ] [\r\n ul [ Class \"nav navbar-nav\" ] [\r\n if not model.Messages.IsEmpty then\r\n HeaderCommons.messageMenu [\r\n for m in model.Messages do\r\n HeaderCommons.messageItem m.Sender m.Icon m.Subject dispatch Msg\r\n ]\r\n HeaderCommons.userMenu model.Commons (CommonsMsg >> dispatch)\r\n ]\r\n ]\r\n \r\n let mapCommonsMsg = function HeaderCommons.ShowError (m, e) -> ShowError (m, e) | m -> CommonsMsg m\r\n \r\n let init(): Model * Cmd =\r\n let cmModel, cmCmd = HeaderCommons.init \"owner-auth\"\r\n { Commons = cmModel; Messages = [] }, Cmd.map mapCommonsMsg cmCmd\r\n \r\n let update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | CommonsMsg msg ->\r\n let cmModel, cmCmd = HeaderCommons.update msg model.Commons \r\n { model with Commons = cmModel }, Cmd.map mapCommonsMsg cmCmd\r\n | Msg ->\r\n model, Cmd.none\r\n \r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n HeaderCommons.view (headerMenu model dispatch) model.Commons (CommonsMsg >> dispatch)\r\n\r\n\r\nmodule Sidebar = \r\n \r\n open Elmish\r\n open Fable.Remoting.Client\r\n open Shared\r\n \r\n open Shared.Resorts\r\n \r\n let resortApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n \r\n type Msg =\r\n | CommonsMsg of SidebarCommons.Msg\r\n | ResortListLoaded of ResortUsageInfo list\r\n | ReloadResortList\r\n | ShowError of string * ErrorInfo\r\n | AccommodationBase\r\n | Reservations of (int * string) option\r\n | Messages of (int * string) option\r\n | ChangePassword\r\n | AccountDetails\r\n | BankAccount\r\n \r\n type Model =\r\n {\r\n Commons : SidebarCommons.Model\r\n Resorts : ResortUsageInfo list\r\n LastMenuMsg : Msg\r\n }\r\n \r\n let mapCommonsMsg = function SidebarCommons.ShowError (m, e) -> ShowError (m, e) | m -> CommonsMsg m\r\n\r\n let getResortsCmd =\r\n Cmd.OfAsync.either id (resortApi.GetResortUsageInfos()) ResortListLoaded (ErrorHandling.unpack ShowError \"Nie udało się odczytać listy ośrodków.\")\r\n\r\n let init(): Model * Cmd =\r\n let cmModel, cmCmd = SidebarCommons.init()\r\n { Commons = cmModel\r\n Resorts = []\r\n LastMenuMsg = Reservations None\r\n }, Cmd.batch [\r\n Cmd.map mapCommonsMsg cmCmd \r\n getResortsCmd\r\n ]\r\n \r\n \r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | CommonsMsg msg ->\r\n let cmModel, cmCmd = SidebarCommons.update msg model.Commons\r\n { model with Commons = cmModel }, Cmd.map mapCommonsMsg cmCmd\r\n | ResortListLoaded resorts ->\r\n { model with Resorts = resorts }, Cmd.none\r\n | ReloadResortList ->\r\n model, getResortsCmd\r\n | m ->\r\n { model with LastMenuMsg = m }, Cmd.none\r\n \r\n open Fable.React\r\n open Fable.React.Props\r\n \r\n let menuItem model name icon dispatch msg =\r\n SidebarCommons.menuItem model name icon (model.LastMenuMsg = msg) dispatch msg\r\n \r\n let menuItemWithLabels model name icon labels dispatch msg =\r\n SidebarCommons.menuItemWithLabels model name icon (model.LastMenuMsg = msg) labels dispatch msg\r\n \r\n let sidebarMenu (model: Model) (dispatch: Msg -> unit) = \r\n ul [ Class \"sidebar-menu tree\"; Data(\"widget\", \"tree\") ] [\r\n li [ Class \"header\" ] [ str \"PRZEJDŹ DO\" ]\r\n menuItem model \"Baza noclegowa\" \"fa fa-home\" dispatch AccommodationBase\r\n SidebarCommons.submenu \"Rezerwacje\" \"fa fa-calendar\" [\r\n yield menuItem model \"Wszystkie\" \"fa fa-circle-o\" dispatch (Reservations None)\r\n for res in model.Resorts ->\r\n menuItemWithLabels\r\n model\r\n res.Name\r\n \"fa fa-circle-o\"\r\n [ if res.PrepDelayedReservations > 0 then\r\n yield small [ Class \"label pull-right bg-red\" ] [\r\n str (res.PrepDelayedReservations.ToString())\r\n ]\r\n if res.StartingReservations > 0 then\r\n yield small [ Class \"label pull-right bg-yellow\" ] [\r\n str (res.StartingReservations.ToString())\r\n ]\r\n if res.NewReservations > 0 then\r\n yield small [ Class \"label pull-right bg-green\" ] [\r\n str (res.NewReservations.ToString())\r\n ]\r\n ]\r\n dispatch\r\n (Reservations (Some (res.Id, res.Name)))\r\n ]\r\n SidebarCommons.submenu \"Wiadomości\" \"fa fa-envelope\" [\r\n yield menuItem model \"Wszystkie\" \"fa fa-circle-o\" dispatch (Messages None)\r\n for res in model.Resorts ->\r\n menuItemWithLabels\r\n model\r\n res.Name\r\n \"fa fa-circle-o\"\r\n [ if res.UnrepliedMessages > 0 then\r\n small [ Class \"label pull-right bg-yellow\" ] [\r\n str (res.UnrepliedMessages.ToString())\r\n ]\r\n ]\r\n dispatch\r\n (Messages (Some (res.Id, res.Name)))\r\n ]\r\n SidebarCommons.submenu \"Profil\" \"fa fa-user\" [\r\n menuItem model \"Zmień hasło\" \"fa fa-circle-o\" dispatch ChangePassword\r\n menuItem model \"Aktualizuj dane osobowe\" \"fa fa-circle-o\" dispatch AccountDetails\r\n menuItem model \"Aktualizuj rachunek bankowy\" \"fa fa-circle-o\" dispatch BankAccount\r\n ]\r\n \r\n ]\r\n \r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n SidebarCommons.view (sidebarMenu model dispatch) model.Commons (CommonsMsg >> dispatch)\r\n\r\n let subscribe _ =\r\n let sub dispatch =\r\n Browser.Dom.window.setInterval (\r\n (fun _ ->\r\n if Browser.Dom.document.getElementById(\"prevent-subscriptions\") = null then\r\n dispatch ReloadResortList\r\n ),\r\n 1000*60)\r\n |> ignore\r\n Cmd.ofSub sub\r\n \r\n\r\nmodule Content = \r\n \r\n open Elmish\r\n open Shared\r\n \r\n open Commons\r\n open UserProfile\r\n \r\n type Msg =\r\n | ShowAccommodationBase of (string * string) option\r\n | AccommodationBaseMsg of AccommodationBase.Msg\r\n | ShowReservations of (int * string) option\r\n | ShowMessages of (int * string) option\r\n | ShowAccountDetails\r\n | ShowChangePasswordForm\r\n | ShowBankAccount\r\n | ReservationMsg of Reservations.Msg\r\n | MessagesMsg of Messages.Msg\r\n | AccountDetailsMsg of AccountDetails.Msg\r\n | ChangePasswordMsg of ChangePassword.Msg\r\n | BankAccountMsg of BankAccount.Msg\r\n | Other\r\n | ShowError of string * ErrorInfo\r\n | ClearError\r\n \r\n type Submodel =\r\n | Empty\r\n | AccommodationBase of AccommodationBase.Model\r\n | Reservations of Reservations.Model\r\n | Messages of Messages.Model\r\n | ChangePassword of ChangePassword.Model\r\n | AccountDetails of AccountDetails.Model\r\n | BankAccount of BankAccount.Model\r\n \r\n \r\n type Model =\r\n {\r\n Submodel : Submodel\r\n ErrorMessage : string\r\n }\r\n \r\n let init(parameters: Parameters): Model * Cmd =\r\n match parameters with\r\n | ReservationId id ->\r\n { Submodel = Reservations (Reservations.Items ({ Reservations.ReservationList.Model.Empty with Parent = Reservations.Parent.Owner }))\r\n ErrorMessage = \"\"\r\n }, id |> Reservations.ReservationList.Edit |> Reservations.ListMsg |> ReservationMsg |> Cmd.ofMsg\r\n | PartnerKey (partner, key) ->\r\n { Submodel = Empty;\r\n ErrorMessage = \"\"\r\n }, Cmd.ofMsg <| ShowAccommodationBase (Some (partner, key))\r\n | Parameters.Empty ->\r\n { Submodel = Empty;\r\n ErrorMessage = \"\"\r\n }, Cmd.ofMsg (ShowReservations None)\r\n \r\n let mapAccommodationBaseMsg = function AccommodationBase.ShowError (m, e) -> ShowError (m, e) | m -> AccommodationBaseMsg m\r\n \r\n let mapReservationMsg = function Reservations.ShowError (m, e) -> ShowError (m, e) | m -> ReservationMsg m\r\n\r\n let mapMessagesMsg = function Messages.MessageListMsg (Messages.MessagetList.ShowError (m, e)) -> ShowError (m, e) | m -> MessagesMsg m\r\n\r\n let mapAccountDetailsMsg = function AccountDetails.ShowError (m, e) -> ShowError (m, e) | m -> AccountDetailsMsg m\r\n\r\n let mapChangePasswordMsg = function ChangePassword.ShowError (m, e) -> ShowError (m, e) | m -> ChangePasswordMsg m\r\n\r\n let mapBankAccountMsg = function BankAccount.ShowError (m, e) -> ShowError (m, e) | m -> BankAccountMsg m\r\n \r\n \r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg, model.Submodel with\r\n | ShowAccommodationBase partnerKey, _ ->\r\n let acmModel, acmCmd = AccommodationBase.init partnerKey\r\n { model with Submodel = AccommodationBase acmModel }, Cmd.map mapAccommodationBaseMsg acmCmd\r\n | AccommodationBaseMsg submsg, Submodel.AccommodationBase submodel ->\r\n let newSubmodel, subcmd = AccommodationBase.update submsg submodel\r\n { model with Submodel = Submodel.AccommodationBase newSubmodel }, Cmd.map mapAccommodationBaseMsg subcmd\r\n | ShowReservations resortIdOpt, _ ->\r\n let parentId = resortIdOpt\r\n |> Option.map Reservations.Parent.Resort\r\n |> Option.defaultValue Reservations.Parent.Owner\r\n let rsModel, rsCmd = Reservations.init parentId\r\n { model with Submodel = Submodel.Reservations rsModel }, Cmd.map mapReservationMsg rsCmd\r\n | ReservationMsg msg, Submodel.Reservations submodel ->\r\n let rsModel, rsCmd = Reservations.update msg submodel\r\n { model with Submodel = Submodel.Reservations rsModel }, Cmd.map mapReservationMsg rsCmd\r\n | ShowMessages resortIdOpt, _ ->\r\n let parentId = resortIdOpt\r\n |> Option.map Reservations.Parent.Resort\r\n |> Option.defaultValue Reservations.Parent.Owner\r\n let cmModel, cmCmd = Messages.init parentId\r\n { model with Submodel = Submodel.Messages cmModel }, Cmd.map mapMessagesMsg cmCmd\r\n | MessagesMsg msg, Submodel.Messages submodel ->\r\n let cmModel, cmCmd = Messages.update msg submodel\r\n { model with Submodel = Submodel.Messages cmModel }, Cmd.map mapMessagesMsg cmCmd\r\n | ShowAccountDetails, _ ->\r\n let adMdl, adCmd = AccountDetails.init()\r\n { model with Submodel = AccountDetails adMdl }, Cmd.map mapAccountDetailsMsg adCmd\r\n | AccountDetailsMsg msg, AccountDetails mdl ->\r\n let adMdl, adCmd = AccountDetails.update msg mdl\r\n { model with Submodel = AccountDetails adMdl }, Cmd.map mapAccountDetailsMsg adCmd\r\n | ShowChangePasswordForm, _ ->\r\n let cpMdl, cpCmd = ChangePassword.init()\r\n { model with Submodel = ChangePassword cpMdl}, Cmd.none\r\n | ChangePasswordMsg msg, ChangePassword submodel ->\r\n let cpMdl, cpCmd = ChangePassword.update msg submodel\r\n { model with Submodel = ChangePassword cpMdl}, Cmd.map mapChangePasswordMsg cpCmd\r\n | ShowBankAccount, _ ->\r\n let baMdl, baCmd = BankAccount.init()\r\n { model with Submodel = BankAccount baMdl}, Cmd.map mapBankAccountMsg baCmd\r\n | BankAccountMsg msg, BankAccount submodel ->\r\n let baMdl, baCmd = BankAccount.update msg submodel\r\n { model with Submodel = BankAccount baMdl}, Cmd.map mapBankAccountMsg baCmd\r\n | ShowError (m, e), _ ->\r\n match e with\r\n | { errorType = ErrorType.Other; errorMessage = msg } ->\r\n { model with ErrorMessage = sprintf \"%s %s\" m msg }, Cmd.none\r\n | { errorType = ErrorType.SessionExpired } ->\r\n#if DEBUG\r\n Browser.Dom.window.location.href <- \"/owner-auth\" \r\n#else\r\n Browser.Dom.window.location.reload() \r\n#endif\r\n { model with ErrorMessage = sprintf \"%s Sesja wygasła. Za chwilę nastąpi przekierowanie do strony logowania.\" m }, Cmd.none\r\n | ClearError, _ ->\r\n { model with ErrorMessage = \"\" }, Cmd.none \r\n | _, _ ->\r\n model, Cmd.none\r\n \r\n \r\n open Fable.React\r\n open Fable.React.Props\r\n \r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n div [ Class \"content-wrapper\" ] [ \r\n div [\r\n yield Class \"alert alert-danger alert-dismissible\"\r\n if System.String.IsNullOrEmpty model.ErrorMessage then\r\n yield Style [ Display DisplayOptions.None ]\r\n yield Role \"alert\"\r\n ] [\r\n button [ Type \"button\"; Class \"close\"; OnClick (Event.none dispatch ClearError) ] [ str \"x\" ]\r\n h4 [] [\r\n i [ Class \"icon fa fa-ban\" ] []\r\n str \"UWAGA!\"\r\n ]\r\n str model.ErrorMessage\r\n ]\r\n match model.Submodel with\r\n | AccommodationBase model ->\r\n AccommodationBase.view model (AccommodationBaseMsg >> dispatch)\r\n | Reservations model ->\r\n Reservations.view model (ReservationMsg >> dispatch)\r\n | Messages model ->\r\n Messages.view model (MessagesMsg >> dispatch)\r\n | AccountDetails model ->\r\n AccountDetails.view model (AccountDetailsMsg >> dispatch)\r\n | ChangePassword model ->\r\n ChangePassword.view model (ChangePasswordMsg >> dispatch)\r\n | BankAccount model ->\r\n BankAccount.view model (BankAccountMsg >> dispatch)\r\n | Submodel.Empty ->\r\n section [ Class \"content\" ] [ str \"Czekaj...\" ]\r\n ]\r\n\r\n let subscribe (model: Model) =\r\n Cmd.batch [\r\n Cmd.map MessagesMsg (Messages.subscribe ())\r\n Cmd.map ReservationMsg (Reservations.subscribe ())\r\n ]\r\n\r\n\r\nopen Elmish\r\nopen Commons\r\n\r\ntype Msg =\r\n | HeaderMsg of Header.Msg\r\n | SidebarMsg of Sidebar.Msg\r\n | ContentMsg of Content.Msg\r\n | ShowError of string * ErrorInfo\r\n\r\ntype Model =\r\n {\r\n Header : Header.Model\r\n Sidebar : Sidebar.Model\r\n Content : Content.Model\r\n PartnerKey : (string * string) option\r\n }\r\n\r\nlet mapHeaderMsg = function Header.ShowError (m, e) -> ShowError (m, e) | m -> HeaderMsg m\r\nlet mapSidebarMsg = function Sidebar.ShowError (m, e) -> ShowError (m, e) | m -> SidebarMsg m\r\nlet mapContentMsg = function Content.ShowError (m, e) -> ShowError (m, e) | m -> ContentMsg m\r\n\r\nlet init(parameters: Parameters): Model * Cmd =\r\n let mhModel, mhCmd = Header.init ()\r\n let sbModel, sbCmd = Sidebar.init ()\r\n let ctModel, ctCmd = Content.init parameters\r\n {\r\n Header = mhModel\r\n Sidebar = sbModel\r\n Content = ctModel\r\n PartnerKey = match parameters with ReservationId _ | Empty -> None | PartnerKey (p, k) -> Some (p, k)\r\n }, Cmd.batch [ Cmd.map mapHeaderMsg mhCmd; Cmd.map mapSidebarMsg sbCmd; Cmd.map ContentMsg ctCmd ] \r\n\r\n\r\nlet update (msg: Msg) (model: Model) : Model * Cmd =\r\n match msg with\r\n | ShowError (m, e) ->\r\n model, Cmd.ofMsg (ContentMsg (Content.ShowError (m, e)))\r\n | HeaderMsg mhMsg ->\r\n let ctModel, ctCmd =\r\n match mhMsg with\r\n | Header.CommonsMsg HeaderCommons.AccountDetails ->\r\n Content.update Content.ShowAccountDetails model.Content\r\n | Header.CommonsMsg HeaderCommons.ChangePassword ->\r\n Content.update Content.ShowChangePasswordForm model.Content\r\n | Header.CommonsMsg HeaderCommons.BankAccount ->\r\n Content.update Content.ShowBankAccount model.Content\r\n | _ -> model.Content, Cmd.none\r\n let mhModel, mhCmd = Header.update mhMsg model.Header\r\n { model with Header = mhModel; Content = ctModel },\r\n Cmd.batch [\r\n Cmd.map mapHeaderMsg mhCmd\r\n Cmd.map mapContentMsg ctCmd\r\n ]\r\n | SidebarMsg sbMsg ->\r\n let ctModel, ctCmd =\r\n match sbMsg with\r\n | Sidebar.AccommodationBase ->\r\n Content.update (Content.ShowAccommodationBase model.PartnerKey) model.Content\r\n | Sidebar.Reservations p ->\r\n Content.update (Content.ShowReservations p) model.Content\r\n | Sidebar.Messages p ->\r\n Content.update (Content.ShowMessages p) model.Content\r\n | Sidebar.AccountDetails ->\r\n Content.update Content.ShowAccountDetails model.Content\r\n | Sidebar.ChangePassword ->\r\n Content.update Content.ShowChangePasswordForm model.Content\r\n | Sidebar.BankAccount ->\r\n Content.update Content.ShowBankAccount model.Content\r\n | _ -> model.Content, Cmd.none\r\n let sbModel, sbCmd = Sidebar.update sbMsg model.Sidebar\r\n { model with Sidebar = sbModel; Content = ctModel },\r\n Cmd.batch [\r\n Cmd.map mapSidebarMsg sbCmd\r\n Cmd.map mapContentMsg ctCmd\r\n ] \r\n | ContentMsg cnMsg ->\r\n let sbModel, sbCmd = \r\n match cnMsg with\r\n | Content.ReservationMsg (Reservations.FormMsg Reservations.ReservationDetails.Save) \r\n | Content.MessagesMsg (Messages.MessageListMsg Messages.MessagetList.ResponseSent) ->\r\n Sidebar.update Sidebar.ReloadResortList model.Sidebar \r\n | _ ->\r\n model.Sidebar, Cmd.none\r\n let cnModel, cmd = Content.update cnMsg model.Content\r\n { model with\r\n Content = cnModel\r\n Sidebar = sbModel\r\n }, Cmd.batch [\r\n Cmd.map mapContentMsg cmd\r\n Cmd.map mapSidebarMsg sbCmd\r\n ]\r\n\r\nopen Fable.React\r\nopen Fable.React.Props\r\nopen Fulma\r\n\r\nlet footer =\r\n footer [ Class \"main-footer\" ] [\r\n div [Class \"pull-right hidden-xs\" ] [\r\n b [] [ str \"Wersja\" ]; str \" 1.0.0\"\r\n ]\r\n strong [] [ str \"Copyright \"; i [ Class \"fa fa-copyright\" ] []; str \" 2021 Helix \" ] \r\n str \" Wszystkie prawa zastrzeżone.\"\r\n ]\r\n\r\nlet view (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n Header.view model.Header (HeaderMsg >> dispatch)\r\n Sidebar.view model.Sidebar (SidebarMsg >> dispatch)\r\n Content.view model.Content (ContentMsg >> dispatch)\r\n footer\r\n ]\r\n\r\nlet subscribe (model: Model) =\r\n Cmd.batch [\r\n Cmd.map ContentMsg (Content.subscribe model.Content)\r\n Cmd.map SidebarMsg (Sidebar.subscribe model.Sidebar)\r\n ]\r\n ","module MakeReservation\r\n\r\nopen System\r\nopen Elmish\r\nopen Fable.React\r\nopen Fable.React.Props\r\nopen Commons\r\nopen Commons.Reservations\r\nopen Shared.Resorts\r\nopen Shared.Rooms\r\nopen Shared.Calculations\r\nopen Shared.Reservations\r\nopen Fable.Core\r\nopen Fable.Remoting.Client\r\nopen Shared\r\nopen Shared.Validation\r\nopen Shared.PaymentMethods\r\nopen Shared.ServerError\r\n\r\n\r\ntype ReservationParams =\r\n | ReservationId of int * Guid\r\n | RoomId of int\r\n | ResortId of int\r\n | PartnerKey of string * string\r\n member this.IdentifiesReservation =\r\n match this with\r\n | ReservationId _ -> true\r\n | _ -> false\r\n member this.IdentifiesRoom =\r\n match this with\r\n | ReservationId _ \r\n | RoomId _ -> true\r\n | _ -> false\r\n\r\nlet reservationApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\nmodule Header =\r\n\r\n type Msg =\r\n | CommonsMsg of HeaderCommons.Msg\r\n | ShowError of string * ErrorInfo\r\n\r\n type Model = HeaderCommons.Model\r\n\r\n let mapCommonsMsg = function HeaderCommons.ShowError (m, e) -> ShowError (m, e) | m -> CommonsMsg m\r\n\r\n let init(): Model * Cmd =\r\n let cmModel, cmCmd = HeaderCommons.init \"orderer-panel.html\"\r\n cmModel, Cmd.map mapCommonsMsg cmCmd\r\n\r\n let update(msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | CommonsMsg msg ->\r\n let cmModel, cmCmd = HeaderCommons.update msg model \r\n model, Cmd.map mapCommonsMsg cmCmd\r\n \r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n HeaderCommons.view (React.ofList []) model (CommonsMsg >> dispatch)\r\n\r\n\r\nmodule Sidebar =\r\n\r\n type Msg =\r\n | CommonsMsg of SidebarCommons.Msg\r\n | ShowReservation\r\n | ShowRooms\r\n | ShowError of string * ErrorInfo\r\n \r\n type Model =\r\n {\r\n Commons : SidebarCommons.Model\r\n LastMenuMsg : Msg\r\n }\r\n\r\n let mapCommonsMsg = function SidebarCommons.ShowError (m, e) -> ShowError (m, e) | m -> CommonsMsg m\r\n\r\n let init(p: ReservationParams): Model * Cmd =\r\n let cmModel, cmCmd = SidebarCommons.init()\r\n { Commons = cmModel\r\n LastMenuMsg =\r\n match p with\r\n | ReservationId _\r\n | RoomId _ -> ShowReservation\r\n | PartnerKey _\r\n | ResortId _ -> ShowRooms\r\n }, Cmd.map mapCommonsMsg cmCmd \r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | CommonsMsg msg ->\r\n let cmModel, cmCmd = SidebarCommons.update msg model.Commons\r\n { model with Commons = cmModel }, Cmd.map mapCommonsMsg cmCmd\r\n | m ->\r\n { model with LastMenuMsg = m }, Cmd.none\r\n\r\n let menuItem model name icon dispatch msg =\r\n SidebarCommons.menuItem model name icon (model.LastMenuMsg = msg) dispatch msg\r\n \r\n let menuItemWithLabels model name icon labels dispatch msg =\r\n SidebarCommons.menuItemWithLabels model name icon (model.LastMenuMsg = msg) labels dispatch msg\r\n\r\n let sidebarMenu (model: Model) (dispatch: Msg -> unit) = \r\n ul [ Class \"sidebar-menu tree\"; Data(\"widget\", \"tree\") ] [\r\n li [ Class \"header\" ] [ str \"PRZEJDŹ DO\" ]\r\n menuItem model \"Rezerwacja\" \"fa fa-calendar\" dispatch ShowReservation\r\n menuItem model \"Wolne terminy\" \"fa fa-bed\" dispatch ShowRooms\r\n ]\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n SidebarCommons.view (sidebarMenu model dispatch) model.Commons (CommonsMsg >> dispatch)\r\n\r\nmodule RoomDetails =\r\n\r\n let galleryApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder Route.builder\r\n |> Remoting.buildProxy\r\n\r\n type Msg =\r\n | PicturesLoaded of string list\r\n | Close\r\n | ShowError of string * ErrorInfo\r\n\r\n type Model =\r\n {\r\n Resort : Resort\r\n Room : Room\r\n Pictures : string list\r\n PriceLists : (PriceList * ApplicationScope) list\r\n }\r\n static member Empty =\r\n {\r\n Resort = Resort.Empty\r\n Room = Room.Empty\r\n Pictures = []\r\n PriceLists = []\r\n }\r\n\r\n let loadGalleryCmd roomId =\r\n Cmd.OfAsync.either id (galleryApi.Load roomId) PicturesLoaded (ErrorHandling.unpack ShowError \"Nie udało się pobrać zdjęć\")\r\n\r\n let buildPriceLists (resort: Resort, room: Room) =\r\n let scopes = resort.PriceListTemplates |> List.map (fun pt -> pt.Id, pt.Scopes) |> Map.ofList\r\n [ for pl in room.PriceLists do\r\n for sc in scopes.[pl.TemplateId] do\r\n pl, sc\r\n ] |> List.sortBy (fun (_, sc) -> sc.From)\r\n\r\n let init(resort: Resort, room: Room): Model * Cmd =\r\n { Resort = resort; Room = room; Pictures = []; PriceLists = buildPriceLists (resort, room) },\r\n loadGalleryCmd room.Id\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | PicturesLoaded pictures ->\r\n { model with Pictures = pictures }, Cmd.none\r\n | Close\r\n | ShowError _ -> failwith \"Should be handled on upper level\"\r\n\r\n let carousel roomId (pictures: string list) =\r\n div [ Id \"pictures\"; Class \"carousel slide\"; Data (\"ride\", \"carousel\"); Style [ Width \"500px\"; Margin \"auto\" ] ] [\r\n if pictures.IsEmpty then\r\n div [] [ str \"Nie dodano jeszcze żadnych zdjęć\" ]\r\n else\r\n ol [ Class \"carousel-indicators\" ] [\r\n li [ Data(\"target\", \"#pictures\"); Data(\"slide-to\", \"0\"); Class \"active\"] []\r\n for i in 1..pictures.Length - 1 do\r\n li [ Data(\"target\", \"#pictures\"); Data(\"slide-to\", i.ToString()) ] []\r\n ]\r\n div [ Class \"carousel-inner\"; Role \"listbox\" ] [\r\n div [ Class \"item active\" ] [ img [ Src <| sprintf \"/gallery/room-%d/%s\" roomId pictures.Head ]]\r\n for pic in pictures.Tail do\r\n div [ Class \"item\" ] [ img [ Src <| sprintf \"/gallery/room-%d/%s\" roomId pic ]]\r\n ]\r\n a [ Class \"left carousel-control\"; Href \"#pictures\"; Role \"button\"; Data (\"slide\", \"prev\") ] [\r\n span [ Class \"icon-prev\"; AriaHidden true ] []\r\n span [ Class \"sr-only\" ] [ str \"poprzedni\" ]\r\n ]\r\n a [ Class \"right carousel-control\"; Href \"#pictures\"; Role \"button\"; Data (\"slide\", \"next\") ] [\r\n span [ Class \"icon-next\"; AriaHidden true ] []\r\n span [ Class \"sr-only\" ] [ str \"następny\" ]\r\n ]\r\n ]\r\n\r\n let yearsLabel (age: int) = if age = 1 then \"roku\" else \"lat\"\r\n\r\n let daysLabel (days: int) = if days = 1 then \"dzień\" else \"dni\"\r\n\r\n let priceListSection shortTime (pl: PriceList) = \r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] []\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| sprintf \"Ponad %d %s\" shortTime (daysLabel shortTime) ]\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| sprintf \"Do %d %s\" shortTime (daysLabel shortTime) ]\r\n td [] []\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right; Width \"200px\" ] ] [ str \"Dorośli:\" ]\r\n td [ Style [ TextAlign TextAlignOptions.Right; Width \"120px\" ] ] [ str <| Derived.ToString pl.LongTimePrice ]\r\n td [ Style [ TextAlign TextAlignOptions.Right; Width \"120px\" ] ] [ str <| Derived.ToString pl.ShortTimePrice ]\r\n ]\r\n for ag in pl.AgeGroupPricings do\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| sprintf \"Dzieci do %d %s:\" ag.AgeTo (yearsLabel ag.AgeTo) ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| Derived.ToString ag.LongTimePrice]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| Derived.ToString ag.ShortTimePrice]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Niewykorzystane miejsce:\" ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| Derived.ToString pl.LongEmptySpacePrice ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| Derived.ToString pl.ShortEmptySpacePrice ]\r\n ]\r\n ]\r\n ]\r\n\r\n let priceListTabs (model: Model) =\r\n div [ Class \"nav-tabs-custom\" ] [\r\n ul [Class \"nav nav-tabs\"] [\r\n li [ Class \"active\" ] [ \r\n a [ Href \"#priceListStandard\"; Data(\"toggle\", \"tab\"); AriaExpanded true ] [\r\n b [] [ str \"Cennik podstawowy\" ]\r\n ] \r\n ]\r\n for pl, sc in model.PriceLists do\r\n li [] [ \r\n a [ Href <| sprintf \"#priceList-%d\" pl.TemplateId; Data(\"toggle\", \"tab\") ] [\r\n b [] [ str <| sprintf \"%s - %s\" (sc.From.ToString(\"dd.MM.yyyy\")) (sc.To.ToString(\"dd.MM.yyyy\")) ]\r\n ] \r\n ]\r\n ]\r\n div [ Class \"tab-content\" ] [\r\n div [ Class \"tab-pane active\"; Id \"priceListStandard\" ] [\r\n priceListSection model.Resort.ShortTime {\r\n TemplateId = 0\r\n LongTimePrice = Overwritten model.Room.LongTimePrice\r\n ShortTimePrice= Overwritten model.Room.ShortTimePrice\r\n LongEmptySpacePrice = model.Room.LongEmptySpacePrice\r\n ShortEmptySpacePrice = model.Room.ShortEmptySpacePrice\r\n AgeGroupPricings = model.Room.AgeGroupPricings\r\n }\r\n ]\r\n for pl, _ in model.PriceLists do\r\n div [ Class \"tab-pane\"; Id <| sprintf \"priceList-%d\" pl.TemplateId ] [\r\n priceListSection model.Resort.ShortTime pl\r\n ] \r\n ]\r\n ]\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n section [ Class \"content-header\" ] [\r\n h1 [] [ str model.Room.Name ] \r\n ] \r\n section [ Class \"content\" ] [\r\n div [ Class \"box\" ] [\r\n div [ Class \"box-header with-border\" ] [ \r\n div [Class \"box-tools\" ] [ \r\n Controls.simpleButton [] \"\" \" Zamknij\" \"fa fa-times\" dispatch Close\r\n ]\r\n div [ Class \"nav-tabs-custom\" ] [\r\n ul [Class \"nav nav-tabs\"] [\r\n li [ Class \"active\" ] [ \r\n a [ Href \"#roomDescription\"; Data(\"toggle\", \"tab\"); AriaExpanded true ] [\r\n b [] [ str \"Informacje\" ]\r\n ] \r\n ]\r\n li [] [ \r\n a [ Href \"#roomGallery\"; Data(\"toggle\", \"tab\"); AriaExpanded false ] [\r\n b [] [ str \"Zdjęcia\" ]\r\n ] \r\n ]\r\n ]\r\n div [ Class \"tab-content\" ] [\r\n div [ Class \"tab-pane active\"; Id \"roomDescription\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right; Width \"200px\" ] ] [ str \"Liczba osób:\" ]\r\n td [ ColSpan 3 ] [ str ([ model.Room.Capacity; model.Room.AdditionalCapacity ] |> List.filter ((<>) 0) |> List.map string |> String.concat \" + \") ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Opis:\" ]\r\n td [ ColSpan 3; DangerouslySetInnerHTML { __html = model.Room.DetailedDescription } ] []\r\n ]\r\n ]\r\n ]\r\n priceListTabs model\r\n ]\r\n div [ Class \"tab-pane\"; Id \"roomGallery\" ] [\r\n carousel model.Room.Id model.Pictures\r\n ]\r\n ]\r\n ]\r\n \r\n ]\r\n ]\r\n \r\n ]\r\n ]\r\n\r\nmodule ChildAgeEditor =\r\n\r\n type Model =\r\n {\r\n EditedChildAge : string\r\n Children : int list\r\n }\r\n static member Empty = { EditedChildAge = \"\"; Children = [] }\r\n static member FromChildList childList = { EditedChildAge = \"\"; Children = childList }\r\n\r\n type Msg =\r\n | AddChildAge\r\n | RemoveChildAge of int\r\n | EditedChildAgeChanged of string\r\n\r\n let ageLabel age =\r\n if age = 0 then \"poniżej 1 roku\"\r\n elif age = 1 then \"1 rok\"\r\n elif age < 5 then sprintf \"%d lata\" age\r\n else sprintf \"%d lat\" age\r\n\r\n let view model dispatch =\r\n div [] [\r\n table [ Class \"table\" ] [\r\n tbody [] [ \r\n for i, age in model.Children |> List.mapi (fun i a -> i, a) do\r\n tr [] [\r\n td [ Style [ PaddingLeft \"0px\" ] ] [ str (ageLabel age) ]\r\n td [] [\r\n Controls.actionButton [] \"fa fa-times\" dispatch (RemoveChildAge i)\r\n ]\r\n ]\r\n tr [] [\r\n td [ Style [ PaddingTop \"0px\"; PaddingLeft \"0px\" ] ] [\r\n input [\r\n Class \"form-control\";\r\n Type \"text\";\r\n OnChange (Event.str dispatch EditedChildAgeChanged)\r\n Value model.EditedChildAge\r\n MaxLength 2.0\r\n ]\r\n ]\r\n td [ Style [ PaddingTop \"0px\" ] ] [\r\n Controls.actionButton [] \"fa fa-plus\" dispatch AddChildAge \r\n ]\r\n ]\r\n ] \r\n ]\r\n ]\r\n \r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | AddChildAge ->\r\n { model with\r\n EditedChildAge = \"\"\r\n Children = model.Children @ (Int32.TryParse model.EditedChildAge |> Option.FromTryParse |> Option.toList)\r\n }, Cmd.none\r\n | RemoveChildAge idx ->\r\n {model with Children = (model.Children |> List.take idx) @ (model.Children |> List.skip (idx + 1)) }, Cmd.none\r\n | EditedChildAgeChanged age ->\r\n { model with EditedChildAge = age }, Cmd.none\r\n\r\n\r\nmodule AllocationEditor =\r\n\r\n type Model =\r\n {\r\n Id : int\r\n Adults : Derived\r\n AdultsErrors : string list\r\n Children : ChildAgeEditor.Model\r\n ChildrenErrors : string list\r\n Arrangements : Arrangement list\r\n ArrangementErrors : string list\r\n Room : Room\r\n EditedArrangementTypeId : int\r\n EditedArrangementQuantity : string\r\n Resort : Resort\r\n }\r\n static member Empty =\r\n {\r\n Id = 0\r\n Adults = Derived.OfString \"\"\r\n AdultsErrors = []\r\n Children = ChildAgeEditor.Model.Empty\r\n ChildrenErrors = []\r\n Arrangements = []\r\n ArrangementErrors = []\r\n Room = Room.Empty\r\n EditedArrangementTypeId = 0\r\n EditedArrangementQuantity = \"\"\r\n Resort = Resort.Empty\r\n }\r\n static member FromAlloction (resort: Resort, rooms: Room list) (allocation: Allocation) =\r\n {\r\n Id = allocation.Id\r\n Room = rooms |> roomById allocation.RoomId\r\n Adults = Derived.Map string allocation.Adults\r\n AdultsErrors = []\r\n Children = ChildAgeEditor.Model.FromChildList(allocation.Children)\r\n ChildrenErrors = []\r\n Arrangements = allocation.Arrangements\r\n ArrangementErrors = []\r\n EditedArrangementTypeId = 0\r\n EditedArrangementQuantity = \"\"\r\n Resort = resort\r\n\r\n }\r\n static member ToAllocation (model: Model) =\r\n {\r\n Id = model.Id\r\n RoomId = model.Room.Id\r\n Adults = model.Adults |> Derived.ParseInt\r\n Children = model.Children.Children\r\n Arrangements = model.Arrangements\r\n Price = Uninitialised //model.Price\r\n }\r\n\r\n type Msg =\r\n | AdultsChanged of string\r\n | RoomChanged of int option\r\n | ChildAgeMsg of ChildAgeEditor.Msg\r\n | EditedArrangementChanged of int option\r\n | EditedArrangementQuantityChanged of string\r\n | AddArrangement\r\n | RemoveArrangement of Arrangement\r\n | RemoveAllocation\r\n | ReturnToRoomSelection\r\n\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | AdultsChanged adults ->\r\n { model with Adults = Overwritten adults }, Cmd.none\r\n | ChildAgeMsg msg ->\r\n let chMdl, chCmd = ChildAgeEditor.update msg model.Children\r\n { model with Children = chMdl }, Cmd.map ChildAgeMsg chCmd\r\n | EditedArrangementChanged id ->\r\n { model with EditedArrangementTypeId = id |> Option.defaultValue 0 }, Cmd.none\r\n | EditedArrangementQuantityChanged quantity ->\r\n { model with EditedArrangementQuantity = quantity }, Cmd.none\r\n | AddArrangement ->\r\n { model with\r\n Arrangements = model.Arrangements @ [ {\r\n Type = model.Resort.ArrangementTypes |> List.find (fun at -> at.Id = model.EditedArrangementTypeId)\r\n Units = Int32.Parse model.EditedArrangementQuantity\r\n } ]\r\n EditedArrangementTypeId = 0\r\n EditedArrangementQuantity = \"\"\r\n }, Cmd.none\r\n | RemoveArrangement a ->\r\n { model with Arrangements = model.Arrangements |> List.filter ((<>) a) }, Cmd.none\r\n\r\n\r\n let arrangementEditor (model: Model) dispatch = \r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ Width \"70%\"; PaddingLeft \"0px\" ]] [ str \"Rodzaj\" ]\r\n th [] [ str \"Ilość\" ]\r\n th [] [ ]\r\n ]\r\n for a in model.Arrangements do\r\n tr [] [\r\n td [ Style [ PaddingLeft \"0px\" ] ] [ str a.Type.Description ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| a.Units.ToString() ]\r\n td [] [ Controls.actionButton [] \"fa fa-times\" dispatch (RemoveArrangement a) ]\r\n ]\r\n tr [] [\r\n td [ Style [ PaddingLeft \"0px\" ] ] [\r\n select [\r\n Class \"form-control\"\r\n OnChange (Event.int dispatch EditedArrangementChanged)\r\n Value model.EditedArrangementTypeId \r\n ] [ option [ Value 0 ] [ str \"\" ]\r\n for a in model.Room.Arrangements do\r\n option [ Value a.Type.Id ] [ str a.Type.Description ]\r\n ]\r\n ]\r\n td [] [\r\n input [\r\n Class \"form-control\"\r\n Type \"text\"\r\n OnChange (Event.str dispatch EditedArrangementQuantityChanged)\r\n Value model.EditedArrangementQuantity\r\n MaxLength 3.0\r\n ]\r\n ]\r\n td [] [ Controls.actionButton [] \"fa fa-plus\" dispatch AddArrangement ]\r\n ]\r\n ] \r\n ]\r\n \r\n let view (isMultiRoom: bool) (isFirst: bool) (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title no-padding col-sm-10\" ] [\r\n div [ Class \"box-body no-padding col-sm-1\" ] [ b [] [ str <| model.Room.RoomType.SingularNominative + \":\" ] ]\r\n div [ Class \"col-sm-6 no-padding \" ] [ str model.Room.Name ] \r\n ]\r\n if isMultiRoom then\r\n div [ Class \"box-tools pull-right\" ] [\r\n Controls.simpleButton [] \"\" \" Usuń\" \"fa fa-remove\" dispatch RemoveAllocation\r\n ]\r\n if isFirst then\r\n div [ Class \"box-tools pull-right\" ] [\r\n Controls.simpleButton [] \"\"\r\n (if isMultiRoom then \" Wybierz\" else \" Wybierz inny\")\r\n \"fa fa-search\"\r\n dispatch ReturnToRoomSelection\r\n ]\r\n ]\r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n\r\n Forms.formGroup (not model.AdultsErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-1\" \"adults\" \"Liczba dorosłych\" 3.0 \r\n (Derived.ToTag string \"\" model.Adults)\r\n (Forms.errorsRight \"col-sm-4\" model.AdultsErrors)\r\n (Event.str dispatch AdultsChanged)\r\n\r\n Forms.formGroup (not model.ChildrenErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-2\" \"editedChildAge\" \"Dzieci\" \r\n (Forms.errorsBelow model.ChildrenErrors)\r\n (ChildAgeEditor.view model.Children (ChildAgeMsg >> dispatch))\r\n\r\n Forms.formGroup (not model.ArrangementErrors.IsEmpty)\r\n <| Forms.controlWithLabel \"col-sm-3\" \"col-sm-4\" \"arrangements\" \"Dodatkowe wyposażenie\" \r\n (Forms.errorsBelow model.ArrangementErrors)\r\n (arrangementEditor model dispatch)\r\n ]\r\n ]\r\n\r\nmodule ReservationDetails =\r\n\r\n type ViewType =\r\n | Editor\r\n | Summary\r\n\r\n \r\n type Model =\r\n {\r\n ViewType : ViewType\r\n Id : int\r\n FirstName : Derived\r\n FirstNameErrors : string list\r\n LastName : Derived\r\n LastNameErrors : string list\r\n Email : Derived\r\n EmailErrors : string list\r\n Phone : Derived\r\n PhoneErrors : string list\r\n Resort : Resort\r\n AllRooms : Room list\r\n BankAccount : BankAccount\r\n Orderer : OrdererData\r\n From : DateTime\r\n To : DateTime\r\n FromToErrors : string list\r\n Arrival : string\r\n ArrivalErrors : string list\r\n Price : Derived\r\n PriceIsFixed : bool\r\n Prepayment : Derived\r\n PrepaymentIsFixed : bool\r\n PrepaymentDeadline : DateTime option\r\n Notes : string\r\n Allocations : AllocationEditor.Model list\r\n Messages : Message list\r\n NewMessage : string\r\n NewMessageErrors : string list\r\n Secret : Guid\r\n\r\n TermsOfServiceConsent : bool\r\n RodoConsent : bool\r\n\r\n Payments : Payment list\r\n BaseState : BaseState\r\n DetailedState : Derived\r\n\r\n IsMultiRoom : bool\r\n }\r\n static member Initial (viewType, secret) =\r\n {\r\n ViewType = viewType\r\n Id = 0\r\n Resort = Resort.Empty\r\n AllRooms = []\r\n BankAccount = BankAccount.Empty\r\n Orderer = OrdererData.Empty\r\n FirstName = Calculated \"\"\r\n FirstNameErrors = []\r\n LastName = Calculated \"\"\r\n LastNameErrors = []\r\n Email = Calculated \"\"\r\n EmailErrors = []\r\n Phone = Calculated \"\"\r\n PhoneErrors = []\r\n From = DateTime.Today\r\n To = DateTime.Today\r\n Arrival = \"\"\r\n ArrivalErrors = []\r\n FromToErrors = []\r\n Price = Calculated 0.0m\r\n PriceIsFixed = false\r\n Prepayment = Calculated 0.0m\r\n PrepaymentIsFixed = false\r\n PrepaymentDeadline = None\r\n Notes = \"\"\r\n Allocations = []\r\n Messages = []\r\n NewMessage = \"\"\r\n NewMessageErrors = []\r\n Secret = secret\r\n\r\n TermsOfServiceConsent = false\r\n RodoConsent = false\r\n\r\n Payments = []\r\n BaseState = BaseState.New\r\n DetailedState = Calculated DetailedState.New\r\n\r\n IsMultiRoom = true\r\n }\r\n\r\n member private this.UpdateInternalWith\r\n (updateReservation: Model -> Resort -> Room list -> Reservation -> Guid -> Model)\r\n (reservation: Reservation option, room: Room option, resort: Resort, allRooms: Room list, bankAccount: BankAccount, ordererData: OrdererData option, secret: Guid option) =\r\n let fromReservation =\r\n Option.map2 (updateReservation this resort allRooms)\r\n (Option.map (recalcReservation(resort, allRooms, DateTime.Today)) reservation)\r\n secret \r\n |> Option.defaultValue this\r\n let fromRoom =\r\n room\r\n |> Option.map (fun room ->\r\n let allocation = fromReservation.Allocations |> List.tryHead |> Option.defaultValue AllocationEditor.Model.Empty\r\n { fromReservation with Allocations = [ { allocation with Room = room } ] }) \r\n |> Option.defaultValue fromReservation\r\n { fromRoom with\r\n Resort = resort\r\n AllRooms = allRooms \r\n BankAccount = bankAccount\r\n Allocations = fromRoom.Allocations |> List.map (fun a -> { a with Resort = resort })\r\n Orderer =\r\n fromRoom.Orderer.OrdererId\r\n |> Option.bind (fun id -> ordererData)\r\n |> Option.defaultValue fromRoom.Orderer\r\n }\r\n \r\n member this.UpdateWith = this.UpdateInternalWith (fun (this: Model) resort allRooms (reservation: Reservation) secret ->\r\n { this with\r\n Id = reservation.Id\r\n Resort = resort\r\n AllRooms = allRooms\r\n BankAccount = BankAccount.Empty\r\n Orderer = reservation.Orderer\r\n FirstName = Calculated reservation.Orderer.FirstName\r\n FirstNameErrors = []\r\n LastName = Calculated reservation.Orderer.LastName\r\n LastNameErrors = []\r\n Email = Calculated reservation.Orderer.Email\r\n EmailErrors = []\r\n Phone = Calculated reservation.Orderer.Phone\r\n PhoneErrors = []\r\n From = reservation.From\r\n To = reservation.To\r\n FromToErrors = []\r\n Arrival = reservation.DeclaredArrival |> Option.map (fun t -> t.ToString(\"HH:mm\")) |> Option.defaultValue \"\"\r\n ArrivalErrors = []\r\n Price = reservation.Price\r\n PriceIsFixed = reservation.PriceIsFixed\r\n Prepayment = reservation.Prepayment\r\n PrepaymentIsFixed = reservation.PrepaymentIsFixed\r\n PrepaymentDeadline = Some reservation.PrepaymentDeadline\r\n Notes = reservation.Notes\r\n Messages = reservation.Messages\r\n Allocations = reservation.Allocations |> List.map (AllocationEditor.Model.FromAlloction(resort, allRooms))\r\n NewMessage = \"\"\r\n NewMessageErrors = []\r\n Secret = secret\r\n\r\n TermsOfServiceConsent = reservation.Id <> 0\r\n RodoConsent = reservation.Id <> 0\r\n\r\n Payments = reservation.Payments\r\n BaseState = reservation.BaseState\r\n DetailedState = Calculated reservation.DetailedState\r\n\r\n IsMultiRoom = reservation.Allocations.Length > 1\r\n }) \r\n\r\n member this.RefreshUpdateWith = this.UpdateInternalWith (fun (this: Model) _ _ (reservation: Reservation) secret -> \r\n { this with\r\n Price = reservation.Price\r\n PriceIsFixed = reservation.PriceIsFixed\r\n Prepayment = reservation.Prepayment\r\n PrepaymentIsFixed = reservation.PrepaymentIsFixed\r\n PrepaymentDeadline = Some reservation.PrepaymentDeadline\r\n Notes = reservation.Notes\r\n Messages = reservation.Messages\r\n\r\n Payments = reservation.Payments\r\n BaseState = reservation.BaseState\r\n DetailedState = Calculated reservation.DetailedState\r\n }) \r\n\r\n static member UpdateOrdererData (orderer: OrdererData) (model: Model) =\r\n { model with\r\n Orderer = orderer\r\n FirstName = model.FirstName |> Derived.Recalc orderer.FirstName\r\n LastName = model.LastName |> Derived.Recalc orderer.LastName\r\n Email = model.Email |> Derived.Recalc orderer.Email\r\n Phone = model.Phone |> Derived.Recalc orderer.Phone\r\n }\r\n static member ToReservation (model: Model): Reservation =\r\n {\r\n Id = model.Id\r\n ResortId = model.Resort.Id\r\n Orderer = {\r\n OrdererId =\r\n if [ model.FirstName; model.LastName; model.Email; model.Phone ] |> List.exists Derived.IsOverwritten then\r\n model.Orderer.OrdererId\r\n else\r\n None\r\n FirstName = model.FirstName.Value\r\n LastName = model.LastName.Value\r\n Email = model.Email.Value\r\n Phone = model.Phone.Value\r\n }\r\n From = model.From\r\n To = model.To\r\n Allocations = model.Allocations |> List.map AllocationEditor.Model.ToAllocation \r\n Payments = model.Payments\r\n Notes = model.Notes\r\n Messages = model.Messages\r\n Price = model.Price\r\n PriceIsFixed = model.PriceIsFixed\r\n Prepayment = model.Prepayment\r\n PrepaymentIsFixed = model.PrepaymentIsFixed\r\n PrepaymentDeadline = model.PrepaymentDeadline |> Option.defaultValue DateTime.Today\r\n DeclaredArrival = model.Arrival |> DateTime.TryParse |> Option.FromTryParse |> Option.map (fun d -> System.DateTime(d.Ticks, DateTimeKind.Utc))\r\n BaseState = model.BaseState\r\n DetailedState = model.DetailedState.Value\r\n }\r\n static member UpdateDerived (reservation: Reservation) (model: Model) =\r\n { model with\r\n Price = reservation.Price\r\n Prepayment = reservation.Prepayment\r\n PrepaymentDeadline = Some reservation.PrepaymentDeadline\r\n BaseState = reservation.BaseState\r\n DetailedState = Calculated (if reservation.Id = 0 then DetailedState.New else reservation.DetailedState)\r\n }\r\n static member ToCalculationData (model: Model) =\r\n {\r\n From = model.From\r\n To = model.To\r\n Allocations = model.Allocations |> List.map AllocationEditor.Model.ToAllocation \r\n Payments = model.Payments\r\n Price = model.Price\r\n Prepayment = model.Prepayment\r\n PrepaymentDeadline = model.PrepaymentDeadline |> Option.defaultValue DateTime.MaxValue\r\n BaseState = model.BaseState\r\n DetailedState = model.DetailedState\r\n }\r\n static member FromCalculationData (model: Model) (data: ReservationCalculationData) =\r\n { model with\r\n Price = data.Price\r\n Prepayment = data.Prepayment\r\n PrepaymentDeadline = Some data.PrepaymentDeadline\r\n BaseState = data.BaseState\r\n DetailedState = if model.Id = 0 then Calculated DetailedState.New else data.DetailedState\r\n }\r\n static member Recalc (model: Model) =\r\n model\r\n |> Model.ToCalculationData\r\n |> calculateReservation (model.Resort, (model.Allocations |> List.map (fun a -> a.Room)), DateTime.Today)\r\n |> Model.FromCalculationData (model |> Model.UpdateOrdererData model.Orderer)\r\n static member RecalcP (model: Model) =\r\n Model.Recalc\r\n { model with\r\n Price = if model.PrepaymentIsFixed then model.Price else model.Price |> Derived.Rewrap Calculated \r\n Prepayment = if model.PrepaymentIsFixed then model.Prepayment else model.Prepayment |> Derived.Rewrap Calculated \r\n }\r\n static member Validate (model: Model) =\r\n [\r\n for i, a in model.Allocations |> List.indexed do\r\n yield! Validation.checkIfDerivedValidInt \"Liczba dorosłych\" a.Adults |> Validation.forField (sprintf \"Adults%d\" i)\r\n yield! Validation.checkIfValidOrEmptyTime \"Godzina przyjazdu\" model.Arrival |> Validation.forField \"Arrival\"\r\n ]\r\n static member WithErrors (errors: (string * string) list) (model: Model) =\r\n {\r\n model with\r\n FirstNameErrors = errors |> getErrorsOf \"FirstName\"\r\n LastNameErrors = errors |> getErrorsOf \"LastName\"\r\n EmailErrors = errors |> getErrorsOf \"Email\"\r\n PhoneErrors = errors |> getErrorsOf \"Phone\"\r\n FromToErrors = (errors |> getErrorsOf \"From\") @ (errors |> getErrorsOf \"To\")\r\n ArrivalErrors = errors |> getErrorsOf \"Arrival\"\r\n Allocations = model.Allocations |> List.mapi (fun i a ->\r\n { a with\r\n AdultsErrors = errors |> getErrorsOf (sprintf \"Adults%d\" i)\r\n ChildrenErrors = errors |> getErrorsOf (sprintf \"Children%d\" i)\r\n ArrangementErrors = errors |> getErrorsOf (sprintf \"ArrangementVariants%d\" i)\r\n })\r\n NewMessageErrors = errors |> getErrorsOf \"NewMessage\"\r\n }\r\n static member Update (model: Model) =\r\n let temp =\r\n { model with\r\n Price = model.Price |> Derived.Rewrap Overwritten \r\n Prepayment = model.Prepayment |> Derived.Rewrap Overwritten \r\n }\r\n if not <| String.IsNullOrEmpty model.NewMessage then\r\n { temp with\r\n Messages = model.Messages @ [{ AddedAt = DateTime.Now; Party = Party.Guest; Content = model.NewMessage }]\r\n NewMessage = \"\"\r\n }\r\n else\r\n temp\r\n static member UpdateOccupancies (reservation: Reservation) (model: Model) =\r\n { model with AllRooms = model.AllRooms |> List.map (updateOccupancies reservation) }\r\n static member FixAllocations (model: Model) =\r\n { model with\r\n Allocations = model.Allocations |> List.map (fun a -> { a with Adults = Overwritten a.Adults.Value })\r\n }\r\n\r\n\r\n type Msg =\r\n | FirstNameChanged of string\r\n | LastNameChanged of string\r\n | EmailChanged of string\r\n | PhoneChanged of string\r\n | AdultsChanged of string\r\n | FromToChanged of DateTime * DateTime\r\n | ArrivalChanged of string\r\n | AllocationMsg of int * AllocationEditor.Msg\r\n | NewMessageChanged of string\r\n | RodoChanged of bool\r\n | TermsOfServiceChanged of bool\r\n | Save\r\n | SaveCompleted of int\r\n | ReturnToRoomSelection\r\n | SendMessage\r\n | SendMessageCompleted\r\n | ModifyReservation\r\n | CancelReservation\r\n | CancellationCompleted \r\n | ShowError of string * ErrorInfo\r\n\r\n let saveReservationCmd (reservation, secret) =\r\n Cmd.OfAsync.either id (reservationApi.SaveReservation (reservation, secret)) SaveCompleted (ErrorHandling.unpack ShowError \"Nie udało się zapisać zmian\")\r\n\r\n let cancelReservationCmd (reservationId, content, secret) =\r\n Cmd.OfAsync.either id (reservationApi.CancelReservation (reservationId, content, secret)) (fun _ -> CancellationCompleted) (ErrorHandling.unpack ShowError \"Nie udało się anulować rezerwacji\")\r\n\r\n let sendMessageCmd (reservationId, content, secret) =\r\n Cmd.OfAsync.either id (reservationApi.SendMessage (reservationId, content, secret)) (fun _ -> SendMessageCompleted) (ErrorHandling.unpack ShowError \"Nie udało się wysłać wiadomości\")\r\n\r\n //let init(reservation: Reservation option, room: Room option, resort: Resort, allRooms: Room list, bankAccount: BankAccount, ordererData: OrdererData option, secret: Guid option): Model * Cmd =\r\n // Model.Empty(ViewType.Editor).UpdateWith(reservation, room, resort, allRooms, bankAccount, ordererData, secret), Cmd.none\r\n \r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | FirstNameChanged name ->\r\n { model with FirstName = Derived.OfString name } |> Model.Recalc, Cmd.none\r\n | LastNameChanged name ->\r\n { model with LastName = Derived.OfString name } |> Model.Recalc, Cmd.none\r\n | EmailChanged email ->\r\n { model with Email = Derived.OfString email } |> Model.Recalc, Cmd.none\r\n | PhoneChanged phone ->\r\n { model with Phone = Derived.OfString phone } |> Model.Recalc, Cmd.none\r\n | FromToChanged (dateFrom, dateTo) ->\r\n { model with From = dateFrom; To = dateTo } |> Model.RecalcP, Cmd.none\r\n | AllocationMsg (idx, AllocationEditor.Msg.RemoveAllocation) ->\r\n let x, y = model.Allocations |> List.splitAt idx\r\n { model with Allocations = x @ (List.tail y) } |> Model.RecalcP, Cmd.none\r\n | AllocationMsg (_, AllocationEditor.Msg.ReturnToRoomSelection) ->\r\n model, Cmd.ofMsg ReturnToRoomSelection\r\n | AllocationMsg (idx, amsg) ->\r\n let amdl, acmd = AllocationEditor.update amsg model.Allocations.[idx]\r\n { model with\r\n Allocations = model.Allocations |> List.mapi (fun i a -> if i = idx then amdl else a)\r\n } |> Model.RecalcP,\r\n Cmd.map (fun msg -> AllocationMsg (idx, msg)) acmd\r\n | ArrivalChanged time ->\r\n { model with Arrival = time }, Cmd.none\r\n | NewMessageChanged cmt ->\r\n { model with NewMessage = cmt }, Cmd.none\r\n | RodoChanged flag ->\r\n { model with RodoConsent = flag }, Cmd.none\r\n | TermsOfServiceChanged flag ->\r\n { model with TermsOfServiceConsent = flag }, Cmd.none\r\n | Save ->\r\n let errors =\r\n model\r\n |> Validation.combine\r\n Model.Validate\r\n (Model.ToReservation >> validateReservation (model.Resort, model.Allocations |> List.map (fun a -> a.Room), DateTime.Today))\r\n let model = model |> Model.WithErrors errors\r\n if errors.IsEmpty then\r\n let model = model |> Model.Update\r\n let res = model |> Model.ToReservation\r\n model, saveReservationCmd (model |> Model.FixAllocations |> Model.ToReservation, model.Secret)\r\n else\r\n model, Cmd.none\r\n | SaveCompleted id ->\r\n if model.Id = 0 then\r\n Browser.Dom.window.location.href <- sprintf \"make-reservation?id=%d&uid=%A\" id model.Secret\r\n { model with Id = id; ViewType = ViewType.Summary }, Cmd.none\r\n | ModifyReservation ->\r\n { model with ViewType = ViewType.Editor }, Cmd.none\r\n | SendMessage ->\r\n model, sendMessageCmd (model.Id, model.NewMessage, model.Secret)\r\n | SendMessageCompleted ->\r\n model |> Model.Update, Cmd.none\r\n | CancelReservation ->\r\n model, cancelReservationCmd (model.Id, model.NewMessage, model.Secret)\r\n | CancellationCompleted ->\r\n { model with BaseState = BaseState.Cancelled } |> Model.Update |> Model.Recalc, Cmd.none\r\n \r\n \r\n let messageEditor (model: Model) dispatch =\r\n div [ Class \"col-xs-8\" ] [ \r\n div [ Class \"table-responsive\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n for cmt in model.Messages do\r\n tr [] [\r\n td [] [\r\n div [] [\r\n b [] [ str (match cmt.Party with\r\n | Party.Guest -> \"Ja\"\r\n | Party.Resort -> \"Właściciel\")\r\n ]\r\n span [ Class \"pull-right\" ] [ str <| cmt.AddedAt.ToString(\"dd.MM.yyyy\") ]\r\n ]\r\n div [] [ str cmt.Content ] \r\n ] \r\n ] \r\n ]\r\n ]\r\n\r\n Forms.formGroup (not model.NewMessageErrors.IsEmpty)\r\n <| Forms.textareaWithLabel \"col-sm-3\" \"col-sm-12\" 3 \"newMessage\" \"Nowa wiadomość:\" 1024.0\r\n model.NewMessage\r\n (Forms.errorsBelow model.NewMessageErrors)\r\n (Event.str dispatch NewMessageChanged)\r\n ]\r\n ]\r\n\r\n let editorView (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n\r\n input [ Hidden true; Id \"prevent-subscriptions\" ]\r\n\r\n div [ Class \"box box-info\" ] [\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title col-sm-10 no-padding\" ] [\r\n div [ Class \"box-body no-padding col-sm-1\" ] [ b [] [ str \"Obiekt:\" ] ]\r\n div [ Class \"col-sm-6 no-padding \" ] [ str model.Resort.Name ] \r\n ]\r\n ]\r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n form [ Class \"form-horizontal\" ] [\r\n\r\n Forms.formGroup (not model.FromToErrors.IsEmpty)\r\n <| Forms.dateRangePickerWithLabel \"col-sm-3\" \"col-sm-3\" \"fromTo\" \"Termin\"\r\n (model.From, model.To)\r\n (Forms.errorsBelow model.FromToErrors)\r\n dispatch FromToChanged\r\n \r\n Forms.formGroup (not model.ArrivalErrors.IsEmpty)\r\n <| Forms.timeMaskedInputWithLabel \"col-sm-3\" \"col-sm-3\" \"arrival\" \"Godzina przyjazdu\"\r\n model.Arrival\r\n (Forms.errorsBelow model.ArrivalErrors)\r\n dispatch ArrivalChanged\r\n\r\n for i, a in model.Allocations |> List.indexed do\r\n AllocationEditor.view model.IsMultiRoom (i = 0) a ((fun msg -> AllocationMsg (i, msg)) >> dispatch) \r\n ]\r\n ]\r\n\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Kalkulacja\" ]\r\n ]\r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right; Width \"25%\" ] ] [ str \"Cena:\" ]\r\n td [] [ str <| Derived.ToString model.Price ]\r\n\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Zaliczka:\" ]\r\n td [] [ str <| Derived.ToString model.Prepayment ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Zamawiający\" ]\r\n ]\r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n form [ Class \"form-horizontal\" ] [\r\n Forms.formGroup (not model.FirstNameErrors.IsEmpty || not model.LastNameErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-3\" \"firstName\" \"Imię\" 50.0 \r\n (Derived.ToTag id \"\" model.FirstName)\r\n (Forms.errorsBelow model.FirstNameErrors)\r\n (Event.str dispatch FirstNameChanged)\r\n @ Forms.inputWithLabel \"col-sm-2\" \"col-sm-3\" \"lastName\" \"Nazwisko\" 50.0 \r\n (Derived.ToTag id \"\" model.LastName)\r\n (Forms.errorsBelow model.LastNameErrors)\r\n (Event.str dispatch LastNameChanged)\r\n\r\n Forms.formGroup (not model.EmailErrors.IsEmpty || not model.PhoneErrors.IsEmpty)\r\n <| Forms.inputWithLabel \"col-sm-3\" \"col-sm-3\" \"email\" \"Email\" 120.0 \r\n (Derived.ToTag id \"\" model.Email)\r\n (Forms.errorsBelow model.EmailErrors)\r\n (Event.str dispatch EmailChanged)\r\n @ Forms.inputWithLabel \"col-sm-2\" \"col-sm-3\" \"phone\" \"Telefon\" 12.0 \r\n (Derived.ToTag id \"\" model.Phone)\r\n (Forms.errorsBelow model.PhoneErrors)\r\n (Event.str dispatch PhoneChanged)\r\n ]\r\n ]\r\n\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Zgody\" ]\r\n ]\r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n form [ Class \"form-horizontal\" ] [\r\n\r\n Forms.formGroup false [\r\n div [ Class \"col-sm-1\"; Style [ Width \"30px\"; MarginLeft \"10px\" ] ] [\r\n Controls.checkbox \"rodoConsent\" [] \"\" model.RodoConsent dispatch RodoChanged\r\n ]\r\n div [ Class \"col-sm-10\" ] [\r\n p [] [\r\n str \"Wyrażam zgodę na przechowywanie i przetwarzanie moich danych osobowych\r\n przez serwis Quatera.pl w celach związanych z obsługą niniejszej rezerwacji.\"\r\n ]\r\n p [] [\r\n str \"Zgoda zostaje wyrażona zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady UE 2016/679\r\n z dn. 27.04.2016r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych \r\n i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE\r\n (ogólne rozporządzenie o ochronie danych, zwane także RODO).\"\r\n ]\r\n a [ Style [ Cursor \"pointer\" ]; Data(\"toggle\", \"modal\"); Data(\"target\", \"#rodoStatementView\") ] [\r\n str \"Informacja o przetwarzaniu danych osobowych\"\r\n ]\r\n ] \r\n ]\r\n \r\n Forms.formGroup false [\r\n div [ Class \"col-sm-1\"; Style [ Width \"30px\"; MarginLeft \"10px\" ] ] [\r\n Controls.checkbox \"termsOfServiceConsent\" [] \"\" model.TermsOfServiceConsent dispatch TermsOfServiceChanged\r\n ]\r\n div [ Class \"col-sm-10\" ] [\r\n str \"Zapoznałem się z \"\r\n a [ Style [ Cursor \"pointer\" ]; Data(\"toggle\", \"modal\"); Data(\"target\", \"#termsOfServiceView\") ] [\r\n str \"regulaminem serwisu\"\r\n ]\r\n str \" i akceptuję jego treść.\"\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n div [ Class \"box-footer\" ] [\r\n div [ Class \"pull-right\"] [\r\n Controls.simpleButton [ Disabled (not model.RodoConsent || not model.TermsOfServiceConsent) ] \"btn-primary\" \" Zapisz\" \"fa fa-save\" dispatch Save\r\n //str \" \"\r\n //Controls.simpleButton [] \"btn-default\" \" Wróć do wyszukiwania\" \"fa fa-search\" dispatch ReturnToRoomSelection\r\n ] \r\n ]\r\n ]\r\n\r\n Modals.info \"rodoStatementView\"\r\n \"Informacja o przetwarzaniu danych osobowych\"\r\n (React.ofList [\r\n p [] [\r\n str \"Zgodnie z art. 13 rozporządzenia Parlamentu Europejskiego i Rady UE 2016/679 z dn. 27.04.2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (ogólne rozporządzenie o ochronie danych, zwane dalej RODO) informujemy, że administratorem Twoich danych jest Helix Jacek Hełka. z siedzibą we Wrocławiu przy ulicy ... Wrocław, e-mail: helix@quatera.pl, zwana dalej Administratorem.\"\r\n ]\r\n p [] [\r\n str \"Twoje dane osobowe przetwarzane będą w celu zorganizowania warsztatu. Podstawą prawną przetwarzania jest zgoda na przetwarzanie danych osobowych, czyli art. 6 ust 1 lit. a RODO.\"\r\n ]\r\n p [] [\r\n str \"Odbiorcami Twoich danych będą firmy prowadzące serwis IT systemów informatycznych używanych przez Administratora, biuro rachunkowe i firmy świadczące usługi pocztowe na rzecz Administratora oraz podmioty upoważnione na podstawie przepisów prawa. \r\n Dane będą przetwarzane najpóźniej jeden miesiąc od dnia zakończenia rezerwacji.\"\r\n ]\r\n p [] [\r\n str \"Posiadasz prawo dostępu do swoich danych, żądania sprostowania lub ograniczenia przetwarzania danych osobowych oraz prawo do cofnięcia zgody w dowolnym momencie. W przypadku cofnięcia zgody masz prawo do żądania usunięcia swoich danych osobowych \r\n Przysługuje Ci prawo wniesienia skargi do organu nadzorczego, którym jest Urząd Ochrony Danych Osobowych.\"\r\n ]\r\n p [] [\r\n str \"Twoje dane nie podlegają zautomatyzowanemu podejmowaniu decyzji, w tym profilowaniu.\"\r\n ]\r\n ])\r\n \r\n Modals.info \"termsOfServiceView\"\r\n \"Regulamin serwisu\"\r\n (div [] [\r\n h3 [] [ str \"I. Postanowienia ogólne\" ]\r\n p [] [\r\n str \"Niniejszy Regulamin określa ogólne warunki, zasady oraz sposób korzystania z serwisu Quatera, przez Klientów zerjestrowanych w tym serwisie obiektów.\"\r\n ]\r\n p [] [\r\n str \"Przez \"; b[] [ str \"Obiekt\" ]; str \" rozumie się w niniejszym regulaminie dowolny hotel, pensjonat, hostel czy gospodarstwo agroturystyczne, zarejestrowany\r\n w serwisie Quatera i zawierający pokoje, które można za pośrednictwem tego systemu rezerwować.\"\r\n ]\r\n p [] [\r\n str \"Przez \"; b [] [str \"Klienta\"]; str \" rozumie się w niniejszym regulaminie, osobą fizyczną, z którą Obiekt zawiera umowę o świadczenie usług lub sprzedaż produktów lub usług.\"\r\n ]\r\n p [] [\r\n str \"Rezerwacja za pomocą serwisu Quatera przebiega według wskazanych poniżej postanowień.\"\r\n ]\r\n p [] [\r\n str \"Rezerwacja dokonana przez serwis Quatera jest rezerwacją wstępną, którą Obiekt może odwołać w ciągu 24 godzin.\r\n W przypadku, gdy właściciel obiektu zatwierdzi rezerwację, bądź zostanie ona zatwierdzona automatycznie,\r\n zgodnie z konfiguracją obiektu, staje się ona wiążąca.\"\r\n\r\n ]\r\n h3 [] [ str \"II. Dokonywanie Rezerwacji\" ]\r\n p [] [\r\n str \"Klient otrzymuje możliwość wyboru terminu pobytu jakim jest zainteresowany, liczby dorosłych oraz liczby dzieci, według których ma zamiar dokonać rezerwacji pobytu.\"\r\n ]\r\n p [] [\r\n str \"Klient może wybrać następnie wśród dostępnych we wskazanym terminie wolnych pokoi, które przedstawione są w formie listy Rezerwacji Online.\"\r\n ]\r\n p [] [\r\n str \"Po zapoznaniu się z opisem, wyposażeniem i ceną pokoju, Klient może wybrać dany pokój i przejść do kolejnego kroku procesu rezerwacji.\"\r\n ]\r\n p [] [\r\n str \"W drugim kroku dokonywania rezerwacji - formularzu, Klient wypełnia swoje dane osobowe oraz ewentualne uwagi do rezerwacji.\"\r\n ]\r\n p [] [\r\n str \"Po uzupełnieniu danych, w kroku trzecim, Klient może dokonać wpłaty zadatku za pomocą płatności elektronicznej - przelew transferowy,\r\n bądź wykonując przelew tradycyjny wykorzystując dane rachunku bankowego obiektu, odostępnione na formularzu rezerwacji.\"\r\n ]\r\n p [] [\r\n str \"Transakcje przelewami transferowymi są realizowane za pośrednictwem systemu płatności online - BlueMedia.\"\r\n ]\r\n p [] [\r\n str \"Przy wybraniu płatności elektronicznej przelewem transferowym, Klient zostaje przekierowany na stronę umożliwiającą wpłatę zadatku, systemem płatności online BlueMedia.\r\n Po przyjęciu wpłaty przez BlueMedia, Klient otrzymuje na wskazany przy dokonywaniu rezerwacji adres e-mail, automatyczne powiadomienie o potwierdzeniu wpłaty zadatku.\"\r\n ]\r\n h3 [] [ str \"III. Odwołanie rezerwacji\" ]\r\n p [] [\r\n str \"W przypadku odwłania rezerwacji przez Klienta, wpłacony zadatek pozostaje w obiekcie.\r\n Obiekt ma prawo do odrzucenia rezerwacji, w terminie do 24 godzin, od momentu zaksięgowania wpłaty zadatku. Wówczas, zadatek zostaje zwrócony Klientowi.\"\r\n ]\r\n h3 [] [ str \"IV. Opłaty\" ]\r\n p [] [\r\n str \"Klient zobowiązany jest do wpłaty wskazanego przy dokonywaniu rezerwacji zadatku. Może tego dokonać za pomocą:\"\r\n ul [] [\r\n li [] [ str \"płatności elektronicznej - przelew transferowy\" ]\r\n li [] [ str \"przelewu tradycyjnego na rachunek podany przez właściciela obiektu\" ]\r\n ]\r\n ]\r\n p [] [\r\n str \"Pozostała część opłaty za cały pobyt dopłacana jest przez Klienta po przyjeździe do obiektu.\"\r\n ]\r\n p [] [\r\n str \"Klient nie ponosi żadnych kosztów związanych z wykonaniem procesu Rezerwacji Online.\"\r\n ]\r\n h3 [] [ str \"V. Polityka prywatności\" ]\r\n p [] [\r\n str \"W trakcie dokonywania Rezerwacji Online, Klient wyraża zgodę na umieszczenie swoich danych osobowych w bazie serwisu.\r\n Klient ma prawo do dostępu do swoich danych oraz ich poprawiania i usuwania.\"\r\n ]\r\n p [] [\r\n str \"Dane Klienta będą wykorzystywane wyłącznie w celu umożliwienia przeprowadzenia prawidłowego procesu rezerwacji i nie będą udostępniane osobom trzecim, zgodnie z przepisami ustawy z dnia 28.09.1997 o ochronie danych osobowych.\"\r\n ]\r\n h3 [] [ str \"VI. Odpowiedzialności\" ]\r\n p [] [\r\n str \"Klient odpowiada za prawidłowe wpisanie prawdziwych danych w formularzu rezerwacyjnym.\"\r\n ]\r\n p [] [\r\n str \"Obiekt nie bierze odpowiedzialności za błędnie wpisane terminy rezerwacji, czy dane osobowe.\"\r\n ]\r\n p [] [\r\n str \"Za prawidłową obsługę pieniężną zadatku, w aplikacji Rezerwacji Online odpowiada system płatności online BlueMedia.\r\n Obiekt oraz firma będąca właścicielem serwisu Quatera, czyli Helix Jacek Hełka, nie ponoszą odpowiedzialności za niedostępność systemu, która mogła wyniknąć nie z ich winy lub z powodu wystąpienia innych czynników niezależnych.\"\r\n ]\r\n h3 [] [ str \"VII. Akceptacja Regulaminu\" ]\r\n p [] [\r\n str \"Zaznaczenie w panelu rezerwacyjnym opcji przeczytania i zapoznania się z regulaminem Rezerwacji Online oznacza, że Klient rozumie i wyraża zgodę na punkty zapisane w tymże regulaminie.\"\r\n ]\r\n p [] [\r\n str \"Niezaznaczenie opcji akceptacji regulaminu skutkuje brakiem możliwości dokonania Rezerwacji Online.\"\r\n ]\r\n ])\r\n ]\r\n\r\n let adultsLabel (adults: string) =\r\n Int32.TryParse adults\r\n |> Option.FromTryParse\r\n |> Option.map (fun num ->\r\n match num % 10 with\r\n | 1 when num = 1 -> \"osoba dorosła\"\r\n | 2 | 3 | 4 -> \"osoby dorosłe\"\r\n | _ -> \"osób doroslych\")\r\n |> Option.defaultValue \"\"\r\n\r\n let childrenLabel ageList =\r\n match ageList |> List.last with\r\n | 1 -> \"rok\"\r\n | 2 | 3 | 4 -> \"lata\"\r\n | _ -> \"lat\"\r\n\r\n let reservationInfo model =\r\n div [ Class \"col-xs-6\" ] [\r\n div [ Class \"table-responsive\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right; Width \"40%\" ] ] [ str \"Obiekt:\" ]\r\n td [] [ str model.Resort.Name ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right; Width \"40%\" ] ] [ str \"Adres:\" ]\r\n let a = model.Resort.Address\r\n td [] [ str <| sprintf \"%s %s, %s %s\" a.Street a.Number a.ZipCode a.City ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Termin:\" ]\r\n td [] [ str <| model.From.ToString(\"dd.MM.yyyy\") + \" - \" + model.To.ToString(\"dd.MM.yyyy\") ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Godzina przyjazdu:\" ]\r\n td [] [ str model.Arrival ]\r\n ]\r\n for a in model.Allocations do\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| a.Room.RoomType.SingularNominative + \":\" ]\r\n td [] [ str a.Room.Name ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Liczba gości:\" ]\r\n td [] [\r\n span [] [str <| sprintf \"%s %s\" (Derived.ToString a.Adults) (Derived.ToString (Derived.Map adultsLabel a.Adults)) ]\r\n if not a.Children.Children.IsEmpty then\r\n span [] [ str <| sprintf \", dzieci: %s %s\" (a.Children.Children |> List.map string |> String.concat \", \") (childrenLabel a.Children.Children) ]\r\n ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Dodatki:\" ]\r\n td [] [\r\n if a.Arrangements.IsEmpty then\r\n str \"Nic nie wybrano\"\r\n else\r\n for a in a.Arrangements do\r\n span [] [ str <| sprintf \"%s (%d)\" a.Type.Description a.Units ]\r\n br []\r\n ]\r\n ]\r\n ]\r\n ]\r\n ] \r\n ]\r\n\r\n let ordererInfo model =\r\n div [ Class \"col-xs-6\" ] [\r\n div [ Class \"table-responsive\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right; Width \"30%\" ] ] [ str \"Zamawiający:\" ]\r\n td [] [ str <| model.FirstName.Value + \" \" + model.LastName.Value ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Telefon:\" ]\r\n td [] [ a [ Href (\"callto:\" + model.Phone.Value) ] [str model.Phone.Value ] ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Email:\" ]\r\n td [] [ a [Href (\"mailto:\" + model.Email.Value) ] [ str model.Email.Value ] ]\r\n ] \r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n let paymentInfo model =\r\n div [ Class \"col-xs-6\" ] [\r\n div [ Class \"table-responsive\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right; Width \"40%\" ] ] [ str \"Cena:\" ]\r\n td [] [ str <| Decimal.format 2 model.Price.Value ]\r\n\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Zaliczka:\" ]\r\n td [] [ b [] [ str <| Decimal.format 2 model.Prepayment.Value ] ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Termin wpłaty zaliczki:\" ]\r\n td [] [ str (model.PrepaymentDeadline |> Option.map (fun d -> d.ToString(\"dd.MM.yyyy\")) |> Option.defaultValue \"\") ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Wpłacono:\" ]\r\n td [\r\n model.Payments\r\n |> List.map (fun p -> sprintf \"%s - %s zł\" (p.PaidAt.ToString(\"dd.MM.yyyy\")) (Decimal.format 2 p.Amount))\r\n |> String.concat \"\\n\"\r\n |> Title\r\n ] [ str (model.Payments |> List.sumBy (fun p -> p.Amount) |> Decimal.format 2) ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n let bankAccountInfo model =\r\n div [ Class \"col-xs-6\" ] [\r\n div [ Class \"table-responsive\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right; Width \"30%\" ] ] [ str \"Nr rachunku:\" ]\r\n td [] [ str (formatAccountNumber model.BankAccount.AccountNumber) ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Bank:\" ]\r\n td [] [ str model.BankAccount.BankName ]\r\n ]\r\n tr [] [\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Właściciel:\" ]\r\n td [] [ str model.BankAccount.OwnerName ]\r\n ]\r\n tr [] [\r\n let a = model.BankAccount.OwnerAddress\r\n th [ Style [ TextAlign TextAlignOptions.Right ] ] [ str \"Adres:\" ]\r\n td [] [ str (sprintf \"%s %s, %s %s\" a.Street a.Number a.ZipCode a.City) ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\n\r\n let summaryView (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n\r\n div [ Class \"box box-info\" ] [\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Sprawdź i w razie potrzeby skoryguj dane rezerwacji\" ] \r\n ]\r\n \r\n div [ Class \"box-body no-padding\" ] [\r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n reservationInfo model\r\n ordererInfo model\r\n ]\r\n\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [\r\n match model.DetailedState with\r\n | Overwritten state \r\n | Calculated state ->\r\n match state with\r\n | DetailedState.New ->\r\n str \"Po otrzymaniu informacji o zatwierdzeniu rezerwacji wpłać zaliczkę zgodnie z poniższymi danymi do przelewu\"\r\n | DetailedState.Confirmed ->\r\n str \"Wpłać zaliczkę zgodnie z poniższymi danymi do przelewu\"\r\n | DetailedState.PrepaymentDelayed ->\r\n str \"Możliwie jak najszybciej wpłać zaliczkę zgodnie z poniższymi danymi do przelewu\"\r\n | DetailedState.Paid ->\r\n str \"Wprowadzono pełną opłatę za pobyt. Dziękujemy.\"\r\n | DetailedState.Prepaid ->\r\n str \"Zaakceptowano wpłaconą zaliczkę. Pozostałą kwotę możesz przekazać właścicielowi w dniu przyjazdu\"\r\n | DetailedState.Cancelled ->\r\n str \"W związku z odwołaniem rezerwacji nie musisz dokonywać żadnych opłat\"\r\n | DetailedState.Refused ->\r\n str \"W związku z odrzuceniem rezerwacji przez właściciela obiektu nie musisz dokonywać żadnych opłat\"\r\n | _ ->\r\n str \"Informacja na temat płatności\"\r\n | _ ->\r\n str \"Informacja na temat płatności\"\r\n ]\r\n ]\r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n paymentInfo model\r\n bankAccountInfo model\r\n ]\r\n ]\r\n\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [\r\n if model.Messages.IsEmpty then\r\n str \"Skontaktuj się z właścicielem obiektu, jeśli potrzebujesz dodatkowych uzgodnień\"\r\n else\r\n str \"Korespondencja z właścicielem obiektu\"\r\n ]\r\n ]\r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n messageEditor model dispatch\r\n ]\r\n\r\n div [ Class \"box-footer\" ] [\r\n Controls.simpleButton [] \"btn-default\" \" Wyślij\" \"fa fa-envelope-o\" dispatch SendMessage\r\n div [ Class \"pull-right\"] [\r\n Controls.simpleButton [] \"btn-default\" \" Zmień dane\" \"fa fa-edit\" dispatch ModifyReservation\r\n str \" \"\r\n Controls.simpleButton [] \"btn-default\" \" Odwołaj\" \"fa fa-ban\" dispatch CancelReservation\r\n ] \r\n ]\r\n ]\r\n ]\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n section [ Class \"content-header\" ] [\r\n h1 [] [\r\n str \"Rezerwacja\"\r\n span [ Class \"pull-right\" ] [\r\n Controls.label (getStateColor model.DetailedState) (getStateName model.DetailedState)\r\n ]\r\n ] \r\n ] \r\n section [ Class \"content\" ] [\r\n match model.ViewType with\r\n | ViewType.Editor -> editorView model dispatch\r\n | ViewType.Summary -> summaryView model dispatch\r\n ]\r\n ]\r\n\r\nmodule RoomSelection =\r\n\r\n type Msg =\r\n | FromToChanged of DateTime * DateTime\r\n | DaysChanged of string\r\n | AdultsChanged of string\r\n | MultiRoomChanged of bool\r\n | ChildAgeMsg of ChildAgeEditor.Msg\r\n | AddToReservation of Room * (DateTime * DateTime) list\r\n | ShowRoomDetails of Room\r\n | ShowError of string\r\n\r\n type Selection =\r\n | Raw of List>\r\n | Priced of (Room * Derived * Derived * List) list\r\n member this.IsEmpty =\r\n match this with\r\n | Raw list -> list.IsEmpty\r\n | Priced list -> list.IsEmpty\r\n\r\n type Model =\r\n {\r\n From : DateTime\r\n FromErrors : string list\r\n To : DateTime\r\n ToErrors : string list\r\n Days : Derived\r\n DaysErrors : string list\r\n Adults : string\r\n Children : ChildAgeEditor.Model\r\n Resort : Resort\r\n AllRooms : Room list\r\n IsMultiRoom : bool\r\n SelectedRooms : Selection\r\n ManyAllocations : bool\r\n AllocatedAdults : int\r\n RemainingAdults : int option\r\n }\r\n static member Empty =\r\n {\r\n From = DateTime.Today\r\n FromErrors = []\r\n To = DateTime.Today\r\n ToErrors = []\r\n Days = Calculated \"\"\r\n DaysErrors = []\r\n Adults = \"\"\r\n Children = ChildAgeEditor.Model.Empty\r\n Resort = Resort.Empty\r\n AllRooms = []\r\n IsMultiRoom = false\r\n SelectedRooms = Raw []\r\n ManyAllocations = false\r\n AllocatedAdults = 0\r\n RemainingAdults = None\r\n }\r\n member this.RoomTypes =\r\n this.AllRooms |> List.map (fun r -> r.RoomType.PluralGenitive) |> List.distinct\r\n member this.UpdateWith(resort, rooms, isMultiRoom) =\r\n { this with\r\n Resort = resort\r\n AllRooms = rooms\r\n SelectedRooms = Raw (rooms |> List.map (fun r -> r, []))\r\n IsMultiRoom = isMultiRoom |> Option.defaultValue this.IsMultiRoom\r\n } \r\n static member Recalc (model: Model) =\r\n let days = model.Days |> Derived.Recalc (Math.Round(model.To.Subtract(model.From).TotalDays).ToString())\r\n let daysI = Int32.Parse days.Value\r\n let errors = validateFilter (model.Resort, DateTime.Today, model.From, model.To, daysI)\r\n let adultsOpt = model.Adults |> Int32.TryParse |> Option.FromTryParse\r\n { model with\r\n Days = days\r\n SelectedRooms =\r\n match adultsOpt with\r\n | Some adults when model.From <> model.To && not model.IsMultiRoom ->\r\n model.AllRooms\r\n |> filterAndPriceRooms (model.Resort, model.From, model.To, daysI, adults, model.Children.Children) \r\n |> List.sortBy (fun (_, p, _, _) -> p)\r\n |> Priced\r\n | Some _\r\n | None ->\r\n model.AllRooms\r\n |> filterRooms (model.Resort, model.From, model.To, daysI) \r\n |> List.sortBy (fun (r, _) -> r.LongTimePrice)\r\n |> Raw\r\n FromErrors = errors |> Validation.getErrorsOf \"From\"\r\n ToErrors = errors |> Validation.getErrorsOf \"To\"\r\n DaysErrors = errors |> Validation.getErrorsOf \"Days\"\r\n RemainingAdults = adultsOpt |> Option.map (fun adults -> adults - model.AllocatedAdults) \r\n } \r\n static member UpdateOccupancies (reservation: Reservation) (model: Model) =\r\n { model with AllRooms = model.AllRooms |> List.map (updateOccupancies reservation) }\r\n \r\n\r\n let init(resort: Resort, rooms: Room list): Model * Cmd =\r\n Model.Empty.UpdateWith(resort, rooms, None), Cmd.none\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | FromToChanged (dateFrom, dateTo) ->\r\n { model with From = dateFrom; To = dateTo} |> Model.Recalc, Cmd.none\r\n | DaysChanged days -> \r\n { model with Days = Derived.OfString days } |> Model.Recalc, Cmd.none\r\n | AdultsChanged adults ->\r\n { model with Adults = adults } |> Model.Recalc, Cmd.none\r\n | MultiRoomChanged multi ->\r\n { model with IsMultiRoom = multi } |> Model.Recalc, Cmd.none\r\n | ChildAgeMsg msg ->\r\n let chmdl, chcmd = ChildAgeEditor.update msg model.Children\r\n { model with Children = chmdl } |> Model.Recalc, Cmd.map ChildAgeMsg chcmd\r\n\r\n let unallocatedPersonLabel count =\r\n if count = 0 then\r\n \"Przydzielono zakwaterowanie dla wszystkich gości\"\r\n elif count = 1 then\r\n \"Pozostała jedna niezakwaterowana osoba\"\r\n else\r\n match count % 10 with\r\n | 2 | 3 | 4 -> sprintf \"Pozostały %d niezakwaterowane osoby\" count\r\n | _ -> sprintf \"Pozostało %d niezakwaterowanych osób\" count\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n section [ Class \"content-header\" ] [\r\n h1 [] [\r\n str model.Resort.Name\r\n ] \r\n ] \r\n section [ Class \"content\" ] [\r\n div [ Class \"box box-info\" ] [\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Określ termin i liczbę gości\" ] \r\n ]\r\n\r\n form [ Class \"form-horizontal\"] [\r\n div [ Class \"box-body no-padding\" ] [\r\n Forms.formGroup false\r\n <| Forms.dateRangePickerWithLabel \"col-sm-1\" \"col-sm-3\" \"fromToFilter\" \"Termin\"\r\n (model.From, model.To)\r\n (Forms.errorsBelow [])\r\n dispatch FromToChanged\r\n @ Forms.inputWithLabel \"col-sm-1\" \"col-sm-1\" \"daysFilter\" \"Liczba dni\" 3.0\r\n (Derived.ToTag string \"\" model.Days)\r\n (Forms.errorsBelow [])\r\n (Event.str dispatch DaysChanged)\r\n @ Forms.inputWithLabel \"col-sm-1\" \"col-sm-1\" \"adultsFilter\" \"Dorośli\" 3.0\r\n (Value model.Adults)\r\n (Forms.errorsBelow [])\r\n (Event.str dispatch AdultsChanged)\r\n @ Forms.controlWithLabel \"col-sm-2\" \"col-sm-2\" \"childAgeEditor\" \"Dzieci (wiek)\" \r\n (Forms.errorsBelow [])\r\n (ChildAgeEditor.view model.Children (ChildAgeMsg >> dispatch))\r\n ]\r\n ]\r\n\r\n div [ Class \"box-body\" ] [\r\n Controls.checkbox \"multiRoom\"\r\n [ if model.ManyAllocations then Disabled true ]\r\n (sprintf \"Wiele %s w jednej rezerwacji\" (model.RoomTypes |> String.concat \"/\"))\r\n model.IsMultiRoom dispatch MultiRoomChanged\r\n ]\r\n\r\n if model.IsMultiRoom then\r\n div [ Class \"box-body\" ] [\r\n b [] [ str (model.RemainingAdults |> Option.map unallocatedPersonLabel |> Option.defaultValue \"\") ]\r\n ]\r\n\r\n if not (List.isEmpty (model.FromErrors @ model.ToErrors @ model.DaysErrors)) then\r\n div [ Class \"box-body\" ] [\r\n for msg in model.FromErrors @ model.ToErrors @ model.DaysErrors do\r\n div [Class \"form-group has-error\"] [\r\n label [ Class \"control-label\" ] [ str msg ]\r\n ]\r\n ]\r\n\r\n div [Class \"box-body\" ] [\r\n b [] [ str \"Uwaga\" ]\r\n ul [] [\r\n li [] [\r\n str \"Dostępność oznacza możliwość wynajęcia na podaną liczbę dni w podanym okresie, np. 2 dni w lipcu 2021 specyfikujemy jako Termin = 01.07.2021 - 31.07.2021, Liczba dni = 2\"\r\n ]\r\n li [] [\r\n str \"W związku z mozliwością istnienia cenników sezonowych, wyliczone ceny mogą się zmieniać na przestrzeni kilku dni; w takim przypadku w tabelce pojawią się zakresy cen\"\r\n ]\r\n ]\r\n ]\r\n\r\n if model.SelectedRooms.IsEmpty then\r\n\r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Nie znaleziono wolnych terminów\" ] \r\n ]\r\n\r\n else\r\n \r\n div [ Class \"box-header with-border\" ] [\r\n h3 [ Class \"box-title\" ] [ str \"Znaleziono\" ] \r\n ]\r\n\r\n div [ Class \"box-body no-padding\" ] [\r\n table [ Class \"table\" ] [\r\n tbody [] [\r\n match model.SelectedRooms with\r\n | Raw rooms ->\r\n tr [] [\r\n th [] [ str \"Nazwa\" ]\r\n th [] [ str \"Opis\" ]\r\n th [] [ str \"Max. liczba osób\" ]\r\n th [] [ str \"Cena os. za dobę\" ]\r\n th [] [ str \"Krótkoterm.\" ]\r\n th [] [ str \"Dostępność\" ]\r\n th [] []\r\n ]\r\n for rm, avail in rooms do\r\n tr [] [\r\n td [] [ str rm.Name ]\r\n td [] (Utils.getMultilineMarkup rm.ShortDescription)\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\r\n str <| (rm.Capacity.ToString() + if rm.AdditionalCapacity <> 0 then \" + \" + rm.AdditionalCapacity.ToString() else \"\")\r\n ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| Decimal.format 2 rm.LongTimePrice ]\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [ str <| Decimal.format 2 rm.ShortTimePrice ]\r\n td [] [\r\n for df, dt in avail do\r\n span [] [ str <| sprintf \"%s - %s\" (df.ToString(\"dd.MM.yyyy\")) (dt.ToString(\"dd.MM.yyyy\")) ]\r\n br []\r\n ]\r\n td [ Style [ Width \"50px\" ] ] [\r\n Controls.actionButton [ Title \"Opis, zdjęcia\" ] \"fa fa-image\" dispatch (ShowRoomDetails rm)\r\n if model.IsMultiRoom && not (String.IsNullOrEmpty model.Adults) && model.From <> model.To then\r\n str \" \"\r\n Controls.actionButton [ Title \"Rezerwuj\" ] \"fa fa-plus\" dispatch (AddToReservation (rm, avail))\r\n ]\r\n\r\n ]\r\n\r\n | Priced rooms ->\r\n tr [] [\r\n th [] [ str \"Nazwa\" ]\r\n th [] [ str \"Opis\" ]\r\n th [] [ str \"Cena\" ]\r\n th [] [ str \"Dostępność\" ]\r\n th [] [ str \"\" ]\r\n ]\r\n for rm, minp, maxp, avail in rooms do\r\n tr [] [\r\n td [] [ str rm.Name ]\r\n td [] (Utils.getMultilineMarkup rm.ShortDescription)\r\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\r\n if minp <> maxp then\r\n str <| sprintf \"%s - %s\" (Derived.ToString minp) (Derived.ToString maxp)\r\n else\r\n str <| Derived.ToString minp\r\n ]\r\n td [] [\r\n for df, dt in avail do\r\n span [] [ str <| sprintf \"%s - %s\" (df.ToString(\"dd.MM.yyyy\")) (dt.ToString(\"dd.MM.yyyy\")) ]\r\n br []\r\n ]\r\n td [ Style [ Width \"50px\" ] ] [\r\n Controls.actionButton [ Title \"Opis, zdjęcia\" ] \"fa fa-image\" dispatch (ShowRoomDetails rm)\r\n str \" \"\r\n Controls.actionButton [ Title \"Rezerwuj\" ] \"fa fa-plus\" dispatch (AddToReservation (rm, avail))\r\n ]\r\n ]\r\n ]\r\n\r\n ]\r\n ]\r\n ]\r\n ]\r\n ]\r\n\r\nmodule Content =\r\n\r\n type LoadType =\r\n | Initial\r\n | Reload\r\n\r\n type Msg =\r\n | ReservationLoaded of (Reservation * Resort * Room list * BankAccount * OrdererData option) * LoadType\r\n | RoomLoaded of Room * Resort * Room list * BankAccount * OrdererData option\r\n | ResortLoaded of Resort * Room list * BankAccount * OrdererData option\r\n | ShowReservation\r\n | ShowRooms\r\n | ReservationMsg of ReservationDetails.Msg\r\n | RoomSelectionMsg of RoomSelection.Msg\r\n | RoomDetailsMsg of RoomDetails.Msg\r\n | ReloadReservation\r\n | ShowError of string * ErrorInfo\r\n | ClearError\r\n\r\n []\r\n type ViewType =\r\n | Reservation\r\n | Rooms\r\n | RoomDetails\r\n\r\n type Model =\r\n {\r\n ReservationParams : ReservationParams\r\n ViewType : ViewType\r\n ReservationModel : ReservationDetails.Model\r\n RoomSelectionModel : RoomSelection.Model\r\n RoomDetailsModel : RoomDetails.Model\r\n ErrorMessage : string\r\n }\r\n static member FromParams p =\r\n {\r\n ReservationParams = p\r\n ViewType = if p.IdentifiesRoom then ViewType.Reservation else ViewType.Rooms\r\n ReservationModel = ReservationDetails.Model.Initial\r\n (if p.IdentifiesReservation then\r\n ReservationDetails.Summary, Guid.Empty\r\n else\r\n ReservationDetails.Editor, Guid.NewGuid())\r\n RoomSelectionModel = RoomSelection.Model.Empty\r\n RoomDetailsModel = RoomDetails.Model.Empty\r\n ErrorMessage = \"\"\r\n }\r\n static member UpdateSelection (model: Model) =\r\n try\r\n let reservation = model.ReservationModel |> ReservationDetails.Model.ToReservation\r\n { model with\r\n RoomSelectionModel =\r\n { model.RoomSelectionModel with\r\n AllocatedAdults =\r\n reservation.Allocations\r\n |> List.map (fun a -> a.Adults |> Derived.DefaultValue 0)\r\n |> List.sum\r\n ManyAllocations = reservation.Allocations.Length > 1\r\n }\r\n |> RoomSelection.Model.UpdateOccupancies reservation\r\n |> RoomSelection.Model.Recalc\r\n ReservationModel =\r\n { model.ReservationModel with IsMultiRoom = model.RoomSelectionModel.IsMultiRoom }\r\n |> ReservationDetails.Model.UpdateOccupancies reservation\r\n }\r\n with ex ->\r\n JS.console.error(sprintf \"Ignored intentionally to allow room selection: %A\" ex)\r\n model\r\n\r\n let getReservationCmd (reservationId, secret, loadType) =\r\n Cmd.OfAsync.either id\r\n (reservationApi.GetReservation (reservationId, secret))\r\n ((fun r -> r, loadType) >> ReservationLoaded)\r\n (ErrorHandling.unpack ShowError \"Nie udało się wczytać danych rezerwacji.\")\r\n\r\n let getRoomCmd roomId =\r\n Cmd.OfAsync.either id (reservationApi.GetRoom roomId) RoomLoaded (ErrorHandling.unpack ShowError \"Nie udało się wczytać danych pokoju.\")\r\n\r\n let getResortCmd resortId =\r\n Cmd.OfAsync.either id (reservationApi.GetResort resortId) ResortLoaded (ErrorHandling.unpack ShowError \"Nie udało się wczytać danych obiektu.\")\r\n\r\n let getResortByPartnerKeyCmd (partner, key) =\r\n Cmd.OfAsync.either id (reservationApi.GetResortByPartnerKey (partner, key)) ResortLoaded (ErrorHandling.unpack ShowError (sprintf \"Nie udało się odczytać przyporządkowania do ośrodka z '%s'.\" partner))\r\n\r\n let init(p: ReservationParams): Model * Cmd =\r\n Model.FromParams p,\r\n match p with\r\n | ReservationId (id, secret) -> getReservationCmd(id, secret, Initial)\r\n | RoomId id -> getRoomCmd id\r\n | ResortId id -> getResortCmd id\r\n | PartnerKey (partner, key) -> getResortByPartnerKeyCmd (partner, key)\r\n\r\n let mapReservationMsg = function ReservationDetails.ShowError (m, e) -> ShowError (m, e) | m -> ReservationMsg m\r\n\r\n let mapRoomDetailsMsg = function RoomDetails.ShowError (m, e) -> ShowError (m, e) | m -> RoomDetailsMsg m\r\n\r\n let addAllocation (model: Model, room: Room, availabilities: (DateTime * DateTime) list) =\r\n let dateRangeAssigned = model.ReservationModel.To.Subtract(model.ReservationModel.From).TotalDays <> 0.0\r\n let rsFrom = availabilities |> List.head |> fst\r\n let rsTo = rsFrom.AddDays (Double.Parse model.RoomSelectionModel.Days.Value)\r\n let adults = Math.Min(room.Capacity, model.RoomSelectionModel.RemainingAdults |> Option.defaultValue room.Capacity)\r\n { model with\r\n ReservationModel = {\r\n model.ReservationModel with\r\n From = if not dateRangeAssigned then rsFrom else model.ReservationModel.From\r\n To = if not dateRangeAssigned then rsTo else model.ReservationModel.To\r\n Allocations =\r\n if model.RoomSelectionModel.IsMultiRoom then\r\n model.ReservationModel.Allocations @\r\n [ { AllocationEditor.Model.Empty with\r\n Resort = model.RoomSelectionModel.Resort\r\n Room = room\r\n Adults = Calculated (string adults)\r\n Children = ChildAgeEditor.Model.Empty\r\n } ]\r\n else\r\n [ { AllocationEditor.Model.Empty with\r\n Resort = model.RoomSelectionModel.Resort\r\n Room = room\r\n Adults = Calculated model.RoomSelectionModel.Adults\r\n Children = model.RoomSelectionModel.Children\r\n } ]\r\n } |> ReservationDetails.Model.Recalc\r\n }\r\n\r\n let update (msg: Msg) (model: Model): Model * Cmd =\r\n match msg with\r\n | ReservationLoaded ((reservation, resort, allRooms, bankAccount, ordererData), loadType) ->\r\n let secret =\r\n match model.ReservationParams with\r\n | ReservationId (_, secret) -> Some secret\r\n | _ -> None\r\n let allCalcRooms = allRooms |> List.map (recalcRoom resort)\r\n match loadType with\r\n | Initial ->\r\n { model with\r\n ReservationModel =\r\n model.ReservationModel.UpdateWith (Some reservation, None, resort, allCalcRooms, bankAccount, ordererData, secret)\r\n |> ReservationDetails.Model.Recalc\r\n RoomSelectionModel =\r\n model.RoomSelectionModel.UpdateWith(resort, allCalcRooms, Some (reservation.Allocations.Length > 1))\r\n |> RoomSelection.Model.Recalc\r\n } |> Model.UpdateSelection, Cmd.none\r\n | Reload ->\r\n { model with\r\n ReservationModel =\r\n model.ReservationModel.RefreshUpdateWith (Some reservation, None, resort, allCalcRooms, bankAccount, ordererData, secret)\r\n |> ReservationDetails.Model.Recalc\r\n RoomSelectionModel =\r\n model.RoomSelectionModel.UpdateWith(resort, allCalcRooms, None)\r\n |> RoomSelection.Model.Recalc\r\n } |> Model.UpdateSelection, Cmd.none\r\n | RoomLoaded (room, resort, allRooms, bankAccount, ordererData) ->\r\n let calcRoom = room |> recalcRoom resort\r\n let allCalcRooms = allRooms |> List.map (recalcRoom resort)\r\n { model with\r\n ReservationModel = model.ReservationModel.RefreshUpdateWith (None, Some calcRoom, resort, allCalcRooms, bankAccount, ordererData, None)\r\n RoomSelectionModel = model.RoomSelectionModel.UpdateWith (resort, allCalcRooms, None) |> RoomSelection.Model.Recalc\r\n } |> Model.UpdateSelection, Cmd.none\r\n | ResortLoaded (resort, allRooms, bankAccount, ordererData) ->\r\n let allCalcRooms = allRooms |> List.map (recalcRoom resort)\r\n { model with\r\n ReservationModel = model.ReservationModel.RefreshUpdateWith (None, None, resort, allCalcRooms, bankAccount, ordererData, None)\r\n RoomSelectionModel = model.RoomSelectionModel.UpdateWith (resort, allCalcRooms, None) |> RoomSelection.Model.Recalc\r\n } |> Model.UpdateSelection, Cmd.none\r\n | ShowReservation ->\r\n { model with ViewType = ViewType.Reservation }, Cmd.none\r\n | ShowRooms ->\r\n { model with ViewType = ViewType.Rooms }, Cmd.none\r\n | RoomSelectionMsg (RoomSelection.Msg.ShowRoomDetails room) ->\r\n let dmdl, dcmd = RoomDetails.init (model.RoomSelectionModel.Resort, room)\r\n { model with\r\n ViewType = ViewType.RoomDetails\r\n RoomDetailsModel = dmdl\r\n }, Cmd.map mapRoomDetailsMsg dcmd\r\n | ReloadReservation ->\r\n match model.ReservationParams with\r\n | ReservationId (id, secret) -> model, getReservationCmd (id, secret, Reload)\r\n | RoomId id -> model, getRoomCmd id\r\n | ResortId id -> model, getResortCmd id\r\n | PartnerKey (partner, key) -> model, getResortByPartnerKeyCmd (partner, key)\r\n | ReservationMsg ReservationDetails.Msg.ReturnToRoomSelection ->\r\n { model with ViewType = ViewType.Rooms }, Cmd.none\r\n | ReservationMsg msg ->\r\n let rmdl, rcmd = ReservationDetails.update msg model.ReservationModel\r\n { model with ReservationModel = rmdl } |> Model.UpdateSelection, Cmd.map mapReservationMsg rcmd\r\n | RoomSelectionMsg (RoomSelection.Msg.AddToReservation (room, availabilities)) ->\r\n addAllocation (model, room, availabilities) |> Model.UpdateSelection, Cmd.ofMsg ShowReservation\r\n | RoomSelectionMsg msg ->\r\n let smdl, scmd = RoomSelection.update msg model.RoomSelectionModel\r\n { model with RoomSelectionModel = smdl } |> Model.UpdateSelection, Cmd.map RoomSelectionMsg scmd\r\n | RoomDetailsMsg RoomDetails.Close ->\r\n { model with ViewType = ViewType.Rooms }, Cmd.none\r\n | RoomDetailsMsg msg ->\r\n let dmdl, dcmd = RoomDetails.update msg model.RoomDetailsModel\r\n { model with RoomDetailsModel = dmdl }, Cmd.map mapRoomDetailsMsg dcmd\r\n | ShowError (m, e) ->\r\n match e with\r\n | { errorType = ErrorType.Other; errorMessage = msg } ->\r\n { model with ErrorMessage = sprintf \"%s %s\" m msg }, Cmd.none\r\n | { errorType = ErrorType.SessionExpired } ->\r\n#if DEBUG\r\n Browser.Dom.window.location.href <- \"/owner-auth\" \r\n#else\r\n Browser.Dom.window.location.reload() \r\n#endif\r\n { model with ErrorMessage = sprintf \"%s Sesja wygasła. Za chwilę nastąpi przekierowanie do strony logowania.\" m }, Cmd.none\r\n\r\n | ClearError ->\r\n { model with ErrorMessage = \"\" }, Cmd.none\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n div [ Class \"content-wrapper\" ] [ \r\n div [\r\n yield Class \"alert alert-danger alert-dismissible\" \r\n if System.String.IsNullOrEmpty model.ErrorMessage then\r\n yield Style [ Display DisplayOptions.None ]\r\n yield Role \"alert\"\r\n ] [\r\n button [ Type \"button\"; Class \"close\"; OnClick (Event.none dispatch ClearError) ] [ str \"x\" ]\r\n h4 [] [\r\n i [ Class \"icon fa fa-ban\" ] []\r\n str \"UWAGA!\"\r\n ]\r\n str model.ErrorMessage\r\n ]\r\n match model.ViewType with\r\n | ViewType.Reservation ->\r\n ReservationDetails.view model.ReservationModel (ReservationMsg >> dispatch)\r\n | ViewType.Rooms ->\r\n RoomSelection.view model.RoomSelectionModel (RoomSelectionMsg >> dispatch)\r\n | ViewType.RoomDetails ->\r\n RoomDetails.view model.RoomDetailsModel (RoomDetailsMsg >> dispatch)\r\n ]\r\n\r\n let subscribe _ =\r\n let sub dispatch =\r\n Browser.Dom.window.setInterval (\r\n (fun _ ->\r\n if Browser.Dom.document.getElementById(\"prevent-subscriptions\") = null then\r\n dispatch ReloadReservation\r\n ),\r\n 1000*60) |> ignore\r\n Cmd.ofSub sub\r\n\r\ntype Msg =\r\n | HeaderMsg of Header.Msg\r\n | SidebarMsg of Sidebar.Msg\r\n | ContentMsg of Content.Msg\r\n | ShowError of string * ErrorInfo\r\n \r\ntype Model =\r\n {\r\n Header : Header.Model\r\n Sidebar : Sidebar.Model\r\n Content : Content.Model\r\n }\r\n \r\nlet mapHeaderMsg = function Header.ShowError (m, e) -> ShowError (m, e) | m -> HeaderMsg m\r\nlet mapSidebarMsg = function Sidebar.ShowError (m, e) -> ShowError (m, e) | m -> SidebarMsg m\r\n \r\nlet init(p: ReservationParams): Model * Cmd =\r\n let mhModel, mhCmd = Header.init ()\r\n let sbModel, sbCmd = Sidebar.init p\r\n let ctModel, ctCmd = Content.init p\r\n {\r\n Header = mhModel\r\n Sidebar = sbModel\r\n Content = ctModel\r\n }, Cmd.batch [ Cmd.map mapHeaderMsg mhCmd; Cmd.map mapSidebarMsg sbCmd; Cmd.map ContentMsg ctCmd ]\r\n\r\n\r\nlet update (msg: Msg) (model: Model) : Model * Cmd =\r\n match msg with\r\n | ShowError (m, e) ->\r\n model, Cmd.ofMsg (ContentMsg (Content.ShowError (m, e)))\r\n | HeaderMsg mhMsg ->\r\n let mhModel, mhCmd = Header.update mhMsg model.Header\r\n { model with Header = mhModel }, Cmd.map mapHeaderMsg mhCmd\r\n | SidebarMsg sbMsg ->\r\n let ctModel, ctCmd =\r\n match sbMsg with\r\n | Sidebar.ShowReservation ->\r\n Content.update Content.ShowReservation model.Content\r\n | Sidebar.ShowRooms ->\r\n Content.update Content.ShowRooms model.Content\r\n | _ -> model.Content, Cmd.none\r\n let sbModel, sbCmd = Sidebar.update sbMsg model.Sidebar\r\n { model with Sidebar = sbModel; Content = ctModel },\r\n Cmd.batch [\r\n Cmd.map mapSidebarMsg sbCmd\r\n Cmd.map ContentMsg ctCmd\r\n ]\r\n | ContentMsg cnMsg ->\r\n let mdl, cmd = \r\n if cnMsg = Content.ShowReservation then\r\n let sbMdl, sbMsg = Sidebar.update Sidebar.ShowReservation model.Sidebar\r\n { model with Sidebar = sbMdl }, Cmd.map SidebarMsg sbMsg\r\n else\r\n model, Cmd.none\r\n let cnModel, cnCmd = Content.update cnMsg model.Content\r\n { mdl with Content = cnModel }, Cmd.batch [ Cmd.map ContentMsg cnCmd; cmd ]\r\n\r\nlet footer =\r\n footer [ Class \"main-footer\" ] [\r\n div [Class \"pull-right hidden-xs\" ] [\r\n b [] [ str \"Wersja\" ]; str \" 1.0.0\"\r\n ]\r\n strong [] [ str \"Copyright \"; i [ Class \"fa fa-copyright\" ] []; str \" 2021 Helix \" ] \r\n str \" Wszystkie prawa zastrzeżone.\"\r\n ]\r\n \r\nlet view (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n Header.view model.Header (HeaderMsg >> dispatch)\r\n Sidebar.view model.Sidebar (SidebarMsg >> dispatch)\r\n Content.view model.Content (ContentMsg >> dispatch)\r\n footer\r\n ]\r\n\r\nlet subscribe m =\r\n Cmd.map ContentMsg (Content.subscribe m)\r\n","module Authentication\r\n\r\nopen System\r\nopen Elmish\r\nopen Fable.React\r\nopen Fable.React.Props\r\nopen Commons\r\nopen Shared.Authentication\r\nopen Fable.Remoting.Client\r\nopen Shared\r\nopen Fable.Core\r\nopen Shared.Validation\r\n\r\n[]\r\ntype AuthParams =\r\n | Activation of Guid\r\n | PasswordReset of Guid\r\n | FullReturnUrl of string\r\n\r\nmodule Login =\r\n\r\n type Msg =\r\n | UsernameChanged of string\r\n | PasswordChanged of string\r\n | PasswordKeyDown of string\r\n | RememberMeChanged of bool\r\n | Submit\r\n | ShowResult of LoginResult\r\n | Register\r\n | PasswordReset\r\n | ShowError of exn\r\n\r\n type Model =\r\n {\r\n Username : string\r\n Password : string\r\n RememberMe : bool\r\n Redirection : string\r\n LoginResult : string * string\r\n }\r\n\r\n let init (redirection: string): Model * Cmd =\r\n { Username = \"\"; Password = \"\"; RememberMe = true; Redirection = redirection; LoginResult = \"\", \"\" },\r\n Cmd.none\r\n\r\n let loginCmd(api, username, password, rememberMe) =\r\n let cmd = async {\r\n let! salt = api.GetSalt username\r\n let! res = api.LogIn ({ Username = username; Password = Auth.hash (password + salt.ToString()) }, rememberMe)\r\n return ShowResult res\r\n }\r\n Cmd.OfAsync.either id cmd id ShowError\r\n\r\n let update (api: IAuthApi) (msg: Msg) (model: Model) : Model * Cmd =\r\n match msg with\r\n | UsernameChanged username ->\r\n { model with Username = username }, Cmd.none\r\n | PasswordChanged password ->\r\n { model with Password = password }, Cmd.none\r\n | PasswordKeyDown key -> \r\n model, if key = \"Enter\" then Cmd.ofMsg Submit else Cmd.none\r\n | RememberMeChanged rememberMe ->\r\n { model with RememberMe = rememberMe }, Cmd.none\r\n | Submit ->\r\n model, loginCmd(api, model.Username, model.Password, model.RememberMe)\r\n | ShowResult res ->\r\n let message = \r\n match res with\r\n | LoginResult.Success _ ->\r\n Browser.Dom.window.location.href <- model.Redirection\r\n \"has-success\", sprintf \"Witaj %s\" model.Username\r\n | LoginResult.Inactive _ ->\r\n \"has-error\", \"Konto nie zostało jeszcze aktywowane. Poszukaj wiadomości z linkiem aktywacyjnym w swojej skrzynce pocztowej.\"\r\n | LoginResult.InvalidCredentials ->\r\n \"has-error\", \"Nieprawidłowa nazwa użytkownika lub hasło.\" \r\n | LoginResult.ToManyFailedAttempts ->\r\n \"has-error\", \"Konto zablokowane z powodu zbyt dużej liczby nieudanych prób logowania.\"\r\n { model with LoginResult = message }, Cmd.none\r\n | ShowError ex ->\r\n let message = sprintf \"Podczas logowania nastąpił nieoczekiwany błąd: %s\" ex.Message\r\n { model with LoginResult = \"has-error\", message }, Cmd.none\r\n | Register\r\n | PasswordReset ->\r\n Browser.Dom.window.location.hash <- \"\"\r\n //Browser.Dom.window.location.href <- \"404.html\"\r\n model, Cmd.none\r\n\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n React.ofList [\r\n p [ Style [ TextAlign TextAlignOptions.Center ] ] [ str \"Zaloguj się, by rozpocząć pracę\" ]\r\n div [] [\r\n div [ Class \"form-group has-feedback\" ] [\r\n input [\r\n Class \"form-control\"\r\n Placeholder \"Użytkownik\"\r\n Value model.Username\r\n OnChange (Event.str dispatch UsernameChanged)\r\n MaxLength 16.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-user form-control-feedback\" ] []\r\n ]\r\n div [ Class \"form-group has-feedback\" ] [\r\n input [\r\n Type \"password\"\r\n Class \"form-control\"\r\n Placeholder \"Hasło\"\r\n Value model.Password\r\n OnKeyDown (fun evt -> dispatch (PasswordKeyDown evt.key))\r\n OnChange (Event.str dispatch PasswordChanged)\r\n MaxLength 64.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-lock form-control-feedback\" ] []\r\n\r\n ]\r\n div [Class (sprintf \"form-group %s\" (fst model.LoginResult))] [\r\n if not <| String.IsNullOrEmpty (snd model.LoginResult) then\r\n yield label [ Class \"control-label\" ] [ str (snd model.LoginResult) ]\r\n ]\r\n div [ Class \"row\" ] [\r\n div [Class \"col-xs-8\"] [\r\n Controls.checkbox \"rememberMe\" [] \"Zapamiętaj mnie\" model.RememberMe dispatch RememberMeChanged\r\n ] \r\n div [ Class \"col-xs-4\" ] [\r\n div [ \r\n Class \"btn btn-primary btn-block btn-flat\"\r\n OnClick (Event.none dispatch Submit)\r\n ] [ str \"Zaloguj\" ]\r\n ]\r\n ]\r\n ]\r\n a [ Style [ Cursor \"pointer\" ]\r\n OnClick (Event.none dispatch PasswordReset)\r\n ] [ str \"Zapomniałem hasła\" ]\r\n br []\r\n a [ Style [ Cursor \"pointer\" ]; \r\n Class \"text-center\"\r\n OnClick (Event.none dispatch Register)\r\n ] [ str \"Nie mam jeszcze konta\" ]\r\n ]\r\n\r\nmodule Registration =\r\n\r\n type Msg =\r\n | UsernameChanged of string\r\n | Password1Changed of string\r\n | Password2Changed of string\r\n | FirstNameChanged of string\r\n | LastNameChanged of string\r\n | EmailChanged of string\r\n | TermsAcceptChanged of bool\r\n | Submit\r\n | ShowResult of RegistrationResult\r\n | ShowError of exn\r\n | LogIn\r\n\r\n []\r\n type ViewType =\r\n | Editor\r\n | Summary\r\n\r\n type Model =\r\n {\r\n FirstName : string\r\n FirstNameErrors : string list\r\n LastName : string\r\n LastNameErrors : string list\r\n Email : string\r\n EmailErrors : string list\r\n Username : string\r\n UsernameErrors : string list\r\n Password1 : string\r\n Password1Errors : string list\r\n Password2 : string\r\n Password2Errors : string list\r\n TermsAccepted : bool\r\n ErrorMessage : string\r\n Redirection : string\r\n ViewType : ViewType\r\n }\r\n static member Empty =\r\n {\r\n FirstName = \"\"\r\n FirstNameErrors = []\r\n LastName = \"\"\r\n LastNameErrors = []\r\n Email = \"\"\r\n EmailErrors = []\r\n Username = \"\"\r\n UsernameErrors = []\r\n Password1 = \"\"\r\n Password1Errors = []\r\n Password2 = \"\"\r\n Password2Errors = []\r\n TermsAccepted = false\r\n ErrorMessage = \"\"\r\n Redirection = \"\"\r\n ViewType = ViewType.Editor\r\n }\r\n static member WithErrors (errors: (string * string) list) (model: Model) =\r\n { model with\r\n FirstNameErrors = errors |> getErrorsOf \"FirstName\"\r\n LastNameErrors = errors |> getErrorsOf \"LastName\"\r\n EmailErrors = errors |> getErrorsOf \"Email\"\r\n UsernameErrors = errors |> getErrorsOf \"Username\"\r\n Password1Errors = errors |> getErrorsOf \"Password1\"\r\n Password2Errors = errors |> getErrorsOf \"Password2\"\r\n }\r\n static member ToRegistrationData (model: Model): RegistrationData =\r\n {\r\n FirstName = model.FirstName\r\n LastName = model.LastName\r\n Email = model.Email\r\n Username = model.Username\r\n Password = model.Password1\r\n Salt = 0\r\n }\r\n\r\n let init (redirection: string): Model * Cmd =\r\n { Model.Empty with Redirection= redirection }, Cmd.none\r\n\r\n let registerCmd(api, data: RegistrationData) =\r\n let msg = async {\r\n let! salt = api.GetSalt data.Username\r\n let! res = api.Register { data with Password = Auth.hash (data.Password + salt.ToString()); Salt = salt }\r\n return ShowResult res\r\n }\r\n Cmd.OfAsync.either id msg id ShowError\r\n\r\n let update (api: IAuthApi) (msg: Msg) (model: Model) : Model * Cmd =\r\n match msg with\r\n | UsernameChanged usr -> { model with Username = usr }, Cmd.none\r\n | Password1Changed pwd -> { model with Password1 = pwd }, Cmd.none\r\n | Password2Changed pwd -> { model with Password2 = pwd }, Cmd.none\r\n | FirstNameChanged name -> { model with FirstName = name }, Cmd.none\r\n | LastNameChanged name -> { model with LastName = name }, Cmd.none\r\n | EmailChanged email -> { model with Email = email }, Cmd.none\r\n | TermsAcceptChanged acc -> { model with TermsAccepted = acc }, Cmd.none\r\n | Submit ->\r\n if model.TermsAccepted then\r\n let errors = \r\n model\r\n |> Model.ToRegistrationData\r\n |> validateRegistrationData\r\n |> List.map (function (\"Password\", msg) -> \"Password1\", msg | x -> x)\r\n |> List.append [ if model.Password1 <> model.Password2 then \"Password2\", \"Hasła są niezgodne\" ]\r\n if errors.IsEmpty then\r\n model, registerCmd (api, model |> Model.ToRegistrationData)\r\n else\r\n model |> Model.WithErrors errors, Cmd.none\r\n else\r\n model, Cmd.none\r\n | ShowError ex ->\r\n let message = sprintf \"Podczas rejestracji nastąpił nieoczekiwany błąd: %s\" ex.Message\r\n { model with ErrorMessage = message }, Cmd.none\r\n | ShowResult result ->\r\n match result with\r\n | RegistrationResult.Success _ ->\r\n { model with ViewType = ViewType.Summary }, Cmd.none\r\n | RegistrationResult.UsernameAlreadyUsed ->\r\n { model with UsernameErrors = [ \"Nazwa użytkownika jest już zajęta\" ] }, Cmd.none\r\n\r\n\r\n let showErrors errors =\r\n React.ofList\r\n [ for err in errors do\r\n span [ Class \"help-block\" ] [ str err ] \r\n ]\r\n\r\n let hasError errors =\r\n if List.isEmpty errors then \"\" else \" has-error\"\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n match model.ViewType with\r\n | ViewType.Editor ->\r\n React.ofList [\r\n p [ Style [ TextAlign TextAlignOptions.Center ] ] [ str \"Rejestracja nowego użytkownika\" ]\r\n div [] [\r\n div [ Class <| \"form-group has-feedback\" + hasError model.FirstNameErrors ] [\r\n input [\r\n Class \"form-control\"\r\n Placeholder \"Imię\"\r\n Value model.FirstName\r\n OnChange (Event.str dispatch FirstNameChanged)\r\n MaxLength 50.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-user form-control-feedback\" ] []\r\n showErrors model.FirstNameErrors\r\n ]\r\n div [ Class <| \"form-group has-feedback\" + hasError model.LastNameErrors ] [\r\n input [\r\n Class \"form-control\"\r\n Placeholder \"Nazwisko\"\r\n Value model.LastName\r\n OnChange (Event.str dispatch LastNameChanged)\r\n MaxLength 50.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-user form-control-feedback\" ] []\r\n showErrors model.LastNameErrors\r\n ]\r\n div [ Class <| \"form-group has-feedback\" + hasError model.UsernameErrors ] [\r\n input [\r\n Class \"form-control\"\r\n Placeholder \"Nazwa użytkownika\"\r\n Value model.Username\r\n OnChange (Event.str dispatch UsernameChanged)\r\n MaxLength 16.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-user form-control-feedback\" ] []\r\n showErrors model.UsernameErrors\r\n ]\r\n div [ Class <| \"form-group has-feedback\" + hasError model.EmailErrors ] [\r\n input [\r\n Class \"form-control\"\r\n Placeholder \"Email\"\r\n Value model.Email\r\n OnChange (Event.str dispatch EmailChanged)\r\n MaxLength 120.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-envelope form-control-feedback\" ] []\r\n showErrors model.EmailErrors\r\n ]\r\n div [ Class <| \"form-group has-feedback\" + hasError model.Password1Errors ] [\r\n input [\r\n Type \"password\"\r\n Class \"form-control\"\r\n Placeholder \"Hasło\"\r\n Value model.Password1\r\n OnChange (Event.str dispatch Password1Changed)\r\n MaxLength 64.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-lock form-control-feedback\" ] []\r\n showErrors model.Password1Errors\r\n ]\r\n div [ Class <| \"form-group has-feedback\" + hasError model.Password2Errors ] [\r\n input [\r\n Type \"password\"\r\n Class \"form-control\"\r\n Placeholder \"Powtórz hasło\"\r\n Value model.Password2\r\n OnChange (Event.str dispatch Password2Changed)\r\n MaxLength 64.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-log-in form-control-feedback\" ] []\r\n showErrors model.Password2Errors\r\n ]\r\n div [Class \"form-group has-error\"] [\r\n if not <| String.IsNullOrEmpty model.ErrorMessage then\r\n yield label [ Class \"control-label\" ] [ str model.ErrorMessage ]\r\n ]\r\n div [ Class \"row\" ] [\r\n Controls.checkbox \"termsAccepted\" [] \"Akceptuję regulamin serwisu\" model.TermsAccepted dispatch TermsAcceptChanged\r\n div [ Class \"col-xs-4\" ] [\r\n div [ \r\n Class \"btn btn-primary btn-block btn-flat\"\r\n Disabled (not model.TermsAccepted)\r\n OnClick (Event.none dispatch Submit)\r\n ] [ str \"Zarejestruj\" ]\r\n ]\r\n ]\r\n ] \r\n ]\r\n | ViewType.Summary ->\r\n div [] [\r\n p [] [ str \"Konto użytkownika zostało poprawnie zarejestrowane.\" ]\r\n p [] [ str \"Sprawdź swoją pocztę. Na podany przez Ciebie adres email wysłaliśmy wiadomość z linkiem aktywacyjnym.\r\n Konto zostanie aktywowane, gdy klikniesz ten link.\"\r\n ]\r\n p [] [\r\n str \"Kiedy konto będzie już aktywne, zaloguj się i uzupełnij swoje dane:\"\r\n ul [] [\r\n li [] [ str \"w zakładce 'Kontakt' wpisz swój numer telefonu\" ]\r\n li [] [ str \"w zakładce 'Rachunek' wprowadź dane rachunku bankowego do rozliczeń z gośćmi\" ]\r\n ]\r\n ]\r\n div [Class \"row\" ] [\r\n div [ Class \"col-xs-6 col-xs-offset-3\" ] [\r\n div [ \r\n Class \"btn btn-primary btn-block btn-flat\"\r\n OnClick (Event.none dispatch LogIn)\r\n ] [ str \"Przejdź do logowania\" ]\r\n ]\r\n ]\r\n ]\r\n\r\nmodule Activation =\r\n\r\n type Submodel =\r\n | Result of SecretCodeActionResult\r\n | Error of string\r\n | Nothing\r\n\r\n type Model = string * Submodel\r\n\r\n type Msg =\r\n | ShowResult of SecretCodeActionResult\r\n | LogIn\r\n | ShowError of exn\r\n\r\n let activateCmd (api: IAuthApi, activationCode: Guid) = \r\n Cmd.OfAsync.either id (api.Activate activationCode) ShowResult ShowError\r\n\r\n let init api (redirection: string, activationCode: Guid): Model * Cmd =\r\n (redirection, Nothing), activateCmd(api, activationCode)\r\n\r\n let update (msg: Msg) (redirection: string, _: Submodel) : Model * Cmd =\r\n match msg with\r\n | ShowResult result ->\r\n (redirection, Result result), Cmd.none\r\n | ShowError ex ->\r\n let message = sprintf \"Podczas aktywacji nastąpił nieoczekiwany błąd: %s\" ex.Message\r\n (redirection, Error message), Cmd.none\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n match model with\r\n | _, Result (SecretCodeActionResult.Success _) ->\r\n div [] [\r\n p [] [ str \"Konto użytkownika jest teraz aktywne. Możesz się już zalogować.\" ] \r\n div [Class \"row\" ] [\r\n div [ Class \"col-xs-6 col-xs-offset-3\" ] [\r\n div [ \r\n Class \"btn btn-primary btn-block btn-flat\"\r\n OnClick (Event.none dispatch LogIn)\r\n ] [ str \"Przejdź do logowania\" ]\r\n ]\r\n ]\r\n ]\r\n | _, Result (SecretCodeActionResult.Expired _) ->\r\n div [] [ str \"Link aktywacyjny wygasł. Zarejestruj się powtórnie.\" ]\r\n | _, Result (SecretCodeActionResult.Removed) ->\r\n div [] [\r\n str \"Link aktywacyjny został usunięty.\"\r\n br []\r\n str \"Zarejestruj się powtórnie.\"\r\n ]\r\n | _, Error message ->\r\n div [Class \"form-group has-error\"] [\r\n label [ Class \"control-label\" ] [ str message ]\r\n ]\r\n | _, Nothing ->\r\n div [] []\r\n\r\nmodule ResetPassword =\r\n\r\n type Msg =\r\n | UsernameChanged of string\r\n | Submit\r\n | ShowResult of unit\r\n | ShowError of exn\r\n\r\n type ViewType =\r\n | Editor\r\n | Summary\r\n\r\n type Model =\r\n {\r\n Username : string\r\n ViewType : ViewType\r\n ErrorMessage : string\r\n }\r\n static member Empty =\r\n { Username = \"\"; ViewType = ViewType.Editor; ErrorMessage = \"\" }\r\n\r\n let init(username: string): Model * Cmd =\r\n { Model.Empty with Username = username }, Cmd.none\r\n\r\n let resetPasswordCmd (api: IAuthApi, username: string) = \r\n Cmd.OfAsync.either id (api.ResetPassword username) ShowResult ShowError\r\n\r\n let update (api: IAuthApi) (msg: Msg) (model: Model) : Model * Cmd =\r\n match msg with\r\n | UsernameChanged name ->\r\n { Model.Empty with Username = name }, Cmd.none\r\n | Submit ->\r\n model, resetPasswordCmd (api, model.Username)\r\n | ShowResult () ->\r\n { model with ViewType = ViewType.Summary }, Cmd.none\r\n | ShowError ex ->\r\n { model with ErrorMessage = sprintf \"Podczas wysyłania linka do zmiany hasła wystąpił błąd %s\" ex.Message }, Cmd.none\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n match model.ViewType with\r\n | Editor ->\r\n React.ofList [\r\n p [] [\r\n str \"Podaj swoją nazwę użytkownika.\r\n Na jej podstawie wyślemy wiadomość zawierającą link do zmiany hasła na adres email,\r\n podany przez Ciebie podczas rejestracji.\"\r\n ]\r\n div [] [\r\n div [ Class <| \"form-group has-feedback\" ] [\r\n input [\r\n Type \"username\"\r\n Class \"form-control\"\r\n Placeholder \"Użytkownik\"\r\n Value model.Username\r\n OnChange (Event.str dispatch UsernameChanged)\r\n MaxLength 16.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-user form-control-feedback\" ] []\r\n ] \r\n div [Class \"form-group has-error\"] [\r\n if not <| String.IsNullOrEmpty model.ErrorMessage then\r\n yield label [ Class \"control-label\" ] [ str model.ErrorMessage ]\r\n ]\r\n div [ Class \"row\" ] [\r\n div [ Class \"col-xs-4\" ] [\r\n div [ \r\n Class \"btn btn-primary btn-block btn-flat\"\r\n OnClick (Event.none dispatch Submit)\r\n ] [ str \"Wyślij\" ]\r\n ]\r\n ]\r\n ] \r\n ]\r\n | Summary ->\r\n div [] [\r\n str \"Sprawdź swoją skrzynkę pocztową.\"\r\n br []\r\n str \"Wysłaliśmy do Ciebie wiadomość z linkiem do zmiany hasła.\"\r\n ]\r\n\r\nmodule UpdatePassword =\r\n\r\n type Msg =\r\n | Password1Changed of string\r\n | Password2Changed of string\r\n | Submit\r\n | LogIn\r\n | ShowResult of SecretCodeActionResult\r\n | ShowError of exn\r\n\r\n type Model =\r\n {\r\n Redirection : string\r\n ResetCode : Guid\r\n Password1 : string\r\n Password1Errors : string list\r\n Password2 : string\r\n Password2Errors : string list\r\n Result : SecretCodeActionResult option\r\n ErrorMessage : string\r\n }\r\n static member Empty =\r\n {\r\n Redirection = \"\"\r\n ResetCode = Guid.Empty;\r\n Password1 = \"\";\r\n Password1Errors = []\r\n Password2 = \"\"\r\n Password2Errors = []\r\n Result = None\r\n ErrorMessage = \"\"\r\n }\r\n member this.HasErrors = not this.Password1Errors.IsEmpty || not this.Password2Errors.IsEmpty\r\n\r\n let validate (model: Model) =\r\n { model with\r\n Password1Errors = checkPasswordStrength model.Password1 \r\n Password2Errors = [ if model.Password1 <> model.Password2 then \"Hasła są niezgodne\" ] \r\n }\r\n\r\n let init(redirection: string, passwordResetCode: Guid): Model * Cmd =\r\n { Model.Empty with Redirection = redirection; ResetCode = passwordResetCode }, Cmd.none\r\n\r\n let updatePasswordCmd (api: IAuthApi, password: string, resetCode: Guid) =\r\n let msg = async {\r\n let! salt = api.GetSaltByCode resetCode\r\n let! res = api.UpdatePassword (Auth.hash (password + string(salt |> Option.defaultValue 0)), resetCode)\r\n return ShowResult res\r\n }\r\n Cmd.OfAsync.either id msg id ShowError\r\n\r\n let update (api: IAuthApi) (msg: Msg) (model: Model) : Model * Cmd =\r\n match msg with\r\n | Password1Changed pwd ->\r\n { model with Password1 = pwd }, Cmd.none\r\n | Password2Changed pwd ->\r\n { model with Password2 = pwd }, Cmd.none\r\n | Submit ->\r\n let vmodel = validate model\r\n if vmodel.HasErrors then\r\n vmodel, Cmd.none\r\n else\r\n model, updatePasswordCmd (api, model.Password1, model.ResetCode)\r\n | ShowResult result ->\r\n { model with Result = Some result }, Cmd.none\r\n | ShowError ex ->\r\n { model with ErrorMessage = ex.ToString() }, Cmd.none\r\n\r\n let showErrors errors =\r\n React.ofList\r\n [ for err in errors do\r\n span [ Class \"help-block\" ] [ str err ] \r\n ]\r\n\r\n let hasError errors =\r\n if List.isEmpty errors then \"\" else \" has-error\"\r\n\r\n let view (model : Model) (dispatch : Msg -> unit) =\r\n match model.Result with\r\n | Some (SecretCodeActionResult.Success _) ->\r\n div [] [\r\n p [] [ str \"Hasło zostało zmienione. Możesz się już zalogować.\" ] \r\n div [Class \"row\" ] [\r\n div [ Class \"col-xs-6 col-xs-offset-3\" ] [\r\n div [ \r\n Class \"btn btn-primary btn-block btn-flat\"\r\n OnClick (Event.none dispatch LogIn)\r\n ] [ str \"Przejdź do logowania\" ]\r\n ]\r\n ]\r\n ]\r\n | Some (SecretCodeActionResult.Expired _) ->\r\n div [] [ str \"Link aktywacyjny wygasł. Poproś o ponowne wygenerowanie linku.\" ]\r\n | Some (SecretCodeActionResult.Removed) ->\r\n div [] [\r\n str \"Link aktywacyjny został usunięty.\"\r\n br []\r\n str \"Poproś o ponowne wygenerowanie linku.\"\r\n ] \r\n | None ->\r\n React.ofList [\r\n p [ Style [ TextAlign TextAlignOptions.Center ] ] [ str \"Zmiana hasła\" ]\r\n div [] [\r\n div [ Class <| \"form-group has-feedback\" + hasError model.Password1Errors ] [\r\n input [\r\n Type \"password\"\r\n Class \"form-control\"\r\n Placeholder \"Hasło\"\r\n Value model.Password1\r\n OnChange (Event.str dispatch Password1Changed)\r\n MaxLength 64.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-lock form-control-feedback\" ] []\r\n showErrors model.Password1Errors\r\n ]\r\n div [ Class <| \"form-group has-feedback\" + hasError model.Password2Errors ] [\r\n input [\r\n Type \"password\"\r\n Class \"form-control\"\r\n Placeholder \"Powtórz hasło\"\r\n Value model.Password2\r\n OnChange (Event.str dispatch Password2Changed)\r\n MaxLength 64.0\r\n ]\r\n span [ Class \"glyphicon glyphicon-log-in form-control-feedback\" ] []\r\n showErrors model.Password2Errors\r\n ]\r\n div [Class \"form-group has-error\"] [\r\n if not <| String.IsNullOrEmpty model.ErrorMessage then\r\n yield label [ Class \"control-label\" ] [ str model.ErrorMessage ]\r\n ]\r\n div [ Class \"row\" ] [\r\n div [ Class \"col-xs-4\" ] [\r\n div [ \r\n Class \"btn btn-primary btn-block btn-flat\"\r\n OnClick (Event.none dispatch Submit)\r\n ] [ str \"Wyślij\" ]\r\n ]\r\n ]\r\n ] \r\n ]\r\n\r\n\r\nlet ownerApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder (Route.builder2 \"Owner\")\r\n |> Remoting.buildProxy\r\n\r\nlet ordererApi =\r\n Remoting.createApi()\r\n |> Remoting.withRouteBuilder (Route.builder2 \"Orderer\")\r\n |> Remoting.buildProxy\r\n\r\n\r\ntype Msg =\r\n | LoginMsg of Login.Msg\r\n | RegistrationMsg of Registration.Msg\r\n | ActivationMsg of Activation.Msg\r\n | ResetPasswordMsg of ResetPassword.Msg\r\n | UpdatePasswordMsg of UpdatePassword.Msg\r\n\r\ntype Model =\r\n | LoginModel of Login.Model\r\n | RegistrationModel of Registration.Model\r\n | ActivationModel of Activation.Model\r\n | ResetPasswordModel of ResetPassword.Model\r\n | UpdatePasswordModel of UpdatePassword.Model\r\n\r\nlet init api (redirection: string, authParams: AuthParams option): Model * Cmd =\r\n match authParams with\r\n | Some (AuthParams.Activation code) ->\r\n let act, msg = Activation.init api (redirection, code)\r\n ActivationModel act, Cmd.map ActivationMsg msg\r\n | Some (AuthParams.PasswordReset code) ->\r\n let mdl, msg = UpdatePassword.init (redirection, code)\r\n UpdatePasswordModel mdl, Cmd.map UpdatePasswordMsg msg\r\n | Some (AuthParams.FullReturnUrl url) ->\r\n let login, msg = Login.init url\r\n LoginModel login, Cmd.map LoginMsg msg\r\n | None ->\r\n let login, msg = Login.init redirection\r\n LoginModel login, Cmd.map LoginMsg msg\r\n\r\nlet ownerInit activationCode = init ownerApi (\"owner-panel\", activationCode)\r\nlet ordererInit activationCode = init ordererApi (\"make-reservation\", activationCode) // TODO: go to orderer panel\r\n\r\nlet update (api: IAuthApi) (msg: Msg) (model: Model) : Model * Cmd =\r\n match msg, model with\r\n | LoginMsg Login.Register, LoginModel submodel ->\r\n let rmdl, rcmd = Registration.init submodel.Redirection\r\n RegistrationModel rmdl, Cmd.map RegistrationMsg rcmd\r\n | LoginMsg Login.PasswordReset, LoginModel submodel ->\r\n let rmdl, rcmd = ResetPassword.init submodel.Username\r\n ResetPasswordModel rmdl, Cmd.map ResetPasswordMsg rcmd\r\n | LoginMsg submsg, LoginModel submodel ->\r\n let model, cmd = Login.update api submsg submodel\r\n LoginModel model, Cmd.map LoginMsg cmd\r\n | RegistrationMsg Registration.LogIn, RegistrationModel submodel ->\r\n let lmdl, lcmd = Login.init submodel.Redirection\r\n LoginModel lmdl, Cmd.map LoginMsg lcmd\r\n | ActivationMsg Activation.LogIn, ActivationModel (redirection, _) ->\r\n let lmdl, lcmd = Login.init redirection\r\n LoginModel lmdl, Cmd.map LoginMsg lcmd\r\n | ActivationMsg msg, ActivationModel (redirection, model) ->\r\n let actmdl, actcmd = Activation.update msg (redirection, model)\r\n ActivationModel actmdl, Cmd.map ActivationMsg actcmd\r\n | UpdatePasswordMsg UpdatePassword.LogIn, UpdatePasswordModel model ->\r\n let lmdl, lcmd = Login.init model.Redirection\r\n LoginModel lmdl, Cmd.map LoginMsg lcmd\r\n | UpdatePasswordMsg msg, UpdatePasswordModel model ->\r\n let prmdl, prcmd = UpdatePassword.update api msg model\r\n UpdatePasswordModel prmdl, Cmd.map UpdatePasswordMsg prcmd\r\n | ResetPasswordMsg msg, ResetPasswordModel model ->\r\n let prmdl, prcmd = ResetPassword.update api msg model\r\n ResetPasswordModel prmdl, Cmd.map ResetPasswordMsg prcmd\r\n | RegistrationMsg submsg, RegistrationModel submodel ->\r\n let rmdl, rcmd = Registration.update api submsg submodel\r\n RegistrationModel rmdl, Cmd.map RegistrationMsg rcmd\r\n\r\nlet ownerUpdate = update ownerApi\r\n\r\nlet ordererUpdate = update ordererApi\r\n\r\nlet view (model : Model) (dispatch : Msg -> unit) =\r\n match model with\r\n | LoginModel submodel ->\r\n Login.view submodel (LoginMsg >> dispatch)\r\n | RegistrationModel submodel ->\r\n Registration.view submodel (RegistrationMsg >> dispatch)\r\n | ActivationModel submodel ->\r\n Activation.view submodel (ActivationMsg >> dispatch)\r\n | ResetPasswordModel submodel ->\r\n ResetPassword.view submodel (ResetPasswordMsg >> dispatch)\r\n | UpdatePasswordModel submodel ->\r\n UpdatePassword.view submodel (UpdatePasswordMsg >> dispatch)\r\n","namespace Shared\r\n\r\nopen Validation\r\nopen System\r\n\r\nmodule Authentication =\r\n\r\n type Credentials =\r\n {\r\n Username : string\r\n Password : string\r\n }\r\n\r\n []\r\n type LoginResult =\r\n | Success of int\r\n | Inactive\r\n | InvalidCredentials\r\n | ToManyFailedAttempts\r\n\r\n type RegistrationData =\r\n {\r\n FirstName : string\r\n LastName : string\r\n Email : string\r\n Username : string\r\n Password : string\r\n Salt : int\r\n }\r\n\r\n []\r\n type RegistrationResult =\r\n | Success of int\r\n | UsernameAlreadyUsed\r\n\r\n []\r\n type SecretCodeActionResult =\r\n | Success of int\r\n | Expired of int\r\n | Removed\r\n\r\n let validateRegistrationData (data: RegistrationData) =\r\n [\r\n checkEmpty \"Imię\" \"e\" data.FirstName |> forField \"FirstName\" \r\n checkEmpty \"Nazwisko\" \"e\" data.LastName |> forField \"LastName\"\r\n checkEmpty \"Nazwa użytkownika\" \"a\" data.Username |> forField \"Username\"\r\n checkEmpty \"Email\" \"y\" data.Email |> forField \"Email\"\r\n checkEmpty \"Hasło\" \"e\" data.Password |> forField \"Password\"\r\n checkPasswordStrength data.Password |> forField \"Password\"\r\n ] |> List.collect id\r\n\r\n type IAuthApi =\r\n {\r\n GetSalt : string -> Async\r\n GetSaltByCode : Guid -> Async\r\n LogIn : Credentials * bool -> Async\r\n Logout : unit -> Async\r\n Register : RegistrationData -> Async\r\n Activate : Guid -> Async\r\n ResetPassword : string -> Async\r\n UpdatePassword : string * Guid -> Async\r\n }\r\n\r\n \r\n","(** UrlParser\n------\nThis port of the Elm library helps you turn URLs into nicely structured data.\nIt is designed to be used with `Navigation` module to help folks create\nsingle-page applications (SPAs) where you manage browser navigation yourself.\n*)\n\nmodule Elmish.UrlParser\n\n\n(**\n#### Types\n*)\n\ntype State<'v> =\n { visited : string list\n unvisited : string list\n args : Map\n value : 'v }\n\n[]\n[]\nmodule internal State =\n let mkState visited unvisited args value =\n { visited = visited\n unvisited = unvisited\n args = args\n value = value }\n\n let map f { visited = visited; unvisited = unvisited; args = args; value = value } =\n { visited = visited\n unvisited = unvisited\n args = args\n value = f value }\n\n\n/// Turn URLs like `/blog/42/cat-herding-techniques` into nice data.\ntype Parser<'a,'b> = State<'a> -> State<'b> list\n\n\n(**\n#### Parse segments\nCreate a custom path segment parser. You can use it to define something like “only CSS files” like this:\n```\n let css =\n custom \"CSS_FILE\" <| fun segment ->\n if String.EndsWith \".css\" then\n Ok segment\n else\n Error \"Does not end with .css\"\n```\n*)\nlet custom tipe (stringToSomething: string->Result<_,_>) : Parser<_,_> =\n let inner { visited = visited; unvisited = unvisited; args = args; value = value } =\n match unvisited with\n | [] -> []\n | next :: rest ->\n match stringToSomething next with\n | Ok nextValue ->\n [ State.mkState (next :: visited) rest args (value nextValue) ]\n\n | Error msg ->\n []\n inner\n\n\n(** Parse a segment of the path as a `string`.\n```\n parse str location\n```\n
\n    /alice/  ==>  Some \"alice\"\n    /bob     ==>  Some \"bob\"\n    /42/     ==>  Some \"42\"\n
\n*)\nlet str state =\n custom \"string\" Ok state\n\n\n(** Parse a segment of the path as an `int`.\n```\n parse i32 location\n```\n
\n    /alice/  ==>  None\n    /bob     ==>  None\n    /42/     ==>  Some 42\n
\n*)\nlet i32 state =\n custom \"i32\" (System.Int32.TryParse >> function true, value -> Ok value | _ -> Error \"Can't parse int\" ) state\n\n\n(** Parse a segment of the path if it matches a given string.\n```\n s \"blog\" // can parse /blog/\n // but not /glob/ or /42/ or anything else\n```\n*)\nlet s str : Parser<_,_> =\n let inner { visited = visited; unvisited = unvisited; args = args; value = value } =\n match unvisited with\n | [] -> []\n | next :: rest ->\n if next = str then\n [ State.mkState (next :: visited) rest args value ]\n else\n []\n inner\n\n\n\n(**\n#### Combining parsers\nParse a path with multiple segments.\n\n```\n parse (s \"blog\" i32) location\n```\n
\n    /blog/35/  ==>  Some 35\n    /blog/42   ==>  Some 42\n    /blog/     ==>  None\n    /42/       ==>  None\n
\n```\n parse (s \"search\" str) location\n```\n
\n    /search/cats/  ==>  Some \"cats\"\n    /search/frog   ==>  Some \"frog\"\n    /search/       ==>  None\n    /cats/         ==>  None\n
\n*)\nlet inline () (parseBefore: Parser<_,_>) (parseAfter: Parser<_,_>) =\n fun state ->\n List.collect parseAfter (parseBefore state)\n\n\n(** Transform a path parser.\n```\n type Comment = { author : string; id : int }\n rawComment =\n s \"user\" str s \"comments\" i32\n comment =\n map (fun a id -> { author = a; id = id }) rawComment\n parse comment location\n```\n
\n    /user/bob/comments/42  ==>  Some { author = \"bob\"; id = 42 }\n    /user/tom/comments/35  ==>  Some { author = \"tom\"; id = 35 }\n    /user/sam/             ==>  None\n
\n*)\nlet map (subValue: 'a) (parse: Parser<'a,'b>) : Parser<'b->'c,'c> =\n let inner { visited = visited; unvisited = unvisited; args = args; value = value } =\n List.map (State.map value)\n <| parse { visited = visited\n unvisited = unvisited\n args = args\n value = subValue }\n inner\n\n\n\n(** Try a bunch of different path parsers.\n```\n type Route\n = Search of string\n | Blog of int\n | User of string\n | Comment of string*int\n route =\n oneOf\n [ map Search (s \"search\" str)\n map Blog (s \"blog\" i32)\n map User (s \"user\" str)\n map (fun u c -> Comment (u,c)) (s \"user\" str \"comments\" i32) ]\n parse route location\n```\n
\n    /search/cats           ==>  Some (Search \"cats\")\n    /search/               ==>  None\n    /blog/42               ==>  Some (Blog 42)\n    /blog/cats             ==>  None\n    /user/sam/             ==>  Some (User \"sam\")\n    /user/bob/comments/42  ==>  Some (Comment \"bob\" 42)\n    /user/tom/comments/35  ==>  Some (Comment \"tom\" 35)\n    /user/                 ==>  None\n
\n*)\nlet oneOf parsers state =\n List.collect (fun parser -> parser state) parsers\n\n\n(** A parser that does not consume any path segments.\n```\n type BlogRoute = Overview | Post of int\n blogRoute =\n oneOf\n [ map Overview top\n map Post (s \"post\" i32) ]\n parse (s \"blog\" blogRoute) location\n```\n
\n    /blog/         ==>  Some Overview\n    /blog/post/42  ==>  Some (Post 42)\n
\n*)\nlet top state=\n [state]\n\n\n\n(**\n#### Query parameters\nTurn query parameters like `?name=tom&age=42` into nice data.\n\n*)\n\ntype QueryParser<'a,'b> = State<'a> -> State<'b> list\n\n\n(** Parse some query parameters.\n```\n type Route = BlogList (Option string) | BlogPost Int\n route =\n oneOf\n [ map BlogList (s \"blog\" stringParam \"search\")\n map BlogPost (s \"blog\" i32) ]\n parse route location\n```\n
\n    /blog/              ==>  Some (BlogList None)\n    /blog/?search=cats  ==>  Some (BlogList (Some \"cats\"))\n    /blog/42            ==>  Some (BlogPost 42)\n
\n*)\nlet inline () (parser: Parser<_,_>) (queryParser:QueryParser<_,_>) : Parser<_,_> =\n fun state ->\n List.collect queryParser (parser state)\n\n(** Create a custom query parser. You could create parsers like these:\n```\n val jsonParam : string -> Decoder a -> QueryParser (Option a -> b) b\n val enumParam : string -> Map -> QueryParser (Option a -> b) b\n```\n*)\nlet customParam (key: string) (func: string option -> _) : QueryParser<_,_> =\n let inner { visited = visited; unvisited = unvisited; args = args; value = value } =\n [ State.mkState visited unvisited args (value (func (Map.tryFind key args))) ]\n inner\n\n\n(** Parse a query parameter as a `string`.\n```\n parse (s \"blog\" stringParam \"search\") location\n```\n
\n    /blog/              ==>  Some (Overview None)\n    /blog/?search=cats  ==>  Some (Overview (Some \"cats\"))\n
\n*)\nlet stringParam name =\n customParam name id\n\nlet internal intParamHelp =\n Option.bind\n (fun (value: string) ->\n match System.Int32.TryParse value with\n | (true,x) -> Some x\n | _ -> None)\n\n(** Parse a query parameter as an `int`. Option you want to show paginated\nsearch results. You could have a `start` query parameter to say which result\nshould appear first.\n```\n parse (s \"results\" intParam \"start\") location\n```\n
\n    /results           ==>  Some None\n    /results?start=10  ==>  Some (Some 10)\n
\n*)\nlet intParam name =\n customParam name intParamHelp\n\n\n// PARSER HELPERS\n\nlet rec internal parseHelp states =\n match states with\n | [] ->\n None\n | state :: rest ->\n match state.unvisited with\n | [] ->\n Some state.value\n | [\"\"] ->\n Some state.value\n | _ ->\n parseHelp rest\n\nlet internal splitUrl (url: string) =\n match List.ofArray <| url.Split([|'/'|]) with\n | \"\" :: segments ->\n segments\n | segments ->\n segments\n\n/// parse a given part of the location\nlet parse (parser: Parser<'a->'a,'a>) url args =\n { visited = []\n unvisited = splitUrl url\n args = args\n value = id }\n |> parser\n |> parseHelp\n\nopen Fable.Core\n\nlet internal toKeyValuePair (segment: string) =\n match segment.Split('=') with\n | [| key; value |] ->\n Option.tuple (Option.ofFunc JS.decodeURIComponent key) (Option.ofFunc JS.decodeURIComponent value)\n | _ -> None\n\n\nlet internal parseParams (querystring: string) =\n if querystring.Length > 1 then\n querystring.Substring(1).Split('&')\n |> Seq.map toKeyValuePair\n |> Seq.choose id\n |> Map.ofSeq\n else Map.empty\n\nopen Browser.Types\n\n(**\n#### Parsers\nParse based on `location.pathname` and `location.search`. This parser\nignores the hash entirely.\n*)\nlet parsePath (parser: Parser<_,_>) (location: Location) =\n parse parser location.pathname (parseParams location.search)\n\n(** Parse based on `location.hash`. This parser ignores the normal\npath entirely.\n*)\nlet parseHash (parser: Parser<_,_>) (location: Location) =\n let hash, search =\n let hash =\n if location.hash.Length > 1 then location.hash.Substring 1\n else \"\"\n if hash.Contains(\"?\") then\n let h = hash.Substring(0, hash.IndexOf(\"?\"))\n h, hash.Substring(h.Length)\n else\n hash, \"?\"\n\n parse parser hash (parseParams search)\n","module HomePage\r\n\r\n\r\nopen Fable.Core\r\nopen Commons\r\nopen Shared.ServerError\r\nopen SidebarCommons\r\nopen Elmish\r\nopen Fable.Remoting.Client\r\nopen Shared\r\nopen Fable.React\r\nopen Fable.React.Props\r\ntype Model = SidebarCommons.Model\r\n\r\ntype Msg = SidebarCommons.Msg\r\n\r\nlet menuItem name icon ifNothing href =\r\n let active = Browser.Dom.window.location.href = href\r\n li [ if active then Class \"active\" ] [\r\n a [ Href href ] [\r\n i [ Class icon ] ifNothing\r\n span [] [ str (\" \" + name) ]\r\n ]\r\n ]\r\n\r\nlet sidebarMenu (model: Model) = \r\n ul [ Class \"sidebar-menu tree\"; Data(\"widget\", \"tree\") ] [\r\n li [ Class \"header\" ] [ str \"PRZEJDŹ DO\" ]\r\n menuItem \"O nas\" \"fa fa-industry\" [] \"#\"\r\n menuItem \"O Quaterze\" \"fa fa-globe\" [] \"#\"\r\n menuItem \"Poradniki i instrukcje\" \"fa fa-mortar-board\" [] \"#\"\r\n menuItem \"Często zadawane pytania\" \"fa fa-info-circle\" [] \"#\"\r\n menuItem \"Regulamin\" \"fa fa-nothing\" [ b [ DangerouslySetInnerHTML { __html = \"§\" }] [] ] \"#\"\r\n menuItem \"Cennik\" \"fa fa-money\" [] \"#\"\r\n if model.IsLoggedIn then\r\n menuItem \"Panel właściciela\" \"fa fa-tachometer\" [] \"/owner-panel\"\r\n else\r\n menuItem \"Zarajestruj się i dodaj obiekt\" \"fa fa-user-plus\" [] \"/owner-auth\"\r\n ]\r\n\r\nlet init = SidebarCommons.init\r\n\r\nlet view (model : Model) (dispatch : Msg -> unit) =\r\n SidebarCommons.view (sidebarMenu model) model dispatch\r\n\r\nlet update = SidebarCommons.update","module Pages\r\n\r\nopen Elmish.UrlParser\r\nopen Elmish\r\n\r\nopen Commons\r\nopen Fable.Core\r\nopen System\r\n\r\n\r\n[]\r\ntype Page =\r\n | Home\r\n | OwnerPanel of OwnerPanel.Parameters\r\n | MakeReservation of MakeReservation.ReservationParams\r\n | NotFound\r\n | Error500\r\n | OwnerAuthentication of Authentication.AuthParams option\r\n | OrdererAuthentication of Authentication.AuthParams option\r\n static member FromReservationParams id uid roomId resortId partner key =\r\n Page.MakeReservation\r\n <| match id, uid, roomId, resortId, partner, key with\r\n | Some id, Some uid, _, _, _, _ -> MakeReservation.ReservationId (id, uid)\r\n | Some _, None, _, _, _, _ -> failwith \"Reservation id must be always specified with uid\"\r\n | None, _, Some id, _, _, _ -> MakeReservation.RoomId id\r\n | None, _, None, Some id, _, _ -> MakeReservation.ResortId id\r\n | None, _, None, None, Some partner, Some key -> MakeReservation.PartnerKey (partner, key)\r\n | None, _, None, None, Some _, None -> failwith \"Partner reference must be always specified with key\"\r\n | None, _, None, None, None, _ -> failwith \"Either reservation id or room id or at least resort id or partner reference should be provided.\"\r\n\r\n static member FromAuthenticationParams basePage returnUrl activation passwordReset = \r\n basePage\r\n <| match returnUrl, activation, passwordReset with\r\n | Some url, _, _ -> Some (Authentication.AuthParams.FullReturnUrl url)\r\n | None, Some code, None -> Some (Authentication.AuthParams.Activation code)\r\n | None, None, Some code -> Some (Authentication.AuthParams.PasswordReset code)\r\n | None, Some _, Some _ -> failwith \"Either activation or password reset code can be used, but not both of them.\"\r\n | None, None, None -> None\r\n static member FromOwnerPanelParams reservationId partner key =\r\n Page.OwnerPanel\r\n <| match reservationId, partner, key with\r\n | Some reservationId, _, _ -> OwnerPanel.ReservationId reservationId\r\n | _, Some partner, Some key -> OwnerPanel.PartnerKey (partner, key)\r\n | None, None, None -> OwnerPanel.Empty\r\n | _ -> failwith \"Inconsistent parameter list\"\r\n\r\ntype Model =\r\n | HomeModel of SidebarCommons.Model\r\n | OwnerPanelModel of OwnerPanel.Model\r\n | MakeReservationModel of MakeReservation.Model\r\n | NotFoundModel\r\n | Error500Model\r\n | OwnerAuthenticationModel of Authentication.Model\r\n | OrdererAuthenticationModel of Authentication.Model \r\n\r\n\r\ntype Msg =\r\n | HomeMsg of SidebarCommons.Msg\r\n | OwnerPanelMsg of OwnerPanel.Msg\r\n | MakeReservationMsg of MakeReservation.Msg\r\n | AuthenticationMsg of Authentication.Msg\r\n\r\nlet toPath =\r\n function\r\n | Page.Home -> \"/\"\r\n | Page.MakeReservation _ -> \"make-reservation\"\r\n | Page.OwnerAuthentication _ -> \"/owner-auth\"\r\n | Page.OwnerPanel _ -> \"/owner-panel\"\r\n | Page.OrdererAuthentication _ -> \"/orderer-auth\"\r\n | Page.NotFound -> \"/400.html\"\r\n | Page.Error500 -> \"/500.html\"\r\n\r\n/// The URL is turned into a Result.\r\nlet pageParser : Parser Page,_> =\r\n oneOf\r\n [ map Page.Home (s \"\")\r\n map Page.Home (s \"index.html\")\r\n map Page.FromOwnerPanelParams (s \"owner-panel\" intParam \"reservation\" stringParam \"partner\" stringParam \"key\")\r\n map Page.FromReservationParams (s \"make-reservation\" intParam \"id\" customParam \"uid\" (Option.map Guid.Parse) intParam \"room\" intParam \"resort\" stringParam \"partner\" stringParam \"key\")\r\n map (Page.FromAuthenticationParams Page.OwnerAuthentication) (s \"owner-auth\" stringParam \"ReturnUrl\" customParam \"activate\" (Option.map Guid.Parse) customParam \"reset-password\" (Option.map Guid.Parse)) \r\n map (Page.FromAuthenticationParams Page.OrdererAuthentication) (s \"orderer-auth\" stringParam \"ReturnUrl\" customParam \"activate\" (Option.map Guid.Parse) customParam \"reset-password\" (Option.map Guid.Parse))\r\n map Page.NotFound (s \"400.html\")\r\n map Page.Error500 (s \"500.html\")\r\n ]\r\n\r\nlet urlParser location = parsePath pageParser location\r\n\r\nlet urlUpdate (result: Page option) (model: Model) =\r\n match result with\r\n | None\r\n \r\n | Some Page.Home ->\r\n let sbMdl, sbCmd = HomePage.init()\r\n HomeModel sbMdl, Cmd.map HomeMsg sbCmd\r\n\r\n | Some Page.NotFound ->\r\n NotFoundModel, Cmd.none\r\n\r\n | Some (Page.OwnerAuthentication activationCode) ->\r\n let m, cmd = Authentication.ownerInit activationCode\r\n OwnerAuthenticationModel m, Cmd.map AuthenticationMsg cmd\r\n\r\n | Some (Page.OrdererAuthentication activationCode) ->\r\n let m, cmd = Authentication.ordererInit activationCode\r\n OrdererAuthenticationModel m, Cmd.map AuthenticationMsg cmd\r\n\r\n | Some (Page.OwnerPanel parameters)->\r\n let subModel, cmd = OwnerPanel.init parameters\r\n OwnerPanelModel subModel, Cmd.map OwnerPanelMsg cmd\r\n\r\n | Some (Page.MakeReservation p) ->\r\n let submodel, cmd = MakeReservation.init p\r\n MakeReservationModel submodel, Cmd.map MakeReservationMsg cmd\r\n\r\n | Some Page.Error500 ->\r\n Error500Model, Cmd.none\r\n\r\nlet init page =\r\n let model, _ = OwnerPanel.init OwnerPanel.Parameters.Empty\r\n urlUpdate page (OwnerPanelModel model)\r\n\r\nlet update (msg: Msg) (model: Model) : Model * Cmd =\r\n match msg, model with\r\n | OwnerPanelMsg submsg, OwnerPanelModel submodel ->\r\n let newModel, newCmd = OwnerPanel.update submsg submodel\r\n OwnerPanelModel newModel, Cmd.map OwnerPanelMsg newCmd\r\n | OwnerPanelMsg _, _ \r\n | _, OwnerPanelModel _ ->\r\n failwithf \"Pages.update failed: msg = %A, model = %A\" msg model\r\n model, Cmd.none\r\n | MakeReservationMsg submsg, MakeReservationModel submodel ->\r\n let newModel, newCmd = MakeReservation.update submsg submodel\r\n MakeReservationModel newModel, Cmd.map MakeReservationMsg newCmd\r\n | AuthenticationMsg submsg, OwnerAuthenticationModel submodel ->\r\n let newModel, newCmd = Authentication.ownerUpdate submsg submodel\r\n OwnerAuthenticationModel newModel, Cmd.map AuthenticationMsg newCmd\r\n | AuthenticationMsg submsg, OrdererAuthenticationModel submodel ->\r\n let newModel, newCmd = Authentication.ordererUpdate submsg submodel\r\n OrdererAuthenticationModel newModel, Cmd.map AuthenticationMsg newCmd\r\n | HomeMsg msg, HomeModel mdl ->\r\n let sbMdl, sbCmd = HomePage.update msg mdl\r\n HomeModel sbMdl, Cmd.map HomeMsg sbCmd\r\n | _, HomeModel _ \r\n | _, NotFoundModel\r\n | _, Error500Model ->\r\n model, Cmd.none\r\n\r\n\r\nlet view model dispatch =\r\n match model with\r\n | HomeModel m ->\r\n HomePage.view m (HomeMsg >> dispatch)\r\n | NotFoundModel \r\n | Error500Model ->\r\n React.ofList []\r\n | MakeReservationModel model ->\r\n MakeReservation.view model (MakeReservationMsg >> dispatch)\r\n | OwnerAuthenticationModel submodel ->\r\n Authentication.view submodel (AuthenticationMsg >> dispatch)\r\n | OrdererAuthenticationModel submodel ->\r\n Authentication.view submodel (AuthenticationMsg >> dispatch)\r\n | OwnerPanelModel submodel ->\r\n OwnerPanel.view submodel (OwnerPanelMsg >> dispatch)\r\n\r\nlet subscribe model =\r\n match model with\r\n | OwnerPanelModel model ->\r\n Cmd.map OwnerPanelMsg (OwnerPanel.subscribe model)\r\n | MakeReservationModel model ->\r\n Cmd.map MakeReservationMsg (MakeReservation.subscribe model)\r\n | _ ->\r\n Cmd.none","namespace Elmish\nopen System\n\n[]\ntype internal RingState<'item> =\n | Writable of wx:'item array * ix:int\n | ReadWritable of rw:'item array * wix:int * rix:int\n\ntype internal RingBuffer<'item>(size) =\n let doubleSize ix (items: 'item array) =\n seq { yield! items |> Seq.skip ix\n yield! items |> Seq.take ix\n for _ in 0..items.Length do\n yield Unchecked.defaultof<'item> }\n |> Array.ofSeq\n\n let mutable state : 'item RingState =\n Writable (Array.zeroCreate (max size 10), 0)\n\n member __.Pop() =\n match state with\n | ReadWritable (items, wix, rix) ->\n let rix' = (rix + 1) % items.Length\n match rix' = wix with\n | true -> \n state <- Writable(items, wix)\n | _ ->\n state <- ReadWritable(items, wix, rix')\n Some items.[rix]\n | _ ->\n None\n\n member __.Push (item:'item) =\n match state with\n | Writable (items, ix) ->\n items.[ix] <- item\n let wix = (ix + 1) % items.Length\n state <- ReadWritable(items, wix, ix)\n | ReadWritable (items, wix, rix) ->\n items.[wix] <- item\n let wix' = (wix + 1) % items.Length\n match wix' = rix with\n | true -> \n state <- ReadWritable(items |> doubleSize rix, items.Length, 0)\n | _ -> \n state <- ReadWritable(items, wix', rix)","(** Custom navigation\n------\nThis port of the Elm library is about treating the address bar as an input to your program.\nIt converts changes in the address bar into messages and provides functions for manipulation of the browser history.\n*)\nnamespace Elmish.Navigation\n\nopen Browser\nopen Browser.Types\nopen Elmish\n\n(**\n#### Parser\nA function to turn the string in the address bar into data that is easier for your app to handle.\n*)\ntype Parser<'a> = Location -> 'a\n\ntype Navigable<'msg> =\n | Change of Location\n | UserMsg of 'msg\n\n(**\n#### Direct history manipulation\n*)\n[]\nmodule Navigation =\n let [] internal NavigatedEvent = \"NavigatedEvent\"\n\n /// Modify current location\n let modifyUrl (newUrl:string):Cmd<_> =\n [fun _ -> history.replaceState((), \"\", newUrl)]\n\n /// Push new location into history and navigate there\n let newUrl (newUrl:string):Cmd<_> =\n [fun _ -> history.pushState((), \"\", newUrl)\n let ev = CustomEvent.Create(NavigatedEvent)\n window.dispatchEvent ev\n |> ignore ]\n\n /// Jump to some point in history (positve=forward, nagative=backward)\n let jump (n:int):Cmd<_> =\n [fun _ -> history.go n]\n\n\n(**\n#### Program extensions\nTreat user's program as a child component, by wrapping it and handling navigation events.\n*)\n[]\n[]\nmodule Program =\n\n module Internal =\n let mutable private onChangeRef : obj -> obj =\n fun _ ->\n failwith \"`onChangeRef` has not been initialized.\\nPlease make sure you used Elmish.Navigation.Program.Internal.subscribe\"\n\n let subscribe (dispatch:Dispatch<_ Navigable>) =\n let mutable lastLocation = None\n let onChange _ =\n match lastLocation with\n | Some href when href = window.location.href -> ()\n | _ ->\n lastLocation <- Some window.location.href\n Change window.location |> dispatch\n |> box\n\n onChangeRef <- onChange\n\n window.addEventListener(\"popstate\", unbox onChangeRef)\n window.addEventListener(\"hashchange\", unbox onChangeRef)\n window.addEventListener(Navigation.NavigatedEvent, unbox onChangeRef)\n\n let unsubscribe () =\n window.removeEventListener(\"popstate\", unbox onChangeRef)\n window.removeEventListener(\"hashchange\", unbox onChangeRef)\n window.removeEventListener(Navigation.NavigatedEvent, unbox onChangeRef)\n\n let toNavigableWith (parser : Parser<'a>)\n (urlUpdate : 'a->'model->('model * Cmd<'msg>))\n (program : Program<'a,'model,'msg,'view>)\n (onLocationChange : Dispatch> -> unit) =\n\n let map (model, cmd) =\n model, cmd |> Cmd.map UserMsg\n\n let update userUpdate msg model =\n match msg with\n | Change location ->\n urlUpdate (parser location) model\n | UserMsg userMsg ->\n userUpdate userMsg model\n |> map\n\n let subs userSubscribe model =\n Cmd.batch\n [ [ onLocationChange ]\n userSubscribe model |> Cmd.map UserMsg ]\n\n let init userInit () =\n userInit (parser window.location) |> map\n\n let setState userSetState model dispatch =\n userSetState model (UserMsg >> dispatch)\n\n let view userView model dispatch =\n userView model (UserMsg >> dispatch)\n \n program\n |> Program.map init update view setState subs\n\n /// Add the navigation to a program made with `mkProgram` or `mkSimple`.\n /// urlUpdate: similar to `update` function, but receives parsed url instead of message as an input.\n let toNavigable (parser : Parser<'a>)\n (urlUpdate : 'a->'model->('model * Cmd<'msg>))\n (program : Program<'a,'model,'msg,'view>) =\n\n Internal.toNavigableWith parser urlUpdate program Internal.subscribe\n","module App\n\nopen Elmish\nopen Elmish.React\n\n#if DEBUG\nopen Elmish.Debug\n#endif\nopen Elmish.HMR\nopen Elmish.Navigation\n\n\nProgram.mkProgram Pages.init Pages.update Pages.view\n|> Program.withSubscription Pages.subscribe\n|> Program.toNavigable Pages.urlParser Pages.urlUpdate\n#if DEBUG\n|> Program.withConsoleTrace\n#endif\n|> Program.withReactSynchronous \"elmish-app\"\n#if DEBUG\n|> Program.withDebugger\n#endif\n|> Program.run\n\n","namespace Elmish.React\n\nopen Fable.React\nopen Elmish\n\ntype LazyProps<'model> = {\n model:'model\n render:unit->ReactElement\n equal:'model->'model->bool\n}\n\nmodule Components =\n type LazyView<'model>(props) =\n inherit Component,obj>(props)\n\n override this.shouldComponentUpdate(nextProps, _nextState) =\n not <| this.props.equal this.props.model nextProps.model\n\n override this.render () =\n this.props.render ()\n\n[]\nmodule Common =\n /// Avoid rendering the view unless the model has changed.\n /// equal: function to compare the previous and the new states\n /// view: function to render the model\n /// state: new state to render\n let lazyViewWith (equal:'model->'model->bool)\n (view:'model->ReactElement)\n (state:'model) =\n ofType,_,_>\n { render = fun () -> view state\n equal = equal\n model = state }\n []\n\n /// Avoid rendering the view unless the model has changed.\n /// equal: function to compare the previous and the new states\n /// view: function to render the model using the dispatch\n /// state: new state to render\n /// dispatch: dispatch function\n let lazyView2With (equal:'model->'model->bool)\n (view:'model->'msg Dispatch->ReactElement)\n (state:'model)\n (dispatch:'msg Dispatch) =\n ofType,_,_>\n { render = fun () -> view state dispatch\n equal = equal\n model = state }\n []\n\n /// Avoid rendering the view unless the model has changed.\n /// equal: function to compare the previous and the new model (a tuple of two states)\n /// view: function to render the model using the dispatch\n /// state1: new state to render\n /// state2: new state to render\n /// dispatch: dispatch function\n let lazyView3With (equal:_->_->bool) (view:_->_->_->ReactElement) state1 state2 (dispatch:'msg Dispatch) =\n ofType,_,_>\n { render = fun () -> view state1 state2 dispatch\n equal = equal\n model = (state1,state2) }\n []\n\n /// Avoid rendering the view unless the model has changed.\n /// view: function of model to render the view\n let lazyView (view:'model->ReactElement) =\n lazyViewWith (=) view\n\n /// Avoid rendering the view unless the model has changed.\n /// view: function of two arguments to render the model using the dispatch\n let lazyView2 (view:'model->'msg Dispatch->ReactElement) =\n lazyView2With (=) view\n\n /// Avoid rendering the view unless the model has changed.\n /// view: function of three arguments to render the model using the dispatch\n let lazyView3 (view:_->_->_->ReactElement) =\n lazyView3With (=) view\n\n\n","namespace Elmish.React\n\n[]\nmodule Helpers =\n open Fable.React.Props\n open Fable.Core.JsInterop\n\n /// `Ref` callback that sets the value of an input textbox after DOM element is created.\n /// Can be used instead of `DefaultValue` and `Value` props to override input box value.\n let inline valueOrDefault value =\n Ref <| (fun e -> if e |> isNull |> not && !!e?value <> !!value then e?value <- !!value)\n\n[]\nmodule Program =\n\n module Internal =\n\n open Fable.React\n open Browser\n open Elmish\n\n let withReactBatchedUsing lazyView2With placeholderId (program:Program<_,_,_,_>) =\n let mutable lastRequest = None\n let setState model dispatch =\n match lastRequest with\n | Some r -> window.cancelAnimationFrame r\n | _ -> ()\n\n lastRequest <- Some (window.requestAnimationFrame (fun _ ->\n ReactDom.render(\n lazyView2With (fun x y -> obj.ReferenceEquals(x,y)) (Program.view program) model dispatch,\n document.getElementById placeholderId\n )))\n\n program\n |> Program.withSetState setState\n\n let withReactSynchronousUsing lazyView2With placeholderId (program:Elmish.Program<_,_,_,_>) =\n let setState model dispatch =\n ReactDom.render(\n lazyView2With (fun x y -> obj.ReferenceEquals(x,y)) (Program.view program) model dispatch,\n document.getElementById placeholderId\n )\n\n program\n |> Program.withSetState setState\n\n let withReactHydrateUsing lazyView2With placeholderId (program:Elmish.Program<_,_,_,_>) =\n let setState model dispatch =\n ReactDom.hydrate(\n lazyView2With (fun x y -> obj.ReferenceEquals(x,y)) (Program.view program) model dispatch,\n document.getElementById placeholderId\n )\n\n program\n |> Program.withSetState setState\n\n\n /// Renders React root component inside html element identified by placeholderId.\n /// Uses `requestAnimationFrame` to batch updates to prevent drops in frame rate.\n /// NOTE: This may have unexpected effects in React controlled inputs, see https://github.com/elmish/react/issues/12\n let withReactBatched placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactBatchedUsing lazyView2With placeholderId program\n\n /// Renders React root component inside html element identified by placeholderId.\n /// New renders are triggered immediately after an update.\n let withReactSynchronous placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactSynchronousUsing lazyView2With placeholderId program\n\n []\n let withReact placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactBatchedUsing lazyView2With placeholderId program\n\n []\n let withReactUnoptimized placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactSynchronousUsing lazyView2With placeholderId program\n\n /// Renders React root component inside html element identified by placeholderId using `React.hydrate`.\n let withReactHydrate placeholderId (program:Elmish.Program<_,_,_,_>) =\n Internal.withReactHydrateUsing lazyView2With placeholderId program\n","import { makeRangeStepFunction as makeDecimalRangeStepFunction } from \"./Decimal\";\nimport { makeRangeStepFunction as makeLongRangeStepFunction } from \"./Long\";\nimport { some, value } from \"./Option\";\nimport { compare, equals } from \"./Util\";\nexport class Enumerator {\n constructor(iter) {\n this.iter = iter;\n }\n MoveNext() {\n const cur = this.iter.next();\n this.current = cur.value;\n return !cur.done;\n }\n get Current() {\n return this.current;\n }\n Reset() {\n throw new Error(\"JS iterators cannot be reset\");\n }\n Dispose() {\n return;\n }\n}\nexport function getEnumerator(o) {\n return new Enumerator(o[Symbol.iterator]());\n}\nexport function toIterator(en) {\n return {\n next() {\n return en.MoveNext()\n ? { done: false, value: en.Current }\n : { done: true, value: undefined };\n },\n };\n}\n// export function toIterable(en: IEnumerable): Iterable {\n// return {\n// [Symbol.iterator]() {\n// return toIterator(en.GetEnumerator());\n// },\n// };\n// }\nfunction __failIfNone(res) {\n if (res == null) {\n throw new Error(\"Seq did not contain any matching element\");\n }\n return value(res);\n}\nfunction makeSeq(f) {\n const seq = {\n [Symbol.iterator]: f,\n toString: () => \"seq [\" + Array.from(seq).join(\"; \") + \"]\",\n };\n return seq;\n}\nexport function ofArray(xs) {\n return delay(() => unfold((i) => i != null && i < xs.length ? [xs[i], i + 1] : undefined, 0));\n}\nexport function allPairs(xs, ys) {\n let firstEl = true;\n const ysCache = [];\n return collect((x) => {\n if (firstEl) {\n firstEl = false;\n return map((y) => {\n ysCache.push(y);\n return [x, y];\n }, ys);\n }\n else {\n return ysCache.map((y) => [x, y]);\n // return map(function (i) {\n // return [x, ysCache[i]];\n // }, rangeNumber(0, 1, ysCache.length - 1));\n }\n }, xs);\n}\nexport function append(xs, ys) {\n return delay(() => {\n let firstDone = false;\n const i = xs[Symbol.iterator]();\n let iters = [i, undefined];\n return unfold(() => {\n var _a, _b;\n let cur;\n if (!firstDone) {\n cur = (_a = iters[0]) === null || _a === void 0 ? void 0 : _a.next();\n if (cur != null && !cur.done) {\n return [cur.value, iters];\n }\n else {\n firstDone = true;\n iters = [undefined, ys[Symbol.iterator]()];\n }\n }\n cur = (_b = iters[1]) === null || _b === void 0 ? void 0 : _b.next();\n return cur != null && !cur.done ? [cur.value, iters] : undefined;\n }, iters);\n });\n}\nexport function average(xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count++;\n return averager.Add(acc, x);\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function averageBy(f, xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count++;\n return averager.Add(acc, f(x));\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function concat(xs) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n let output;\n return unfold((innerIter) => {\n let hasFinished = false;\n while (!hasFinished) {\n if (innerIter == null) {\n const cur = iter.next();\n if (!cur.done) {\n innerIter = cur.value[Symbol.iterator]();\n }\n else {\n hasFinished = true;\n }\n }\n else {\n const cur = innerIter.next();\n if (!cur.done) {\n output = cur.value;\n hasFinished = true;\n }\n else {\n innerIter = undefined;\n }\n }\n }\n return innerIter != null ? [output, innerIter] : undefined;\n }, undefined);\n });\n}\nexport function collect(f, xs) {\n return concat(map(f, xs));\n}\nexport function choose(f, xs) {\n return delay(() => unfold((iter) => {\n let cur = iter.next();\n while (!cur.done) {\n const y = f(cur.value);\n if (y != null) {\n return [value(y), iter];\n }\n cur = iter.next();\n }\n return undefined;\n }, xs[Symbol.iterator]()));\n}\nexport function compareWith(f, xs, ys) {\n const nonZero = tryFind((i) => i !== 0, map2(f, xs, ys));\n return nonZero != null ? value(nonZero) : length(xs) - length(ys);\n}\nexport function delay(f) {\n return makeSeq(() => f()[Symbol.iterator]());\n}\nexport function empty() {\n return [];\n}\nexport function singleton(y) {\n return [y];\n}\nexport function enumerateFromFunctions(factory, moveNext, current) {\n return delay(() => unfold((e) => moveNext(e) ? [current(e), e] : undefined, factory()));\n}\nexport function enumerateWhile(cond, xs) {\n return concat(unfold(() => cond() ? [xs, true] : undefined, undefined));\n}\nexport function enumerateThenFinally(xs, finalFn) {\n return delay(() => {\n let iter;\n try {\n iter = xs[Symbol.iterator]();\n }\n catch (err) {\n try {\n return empty();\n }\n finally {\n finalFn();\n }\n }\n return unfold((it) => {\n try {\n const cur = it.next();\n return !cur.done ? [cur.value, it] : undefined;\n }\n catch (err) {\n return undefined;\n }\n finally {\n finalFn();\n }\n }, iter);\n });\n}\nexport function enumerateUsing(disp, work) {\n let isDisposed = false;\n const disposeOnce = () => {\n if (!isDisposed) {\n isDisposed = true;\n disp.Dispose();\n }\n };\n try {\n return enumerateThenFinally(work(disp), disposeOnce);\n }\n catch (err) {\n return void 0;\n }\n finally {\n disposeOnce();\n }\n}\nexport function exactlyOne(xs) {\n const iter = xs[Symbol.iterator]();\n const fst = iter.next();\n if (fst.done) {\n throw new Error(\"Seq was empty\");\n }\n const snd = iter.next();\n if (!snd.done) {\n throw new Error(\"Seq had multiple items\");\n }\n return fst.value;\n}\nexport function except(itemsToExclude, source) {\n const exclusionItems = Array.from(itemsToExclude);\n const testIsNotInExclusionItems = (element) => !exclusionItems.some((excludedItem) => equals(excludedItem, element));\n return filter(testIsNotInExclusionItems, source);\n}\nexport function exists(f, xs) {\n let cur;\n for (const iter = xs[Symbol.iterator]();;) {\n cur = iter.next();\n if (cur.done) {\n break;\n }\n if (f(cur.value)) {\n return true;\n }\n }\n return false;\n}\nexport function exists2(f, xs, ys) {\n let cur1;\n let cur2;\n for (const iter1 = xs[Symbol.iterator](), iter2 = ys[Symbol.iterator]();;) {\n cur1 = iter1.next();\n cur2 = iter2.next();\n if (cur1.done || cur2.done) {\n break;\n }\n if (f(cur1.value, cur2.value)) {\n return true;\n }\n }\n return false;\n}\nexport function forAll(f, xs) {\n return !exists((x) => !f(x), xs);\n}\nexport function forAll2(f, xs, ys) {\n return !exists2((x, y) => !f(x, y), xs, ys);\n}\nexport function contains(i, xs) {\n return exists((x) => equals(x, i), xs);\n}\nexport function filter(f, xs) {\n return delay(() => unfold((iter) => {\n let cur = iter.next();\n while (!cur.done) {\n if (f(cur.value)) {\n return [cur.value, iter];\n }\n cur = iter.next();\n }\n return undefined;\n }, xs[Symbol.iterator]()));\n}\nexport function where(f, xs) {\n return filter(f, xs);\n}\nexport function fold(f, acc, xs) {\n if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {\n return xs.reduce(f, acc);\n }\n else {\n let cur;\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n cur = iter.next();\n if (cur.done) {\n break;\n }\n acc = f(acc, cur.value, i);\n }\n return acc;\n }\n}\nexport function foldBack(f, xs, acc) {\n const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);\n for (let i = arr.length - 1; i >= 0; i--) {\n acc = f(arr[i], acc, i);\n }\n return acc;\n}\nexport function fold2(f, acc, xs, ys) {\n const iter1 = xs[Symbol.iterator]();\n const iter2 = ys[Symbol.iterator]();\n let cur1;\n let cur2;\n for (let i = 0;; i++) {\n cur1 = iter1.next();\n cur2 = iter2.next();\n if (cur1.done || cur2.done) {\n break;\n }\n acc = f(acc, cur1.value, cur2.value, i);\n }\n return acc;\n}\nexport function foldBack2(f, xs, ys, acc) {\n const ar1 = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);\n const ar2 = Array.isArray(ys) || ArrayBuffer.isView(ys) ? ys : Array.from(ys);\n for (let i = ar1.length - 1; i >= 0; i--) {\n acc = f(ar1[i], ar2[i], acc, i);\n }\n return acc;\n}\nexport function tryHead(xs) {\n const iter = xs[Symbol.iterator]();\n const cur = iter.next();\n return cur.done ? undefined : some(cur.value);\n}\nexport function head(xs) {\n return __failIfNone(tryHead(xs));\n}\nexport function initialize(n, f) {\n return delay(() => unfold((i) => i < n ? [f(i), i + 1] : undefined, 0));\n}\nexport function initializeInfinite(f) {\n return delay(() => unfold((i) => [f(i), i + 1], 0));\n}\nexport function tryItem(i, xs) {\n if (i < 0) {\n return undefined;\n }\n if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {\n return i < xs.length ? some(xs[i]) : undefined;\n }\n for (let j = 0, iter = xs[Symbol.iterator]();; j++) {\n const cur = iter.next();\n if (cur.done) {\n break;\n }\n if (j === i) {\n return some(cur.value);\n }\n }\n return undefined;\n}\nexport function item(i, xs) {\n return __failIfNone(tryItem(i, xs));\n}\nexport function iterate(f, xs) {\n fold((_, x) => (f(x), undefined), undefined, xs);\n}\nexport function iterate2(f, xs, ys) {\n fold2((_, x, y) => (f(x, y), undefined), undefined, xs, ys);\n}\nexport function iterateIndexed(f, xs) {\n fold((_, x, i) => (f(i !== null && i !== void 0 ? i : 0, x), undefined), undefined, xs);\n}\nexport function iterateIndexed2(f, xs, ys) {\n fold2((_, x, y, i) => (f(i !== null && i !== void 0 ? i : 0, x, y), undefined), undefined, xs, ys);\n}\nexport function isEmpty(xs) {\n const i = xs[Symbol.iterator]();\n return i.next().done;\n}\nexport function tryLast(xs) {\n return isEmpty(xs) ? undefined : some(reduce((_, x) => x, xs));\n}\nexport function last(xs) {\n return __failIfNone(tryLast(xs));\n}\nexport function length(xs) {\n return Array.isArray(xs) || ArrayBuffer.isView(xs)\n ? xs.length\n : fold((acc, _x) => acc + 1, 0, xs);\n}\nexport function map(f, xs) {\n return delay(() => unfold((iter) => {\n const cur = iter.next();\n return !cur.done ? [f(cur.value), iter] : undefined;\n }, xs[Symbol.iterator]()));\n}\nexport function mapIndexed(f, xs) {\n return delay(() => {\n let i = 0;\n return unfold((iter) => {\n const cur = iter.next();\n return !cur.done ? [f(i++, cur.value), iter] : undefined;\n }, xs[Symbol.iterator]());\n });\n}\nexport function indexed(xs) {\n return mapIndexed((i, x) => [i, x], xs);\n}\nexport function map2(f, xs, ys) {\n return delay(() => {\n const iter1 = xs[Symbol.iterator]();\n const iter2 = ys[Symbol.iterator]();\n return unfold(() => {\n const cur1 = iter1.next();\n const cur2 = iter2.next();\n return !cur1.done && !cur2.done ? [f(cur1.value, cur2.value), undefined] : undefined;\n }, undefined);\n });\n}\nexport function mapIndexed2(f, xs, ys) {\n return delay(() => {\n let i = 0;\n const iter1 = xs[Symbol.iterator]();\n const iter2 = ys[Symbol.iterator]();\n return unfold(() => {\n const cur1 = iter1.next();\n const cur2 = iter2.next();\n return !cur1.done && !cur2.done ? [f(i++, cur1.value, cur2.value), undefined] : undefined;\n }, undefined);\n });\n}\nexport function map3(f, xs, ys, zs) {\n return delay(() => {\n const iter1 = xs[Symbol.iterator]();\n const iter2 = ys[Symbol.iterator]();\n const iter3 = zs[Symbol.iterator]();\n return unfold(() => {\n const cur1 = iter1.next();\n const cur2 = iter2.next();\n const cur3 = iter3.next();\n return !cur1.done && !cur2.done && !cur3.done ? [f(cur1.value, cur2.value, cur3.value), undefined] : undefined;\n }, undefined);\n });\n}\nexport function mapFold(f, acc, xs, transform) {\n const result = [];\n let r;\n let cur;\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n cur = iter.next();\n if (cur.done) {\n break;\n }\n [r, acc] = f(acc, cur.value);\n result.push(r);\n }\n return transform !== void 0 ? [transform(result), acc] : [result, acc];\n}\nexport function mapFoldBack(f, xs, acc, transform) {\n const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);\n const result = [];\n let r;\n for (let i = arr.length - 1; i >= 0; i--) {\n [r, acc] = f(arr[i], acc);\n result.push(r);\n }\n return transform !== void 0 ? [transform(result), acc] : [result, acc];\n}\nexport function max(xs, comparer) {\n const compareFn = comparer != null ? comparer.Compare : compare;\n return reduce((acc, x) => compareFn(acc, x) === 1 ? acc : x, xs);\n}\nexport function maxBy(f, xs, comparer) {\n const compareFn = comparer != null ? comparer.Compare : compare;\n return reduce((acc, x) => compareFn(f(acc), f(x)) === 1 ? acc : x, xs);\n}\nexport function min(xs, comparer) {\n const compareFn = comparer != null ? comparer.Compare : compare;\n return reduce((acc, x) => compareFn(acc, x) === -1 ? acc : x, xs);\n}\nexport function minBy(f, xs, comparer) {\n const compareFn = comparer != null ? comparer.Compare : compare;\n return reduce((acc, x) => compareFn(f(acc), f(x)) === -1 ? acc : x, xs);\n}\nexport function pairwise(xs) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n const cur = iter.next();\n if (cur.done) {\n return empty();\n }\n const hd = cur.value;\n const tl = tail(xs);\n const ys = scan(([_, last], next) => [last, next], [hd, hd], tl);\n return skip(1, ys);\n });\n}\nexport function rangeChar(first, last) {\n return delay(() => unfold((x) => x <= last ? [x, String.fromCharCode(x.charCodeAt(0) + 1)] : undefined, first));\n}\nexport function rangeLong(first, step, last, unsigned) {\n const stepFn = makeLongRangeStepFunction(step, last, unsigned);\n return delay(() => unfold(stepFn, first));\n}\nexport function rangeDecimal(first, step, last) {\n const stepFn = makeDecimalRangeStepFunction(step, last);\n return delay(() => unfold(stepFn, first));\n}\nexport function rangeNumber(first, step, last) {\n if (step === 0) {\n throw new Error(\"Step cannot be 0\");\n }\n return delay(() => unfold((x) => step > 0 && x <= last || step < 0 && x >= last ? [x, x + step] : undefined, first));\n}\nexport function readOnly(xs) {\n return map((x) => x, xs);\n}\nexport function reduce(f, xs) {\n if (Array.isArray(xs) || ArrayBuffer.isView(xs)) {\n return xs.reduce(f);\n }\n const iter = xs[Symbol.iterator]();\n let cur = iter.next();\n if (cur.done) {\n throw new Error(\"Seq was empty\");\n }\n let acc = cur.value;\n while (true) {\n cur = iter.next();\n if (cur.done) {\n break;\n }\n acc = f(acc, cur.value);\n }\n return acc;\n}\nexport function reduceBack(f, xs) {\n const ar = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs : Array.from(xs);\n if (ar.length === 0) {\n throw new Error(\"Seq was empty\");\n }\n let acc = ar[ar.length - 1];\n for (let i = ar.length - 2; i >= 0; i--) {\n acc = f(ar[i], acc, i);\n }\n return acc;\n}\nexport function replicate(n, x) {\n return initialize(n, () => x);\n}\nexport function reverse(xs) {\n const ar = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.slice(0) : Array.from(xs);\n return ofArray(ar.reverse());\n}\nexport function scan(f, seed, xs) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n return unfold((acc) => {\n if (acc == null) {\n return [seed, seed];\n }\n const cur = iter.next();\n if (!cur.done) {\n acc = f(acc, cur.value);\n return [acc, acc];\n }\n return undefined;\n }, undefined);\n });\n}\nexport function scanBack(f, xs, seed) {\n return reverse(scan((acc, x) => f(x, acc), seed, reverse(xs)));\n}\nexport function skip(n, xs) {\n return makeSeq(() => {\n const iter = xs[Symbol.iterator]();\n for (let i = 1; i <= n; i++) {\n if (iter.next().done) {\n throw new Error(\"Seq has not enough elements\");\n }\n }\n return iter;\n });\n}\nexport function skipWhile(f, xs) {\n return delay(() => {\n let hasPassed = false;\n return filter((x) => hasPassed || (hasPassed = !f(x)), xs);\n });\n}\nexport function sortWith(f, xs) {\n const ys = Array.from(xs);\n return ofArray(ys.sort(f));\n}\nexport function sum(xs, adder) {\n return fold((acc, x) => adder.Add(acc, x), adder.GetZero(), xs);\n}\nexport function sumBy(f, xs, adder) {\n return fold((acc, x) => adder.Add(acc, f(x)), adder.GetZero(), xs);\n}\nexport function tail(xs) {\n return skip(1, xs);\n}\nexport function take(n, xs, truncate = false) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n return unfold((i) => {\n if (i < n) {\n const cur = iter.next();\n if (!cur.done) {\n return [cur.value, i + 1];\n }\n if (!truncate) {\n throw new Error(\"Seq has not enough elements\");\n }\n }\n return undefined;\n }, 0);\n });\n}\nexport function truncate(n, xs) {\n return take(n, xs, true);\n}\nexport function takeWhile(f, xs) {\n return delay(() => {\n const iter = xs[Symbol.iterator]();\n return unfold(() => {\n const cur = iter.next();\n if (!cur.done && f(cur.value)) {\n return [cur.value, undefined];\n }\n return undefined;\n }, 0);\n });\n}\nexport function tryFind(f, xs, defaultValue) {\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n const cur = iter.next();\n if (cur.done) {\n break;\n }\n if (f(cur.value, i)) {\n return some(cur.value);\n }\n }\n return defaultValue === void 0 ? undefined : some(defaultValue);\n}\nexport function find(f, xs) {\n return __failIfNone(tryFind(f, xs));\n}\nexport function tryFindBack(f, xs, defaultValue) {\n const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.slice(0) : Array.from(xs);\n return tryFind(f, arr.reverse(), defaultValue);\n}\nexport function findBack(f, xs) {\n return __failIfNone(tryFindBack(f, xs));\n}\nexport function tryFindIndex(f, xs) {\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n const cur = iter.next();\n if (cur.done) {\n break;\n }\n if (f(cur.value, i)) {\n return i;\n }\n }\n return undefined;\n}\nexport function findIndex(f, xs) {\n return __failIfNone(tryFindIndex(f, xs));\n}\nexport function tryFindIndexBack(f, xs) {\n const arr = Array.isArray(xs) || ArrayBuffer.isView(xs) ? xs.slice(0) : Array.from(xs);\n for (let i = arr.length - 1; i >= 0; i--) {\n if (f(arr[i], i)) {\n return i;\n }\n }\n return undefined;\n}\nexport function findIndexBack(f, xs) {\n return __failIfNone(tryFindIndexBack(f, xs));\n}\nexport function tryPick(f, xs) {\n for (let i = 0, iter = xs[Symbol.iterator]();; i++) {\n const cur = iter.next();\n if (cur.done) {\n break;\n }\n const y = f(cur.value, i);\n if (y != null) {\n return y;\n }\n }\n return undefined;\n}\nexport function pick(f, xs) {\n return __failIfNone(tryPick(f, xs));\n}\nexport function unfold(f, fst) {\n return makeSeq(() => {\n // Capture a copy of the first value in the closure\n // so the sequence is restarted every time, see #1230\n let acc = fst;\n const iter = {\n next() {\n const res = f(acc);\n if (res != null) {\n const v = value(res);\n if (v != null) {\n acc = v[1];\n return { done: false, value: v[0] };\n }\n }\n return { done: true, value: undefined };\n },\n };\n return iter;\n });\n}\nexport function zip(xs, ys) {\n return map2((x, y) => [x, y], xs, ys);\n}\nexport function zip3(xs, ys, zs) {\n return map3((x, y, z) => [x, y, z], xs, ys, zs);\n}\nexport function windowed(windowSize, source) {\n if (windowSize <= 0) {\n throw new Error(\"windowSize must be positive\");\n }\n return makeSeq(() => {\n let window = [];\n const iter = source[Symbol.iterator]();\n const iter2 = {\n next() {\n let cur;\n while (window.length < windowSize) {\n if ((cur = iter.next()).done) {\n return { done: true, value: undefined };\n }\n window.push(cur.value);\n }\n const value = window;\n window = window.slice(1);\n return { done: false, value };\n },\n };\n return iter2;\n });\n}\nexport function transpose(source) {\n return makeSeq(() => {\n const iters = Array.from(source, (x) => x[Symbol.iterator]());\n const iter = {\n next() {\n if (iters.length === 0) {\n return { done: true, value: undefined }; // empty sequence\n }\n const results = Array.from(iters, (iter) => iter.next());\n if (results[0].done) {\n if (!results.every((x) => x.done)) {\n throw new Error(\"Sequences have different lengths\");\n }\n return { done: true, value: undefined };\n }\n else {\n if (!results.every((x) => !x.done)) {\n throw new Error(\"Sequences have different lengths\");\n }\n const values = results.map((x) => x.value);\n return { done: false, value: values };\n }\n },\n };\n return iter;\n });\n}\n//# sourceMappingURL=Seq.js.map","\"use strict\";\r\n\r\nexport function Parsimmon(action) {\r\n if (!(this instanceof Parsimmon)) {\r\n return new Parsimmon(action);\r\n }\r\n this._ = action;\r\n}\r\n\r\nvar _ = Parsimmon.prototype;\r\n\r\nexport function times(n, f) {\r\n var i = 0;\r\n for (i; i < n; i++) {\r\n f(i);\r\n }\r\n}\r\n\r\nexport function forEach(f, arr) {\r\n times(arr.length, function(i) {\r\n f(arr[i], i, arr);\r\n });\r\n}\r\n\r\nexport function reduce(f, seed, arr) {\r\n forEach(function(elem, i, arr) {\r\n seed = f(seed, elem, i, arr);\r\n }, arr);\r\n return seed;\r\n}\r\n\r\nexport function map(f, arr) {\r\n return reduce(\r\n function(acc, elem, i, a) {\r\n return acc.concat([f(elem, i, a)]);\r\n },\r\n [],\r\n arr\r\n );\r\n}\r\n\r\nexport function lshiftBuffer(input) {\r\n var asTwoBytes = reduce(\r\n function(a, v, i, b) {\r\n return a.concat(\r\n i === b.length - 1\r\n ? Buffer.from([v, 0]).readUInt16BE(0)\r\n : b.readUInt16BE(i)\r\n );\r\n },\r\n [],\r\n input\r\n );\r\n return Buffer.from(\r\n map(function(x) {\r\n return ((x << 1) & 0xffff) >> 8;\r\n }, asTwoBytes)\r\n );\r\n}\r\n\r\nfunction consumeBitsFromBuffer(n, input) {\r\n var state = { v: 0, buf: input };\r\n times(n, function() {\r\n state = {\r\n v: (state.v << 1) | bitPeekBuffer(state.buf),\r\n buf: lshiftBuffer(state.buf)\r\n };\r\n });\r\n return state;\r\n}\r\n\r\nfunction bitPeekBuffer(input) {\r\n return input[0] >> 7;\r\n}\r\n\r\nexport function sum(numArr) {\r\n return reduce(\r\n function(x, y) {\r\n return x + y;\r\n },\r\n 0,\r\n numArr\r\n );\r\n}\r\n\r\nexport function find(pred, arr) {\r\n return reduce(\r\n function(found, elem) {\r\n return found || (pred(elem) ? elem : found);\r\n },\r\n null,\r\n arr\r\n );\r\n}\r\n\r\nfunction bufferExists() {\r\n return typeof Buffer !== \"undefined\";\r\n}\r\n\r\nfunction ensureBuffer() {\r\n if (!bufferExists()) {\r\n throw new Error(\r\n \"Buffer global does not exist; please consider using https://github.com/feross/buffer if you are running Parsimmon in a browser.\"\r\n );\r\n }\r\n}\r\n\r\nfunction bitSeq(alignments) {\r\n ensureBuffer();\r\n var totalBits = sum(alignments);\r\n if (totalBits % 8 !== 0) {\r\n throw new Error(\r\n \"The bits [\" +\r\n alignments.join(\", \") +\r\n \"] add up to \" +\r\n totalBits +\r\n \" which is not an even number of bytes; the total should be divisible by 8\"\r\n );\r\n }\r\n var bytes = totalBits / 8;\r\n\r\n var tooBigRange = find(function(x) {\r\n return x > 48;\r\n }, alignments);\r\n if (tooBigRange) {\r\n throw new Error(\r\n tooBigRange + \" bit range requested exceeds 48 bit (6 byte) Number max.\"\r\n );\r\n }\r\n\r\n return new Parsimmon(function(input, i) {\r\n var newPos = bytes + i;\r\n if (newPos > input.length) {\r\n return makeFailure(i, bytes.toString() + \" bytes\");\r\n }\r\n return makeSuccess(\r\n newPos,\r\n reduce(\r\n function(acc, bits) {\r\n var state = consumeBitsFromBuffer(bits, acc.buf);\r\n return {\r\n coll: acc.coll.concat(state.v),\r\n buf: state.buf\r\n };\r\n },\r\n { coll: [], buf: input.slice(i, newPos) },\r\n alignments\r\n ).coll\r\n );\r\n });\r\n}\r\n\r\nfunction bitSeqObj(namedAlignments) {\r\n ensureBuffer();\r\n var seenKeys = {};\r\n var totalKeys = 0;\r\n var fullAlignments = map(function(item) {\r\n if (isArray(item)) {\r\n var pair = item;\r\n if (pair.length !== 2) {\r\n throw new Error(\r\n \"[\" +\r\n pair.join(\", \") +\r\n \"] should be length 2, got length \" +\r\n pair.length\r\n );\r\n }\r\n assertString(pair[0]);\r\n assertNumber(pair[1]);\r\n if (Object.prototype.hasOwnProperty.call(seenKeys, pair[0])) {\r\n throw new Error(\"duplicate key in bitSeqObj: \" + pair[0]);\r\n }\r\n seenKeys[pair[0]] = true;\r\n totalKeys++;\r\n return pair;\r\n } else {\r\n assertNumber(item);\r\n return [null, item];\r\n }\r\n }, namedAlignments);\r\n if (totalKeys < 1) {\r\n throw new Error(\r\n \"bitSeqObj expects at least one named pair, got [\" +\r\n namedAlignments.join(\", \") +\r\n \"]\"\r\n );\r\n }\r\n var namesOnly = map(function(pair) {\r\n return pair[0];\r\n }, fullAlignments);\r\n var alignmentsOnly = map(function(pair) {\r\n return pair[1];\r\n }, fullAlignments);\r\n\r\n return bitSeq(alignmentsOnly).map(function(parsed) {\r\n var namedParsed = map(function(name, i) {\r\n return [name, parsed[i]];\r\n }, namesOnly);\r\n\r\n return reduce(\r\n function(obj, kv) {\r\n if (kv[0] !== null) {\r\n obj[kv[0]] = kv[1];\r\n }\r\n return obj;\r\n },\r\n {},\r\n namedParsed\r\n );\r\n });\r\n}\r\n\r\nfunction parseBufferFor(other, length) {\r\n ensureBuffer();\r\n return new Parsimmon(function(input, i) {\r\n if (i + length > input.length) {\r\n return makeFailure(i, length + \" bytes for \" + other);\r\n }\r\n return makeSuccess(i + length, input.slice(i, i + length));\r\n });\r\n}\r\n\r\nfunction parseBuffer(length) {\r\n return parseBufferFor(\"buffer\", length).map(function(unsafe) {\r\n return Buffer.from(unsafe);\r\n });\r\n}\r\n\r\nfunction encodedString(encoding, length) {\r\n return parseBufferFor(\"string\", length).map(function(buff) {\r\n return buff.toString(encoding);\r\n });\r\n}\r\n\r\nfunction isInteger(value) {\r\n return typeof value === \"number\" && Math.floor(value) === value;\r\n}\r\n\r\nfunction assertValidIntegerByteLengthFor(who, length) {\r\n if (!isInteger(length) || length < 0 || length > 6) {\r\n throw new Error(who + \" requires integer length in range [0, 6].\");\r\n }\r\n}\r\n\r\nfunction uintBE(length) {\r\n assertValidIntegerByteLengthFor(\"uintBE\", length);\r\n return parseBufferFor(\"uintBE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readUIntBE(0, length);\r\n });\r\n}\r\n\r\nfunction uintLE(length) {\r\n assertValidIntegerByteLengthFor(\"uintLE\", length);\r\n return parseBufferFor(\"uintLE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readUIntLE(0, length);\r\n });\r\n}\r\n\r\nfunction intBE(length) {\r\n assertValidIntegerByteLengthFor(\"intBE\", length);\r\n return parseBufferFor(\"intBE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readIntBE(0, length);\r\n });\r\n}\r\n\r\nfunction intLE(length) {\r\n assertValidIntegerByteLengthFor(\"intLE\", length);\r\n return parseBufferFor(\"intLE(\" + length + \")\", length).map(function(buff) {\r\n return buff.readIntLE(0, length);\r\n });\r\n}\r\n\r\nfunction floatBE() {\r\n return parseBufferFor(\"floatBE\", 4).map(function(buff) {\r\n return buff.readFloatBE(0);\r\n });\r\n}\r\n\r\nfunction floatLE() {\r\n return parseBufferFor(\"floatLE\", 4).map(function(buff) {\r\n return buff.readFloatLE(0);\r\n });\r\n}\r\n\r\nfunction doubleBE() {\r\n return parseBufferFor(\"doubleBE\", 8).map(function(buff) {\r\n return buff.readDoubleBE(0);\r\n });\r\n}\r\n\r\nfunction doubleLE() {\r\n return parseBufferFor(\"doubleLE\", 8).map(function(buff) {\r\n return buff.readDoubleLE(0);\r\n });\r\n}\r\n\r\nfunction toArray(arrLike) {\r\n return Array.prototype.slice.call(arrLike);\r\n}\r\n// -*- Helpers -*-\r\n\r\nfunction isParser(obj) {\r\n return obj instanceof Parsimmon;\r\n}\r\n\r\nfunction isArray(x) {\r\n return {}.toString.call(x) === \"[object Array]\";\r\n}\r\n\r\nfunction isBuffer(x) {\r\n /* global Buffer */\r\n return bufferExists() && Buffer.isBuffer(x);\r\n}\r\n\r\nexport function makeSuccess(index, value) {\r\n return {\r\n status: true,\r\n index: index,\r\n value: value,\r\n furthest: -1,\r\n expected: []\r\n };\r\n}\r\n\r\nexport function makeFailure(index, expected) {\r\n if (!isArray(expected)) {\r\n expected = [expected];\r\n }\r\n return {\r\n status: false,\r\n index: -1,\r\n value: null,\r\n furthest: index,\r\n expected: expected\r\n };\r\n}\r\n\r\nfunction mergeReplies(result, last) {\r\n if (!last) {\r\n return result;\r\n }\r\n if (result.furthest > last.furthest) {\r\n return result;\r\n }\r\n var expected =\r\n result.furthest === last.furthest\r\n ? union(result.expected, last.expected)\r\n : last.expected;\r\n return {\r\n status: result.status,\r\n index: result.index,\r\n value: result.value,\r\n furthest: last.furthest,\r\n expected: expected\r\n };\r\n}\r\n\r\nfunction makeLineColumnIndex(input, i) {\r\n if (isBuffer(input)) {\r\n return {\r\n offset: i,\r\n line: -1,\r\n column: -1\r\n };\r\n }\r\n var lines = input.slice(0, i).split(\"\\n\");\r\n // Note that unlike the character offset, the line and column offsets are\r\n // 1-based.\r\n var lineWeAreUpTo = lines.length;\r\n var columnWeAreUpTo = lines[lines.length - 1].length + 1;\r\n return {\r\n offset: i,\r\n line: lineWeAreUpTo,\r\n column: columnWeAreUpTo\r\n };\r\n}\r\n\r\n// Returns the sorted set union of two arrays of strings\r\nfunction union(xs, ys) {\r\n var obj = {};\r\n for (var i = 0; i < xs.length; i++) {\r\n obj[xs[i]] = true;\r\n }\r\n for (var j = 0; j < ys.length; j++) {\r\n obj[ys[j]] = true;\r\n }\r\n var keys = [];\r\n for (var k in obj) {\r\n if ({}.hasOwnProperty.call(obj, k)) {\r\n keys.push(k);\r\n }\r\n }\r\n keys.sort();\r\n return keys;\r\n}\r\n\r\nfunction assertParser(p) {\r\n if (!isParser(p)) {\r\n throw new Error(\"not a parser: \" + p);\r\n }\r\n}\r\n\r\nfunction get(input, i) {\r\n if (typeof input === \"string\") {\r\n return input.charAt(i);\r\n }\r\n return input[i];\r\n}\r\n\r\n// TODO[ES5]: Switch to Array.isArray eventually.\r\nfunction assertArray(x) {\r\n if (!isArray(x)) {\r\n throw new Error(\"not an array: \" + x);\r\n }\r\n}\r\n\r\nfunction assertNumber(x) {\r\n if (typeof x !== \"number\") {\r\n throw new Error(\"not a number: \" + x);\r\n }\r\n}\r\n\r\nfunction assertRegexp(x) {\r\n if (!(x instanceof RegExp)) {\r\n throw new Error(\"not a regexp: \" + x);\r\n }\r\n var f = flags(x);\r\n for (var i = 0; i < f.length; i++) {\r\n var c = f.charAt(i);\r\n // Only allow regexp flags [imu] for now, since [g] and [y] specifically\r\n // mess up Parsimmon. If more non-stateful regexp flags are added in the\r\n // future, this will need to be revisited.\r\n if (c !== \"i\" && c !== \"m\" && c !== \"u\") {\r\n throw new Error('unsupported regexp flag \"' + c + '\": ' + x);\r\n }\r\n }\r\n}\r\n\r\nfunction assertFunction(x) {\r\n if (typeof x !== \"function\") {\r\n throw new Error(\"not a function: \" + x);\r\n }\r\n}\r\n\r\nfunction assertString(x) {\r\n if (typeof x !== \"string\") {\r\n throw new Error(\"not a string: \" + x);\r\n }\r\n}\r\n\r\n// -*- Error Formatting -*-\r\n\r\nvar linesBeforeStringError = 2;\r\nvar linesAfterStringError = 3;\r\nvar bytesPerLine = 8;\r\nvar bytesBefore = bytesPerLine * 5;\r\nvar bytesAfter = bytesPerLine * 4;\r\nvar defaultLinePrefix = \" \";\r\n\r\nexport function repeat(string, amount) {\r\n return new Array(amount + 1).join(string);\r\n}\r\n\r\nexport function formatExpected(expected) {\r\n if (expected.length === 1) {\r\n return \"Expected:\\n\\n\" + expected[0];\r\n }\r\n return \"Expected one of the following: \\n\\n\" + expected.join(\", \");\r\n}\r\n\r\nexport function leftPad(str, pad, char) {\r\n var add = pad - str.length;\r\n if (add <= 0) {\r\n return str;\r\n }\r\n return repeat(char, add) + str;\r\n}\r\n\r\nfunction toChunks(arr, chunkSize) {\r\n var length = arr.length;\r\n var chunks = [];\r\n var chunkIndex = 0;\r\n\r\n if (length <= chunkSize) {\r\n return [arr.slice()];\r\n }\r\n\r\n for (var i = 0; i < length; i++) {\r\n if (!chunks[chunkIndex]) {\r\n chunks.push([]);\r\n }\r\n\r\n chunks[chunkIndex].push(arr[i]);\r\n\r\n if ((i + 1) % chunkSize === 0) {\r\n chunkIndex++;\r\n }\r\n }\r\n\r\n return chunks;\r\n}\r\n\r\n// Get a range of indexes including `i`-th element and `before` and `after` amount of elements from `arr`.\r\nexport function rangeFromIndexAndOffsets(i, before, after, length) {\r\n return {\r\n // Guard against the negative upper bound for lines included in the output.\r\n from: i - before > 0 ? i - before : 0,\r\n to: i + after > length ? length : i + after\r\n };\r\n}\r\n\r\nexport function byteRangeToRange(byteRange) {\r\n // Exception for inputs smaller than `bytesPerLine`\r\n if (byteRange.from === 0 && byteRange.to === 1) {\r\n return {\r\n from: byteRange.from,\r\n to: byteRange.to\r\n };\r\n }\r\n\r\n return {\r\n from: byteRange.from / bytesPerLine,\r\n // Round `to`, so we don't get float if the amount of bytes is not divisible by `bytesPerLine`\r\n to: Math.floor(byteRange.to / bytesPerLine)\r\n };\r\n}\r\n\r\nexport function formatGot(input, error) {\r\n var index = error.index;\r\n var i = index.offset;\r\n\r\n var verticalMarkerLength = 1;\r\n var column;\r\n var lineWithErrorIndex;\r\n var lines;\r\n var lineRange;\r\n var lastLineNumberLabelLength;\r\n\r\n if (i === input.length) {\r\n return \"Got the end of the input\";\r\n }\r\n\r\n if (isBuffer(input)) {\r\n var byteLineWithErrorIndex = i - (i % bytesPerLine);\r\n var columnByteIndex = i - byteLineWithErrorIndex;\r\n var byteRange = rangeFromIndexAndOffsets(\r\n byteLineWithErrorIndex,\r\n bytesBefore,\r\n bytesAfter + bytesPerLine,\r\n input.length\r\n );\r\n var bytes = input.slice(byteRange.from, byteRange.to);\r\n var bytesInChunks = toChunks(bytes.toJSON().data, bytesPerLine);\r\n\r\n var byteLines = map(function(byteRow) {\r\n return map(function(byteValue) {\r\n // Prefix byte values with a `0` if they are shorter than 2 characters.\r\n return leftPad(byteValue.toString(16), 2, \"0\");\r\n }, byteRow);\r\n }, bytesInChunks);\r\n\r\n lineRange = byteRangeToRange(byteRange);\r\n lineWithErrorIndex = byteLineWithErrorIndex / bytesPerLine;\r\n column = columnByteIndex * 3;\r\n\r\n // Account for an extra space.\r\n if (columnByteIndex >= 4) {\r\n column += 1;\r\n }\r\n\r\n verticalMarkerLength = 2;\r\n lines = map(function(byteLine) {\r\n return byteLine.length <= 4\r\n ? byteLine.join(\" \")\r\n : byteLine.slice(0, 4).join(\" \") + \" \" + byteLine.slice(4).join(\" \");\r\n }, byteLines);\r\n lastLineNumberLabelLength = (\r\n (lineRange.to > 0 ? lineRange.to - 1 : lineRange.to) * 8\r\n ).toString(16).length;\r\n\r\n if (lastLineNumberLabelLength < 2) {\r\n lastLineNumberLabelLength = 2;\r\n }\r\n } else {\r\n var inputLines = input.split(/\\r\\n|[\\n\\r\\u2028\\u2029]/);\r\n column = index.column - 1;\r\n lineWithErrorIndex = index.line - 1;\r\n lineRange = rangeFromIndexAndOffsets(\r\n lineWithErrorIndex,\r\n linesBeforeStringError,\r\n linesAfterStringError,\r\n inputLines.length\r\n );\r\n\r\n lines = inputLines.slice(lineRange.from, lineRange.to);\r\n lastLineNumberLabelLength = lineRange.to.toString().length;\r\n }\r\n\r\n var lineWithErrorCurrentIndex = lineWithErrorIndex - lineRange.from;\r\n\r\n if (isBuffer(input)) {\r\n lastLineNumberLabelLength = (\r\n (lineRange.to > 0 ? lineRange.to - 1 : lineRange.to) * 8\r\n ).toString(16).length;\r\n\r\n if (lastLineNumberLabelLength < 2) {\r\n lastLineNumberLabelLength = 2;\r\n }\r\n }\r\n\r\n var linesWithLineNumbers = reduce(\r\n function(acc, lineSource, index) {\r\n var isLineWithError = index === lineWithErrorCurrentIndex;\r\n var prefix = isLineWithError ? \"> \" : defaultLinePrefix;\r\n var lineNumberLabel;\r\n\r\n if (isBuffer(input)) {\r\n lineNumberLabel = leftPad(\r\n ((lineRange.from + index) * 8).toString(16),\r\n lastLineNumberLabelLength,\r\n \"0\"\r\n );\r\n } else {\r\n lineNumberLabel = leftPad(\r\n (lineRange.from + index + 1).toString(),\r\n lastLineNumberLabelLength,\r\n \" \"\r\n );\r\n }\r\n\r\n return [].concat(\r\n acc,\r\n [prefix + lineNumberLabel + \" | \" + lineSource],\r\n isLineWithError\r\n ? [\r\n defaultLinePrefix +\r\n repeat(\" \", lastLineNumberLabelLength) +\r\n \" | \" +\r\n leftPad(\"\", column, \" \") +\r\n repeat(\"^\", verticalMarkerLength)\r\n ]\r\n : []\r\n );\r\n },\r\n [],\r\n lines\r\n );\r\n\r\n return linesWithLineNumbers.join(\"\\n\");\r\n}\r\n\r\nexport function formatError(input, error) {\r\n return [\r\n \"\\n\",\r\n \"-- PARSING FAILED \" + repeat(\"-\", 50),\r\n \"\\n\\n\",\r\n formatGot(input, error),\r\n \"\\n\\n\",\r\n formatExpected(error.expected),\r\n \"\\n\"\r\n ].join(\"\");\r\n}\r\n\r\nexport function flags(re) {\r\n var s = \"\" + re;\r\n return s.slice(s.lastIndexOf(\"/\") + 1);\r\n}\r\n\r\nexport function anchoredRegexp(re) {\r\n return RegExp(\"^(?:\" + re.source + \")\", flags(re));\r\n}\r\n\r\n// -*- Combinators -*-\r\n\r\nexport function seq() {\r\n var parsers = [].slice.call(arguments);\r\n var numParsers = parsers.length;\r\n for (var j = 0; j < numParsers; j += 1) {\r\n assertParser(parsers[j]);\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n var accum = new Array(numParsers);\r\n for (var j = 0; j < numParsers; j += 1) {\r\n result = mergeReplies(parsers[j]._(input, i), result);\r\n if (!result.status) {\r\n return result;\r\n }\r\n accum[j] = result.value;\r\n i = result.index;\r\n }\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n });\r\n}\r\n\r\nexport function seqObj() {\r\n var seenKeys = {};\r\n var totalKeys = 0;\r\n var parsers = toArray(arguments);\r\n var numParsers = parsers.length;\r\n for (var j = 0; j < numParsers; j += 1) {\r\n var p = parsers[j];\r\n if (isParser(p)) {\r\n continue;\r\n }\r\n if (isArray(p)) {\r\n var isWellFormed =\r\n p.length === 2 && typeof p[0] === \"string\" && isParser(p[1]);\r\n if (isWellFormed) {\r\n var key = p[0];\r\n if (Object.prototype.hasOwnProperty.call(seenKeys, key)) {\r\n throw new Error(\"seqObj: duplicate key \" + key);\r\n }\r\n seenKeys[key] = true;\r\n totalKeys++;\r\n continue;\r\n }\r\n }\r\n throw new Error(\r\n \"seqObj arguments must be parsers or [string, parser] array pairs.\"\r\n );\r\n }\r\n if (totalKeys === 0) {\r\n throw new Error(\"seqObj expects at least one named parser, found zero\");\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n var accum = {};\r\n for (var j = 0; j < numParsers; j += 1) {\r\n var name;\r\n var parser;\r\n if (isArray(parsers[j])) {\r\n name = parsers[j][0];\r\n parser = parsers[j][1];\r\n } else {\r\n name = null;\r\n parser = parsers[j];\r\n }\r\n result = mergeReplies(parser._(input, i), result);\r\n if (!result.status) {\r\n return result;\r\n }\r\n if (name) {\r\n accum[name] = result.value;\r\n }\r\n i = result.index;\r\n }\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n });\r\n}\r\n\r\nexport function seqMap() {\r\n var args = [].slice.call(arguments);\r\n if (args.length === 0) {\r\n throw new Error(\"seqMap needs at least one argument\");\r\n }\r\n var mapper = args.pop();\r\n assertFunction(mapper);\r\n return seq.apply(null, args).map(function(results) {\r\n return mapper.apply(null, results);\r\n });\r\n}\r\n\r\n// TODO[ES5]: Revisit this with Object.keys and .bind.\r\nexport function createLanguage(parsers) {\r\n var language = {};\r\n for (var key in parsers) {\r\n if ({}.hasOwnProperty.call(parsers, key)) {\r\n (function(key) {\r\n var func = function() {\r\n return parsers[key](language);\r\n };\r\n language[key] = lazy(func);\r\n })(key);\r\n }\r\n }\r\n return language;\r\n}\r\n\r\nexport function alt() {\r\n var parsers = [].slice.call(arguments);\r\n var numParsers = parsers.length;\r\n if (numParsers === 0) {\r\n return fail(\"zero alternates\");\r\n }\r\n for (var j = 0; j < numParsers; j += 1) {\r\n assertParser(parsers[j]);\r\n }\r\n return Parsimmon(function(input, i) {\r\n var result;\r\n for (var j = 0; j < parsers.length; j += 1) {\r\n result = mergeReplies(parsers[j]._(input, i), result);\r\n if (result.status) {\r\n return result;\r\n }\r\n }\r\n return result;\r\n });\r\n}\r\n\r\nexport function sepBy(parser, separator) {\r\n // Argument asserted by sepBy1\r\n return sepBy1(parser, separator).or(succeed([]));\r\n}\r\n\r\nexport function sepBy1(parser, separator) {\r\n assertParser(parser);\r\n assertParser(separator);\r\n var pairs = separator.then(parser).many();\r\n return seqMap(parser, pairs, function(r, rs) {\r\n return [r].concat(rs);\r\n });\r\n}\r\n\r\n// -*- Core Parsing Methods -*-\r\n\r\n_.parse = function(input) {\r\n if (typeof input !== \"string\" && !isBuffer(input)) {\r\n throw new Error(\r\n \".parse must be called with a string or Buffer as its argument\"\r\n );\r\n }\r\n var result = this.skip(eof)._(input, 0);\r\n if (result.status) {\r\n return {\r\n status: true,\r\n value: result.value\r\n };\r\n }\r\n return {\r\n status: false,\r\n index: makeLineColumnIndex(input, result.furthest),\r\n expected: result.expected\r\n };\r\n};\r\n\r\n// -*- Other Methods -*-\r\n\r\n_.tryParse = function(str) {\r\n var result = this.parse(str);\r\n if (result.status) {\r\n return result.value;\r\n } else {\r\n var msg = formatError(str, result);\r\n var err = new Error(msg);\r\n err.type = \"ParsimmonError\";\r\n err.result = result;\r\n throw err;\r\n }\r\n};\r\n\r\n_.or = function(alternative) {\r\n return alt(this, alternative);\r\n};\r\n\r\n_.trim = function(parser) {\r\n return this.wrap(parser, parser);\r\n};\r\n\r\n_.wrap = function(leftParser, rightParser) {\r\n return seqMap(leftParser, this, rightParser, function(left, middle) {\r\n return middle;\r\n });\r\n};\r\n\r\n_.thru = function(wrapper) {\r\n return wrapper(this);\r\n};\r\n\r\n_.then = function(next) {\r\n assertParser(next);\r\n return seq(this, next).map(function(results) {\r\n return results[1];\r\n });\r\n};\r\n\r\n_.many = function() {\r\n var self = this;\r\n\r\n return Parsimmon(function(input, i) {\r\n var accum = [];\r\n var result = undefined;\r\n\r\n for (;;) {\r\n result = mergeReplies(self._(input, i), result);\r\n if (result.status) {\r\n if (i === result.index) {\r\n throw new Error(\r\n \"infinite loop detected in .many() parser --- calling .many() on \" +\r\n \"a parser which can accept zero characters is usually the cause\"\r\n );\r\n }\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n return mergeReplies(makeSuccess(i, accum), result);\r\n }\r\n }\r\n });\r\n};\r\n\r\n_.tieWith = function(separator) {\r\n assertString(separator);\r\n return this.map(function(args) {\r\n assertArray(args);\r\n if (args.length) {\r\n assertString(args[0]);\r\n var s = args[0];\r\n for (var i = 1; i < args.length; i++) {\r\n assertString(args[i]);\r\n s += separator + args[i];\r\n }\r\n return s;\r\n } else {\r\n return \"\";\r\n }\r\n });\r\n};\r\n\r\n_.tie = function() {\r\n return this.tieWith(\"\");\r\n};\r\n\r\n_.times = function(min, max) {\r\n var self = this;\r\n if (arguments.length < 2) {\r\n max = min;\r\n }\r\n assertNumber(min);\r\n assertNumber(max);\r\n return Parsimmon(function(input, i) {\r\n var accum = [];\r\n var result = undefined;\r\n var prevResult = undefined;\r\n for (var times = 0; times < min; times += 1) {\r\n result = self._(input, i);\r\n prevResult = mergeReplies(result, prevResult);\r\n if (result.status) {\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n return prevResult;\r\n }\r\n }\r\n for (; times < max; times += 1) {\r\n result = self._(input, i);\r\n prevResult = mergeReplies(result, prevResult);\r\n if (result.status) {\r\n i = result.index;\r\n accum.push(result.value);\r\n } else {\r\n break;\r\n }\r\n }\r\n return mergeReplies(makeSuccess(i, accum), prevResult);\r\n });\r\n};\r\n\r\n_.result = function(res) {\r\n return this.map(function() {\r\n return res;\r\n });\r\n};\r\n\r\n_.atMost = function(n) {\r\n return this.times(0, n);\r\n};\r\n\r\n_.atLeast = function(n) {\r\n return seqMap(this.times(n), this.many(), function(init, rest) {\r\n return init.concat(rest);\r\n });\r\n};\r\n\r\n_.map = function(fn) {\r\n assertFunction(fn);\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self._(input, i);\r\n if (!result.status) {\r\n return result;\r\n }\r\n return mergeReplies(makeSuccess(result.index, fn(result.value)), result);\r\n });\r\n};\r\n\r\n_.contramap = function(fn) {\r\n assertFunction(fn);\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self.parse(fn(input.slice(i)));\r\n if (!result.status) {\r\n return result;\r\n }\r\n return makeSuccess(i + input.length, result.value);\r\n });\r\n};\r\n\r\n_.promap = function(f, g) {\r\n assertFunction(f);\r\n assertFunction(g);\r\n return this.contramap(f).map(g);\r\n};\r\n\r\n_.skip = function(next) {\r\n return seq(this, next).map(function(results) {\r\n return results[0];\r\n });\r\n};\r\n\r\n_.mark = function() {\r\n return seqMap(index, this, index, function(start, value, end) {\r\n return {\r\n start: start,\r\n value: value,\r\n end: end\r\n };\r\n });\r\n};\r\n\r\n_.node = function(name) {\r\n return seqMap(index, this, index, function(start, value, end) {\r\n return {\r\n name: name,\r\n value: value,\r\n start: start,\r\n end: end\r\n };\r\n });\r\n};\r\n\r\n_.sepBy = function(separator) {\r\n return sepBy(this, separator);\r\n};\r\n\r\n_.sepBy1 = function(separator) {\r\n return sepBy1(this, separator);\r\n};\r\n\r\n_.lookahead = function(x) {\r\n return this.skip(lookahead(x));\r\n};\r\n\r\n_.notFollowedBy = function(x) {\r\n return this.skip(notFollowedBy(x));\r\n};\r\n\r\n_.desc = function(expected) {\r\n if (!isArray(expected)) {\r\n expected = [expected];\r\n }\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var reply = self._(input, i);\r\n if (!reply.status) {\r\n reply.expected = expected;\r\n }\r\n return reply;\r\n });\r\n};\r\n\r\n_.fallback = function(result) {\r\n return this.or(succeed(result));\r\n};\r\n\r\n_.ap = function(other) {\r\n return seqMap(other, this, function(f, x) {\r\n return f(x);\r\n });\r\n};\r\n\r\n_.chain = function(f) {\r\n var self = this;\r\n return Parsimmon(function(input, i) {\r\n var result = self._(input, i);\r\n if (!result.status) {\r\n return result;\r\n }\r\n var nextParser = f(result.value);\r\n return mergeReplies(nextParser._(input, result.index), result);\r\n });\r\n};\r\n\r\n// -*- Constructors -*-\r\n\r\nexport function string(str) {\r\n assertString(str);\r\n var expected = \"'\" + str + \"'\";\r\n return Parsimmon(function(input, i) {\r\n var j = i + str.length;\r\n var head = input.slice(i, j);\r\n if (head === str) {\r\n return makeSuccess(j, head);\r\n } else {\r\n return makeFailure(i, expected);\r\n }\r\n });\r\n}\r\n\r\nexport function byte(b) {\r\n ensureBuffer();\r\n assertNumber(b);\r\n if (b > 0xff) {\r\n throw new Error(\r\n \"Value specified to byte constructor (\" +\r\n b +\r\n \"=0x\" +\r\n b.toString(16) +\r\n \") is larger in value than a single byte.\"\r\n );\r\n }\r\n var expected = (b > 0xf ? \"0x\" : \"0x0\") + b.toString(16);\r\n return Parsimmon(function(input, i) {\r\n var head = get(input, i);\r\n if (head === b) {\r\n return makeSuccess(i + 1, head);\r\n } else {\r\n return makeFailure(i, expected);\r\n }\r\n });\r\n}\r\n\r\nexport function regexp(re, group) {\r\n assertRegexp(re);\r\n if (arguments.length >= 2) {\r\n assertNumber(group);\r\n } else {\r\n group = 0;\r\n }\r\n var anchored = anchoredRegexp(re);\r\n var expected = \"\" + re;\r\n return Parsimmon(function(input, i) {\r\n var match = anchored.exec(input.slice(i));\r\n if (match) {\r\n if (0 <= group && group <= match.length) {\r\n var fullMatch = match[0];\r\n var groupMatch = match[group];\r\n return makeSuccess(i + fullMatch.length, groupMatch);\r\n }\r\n var message =\r\n \"valid match group (0 to \" + match.length + \") in \" + expected;\r\n return makeFailure(i, message);\r\n }\r\n return makeFailure(i, expected);\r\n });\r\n}\r\n\r\nexport function succeed(value) {\r\n return Parsimmon(function(input, i) {\r\n return makeSuccess(i, value);\r\n });\r\n}\r\n\r\nexport function fail(expected) {\r\n return Parsimmon(function(input, i) {\r\n return makeFailure(i, expected);\r\n });\r\n}\r\n\r\nexport function lookahead(x) {\r\n if (isParser(x)) {\r\n return Parsimmon(function(input, i) {\r\n var result = x._(input, i);\r\n result.index = i;\r\n result.value = \"\";\r\n return result;\r\n });\r\n } else if (typeof x === \"string\") {\r\n return lookahead(string(x));\r\n } else if (x instanceof RegExp) {\r\n return lookahead(regexp(x));\r\n }\r\n throw new Error(\"not a string, regexp, or parser: \" + x);\r\n}\r\n\r\nexport function notFollowedBy(parser) {\r\n assertParser(parser);\r\n return Parsimmon(function(input, i) {\r\n var result = parser._(input, i);\r\n var text = input.slice(i, result.index);\r\n return result.status\r\n ? makeFailure(i, 'not \"' + text + '\"')\r\n : makeSuccess(i, null);\r\n });\r\n}\r\n\r\nexport function test(predicate) {\r\n assertFunction(predicate);\r\n return Parsimmon(function(input, i) {\r\n var char = get(input, i);\r\n if (i < input.length && predicate(char)) {\r\n return makeSuccess(i + 1, char);\r\n } else {\r\n return makeFailure(i, \"a character/byte matching \" + predicate);\r\n }\r\n });\r\n}\r\n\r\nexport function oneOf(str) {\r\n var expected = str.split(\"\");\r\n for (var idx = 0; idx < expected.length; idx++) {\r\n expected[idx] = \"'\" + expected[idx] + \"'\";\r\n }\r\n return test(function(ch) {\r\n return str.indexOf(ch) >= 0;\r\n }).desc(expected);\r\n}\r\n\r\nexport function noneOf(str) {\r\n return test(function(ch) {\r\n return str.indexOf(ch) < 0;\r\n }).desc(\"none of '\" + str + \"'\");\r\n}\r\n\r\nexport function custom(parsingFunction) {\r\n return Parsimmon(parsingFunction(makeSuccess, makeFailure));\r\n}\r\n\r\n// TODO[ES5]: Improve error message using JSON.stringify eventually.\r\nexport function range(begin, end) {\r\n return test(function(ch) {\r\n return begin <= ch && ch <= end;\r\n }).desc(begin + \"-\" + end);\r\n}\r\n\r\nexport function takeWhile(predicate) {\r\n assertFunction(predicate);\r\n\r\n return Parsimmon(function(input, i) {\r\n var j = i;\r\n while (j < input.length && predicate(get(input, j))) {\r\n j++;\r\n }\r\n return makeSuccess(j, input.slice(i, j));\r\n });\r\n}\r\n\r\nexport function lazy(desc, f) {\r\n if (arguments.length < 2) {\r\n f = desc;\r\n desc = undefined;\r\n }\r\n\r\n var parser = Parsimmon(function(input, i) {\r\n parser._ = f()._;\r\n return parser._(input, i);\r\n });\r\n\r\n if (desc) {\r\n return parser.desc(desc);\r\n } else {\r\n return parser;\r\n }\r\n}\r\n\r\n// -*- Fantasy Land Extras -*-\r\n\r\nfunction empty() {\r\n return fail(\"fantasy-land/empty\");\r\n}\r\n\r\n_.concat = _.or;\r\n_.empty = empty;\r\n_.of = succeed;\r\n_[\"fantasy-land/ap\"] = _.ap;\r\n_[\"fantasy-land/chain\"] = _.chain;\r\n_[\"fantasy-land/concat\"] = _.concat;\r\n_[\"fantasy-land/empty\"] = _.empty;\r\n_[\"fantasy-land/of\"] = _.of;\r\n_[\"fantasy-land/map\"] = _.map;\r\n\r\n// -*- Base Parsers -*-\r\n\r\nexport const index = Parsimmon(function(input, i) {\r\n return makeSuccess(i, makeLineColumnIndex(input, i));\r\n});\r\n\r\nexport const any = Parsimmon(function(input, i) {\r\n if (i >= input.length) {\r\n return makeFailure(i, \"any character/byte\");\r\n }\r\n return makeSuccess(i + 1, get(input, i));\r\n});\r\n\r\nexport const all = Parsimmon(function(input, i) {\r\n return makeSuccess(input.length, input.slice(i));\r\n});\r\n\r\nexport const eof = Parsimmon(function(input, i) {\r\n if (i < input.length) {\r\n return makeFailure(i, \"EOF\");\r\n }\r\n return makeSuccess(i, null);\r\n});\r\n\r\nexport const digit = regexp(/[0-9]/).desc(\"a digit\");\r\nexport const digits = regexp(/[0-9]*/).desc(\"optional digits\");\r\nexport const letter = regexp(/[a-z]/i).desc(\"a letter\");\r\nexport const letters = regexp(/[a-z]*/i).desc(\"optional letters\");\r\nexport const optWhitespace = regexp(/\\s*/).desc(\"optional whitespace\");\r\nexport const whitespace = regexp(/\\s+/).desc(\"whitespace\");\r\nexport const cr = string(\"\\r\");\r\nexport const lf = string(\"\\n\");\r\nexport const crlf = string(\"\\r\\n\");\r\nexport const newline = alt(crlf, lf, cr).desc(\"newline\");\r\nexport const end = alt(newline, eof);","// tslint:disable: space-before-function-paren\nimport { combineHashCodes, compare, compareArrays, equalArrays, equals, identityHash, numberHash, structuralHash } from \"./Util\";\nfunction sameType(x, y) {\n return y != null && Object.getPrototypeOf(x).constructor === Object.getPrototypeOf(y).constructor;\n}\n// Taken from Babel helpers\nfunction inherits(subClass, superClass) {\n // if (typeof superClass !== \"function\" && superClass !== null) {\n // throw new TypeError(\n // \"Super expression must either be null or a function, not \" +\n // typeof superClass\n // );\n // }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n });\n // if (superClass)\n // Object.setPrototypeOf\n // ? Object.setPrototypeOf(subClass, superClass)\n // : (subClass.__proto__ = superClass);\n}\nexport function declare(cons, superClass) {\n inherits(cons, superClass || SystemObject);\n return cons;\n}\nexport class SystemObject {\n toString() {\n return \"{\" + Object.entries(this).map(([k, v]) => k + \" = \" + String(v)).join(\";\\n \") + \"}\";\n }\n GetHashCode(x) {\n return identityHash(x !== null && x !== void 0 ? x : this);\n }\n Equals(x, y) {\n return x === (y !== null && y !== void 0 ? y : this);\n }\n}\nfunction compareList(self, other) {\n if (self === other) {\n return 0;\n }\n else {\n if (other == null) {\n return -1;\n }\n while (self.tail != null) {\n if (other.tail == null) {\n return 1;\n }\n const res = compare(self.head, other.head);\n if (res !== 0) {\n return res;\n }\n self = self.tail;\n other = other.tail;\n }\n return other.tail == null ? 0 : -1;\n }\n}\nexport class List {\n constructor(head, tail) {\n this.head = head;\n this.tail = tail;\n }\n toString() {\n return \"[\" + Array.from(this).join(\"; \") + \"]\";\n }\n toJSON() {\n return Array.from(this);\n }\n [Symbol.iterator]() {\n let cur = this;\n return {\n next: () => {\n const value = cur === null || cur === void 0 ? void 0 : cur.head;\n const done = (cur === null || cur === void 0 ? void 0 : cur.tail) == null;\n cur = cur === null || cur === void 0 ? void 0 : cur.tail;\n return { done, value };\n },\n };\n }\n GetHashCode() {\n const hashes = Array.from(this).map(structuralHash);\n return combineHashCodes(hashes);\n }\n Equals(other) {\n return compareList(this, other) === 0;\n }\n CompareTo(other) {\n return compareList(this, other);\n }\n}\nexport class Union extends SystemObject {\n constructor(tag, name, ...fields) {\n super();\n this.tag = tag | 0;\n this.name = name;\n this.fields = fields;\n }\n toString() {\n const len = this.fields.length;\n if (len === 0) {\n return this.name;\n }\n else if (len === 1) {\n return this.name + \" \" + String(this.fields[0]);\n }\n else {\n return this.name + \" (\" + this.fields.map((x) => String(x)).join(\",\") + \")\";\n }\n }\n toJSON() {\n return this.fields.length === 0\n ? this.name\n : [this.name].concat(this.fields);\n }\n GetHashCode() {\n const hashes = this.fields.map((x) => structuralHash(x));\n hashes.splice(0, 0, numberHash(this.tag));\n return combineHashCodes(hashes);\n }\n Equals(other) {\n return this === other\n || (sameType(this, other)\n && this.tag === other.tag\n && equalArrays(this.fields, other.fields));\n }\n CompareTo(other) {\n if (this === other) {\n return 0;\n }\n else if (!sameType(this, other)) {\n return -1;\n }\n else if (this.tag === other.tag) {\n return compareArrays(this.fields, other.fields);\n }\n else {\n return this.tag < other.tag ? -1 : 1;\n }\n }\n}\nfunction recordToJson(record, getFieldNames) {\n const o = {};\n const keys = getFieldNames == null ? Object.keys(record) : getFieldNames(record);\n for (let i = 0; i < keys.length; i++) {\n o[keys[i]] = record[keys[i]];\n }\n return o;\n}\nfunction recordEquals(self, other, getFieldNames) {\n if (self === other) {\n return true;\n }\n else if (!sameType(self, other)) {\n return false;\n }\n else {\n const thisNames = getFieldNames == null ? Object.keys(self) : getFieldNames(self);\n for (let i = 0; i < thisNames.length; i++) {\n if (!equals(self[thisNames[i]], other[thisNames[i]])) {\n return false;\n }\n }\n return true;\n }\n}\nfunction recordCompare(self, other, getFieldNames) {\n if (self === other) {\n return 0;\n }\n else if (!sameType(self, other)) {\n return -1;\n }\n else {\n const thisNames = getFieldNames == null ? Object.keys(self) : getFieldNames(self);\n for (let i = 0; i < thisNames.length; i++) {\n const result = compare(self[thisNames[i]], other[thisNames[i]]);\n if (result !== 0) {\n return result;\n }\n }\n return 0;\n }\n}\nexport class Record extends SystemObject {\n toString() {\n return \"{\" + Object.entries(this).map(([k, v]) => k + \" = \" + String(v)).join(\";\\n \") + \"}\";\n }\n toJSON() {\n return recordToJson(this);\n }\n GetHashCode() {\n const hashes = Object.values(this).map((v) => structuralHash(v));\n return combineHashCodes(hashes);\n }\n Equals(other) {\n return recordEquals(this, other);\n }\n CompareTo(other) {\n return recordCompare(this, other);\n }\n}\nexport function anonRecord(o) {\n return Object.assign(Object.create(Record.prototype), o);\n}\nexport class FSharpRef extends Record {\n constructor(contents) {\n super();\n this.contents = contents;\n }\n}\nexport const Exception = declare(function Exception(message) {\n this.stack = Error().stack;\n this.message = message;\n}, SystemObject);\nexport function isException(x) {\n return x instanceof Error || x instanceof Exception;\n}\nfunction getFSharpExceptionFieldNames(self) {\n return Object.keys(self).filter((k) => k !== \"message\" && k !== \"stack\");\n}\nexport class FSharpException extends Exception {\n toString() {\n var _a;\n // const fieldNames = getFSharpExceptionFieldNames(this);\n const fields = Object.entries(this).filter(([k, _]) => k !== \"message\" && k !== \"stack\");\n const len = fields.length;\n if (len === 0) {\n return (_a = this.message) !== null && _a !== void 0 ? _a : \"\";\n }\n else if (len === 1) {\n return this.message + \" \" + String(fields[1]);\n }\n else {\n return this.message + \" (\" + fields.map(([_, v]) => String(v)).join(\",\") + \")\";\n }\n }\n toJSON() {\n return recordToJson(this, getFSharpExceptionFieldNames);\n }\n GetHashCode() {\n const fields = Object.entries(this).filter(([k, _]) => k !== \"message\" && k !== \"stack\");\n const hashes = fields.map(([_, v]) => structuralHash(v));\n return combineHashCodes(hashes);\n }\n Equals(other) {\n return recordEquals(this, other, getFSharpExceptionFieldNames);\n }\n CompareTo(other) {\n return recordCompare(this, other, getFSharpExceptionFieldNames);\n }\n}\nexport class MatchFailureException extends FSharpException {\n constructor(arg1, arg2, arg3) {\n super();\n this.arg1 = arg1;\n this.arg2 = arg2 | 0;\n this.arg3 = arg3 | 0;\n this.message = \"The match cases were incomplete\";\n }\n}\nexport const Attribute = declare(function Attribute() { return; }, SystemObject);\n//# sourceMappingURL=Types.js.map","import { fromBits, getHighBits, getHighBitsUnsigned, getLowBits, getLowBitsUnsigned } from \"./Long\";\nconst littleEndian = true;\nexport function isLittleEndian() {\n return littleEndian;\n}\nexport function getBytesBoolean(value) {\n const bytes = new Uint8Array(1);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint8(0, value ? 1 : 0);\n return bytes;\n}\nexport function getBytesChar(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint16(0, value.charCodeAt(0), littleEndian);\n return bytes;\n}\nexport function getBytesInt16(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt16(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesInt32(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesInt64(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setInt32(littleEndian ? 0 : 4, getLowBits(value), littleEndian);\n view.setInt32(littleEndian ? 4 : 0, getHighBits(value), littleEndian);\n return bytes;\n}\nexport function getBytesUInt16(value) {\n const bytes = new Uint8Array(2);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint16(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt32(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesUInt64(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setUint32(littleEndian ? 0 : 4, getLowBitsUnsigned(value), littleEndian);\n view.setUint32(littleEndian ? 4 : 0, getHighBitsUnsigned(value), littleEndian);\n return bytes;\n}\nexport function getBytesSingle(value) {\n const bytes = new Uint8Array(4);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setFloat32(0, value, littleEndian);\n return bytes;\n}\nexport function getBytesDouble(value) {\n const bytes = new Uint8Array(8);\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n view.setFloat64(0, value, littleEndian);\n return bytes;\n}\nexport function int64BitsToDouble(value) {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n view.setInt32(littleEndian ? 0 : 4, getLowBits(value), littleEndian);\n view.setInt32(littleEndian ? 4 : 0, getHighBits(value), littleEndian);\n return view.getFloat64(0, littleEndian);\n}\nexport function doubleToInt64Bits(value) {\n const buffer = new ArrayBuffer(8);\n const view = new DataView(buffer);\n view.setFloat64(0, value, littleEndian);\n const lowBits = view.getInt32(littleEndian ? 0 : 4, littleEndian);\n const highBits = view.getInt32(littleEndian ? 4 : 0, littleEndian);\n return fromBits(lowBits, highBits, false);\n}\nexport function toBoolean(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint8(offset) === 1 ? true : false;\n}\nexport function toChar(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n const code = view.getUint16(offset, littleEndian);\n return String.fromCharCode(code);\n}\nexport function toInt16(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getInt16(offset, littleEndian);\n}\nexport function toInt32(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getInt32(offset, littleEndian);\n}\nexport function toInt64(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n const lowBits = view.getInt32(offset + (littleEndian ? 0 : 4), littleEndian);\n const highBits = view.getInt32(offset + (littleEndian ? 4 : 0), littleEndian);\n return fromBits(lowBits, highBits, false);\n}\nexport function toUInt16(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint16(offset, littleEndian);\n}\nexport function toUInt32(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getUint32(offset, littleEndian);\n}\nexport function toUInt64(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n const lowBits = view.getUint32(offset + (littleEndian ? 0 : 4), littleEndian);\n const highBits = view.getUint32(offset + (littleEndian ? 4 : 0), littleEndian);\n return fromBits(lowBits, highBits, true);\n}\nexport function toSingle(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, littleEndian);\n}\nexport function toDouble(bytes, offset) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n const view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, littleEndian);\n}\nexport function toString(bytes, offset, count) {\n const array = ArrayBuffer.isView(bytes) ? bytes : Uint8Array.from(bytes);\n let buffer = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);\n if (offset != null && count != null) {\n buffer = buffer.subarray(offset, offset + count);\n }\n else if (offset != null) {\n buffer = buffer.subarray(offset);\n }\n return Array.from(buffer).map((b) => (\"0\" + b.toString(16)).slice(-2)).join(\"-\");\n}\n//# sourceMappingURL=BitConverter.js.map","import { defaultArg, value as value$$1, some } from \"./Option.js\";\nimport { List } from \"./Types.js\";\nimport { transpose as transpose$$1, pairwise as pairwise$$1, collect as collect$$1, scanBack as scanBack$$1, scan as scan$$1, foldBack2 as foldBack2$$1, fold2 as fold2$$1, fold as fold$$1, map as map$$1 } from \"./Seq.js\";\nimport { getItemFromDict, addToDict, tryGetValue, addToSet, count } from \"./Util.js\";\nimport { ofList } from \"./Array.js\";\nimport { splitInto as splitInto$$1, chunkBySize as chunkBySize$$1, permute as permute$$1, findIndexBack as findIndexBack$$1, tryFindIndexBack as tryFindIndexBack$$1 } from \"./Array\";\nimport { createMutable } from \"./Set.js\";\nimport { createMutable as createMutable$$1 } from \"./Map.js\";\nexport function head(_arg1) {\n if (_arg1.tail != null) {\n return _arg1.head;\n } else {\n throw new Error(\"List was empty\");\n }\n}\nexport function tryHead(_arg1$$1) {\n if (_arg1$$1.tail != null) {\n return some(_arg1$$1.head);\n } else {\n return undefined;\n }\n}\nexport function tail(_arg1$$2) {\n if (_arg1$$2.tail != null) {\n return _arg1$$2.tail;\n } else {\n throw new Error(\"List was empty\");\n }\n}\nexport function last($_arg1$$3$$5) {\n last: while (true) {\n const _arg1$$3 = $_arg1$$3$$5;\n\n if (_arg1$$3.tail != null) {\n if (_arg1$$3.tail.tail == null) {\n return _arg1$$3.head;\n } else {\n $_arg1$$3$$5 = _arg1$$3.tail;\n continue last;\n }\n } else {\n throw new Error(\"List was empty\");\n }\n\n break;\n }\n}\nexport function tryLast($_arg1$$4$$6) {\n tryLast: while (true) {\n const _arg1$$4 = $_arg1$$4$$6;\n\n if (_arg1$$4.tail != null) {\n if (_arg1$$4.tail.tail == null) {\n return some(_arg1$$4.head);\n } else {\n $_arg1$$4$$6 = _arg1$$4.tail;\n continue tryLast;\n }\n } else {\n return undefined;\n }\n\n break;\n }\n}\nexport function compareWith(comparer, xs$$3, ys) {\n if (xs$$3 === ys) {\n return 0;\n } else {\n const loop = function loop($xs$$4$$10, $ys$$1$$11) {\n loop: while (true) {\n const xs$$4 = $xs$$4$$10,\n ys$$1 = $ys$$1$$11;\n\n if (xs$$4.tail != null) {\n if (ys$$1.tail != null) {\n const matchValue$$1 = comparer(xs$$4.head, ys$$1.head) | 0;\n\n if (matchValue$$1 === 0) {\n $xs$$4$$10 = xs$$4.tail;\n $ys$$1$$11 = ys$$1.tail;\n continue loop;\n } else {\n return matchValue$$1 | 0;\n }\n } else {\n return 1;\n }\n } else if (ys$$1.tail == null) {\n return 0;\n } else {\n return -1 | 0;\n }\n\n break;\n }\n };\n\n return loop(xs$$3, ys) | 0;\n }\n}\nexport function foldIndexedAux($f$$12, $i$$13, $acc$$14, $_arg1$$5$$15) {\n foldIndexedAux: while (true) {\n const f = $f$$12,\n i = $i$$13,\n acc = $acc$$14,\n _arg1$$5 = $_arg1$$5$$15;\n\n if (_arg1$$5.tail != null) {\n $f$$12 = f;\n $i$$13 = i + 1;\n $acc$$14 = f(i, acc, _arg1$$5.head);\n $_arg1$$5$$15 = _arg1$$5.tail;\n continue foldIndexedAux;\n } else {\n return acc;\n }\n\n break;\n }\n}\nexport function foldIndexed(f$$1, state, xs$$7) {\n return foldIndexedAux(f$$1, 0, state, xs$$7);\n}\nexport function fold($f$$2$$19, $state$$1$$20, $xs$$8$$21) {\n fold: while (true) {\n const f$$2 = $f$$2$$19,\n state$$1 = $state$$1$$20,\n xs$$8 = $xs$$8$$21;\n\n if (xs$$8.tail != null) {\n $f$$2$$19 = f$$2;\n $state$$1$$20 = f$$2(state$$1, xs$$8.head);\n $xs$$8$$21 = xs$$8.tail;\n continue fold;\n } else {\n return state$$1;\n }\n\n break;\n }\n}\nexport function reverse(xs$$9) {\n return fold(function (acc$$1, x$$6) {\n return new List(x$$6, acc$$1);\n }, new List(), xs$$9);\n}\nexport function foldBack(f$$3, xs$$10, state$$2) {\n return fold(function (acc$$2, x$$7) {\n return f$$3(x$$7, acc$$2);\n }, state$$2, reverse(xs$$10));\n}\nexport function toSeq(xs$$11) {\n return map$$1(function (x$$8) {\n return x$$8;\n }, xs$$11);\n}\nexport function ofSeq(xs$$12) {\n const xs$$13 = fold$$1(function (acc$$3, x$$9) {\n return new List(x$$9, acc$$3);\n }, new List(), xs$$12);\n return reverse(xs$$13);\n}\nexport function concat(lists) {\n const xs$$15 = fold$$1(function (state$$3, xs$$14) {\n return fold(function f$$4(acc$$4, x$$10) {\n return new List(x$$10, acc$$4);\n }, state$$3, xs$$14);\n }, new List(), lists);\n return reverse(xs$$15);\n}\nexport function foldIndexed2Aux($f$$5$$31, $i$$1$$32, $acc$$5$$33, $bs$$34, $cs$$35) {\n foldIndexed2Aux: while (true) {\n const f$$5 = $f$$5$$31,\n i$$1 = $i$$1$$32,\n acc$$5 = $acc$$5$$33,\n bs = $bs$$34,\n cs = $cs$$35;\n var $target$$36, x$$11, xs$$16, y$$1, ys$$3;\n\n if (bs.tail != null) {\n if (cs.tail != null) {\n $target$$36 = 1;\n x$$11 = bs.head;\n xs$$16 = bs.tail;\n y$$1 = cs.head;\n ys$$3 = cs.tail;\n } else {\n $target$$36 = 2;\n }\n } else if (cs.tail == null) {\n $target$$36 = 0;\n } else {\n $target$$36 = 2;\n }\n\n switch ($target$$36) {\n case 0:\n {\n return acc$$5;\n }\n\n case 1:\n {\n $f$$5$$31 = f$$5;\n $i$$1$$32 = i$$1 + 1;\n $acc$$5$$33 = f$$5(i$$1, acc$$5, x$$11, y$$1);\n $bs$$34 = xs$$16;\n $cs$$35 = ys$$3;\n continue foldIndexed2Aux;\n }\n\n case 2:\n {\n throw new Error(\"Lists had different lengths\");\n }\n }\n\n break;\n }\n}\nexport function foldIndexed2(f$$6, state$$4, xs$$17, ys$$4) {\n return foldIndexed2Aux(f$$6, 0, state$$4, xs$$17, ys$$4);\n}\nexport function fold2(f$$7, state$$5, xs$$18, ys$$5) {\n return fold2$$1(f$$7, state$$5, xs$$18, ys$$5);\n}\nexport function foldBack2(f$$8, xs$$19, ys$$6, state$$6) {\n return foldBack2$$1(f$$8, xs$$19, ys$$6, state$$6);\n}\nexport function unfold(f$$9, state$$7) {\n const unfoldInner = function unfoldInner($acc$$6$$51, $state$$8$$52) {\n unfoldInner: while (true) {\n const acc$$6 = $acc$$6$$51,\n state$$8 = $state$$8$$52;\n const matchValue$$3 = f$$9(state$$8);\n\n if (matchValue$$3 != null) {\n const x$$12 = matchValue$$3[0];\n const state$$9 = matchValue$$3[1];\n $acc$$6$$51 = new List(x$$12, acc$$6);\n $state$$8$$52 = state$$9;\n continue unfoldInner;\n } else {\n return reverse(acc$$6);\n }\n\n break;\n }\n };\n\n return unfoldInner(new List(), state$$7);\n}\nexport function foldIndexed3Aux($f$$10$$53, $i$$2$$54, $acc$$7$$55, $bs$$1$$56, $cs$$1$$57, $ds$$58) {\n foldIndexed3Aux: while (true) {\n const f$$10 = $f$$10$$53,\n i$$2 = $i$$2$$54,\n acc$$7 = $acc$$7$$55,\n bs$$1 = $bs$$1$$56,\n cs$$1 = $cs$$1$$57,\n ds = $ds$$58;\n var $target$$59, x$$13, xs$$20, y$$2, ys$$7, z, zs;\n\n if (bs$$1.tail != null) {\n if (cs$$1.tail != null) {\n if (ds.tail != null) {\n $target$$59 = 1;\n x$$13 = bs$$1.head;\n xs$$20 = bs$$1.tail;\n y$$2 = cs$$1.head;\n ys$$7 = cs$$1.tail;\n z = ds.head;\n zs = ds.tail;\n } else {\n $target$$59 = 2;\n }\n } else {\n $target$$59 = 2;\n }\n } else if (cs$$1.tail == null) {\n if (ds.tail == null) {\n $target$$59 = 0;\n } else {\n $target$$59 = 2;\n }\n } else {\n $target$$59 = 2;\n }\n\n switch ($target$$59) {\n case 0:\n {\n return acc$$7;\n }\n\n case 1:\n {\n $f$$10$$53 = f$$10;\n $i$$2$$54 = i$$2 + 1;\n $acc$$7$$55 = f$$10(i$$2, acc$$7, x$$13, y$$2, z);\n $bs$$1$$56 = xs$$20;\n $cs$$1$$57 = ys$$7;\n $ds$$58 = zs;\n continue foldIndexed3Aux;\n }\n\n case 2:\n {\n throw new Error(\"Lists had different lengths\");\n }\n }\n\n break;\n }\n}\nexport function foldIndexed3(f$$11, seed, xs$$21, ys$$8, zs$$1) {\n return foldIndexed3Aux(f$$11, 0, seed, xs$$21, ys$$8, zs$$1);\n}\nexport function fold3(f$$12, state$$10, xs$$22, ys$$9, zs$$2) {\n return foldIndexed3(function (_arg1$$6, acc$$8, x$$14, y$$3, z$$1) {\n return f$$12(acc$$8, x$$14, y$$3, z$$1);\n }, state$$10, xs$$22, ys$$9, zs$$2);\n}\nexport function scan(f$$13, state$$11, xs$$23) {\n const xs$$24 = scan$$1(f$$13, state$$11, xs$$23);\n return ofSeq(xs$$24);\n}\nexport function scanBack(f$$14, xs$$25, state$$12) {\n const xs$$26 = scanBack$$1(f$$14, xs$$25, state$$12);\n return ofSeq(xs$$26);\n}\nexport function length(xs$$27) {\n return fold(function (acc$$9, _arg1$$7) {\n return acc$$9 + 1;\n }, 0, xs$$27);\n}\nexport function append(xs$$28, ys$$10) {\n return fold(function (acc$$10, x$$15) {\n return new List(x$$15, acc$$10);\n }, ys$$10, reverse(xs$$28));\n}\nexport function collect(f$$15, xs$$29) {\n const xs$$30 = collect$$1(f$$15, xs$$29);\n return ofSeq(xs$$30);\n}\nexport function map(f$$16, xs$$31) {\n const xs$$32 = fold(function (acc$$11, x$$16) {\n return new List(f$$16(x$$16), acc$$11);\n }, new List(), xs$$31);\n return reverse(xs$$32);\n}\nexport function mapIndexed(f$$17, xs$$33) {\n const xs$$34 = foldIndexed(function (i$$3, acc$$12, x$$17) {\n return new List(f$$17(i$$3, x$$17), acc$$12);\n }, new List(), xs$$33);\n return reverse(xs$$34);\n}\nexport function indexed(xs$$35) {\n return mapIndexed(function (i$$4, x$$18) {\n return [i$$4, x$$18];\n }, xs$$35);\n}\nexport function map2(f$$18, xs$$36, ys$$11) {\n const xs$$37 = fold2(function (acc$$13, x$$19, y$$4) {\n return new List(f$$18(x$$19, y$$4), acc$$13);\n }, new List(), xs$$36, ys$$11);\n return reverse(xs$$37);\n}\nexport function mapIndexed2(f$$19, xs$$38, ys$$12) {\n const xs$$39 = foldIndexed2(function (i$$5, acc$$14, x$$20, y$$5) {\n return new List(f$$19(i$$5, x$$20, y$$5), acc$$14);\n }, new List(), xs$$38, ys$$12);\n return reverse(xs$$39);\n}\nexport function map3(f$$20, xs$$40, ys$$13, zs$$3) {\n const xs$$41 = fold3(function (acc$$15, x$$21, y$$6, z$$2) {\n return new List(f$$20(x$$21, y$$6, z$$2), acc$$15);\n }, new List(), xs$$40, ys$$13, zs$$3);\n return reverse(xs$$41);\n}\nexport function mapIndexed3(f$$21, xs$$42, ys$$14, zs$$4) {\n const xs$$43 = foldIndexed3(function (i$$6, acc$$16, x$$22, y$$7, z$$3) {\n return new List(f$$21(i$$6, x$$22, y$$7, z$$3), acc$$16);\n }, new List(), xs$$42, ys$$14, zs$$4);\n return reverse(xs$$43);\n}\nexport function mapFold(f$$22, s, xs$$44) {\n const patternInput$$1 = fold(function foldFn(tupledArg, x$$23) {\n const patternInput = f$$22(tupledArg[1], x$$23);\n return [new List(patternInput[0], tupledArg[0]), patternInput[1]];\n }, [new List(), s], xs$$44);\n return [reverse(patternInput$$1[0]), patternInput$$1[1]];\n}\nexport function mapFoldBack(f$$23, xs$$45, s$$2) {\n return mapFold(function (s$$3, v) {\n return f$$23(v, s$$3);\n }, s$$2, reverse(xs$$45));\n}\nexport function iterate(f$$24, xs$$46) {\n fold(function (unitVar0, x$$24) {\n f$$24(x$$24);\n }, void null, xs$$46);\n}\nexport function iterate2(f$$25, xs$$47, ys$$15) {\n fold2(function (unitVar0$$1, x$$25, y$$8) {\n f$$25(x$$25, y$$8);\n }, void null, xs$$47, ys$$15);\n}\nexport function iterateIndexed(f$$26, xs$$48) {\n foldIndexed(function (i$$7, unitVar1, x$$26) {\n f$$26(i$$7, x$$26);\n }, void null, xs$$48);\n}\nexport function iterateIndexed2(f$$27, xs$$49, ys$$16) {\n foldIndexed2(function (i$$8, unitVar1$$1, x$$27, y$$9) {\n f$$27(i$$8, x$$27, y$$9);\n }, void null, xs$$49, ys$$16);\n}\nexport function ofArray(xs$$50) {\n let res$$1 = new List();\n\n for (let i$$9 = count(xs$$50) - 1; i$$9 >= 0; i$$9--) {\n res$$1 = new List(xs$$50[i$$9], res$$1);\n }\n\n return res$$1;\n}\nexport function empty() {\n return new List();\n}\nexport function isEmpty(_arg1$$8) {\n if (_arg1$$8.tail == null) {\n return true;\n } else {\n return false;\n }\n}\nexport function tryPickIndexedAux($f$$28$$120, $i$$10$$121, $_arg1$$9$$122) {\n tryPickIndexedAux: while (true) {\n const f$$28 = $f$$28$$120,\n i$$10 = $i$$10$$121,\n _arg1$$9 = $_arg1$$9$$122;\n\n if (_arg1$$9.tail != null) {\n const result = f$$28(i$$10, _arg1$$9.head);\n\n if (result == null) {\n $f$$28$$120 = f$$28;\n $i$$10$$121 = i$$10 + 1;\n $_arg1$$9$$122 = _arg1$$9.tail;\n continue tryPickIndexedAux;\n } else {\n return result;\n }\n } else {\n return undefined;\n }\n\n break;\n }\n}\nexport function tryPickIndexed(f$$29, xs$$52) {\n return tryPickIndexedAux(f$$29, 0, xs$$52);\n}\nexport function tryPick(f$$30, xs$$53) {\n return tryPickIndexed(function (_arg1$$10, x$$29) {\n return f$$30(x$$29);\n }, xs$$53);\n}\nexport function pick(f$$31, xs$$54) {\n const matchValue$$5 = tryPick(f$$31, xs$$54);\n\n if (matchValue$$5 != null) {\n const x$$30 = value$$1(matchValue$$5);\n return x$$30;\n } else {\n throw new Error(\"List did not contain any matching elements\");\n }\n}\nexport function tryFindIndexed(f$$32, xs$$55) {\n return tryPickIndexed(function (i$$11, x$$31) {\n return f$$32(i$$11, x$$31) ? some(x$$31) : undefined;\n }, xs$$55);\n}\nexport function tryFind(f$$33, xs$$56) {\n return tryPickIndexed(function (_arg1$$11, x$$32) {\n return f$$33(x$$32) ? some(x$$32) : undefined;\n }, xs$$56);\n}\nexport function findIndexed(f$$34, xs$$57) {\n const matchValue$$6 = tryFindIndexed(f$$34, xs$$57);\n\n if (matchValue$$6 != null) {\n const x$$33 = value$$1(matchValue$$6);\n return x$$33;\n } else {\n throw new Error(\"List did not contain any matching elements\");\n }\n}\nexport function find(f$$35, xs$$58) {\n return findIndexed(function (_arg1$$12, x$$34) {\n return f$$35(x$$34);\n }, xs$$58);\n}\nexport function findBack(f$$36, xs$$59) {\n let xs$$61;\n xs$$61 = reverse(xs$$59);\n return find(f$$36, xs$$61);\n}\nexport function tryFindBack(f$$37, xs$$62) {\n let xs$$64;\n xs$$64 = reverse(xs$$62);\n return tryFind(f$$37, xs$$64);\n}\nexport function tryFindIndex(f$$38, xs$$65) {\n return tryPickIndexed(function (i$$12, x$$35) {\n return f$$38(x$$35) ? i$$12 : undefined;\n }, xs$$65);\n}\nexport function tryFindIndexBack(f$$39, xs$$66) {\n const array = ofList(xs$$66, Array);\n return tryFindIndexBack$$1(f$$39, array);\n}\nexport function findIndex(f$$40, xs$$67) {\n const matchValue$$7 = tryFindIndex(f$$40, xs$$67);\n\n if (matchValue$$7 != null) {\n const x$$36 = matchValue$$7 | 0;\n return x$$36 | 0;\n } else {\n throw new Error(\"List did not contain any matching elements\");\n }\n}\nexport function findIndexBack(f$$41, xs$$68) {\n const array$$1 = ofList(xs$$68, Array);\n return findIndexBack$$1(f$$41, array$$1) | 0;\n}\nexport function item(n, xs$$69) {\n return findIndexed(function (i$$13, _arg1$$13) {\n return n === i$$13;\n }, xs$$69);\n}\nexport function tryItem(n$$1, xs$$70) {\n return tryFindIndexed(function (i$$14, _arg1$$14) {\n return n$$1 === i$$14;\n }, xs$$70);\n}\nexport function filter(f$$42, xs$$71) {\n const xs$$72 = fold(function (acc$$17, x$$37) {\n return f$$42(x$$37) ? new List(x$$37, acc$$17) : acc$$17;\n }, new List(), xs$$71);\n return reverse(xs$$72);\n}\nexport function partition(f$$43, xs$$73) {\n return fold(function (tupledArg$$1, x$$38) {\n return f$$43(x$$38) ? [new List(x$$38, tupledArg$$1[0]), tupledArg$$1[1]] : [tupledArg$$1[0], new List(x$$38, tupledArg$$1[1])];\n }, [new List(), new List()], reverse(xs$$73));\n}\nexport function choose(f$$44, xs$$74) {\n const xs$$75 = fold(function (acc$$18, x$$39) {\n const matchValue$$8 = f$$44(x$$39);\n\n if (matchValue$$8 == null) {\n return acc$$18;\n } else {\n const y$$10 = value$$1(matchValue$$8);\n return new List(y$$10, acc$$18);\n }\n }, new List(), xs$$74);\n return reverse(xs$$75);\n}\nexport function contains(value, list, eq) {\n const loop$$1 = function loop$$1($xs$$76$$162) {\n loop$$1: while (true) {\n const xs$$76 = $xs$$76$$162;\n\n if (xs$$76.tail != null) {\n if (eq.Equals(value, xs$$76.head)) {\n return true;\n } else {\n $xs$$76$$162 = xs$$76.tail;\n continue loop$$1;\n }\n } else {\n return false;\n }\n\n break;\n }\n };\n\n return loop$$1(list);\n}\nexport function except(itemsToExclude, array$$2, eq$$1) {\n if (isEmpty(array$$2)) {\n return array$$2;\n } else {\n const cached = createMutable(itemsToExclude, eq$$1);\n return filter(function f$$45(arg00) {\n return addToSet(arg00, cached);\n }, array$$2);\n }\n}\nexport function initialize(n$$2, f$$46) {\n let xs$$78 = new List();\n\n for (let i$$15 = 0; i$$15 <= n$$2 - 1; i$$15++) {\n xs$$78 = new List(f$$46(i$$15), xs$$78);\n }\n\n return reverse(xs$$78);\n}\nexport function replicate(n$$3, x$$40) {\n return initialize(n$$3, function (_arg1$$15) {\n return x$$40;\n });\n}\nexport function reduce(f$$47, _arg1$$16) {\n if (_arg1$$16.tail != null) {\n return fold(f$$47, _arg1$$16.head, _arg1$$16.tail);\n } else {\n throw new Error(\"List was empty\");\n }\n}\nexport function reduceBack(f$$48, _arg1$$17) {\n if (_arg1$$17.tail != null) {\n return foldBack(f$$48, _arg1$$17.tail, _arg1$$17.head);\n } else {\n throw new Error(\"List was empty\");\n }\n}\nexport function forAll(f$$49, xs$$79) {\n return fold(function (acc$$19, x$$41) {\n return acc$$19 ? f$$49(x$$41) : false;\n }, true, xs$$79);\n}\nexport function forAll2(f$$50, xs$$80, ys$$17) {\n return fold2(function (acc$$20, x$$42, y$$11) {\n return acc$$20 ? f$$50(x$$42, y$$11) : false;\n }, true, xs$$80, ys$$17);\n}\nexport function exists($f$$51$$180, $_arg1$$18$$181) {\n exists: while (true) {\n const f$$51 = $f$$51$$180,\n _arg1$$18 = $_arg1$$18$$181;\n\n if (_arg1$$18.tail != null) {\n if (f$$51(_arg1$$18.head)) {\n return true;\n } else {\n $f$$51$$180 = f$$51;\n $_arg1$$18$$181 = _arg1$$18.tail;\n continue exists;\n }\n } else {\n return false;\n }\n\n break;\n }\n}\nexport function exists2($f$$52$$182, $bs$$2$$183, $cs$$2$$184) {\n exists2: while (true) {\n const f$$52 = $f$$52$$182,\n bs$$2 = $bs$$2$$183,\n cs$$2 = $cs$$2$$184;\n var $target$$185, x$$44, xs$$82, y$$12, ys$$18;\n\n if (bs$$2.tail != null) {\n if (cs$$2.tail != null) {\n $target$$185 = 1;\n x$$44 = bs$$2.head;\n xs$$82 = bs$$2.tail;\n y$$12 = cs$$2.head;\n ys$$18 = cs$$2.tail;\n } else {\n $target$$185 = 2;\n }\n } else if (cs$$2.tail == null) {\n $target$$185 = 0;\n } else {\n $target$$185 = 2;\n }\n\n switch ($target$$185) {\n case 0:\n {\n return false;\n }\n\n case 1:\n {\n if (f$$52(x$$44, y$$12)) {\n return true;\n } else {\n $f$$52$$182 = f$$52;\n $bs$$2$$183 = xs$$82;\n $cs$$2$$184 = ys$$18;\n continue exists2;\n }\n }\n\n case 2:\n {\n throw new Error(\"Lists had different lengths\");\n }\n }\n\n break;\n }\n}\nexport function unzip(xs$$83) {\n return foldBack(function (tupledArg$$2, tupledArg$$3) {\n return [new List(tupledArg$$2[0], tupledArg$$3[0]), new List(tupledArg$$2[1], tupledArg$$3[1])];\n }, xs$$83, [new List(), new List()]);\n}\nexport function unzip3(xs$$84) {\n return foldBack(function (tupledArg$$4, tupledArg$$5) {\n return [new List(tupledArg$$4[0], tupledArg$$5[0]), new List(tupledArg$$4[1], tupledArg$$5[1]), new List(tupledArg$$4[2], tupledArg$$5[2])];\n }, xs$$84, [new List(), new List(), new List()]);\n}\nexport function zip(xs$$85, ys$$19) {\n return map2(function (x$$47, y$$15) {\n return [x$$47, y$$15];\n }, xs$$85, ys$$19);\n}\nexport function zip3(xs$$86, ys$$20, zs$$5) {\n return map3(function (x$$48, y$$16, z$$5) {\n return [x$$48, y$$16, z$$5];\n }, xs$$86, ys$$20, zs$$5);\n}\nexport function sort(xs$$87, comparer$$1) {\n let xs$$89;\n const xs$$88 = ofList(xs$$87, Array);\n xs$$88.sort(function comparer$$2(x$$49, y$$17) {\n return comparer$$1.Compare(x$$49, y$$17);\n });\n xs$$89 = xs$$88;\n return ofArray(xs$$89);\n}\nexport function sortBy(projection, xs$$90, comparer$$3) {\n let xs$$92;\n const xs$$91 = ofList(xs$$90, Array);\n xs$$91.sort(function comparer$$4(x$$50, y$$18) {\n return comparer$$3.Compare(projection(x$$50), projection(y$$18));\n });\n xs$$92 = xs$$91;\n return ofArray(xs$$92);\n}\nexport function sortDescending(xs$$93, comparer$$5) {\n let xs$$95;\n const xs$$94 = ofList(xs$$93, Array);\n xs$$94.sort(function comparer$$6(x$$51, y$$19) {\n return comparer$$5.Compare(x$$51, y$$19) * -1;\n });\n xs$$95 = xs$$94;\n return ofArray(xs$$95);\n}\nexport function sortByDescending(projection$$1, xs$$96, comparer$$7) {\n let xs$$98;\n const xs$$97 = ofList(xs$$96, Array);\n xs$$97.sort(function comparer$$8(x$$52, y$$20) {\n return comparer$$7.Compare(projection$$1(x$$52), projection$$1(y$$20)) * -1;\n });\n xs$$98 = xs$$97;\n return ofArray(xs$$98);\n}\nexport function sortWith(comparer$$9, xs$$99) {\n let xs$$101;\n const xs$$100 = ofList(xs$$99, Array);\n xs$$100.sort(comparer$$9);\n xs$$101 = xs$$100;\n return ofArray(xs$$101);\n}\nexport function sum(xs$$102, adder) {\n return fold(function (acc$$21, x$$53) {\n return adder.Add(acc$$21, x$$53);\n }, adder.GetZero(), xs$$102);\n}\nexport function sumBy(f$$53, xs$$103, adder$$1) {\n return fold(function (acc$$22, x$$54) {\n return adder$$1.Add(acc$$22, f$$53(x$$54));\n }, adder$$1.GetZero(), xs$$103);\n}\nexport function maxBy(projection$$2, xs$$104, comparer$$11) {\n return reduce(function (x$$55, y$$21) {\n return comparer$$11.Compare(projection$$2(y$$21), projection$$2(x$$55)) > 0 ? y$$21 : x$$55;\n }, xs$$104);\n}\nexport function max(li, comparer$$12) {\n return reduce(function (x$$56, y$$22) {\n return comparer$$12.Compare(y$$22, x$$56) > 0 ? y$$22 : x$$56;\n }, li);\n}\nexport function minBy(projection$$3, xs$$105, comparer$$13) {\n return reduce(function (x$$57, y$$23) {\n return comparer$$13.Compare(projection$$3(y$$23), projection$$3(x$$57)) > 0 ? x$$57 : y$$23;\n }, xs$$105);\n}\nexport function min(xs$$106, comparer$$14) {\n return reduce(function (x$$58, y$$24) {\n return comparer$$14.Compare(y$$24, x$$58) > 0 ? x$$58 : y$$24;\n }, xs$$106);\n}\nexport function average(xs$$107, averager) {\n const total = fold(function (acc$$23, x$$59) {\n return averager.Add(acc$$23, x$$59);\n }, averager.GetZero(), xs$$107);\n return averager.DivideByInt(total, length(xs$$107));\n}\nexport function averageBy(f$$54, xs$$108, averager$$1) {\n const total$$1 = fold(function (acc$$24, x$$60) {\n return averager$$1.Add(acc$$24, f$$54(x$$60));\n }, averager$$1.GetZero(), xs$$108);\n return averager$$1.DivideByInt(total$$1, length(xs$$108));\n}\nexport function permute(f$$55, xs$$109) {\n let xs$$110;\n let array$$3;\n array$$3 = ofList(xs$$109, Array);\n xs$$110 = permute$$1(f$$55, array$$3);\n return ofArray(xs$$110);\n}\nexport function chunkBySize(chunkSize, xs$$111) {\n let xs$$114;\n let xs$$112;\n let array$$4;\n array$$4 = ofList(xs$$111, Array);\n xs$$112 = chunkBySize$$1(chunkSize, array$$4);\n xs$$114 = ofArray(xs$$112);\n return map(function f$$56(xs$$113) {\n return ofArray(xs$$113);\n }, xs$$114);\n}\nexport function skip(i$$16, xs$$115) {\n const skipInner = function skipInner($i$$17$$240, $xs$$116$$241) {\n skipInner: while (true) {\n const i$$17 = $i$$17$$240,\n xs$$116 = $xs$$116$$241;\n\n if (i$$17 === 0) {\n return xs$$116;\n } else if (xs$$116.tail != null) {\n $i$$17$$240 = i$$17 - 1;\n $xs$$116$$241 = xs$$116.tail;\n continue skipInner;\n } else {\n throw new Error(\"The input sequence has an insufficient number of elements.\");\n }\n\n break;\n }\n };\n\n if (i$$16 < 0) {\n throw new Error(\"The input must be non-negative.\");\n } else {\n var $target$$242, i$$20, xs$$119;\n\n if (i$$16 === 0) {\n $target$$242 = 0;\n } else if (i$$16 === 1) {\n if (xs$$115.tail != null) {\n $target$$242 = 1;\n } else {\n $target$$242 = 2;\n i$$20 = i$$16;\n xs$$119 = xs$$115;\n }\n } else {\n $target$$242 = 2;\n i$$20 = i$$16;\n xs$$119 = xs$$115;\n }\n\n switch ($target$$242) {\n case 0:\n {\n return xs$$115;\n }\n\n case 1:\n {\n return xs$$115.tail;\n }\n\n case 2:\n {\n return skipInner(i$$20, xs$$119);\n }\n }\n }\n}\nexport function skipWhile($predicate$$243, $xs$$120$$244) {\n skipWhile: while (true) {\n const predicate = $predicate$$243,\n xs$$120 = $xs$$120$$244;\n var $target$$245, h$$4, t$$4;\n\n if (xs$$120.tail != null) {\n if (predicate(xs$$120.head)) {\n $target$$245 = 0;\n h$$4 = xs$$120.head;\n t$$4 = xs$$120.tail;\n } else {\n $target$$245 = 1;\n }\n } else {\n $target$$245 = 1;\n }\n\n switch ($target$$245) {\n case 0:\n {\n $predicate$$243 = predicate;\n $xs$$120$$244 = t$$4;\n continue skipWhile;\n }\n\n case 1:\n {\n return xs$$120;\n }\n }\n\n break;\n }\n}\nexport function takeSplitAux($error$$246, $i$$21$$247, $acc$$25$$248, $xs$$121$$249) {\n takeSplitAux: while (true) {\n const error = $error$$246,\n i$$21 = $i$$21$$247,\n acc$$25 = $acc$$25$$248,\n xs$$121 = $xs$$121$$249;\n\n if (i$$21 === 0) {\n return [reverse(acc$$25), xs$$121];\n } else if (xs$$121.tail != null) {\n $error$$246 = error;\n $i$$21$$247 = i$$21 - 1;\n $acc$$25$$248 = new List(xs$$121.head, acc$$25);\n $xs$$121$$249 = xs$$121.tail;\n continue takeSplitAux;\n } else {\n if (error) {\n throw new Error(\"The input sequence has an insufficient number of elements.\");\n } else {\n return [reverse(acc$$25), xs$$121];\n }\n }\n\n break;\n }\n}\nexport function take(i$$22, xs$$123) {\n if (i$$22 < 0) {\n throw new Error(\"The input must be non-negative.\");\n } else {\n var $target$$252, i$$25, xs$$124;\n\n if (i$$22 === 0) {\n $target$$252 = 0;\n } else if (i$$22 === 1) {\n if (xs$$123.tail != null) {\n $target$$252 = 1;\n } else {\n $target$$252 = 2;\n i$$25 = i$$22;\n xs$$124 = xs$$123;\n }\n } else {\n $target$$252 = 2;\n i$$25 = i$$22;\n xs$$124 = xs$$123;\n }\n\n switch ($target$$252) {\n case 0:\n {\n return new List();\n }\n\n case 1:\n {\n return new List(xs$$123.head, new List());\n }\n\n case 2:\n {\n const tuple = takeSplitAux(true, i$$25, new List(), xs$$124);\n return tuple[0];\n }\n }\n }\n}\nexport function takeWhile(predicate$$1, xs$$125) {\n if (xs$$125.tail != null) {\n if (xs$$125.tail.tail == null) {\n if (predicate$$1(xs$$125.head)) {\n return xs$$125;\n } else {\n return xs$$125.tail;\n }\n } else {\n if (!predicate$$1(xs$$125.head)) {\n return new List();\n } else {\n return new List(xs$$125.head, takeWhile(predicate$$1, xs$$125.tail));\n }\n }\n } else {\n return xs$$125;\n }\n}\nexport function truncate(i$$26, xs$$127) {\n if (i$$26 < 0) {\n throw new Error(\"The input must be non-negative.\");\n } else {\n var $target$$257, i$$29, xs$$128;\n\n if (i$$26 === 0) {\n $target$$257 = 0;\n } else if (i$$26 === 1) {\n if (xs$$127.tail != null) {\n $target$$257 = 1;\n } else {\n $target$$257 = 2;\n i$$29 = i$$26;\n xs$$128 = xs$$127;\n }\n } else {\n $target$$257 = 2;\n i$$29 = i$$26;\n xs$$128 = xs$$127;\n }\n\n switch ($target$$257) {\n case 0:\n {\n return new List();\n }\n\n case 1:\n {\n return new List(xs$$127.head, new List());\n }\n\n case 2:\n {\n const tuple$$1 = takeSplitAux(false, i$$29, new List(), xs$$128);\n return tuple$$1[0];\n }\n }\n }\n}\nexport function splitAt(i$$30, xs$$129) {\n if (i$$30 < 0) {\n throw new Error(\"The input must be non-negative.\");\n } else {\n var $target$$260, i$$33, xs$$131;\n\n if (i$$30 === 0) {\n $target$$260 = 0;\n } else if (i$$30 === 1) {\n if (xs$$129.tail != null) {\n $target$$260 = 1;\n } else {\n $target$$260 = 2;\n i$$33 = i$$30;\n xs$$131 = xs$$129;\n }\n } else {\n $target$$260 = 2;\n i$$33 = i$$30;\n xs$$131 = xs$$129;\n }\n\n switch ($target$$260) {\n case 0:\n {\n return [new List(), xs$$129];\n }\n\n case 1:\n {\n return [new List(xs$$129.head, new List()), xs$$129.tail];\n }\n\n case 2:\n {\n return takeSplitAux(true, i$$33, new List(), xs$$131);\n }\n }\n }\n}\nexport function outOfRange() {\n throw new Error(\"Index out of range\");\n}\nexport function slice(lower, upper, xs$$132) {\n const lower$$1 = defaultArg(lower, 0) | 0;\n const hasUpper = upper != null;\n\n if (lower$$1 < 0) {\n return outOfRange();\n } else if (hasUpper ? upper < lower$$1 : false) {\n return new List();\n } else {\n let lastIndex = -1 | 0;\n let res$$2;\n const state$$13 = new List();\n res$$2 = foldIndexed(function f$$57(i$$34, acc$$26, x$$67) {\n lastIndex = i$$34;\n\n if (lower$$1 <= i$$34 ? !hasUpper ? true : i$$34 <= upper : false) {\n return new List(x$$67, acc$$26);\n } else {\n return acc$$26;\n }\n }, state$$13, xs$$132);\n\n if (lower$$1 > lastIndex + 1 ? true : hasUpper ? upper > lastIndex : false) {\n outOfRange();\n } else {\n void null;\n }\n\n return reverse(res$$2);\n }\n}\nexport function distinctBy(projection$$4, xs$$134, eq$$2) {\n const hashSet = createMutable([], eq$$2);\n return filter(function f$$58($arg$$1) {\n const arg00$$1 = projection$$4($arg$$1);\n return addToSet(arg00$$1, hashSet);\n }, xs$$134);\n}\nexport function distinct(xs$$136, eq$$3) {\n return distinctBy(function (x$$68) {\n return x$$68;\n }, xs$$136, eq$$3);\n}\nexport function exactlyOne(xs$$137) {\n if (xs$$137.tail != null) {\n if (xs$$137.tail.tail != null) {\n throw new Error(\"Input list too long\\\\nParameter name: list\");\n } else {\n return xs$$137.head;\n }\n } else {\n throw new Error(\"The input sequence was empty\\\\nParameter name: list\");\n }\n}\nexport function groupBy(projection$$5, xs$$139, eq$$4) {\n const dict = createMutable$$1([], eq$$4);\n let keys = new List();\n iterate(function f$$59(v$$2) {\n const key = projection$$5(v$$2);\n const matchValue$$16 = tryGetValue(dict, key, null);\n\n if (matchValue$$16[0]) {\n dict.set(key, new List(v$$2, matchValue$$16[1]));\n } else {\n addToDict(dict, key, new List(v$$2, new List()));\n keys = new List(key, keys);\n }\n }, xs$$139);\n let result$$1 = new List();\n const xs$$141 = keys;\n iterate(function f$$60(key$$1) {\n result$$1 = new List([key$$1, reverse(getItemFromDict(dict, key$$1))], result$$1);\n }, xs$$141);\n return result$$1;\n}\nexport function countBy(projection$$6, xs$$142, eq$$5) {\n const dict$$1 = createMutable$$1([], eq$$5);\n let keys$$1 = new List();\n iterate(function f$$61(v$$3) {\n const key$$2 = projection$$6(v$$3);\n const matchValue$$17 = tryGetValue(dict$$1, key$$2, 0);\n\n if (matchValue$$17[0]) {\n dict$$1.set(key$$2, matchValue$$17[1] + 1);\n } else {\n dict$$1.set(key$$2, 1);\n keys$$1 = new List(key$$2, keys$$1);\n }\n }, xs$$142);\n let result$$2 = new List();\n const xs$$144 = keys$$1;\n iterate(function f$$62(key$$3) {\n result$$2 = new List([key$$3, getItemFromDict(dict$$1, key$$3)], result$$2);\n }, xs$$144);\n return result$$2;\n}\nexport function where(predicate$$2, source) {\n return filter(predicate$$2, source);\n}\nexport function pairwise(source$$1) {\n const xs$$145 = pairwise$$1(source$$1);\n return ofSeq(xs$$145);\n}\nexport function windowed(windowSize, source$$2) {\n if (windowSize <= 0) {\n throw new Error(\"windowSize must be positive\");\n } else {\n void null;\n }\n\n let res$$3 = new List();\n\n for (let i$$35 = length(source$$2); i$$35 >= windowSize; i$$35--) {\n res$$3 = new List(slice(i$$35 - windowSize, i$$35 - 1, source$$2), res$$3);\n }\n\n return res$$3;\n}\nexport function splitInto(chunks, source$$3) {\n let xs$$148;\n let xs$$146;\n let array$$5;\n array$$5 = ofList(source$$3, Array);\n xs$$146 = splitInto$$1(chunks, array$$5);\n xs$$148 = ofArray(xs$$146);\n return map(function f$$63(xs$$147) {\n return ofArray(xs$$147);\n }, xs$$148);\n}\nexport function transpose(lists$$1) {\n let xs$$150;\n let source$$5;\n source$$5 = transpose$$1(lists$$1);\n xs$$150 = map$$1(ofSeq, source$$5);\n return ofSeq(xs$$150);\n}","import { toString as dateToString } from \"./Date\";\nimport Decimal from \"./Decimal\";\nimport Long, * as _Long from \"./Long\";\nimport { escape } from \"./RegExp\";\nconst fsFormatRegExp = /(^|[^%])%([0+\\- ]*)(\\d+)?(?:\\.(\\d+))?(\\w)/;\nconst formatRegExp = /\\{(\\d+)(,-?\\d+)?(?:\\:([a-zA-Z])(\\d{0,2})|\\:(.+?))?\\}/g;\n// RFC 4122 compliant. From https://stackoverflow.com/a/13653180/3922220\n// const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\n// Relax GUID parsing, see #1637\nconst guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n// These are used for formatting and only take longs and decimals into account (no bigint)\nfunction isNumeric(x) {\n return typeof x === \"number\" || x instanceof Long || x instanceof Decimal;\n}\nfunction isLessThan(x, y) {\n if (x instanceof Long) {\n return _Long.compare(x, y) < 0;\n }\n else if (x instanceof Decimal) {\n return x.cmp(y) < 0;\n }\n else {\n return x < y;\n }\n}\nfunction multiply(x, y) {\n if (x instanceof Long) {\n return _Long.op_Multiply(x, y);\n }\n else if (x instanceof Decimal) {\n return x.mul(y);\n }\n else {\n return x * y;\n }\n}\nfunction toFixed(x, dp) {\n if (x instanceof Long) {\n return String(x) + (0).toFixed(dp).substr(1);\n }\n else {\n return x.toFixed(dp);\n }\n}\nfunction toPrecision(x, sd) {\n if (x instanceof Long) {\n return String(x) + (0).toPrecision(sd).substr(1);\n }\n else {\n return x.toPrecision(sd);\n }\n}\nfunction toExponential(x, dp) {\n if (x instanceof Long) {\n return String(x) + (0).toExponential(dp).substr(1);\n }\n else {\n return x.toExponential(dp);\n }\n}\nfunction cmp(x, y, ic) {\n function isIgnoreCase(i) {\n return i === true ||\n i === 1 /* CurrentCultureIgnoreCase */ ||\n i === 3 /* InvariantCultureIgnoreCase */ ||\n i === 5 /* OrdinalIgnoreCase */;\n }\n function isOrdinal(i) {\n return i === 4 /* Ordinal */ ||\n i === 5 /* OrdinalIgnoreCase */;\n }\n if (x == null) {\n return y == null ? 0 : -1;\n }\n if (y == null) {\n return 1;\n } // everything is bigger than null\n if (isOrdinal(ic)) {\n if (isIgnoreCase(ic)) {\n x = x.toLowerCase();\n y = y.toLowerCase();\n }\n return (x === y) ? 0 : (x < y ? -1 : 1);\n }\n else {\n if (isIgnoreCase(ic)) {\n x = x.toLocaleLowerCase();\n y = y.toLocaleLowerCase();\n }\n return x.localeCompare(y);\n }\n}\nexport function compare(...args) {\n switch (args.length) {\n case 2: return cmp(args[0], args[1], false);\n case 3: return cmp(args[0], args[1], args[2]);\n case 4: return cmp(args[0], args[1], args[2] === true);\n case 5: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), false);\n case 6: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5]);\n case 7: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5] === true);\n default: throw new Error(\"String.compare: Unsupported number of parameters\");\n }\n}\nexport function compareOrdinal(x, y) {\n return cmp(x, y, 4 /* Ordinal */);\n}\nexport function compareTo(x, y) {\n return cmp(x, y, 0 /* CurrentCulture */);\n}\nexport function startsWith(str, pattern, ic) {\n if (str.length >= pattern.length) {\n return cmp(str.substr(0, pattern.length), pattern, ic) === 0;\n }\n return false;\n}\nexport function indexOfAny(str, anyOf, ...args) {\n if (str == null || str === \"\") {\n return -1;\n }\n const startIndex = (args.length > 0) ? args[0] : 0;\n if (startIndex < 0) {\n throw new Error(\"Start index cannot be negative\");\n }\n const length = (args.length > 1) ? args[1] : str.length - startIndex;\n if (length < 0) {\n throw new Error(\"Length cannot be negative\");\n }\n if (length > str.length - startIndex) {\n throw new Error(\"Invalid startIndex and length\");\n }\n str = str.substr(startIndex, length);\n for (const c of anyOf) {\n const index = str.indexOf(c);\n if (index > -1) {\n return index + startIndex;\n }\n }\n return -1;\n}\nfunction toHex(x) {\n if (x instanceof Long) {\n return _Long.toString(x.unsigned ? x : _Long.fromBytes(_Long.toBytes(x), true), 16);\n }\n else {\n return (Number(x) >>> 0).toString(16);\n }\n}\nexport function printf(input) {\n return {\n input,\n cont: fsFormat(input),\n };\n}\nexport function toConsole(arg) {\n // Don't remove the lambda here, see #1357\n return arg.cont((x) => { console.log(x); });\n}\nexport function toConsoleError(arg) {\n return arg.cont((x) => { console.error(x); });\n}\nexport function toText(arg) {\n return arg.cont((x) => x);\n}\nexport function toFail(arg) {\n return arg.cont((x) => { throw new Error(x); });\n}\nfunction formatOnce(str2, rep) {\n return str2.replace(fsFormatRegExp, (_, prefix, flags, padLength, precision, format) => {\n let sign = \"\";\n if (isNumeric(rep)) {\n if (format.toLowerCase() !== \"x\") {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n else {\n if (flags.indexOf(\" \") >= 0) {\n sign = \" \";\n }\n else if (flags.indexOf(\"+\") >= 0) {\n sign = \"+\";\n }\n }\n }\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 6;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"x\":\n rep = toHex(rep);\n break;\n case \"X\":\n rep = toHex(rep).toUpperCase();\n break;\n default: // AOid\n rep = String(rep);\n break;\n }\n }\n padLength = parseInt(padLength, 10);\n if (!isNaN(padLength)) {\n const zeroFlag = flags.indexOf(\"0\") >= 0; // Use '0' for left padding\n const minusFlag = flags.indexOf(\"-\") >= 0; // Right padding\n const ch = minusFlag || !zeroFlag ? \" \" : \"0\";\n if (ch === \"0\") {\n rep = padLeft(rep, padLength - sign.length, ch, minusFlag);\n rep = sign + rep;\n }\n else {\n rep = padLeft(sign + rep, padLength, ch, minusFlag);\n }\n }\n else {\n rep = sign + rep;\n }\n const once = prefix + rep;\n return once.replace(/%/g, \"%%\");\n });\n}\nfunction createPrinter(str, cont) {\n return (...args) => {\n // Make a copy as the function may be used several times\n let strCopy = str;\n for (const arg of args) {\n strCopy = formatOnce(strCopy, arg);\n }\n return fsFormatRegExp.test(strCopy)\n ? createPrinter(strCopy, cont)\n : cont(strCopy.replace(/%%/g, \"%\"));\n };\n}\nexport function fsFormat(str) {\n return (cont) => {\n return fsFormatRegExp.test(str)\n ? createPrinter(str, cont)\n : cont(str);\n };\n}\nexport function format(str, ...args) {\n if (typeof str === \"object\" && args.length > 0) {\n // Called with culture info\n str = args[0];\n args.shift();\n }\n return str.replace(formatRegExp, (_, idx, padLength, format, precision, pattern) => {\n let rep = args[idx];\n if (isNumeric(rep)) {\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 2;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"p\":\n case \"P\":\n precision = precision != null ? precision : 2;\n rep = toFixed(multiply(rep, 100), precision) + \" %\";\n break;\n case \"d\":\n case \"D\":\n rep = precision != null ? padLeft(String(rep), precision, \"0\") : String(rep);\n break;\n case \"x\":\n case \"X\":\n rep = precision != null ? padLeft(toHex(rep), precision, \"0\") : toHex(rep);\n if (format === \"X\") {\n rep = rep.toUpperCase();\n }\n break;\n default:\n if (pattern) {\n let sign = \"\";\n rep = pattern.replace(/(0+)(\\.0+)?/, (_, intPart, decimalPart) => {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n rep = toFixed(rep, decimalPart != null ? decimalPart.length - 1 : 0);\n return padLeft(rep, (intPart || \"\").length - sign.length + (decimalPart != null ? decimalPart.length : 0), \"0\");\n });\n rep = sign + rep;\n }\n }\n }\n else if (rep instanceof Date) {\n rep = dateToString(rep, pattern || format);\n }\n padLength = parseInt((padLength || \" \").substring(1), 10);\n if (!isNaN(padLength)) {\n rep = padLeft(String(rep), Math.abs(padLength), \" \", padLength < 0);\n }\n return rep;\n });\n}\nexport function endsWith(str, search) {\n const idx = str.lastIndexOf(search);\n return idx >= 0 && idx === str.length - search.length;\n}\nexport function initialize(n, f) {\n if (n < 0) {\n throw new Error(\"String length must be non-negative\");\n }\n const xs = new Array(n);\n for (let i = 0; i < n; i++) {\n xs[i] = f(i);\n }\n return xs.join(\"\");\n}\nexport function insert(str, startIndex, value) {\n if (startIndex < 0 || startIndex > str.length) {\n throw new Error(\"startIndex is negative or greater than the length of this instance.\");\n }\n return str.substring(0, startIndex) + value + str.substring(startIndex);\n}\nexport function isNullOrEmpty(str) {\n return typeof str !== \"string\" || str.length === 0;\n}\nexport function isNullOrWhiteSpace(str) {\n return typeof str !== \"string\" || /^\\s*$/.test(str);\n}\nexport function concat(...xs) {\n return xs.map((x) => String(x)).join(\"\");\n}\nexport function join(delimiter, xs) {\n if (Array.isArray(xs)) {\n return xs.join(delimiter);\n }\n else {\n return Array.from(xs).join(delimiter);\n }\n}\nexport function joinWithIndices(delimiter, xs, startIndex, count) {\n const endIndexPlusOne = startIndex + count;\n if (endIndexPlusOne > xs.length) {\n throw new Error(\"Index and count must refer to a location within the buffer.\");\n }\n return xs.slice(startIndex, endIndexPlusOne).join(delimiter);\n}\n/** Validates UUID as specified in RFC4122 (versions 1-5). Trims braces. */\nexport function validateGuid(str, doNotThrow) {\n const trimmedAndLowered = trim(str, \"{\", \"}\").toLowerCase();\n if (guidRegex.test(trimmedAndLowered)) {\n return doNotThrow ? [true, trimmedAndLowered] : trimmedAndLowered;\n }\n else if (doNotThrow) {\n return [false, \"00000000-0000-0000-0000-000000000000\"];\n }\n throw new Error(\"Guid should contain 32 digits with 4 dashes: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n}\n// From https://gist.github.com/LeverOne/1308368\nexport function newGuid() {\n let b = \"\";\n for (let a = 0; a++ < 36;) {\n b += a * 51 & 52\n ? (a ^ 15 ? 8 ^ Math.random() * (a ^ 20 ? 16 : 4) : 4).toString(16)\n : \"-\";\n }\n return b;\n}\n// Maps for number <-> hex string conversion\nlet _convertMapsInitialized = false;\nlet _byteToHex;\nlet _hexToByte;\nfunction initConvertMaps() {\n _byteToHex = new Array(256);\n _hexToByte = {};\n for (let i = 0; i < 256; i++) {\n _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n _hexToByte[_byteToHex[i]] = i;\n }\n _convertMapsInitialized = true;\n}\n/** Parse a UUID into it's component bytes */\n// Adapted from https://github.com/zefferus/uuid-parse\nexport function guidToArray(s) {\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n let i = 0;\n const buf = new Uint8Array(16);\n s.toLowerCase().replace(/[0-9a-f]{2}/g, ((oct) => {\n switch (i) {\n // .NET saves first three byte groups with different endianness\n // See https://stackoverflow.com/a/16722909/3922220\n case 0:\n case 1:\n case 2:\n case 3:\n buf[3 - i++] = _hexToByte[oct];\n break;\n case 4:\n case 5:\n buf[9 - i++] = _hexToByte[oct];\n break;\n case 6:\n case 7:\n buf[13 - i++] = _hexToByte[oct];\n break;\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n buf[i++] = _hexToByte[oct];\n break;\n }\n }));\n // Zero out remaining bytes if string was short\n while (i < 16) {\n buf[i++] = 0;\n }\n return buf;\n}\n/** Convert UUID byte array into a string */\nexport function arrayToGuid(buf) {\n if (buf.length !== 16) {\n throw new Error(\"Byte array for GUID must be exactly 16 bytes long\");\n }\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n const guid = _byteToHex[buf[3]] + _byteToHex[buf[2]] +\n _byteToHex[buf[1]] + _byteToHex[buf[0]] + \"-\" +\n _byteToHex[buf[5]] + _byteToHex[buf[4]] + \"-\" +\n _byteToHex[buf[7]] + _byteToHex[buf[6]] + \"-\" +\n _byteToHex[buf[8]] + _byteToHex[buf[9]] + \"-\" +\n _byteToHex[buf[10]] + _byteToHex[buf[11]] +\n _byteToHex[buf[12]] + _byteToHex[buf[13]] +\n _byteToHex[buf[14]] + _byteToHex[buf[15]];\n return guid;\n}\nfunction notSupported(name) {\n throw new Error(\"The environment doesn't support '\" + name + \"', please use a polyfill.\");\n}\nexport function toBase64String(inArray) {\n let str = \"\";\n for (let i = 0; i < inArray.length; i++) {\n str += String.fromCharCode(inArray[i]);\n }\n return typeof btoa === \"function\" ? btoa(str) : notSupported(\"btoa\");\n}\nexport function fromBase64String(b64Encoded) {\n const binary = typeof atob === \"function\" ? atob(b64Encoded) : notSupported(\"atob\");\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\nexport function padLeft(str, len, ch, isRight) {\n ch = ch || \" \";\n len = len - str.length;\n for (let i = 0; i < len; i++) {\n str = isRight ? str + ch : ch + str;\n }\n return str;\n}\nexport function padRight(str, len, ch) {\n return padLeft(str, len, ch, true);\n}\nexport function remove(str, startIndex, count) {\n if (startIndex >= str.length) {\n throw new Error(\"startIndex must be less than length of string\");\n }\n if (typeof count === \"number\" && (startIndex + count) > str.length) {\n throw new Error(\"Index and count must refer to a location within the string.\");\n }\n return str.slice(0, startIndex) + (typeof count === \"number\" ? str.substr(startIndex + count) : \"\");\n}\nexport function replace(str, search, replace) {\n return str.replace(new RegExp(escape(search), \"g\"), replace);\n}\nexport function replicate(n, x) {\n return initialize(n, () => x);\n}\nexport function getCharAtIndex(input, index) {\n if (index < 0 || index >= input.length) {\n throw new Error(\"Index was outside the bounds of the array.\");\n }\n return input[index];\n}\nexport function split(str, splitters, count, removeEmpty) {\n count = typeof count === \"number\" ? count : undefined;\n removeEmpty = typeof removeEmpty === \"number\" ? removeEmpty : undefined;\n if (count && count < 0) {\n throw new Error(\"Count cannot be less than zero\");\n }\n if (count === 0) {\n return [];\n }\n if (!Array.isArray(splitters)) {\n if (removeEmpty === 0) {\n return str.split(splitters, count);\n }\n const len = arguments.length;\n splitters = Array(len - 1);\n for (let key = 1; key < len; key++) {\n splitters[key - 1] = arguments[key];\n }\n }\n splitters = splitters.map((x) => escape(x));\n splitters = splitters.length > 0 ? splitters : [\" \"];\n let i = 0;\n const splits = [];\n const reg = new RegExp(splitters.join(\"|\"), \"g\");\n while (count == null || count > 1) {\n const m = reg.exec(str);\n if (m === null) {\n break;\n }\n if (!removeEmpty || (m.index - i) > 0) {\n count = count != null ? count - 1 : count;\n splits.push(str.substring(i, m.index));\n }\n i = reg.lastIndex;\n }\n if (!removeEmpty || (str.length - i) > 0) {\n splits.push(str.substring(i));\n }\n return splits;\n}\nexport function trim(str, ...chars) {\n if (chars.length === 0) {\n return str.trim();\n }\n const pattern = \"[\" + escape(chars.join(\"\")) + \"]+\";\n return str.replace(new RegExp(\"^\" + pattern), \"\").replace(new RegExp(pattern + \"$\"), \"\");\n}\nexport function trimStart(str, ...chars) {\n return chars.length === 0\n ? str.trimStart()\n : str.replace(new RegExp(\"^[\" + escape(chars.join(\"\")) + \"]+\"), \"\");\n}\nexport function trimEnd(str, ...chars) {\n return chars.length === 0\n ? str.trimEnd()\n : str.replace(new RegExp(\"[\" + escape(chars.join(\"\")) + \"]+$\"), \"\");\n}\nexport function filter(pred, x) {\n return x.split(\"\").filter((c) => pred(c)).join(\"\");\n}\nexport function substring(str, startIndex, length) {\n if ((startIndex + (length || 0) > str.length)) {\n throw new Error(\"Invalid startIndex and/or length\");\n }\n return length != null ? str.substr(startIndex, length) : str.substr(startIndex);\n}\n//# sourceMappingURL=String.js.map","import { Union } from \"./Types\";\nimport { compare, equals, structuralHash } from \"./Util\";\n// Using a class here for better compatibility with TS files importing Some\nexport class Some {\n constructor(value) {\n this.value = value;\n }\n // Don't add \"Some\" for consistency with erased options\n toString() {\n return String(this.value);\n }\n toJSON() {\n return this.value;\n }\n GetHashCode() {\n return structuralHash(this.value);\n }\n Equals(other) {\n if (other == null) {\n return false;\n }\n else {\n return equals(this.value, other instanceof Some ? other.value : other);\n }\n }\n CompareTo(other) {\n if (other == null) {\n return 1;\n }\n else {\n return compare(this.value, other instanceof Some ? other.value : other);\n }\n }\n}\nexport function some(x) {\n return x == null || x instanceof Some ? new Some(x) : x;\n}\nexport function value(x) {\n if (x == null) {\n throw new Error(\"Option has no value\");\n }\n else {\n return x instanceof Some ? x.value : x;\n }\n}\nexport function tryValue(x) {\n return x instanceof Some ? x.value : x;\n}\nexport function toArray(opt) {\n return (opt == null) ? [] : [value(opt)];\n}\nexport function defaultArg(opt, defaultValue) {\n return (opt != null) ? value(opt) : defaultValue;\n}\nexport function defaultArgWith(opt, defThunk) {\n return (opt != null) ? value(opt) : defThunk();\n}\nexport function filter(predicate, opt) {\n return (opt != null) ? (predicate(value(opt)) ? opt : undefined) : opt;\n}\nexport function map(mapping, opt) {\n return (opt != null) ? some(mapping(value(opt))) : undefined;\n}\nexport function map2(mapping, opt1, opt2) {\n return (opt1 != null && opt2 != null) ? mapping(value(opt1), value(opt2)) : undefined;\n}\nexport function map3(mapping, opt1, opt2, opt3) {\n return (opt1 != null && opt2 != null && opt3 != null) ? mapping(value(opt1), value(opt2), value(opt3)) : undefined;\n}\nexport function bind(binder, opt) {\n return opt != null ? binder(value(opt)) : undefined;\n}\nexport function tryOp(op, arg) {\n try {\n return some(op(arg));\n }\n catch (_a) {\n return undefined;\n }\n}\n// CHOICE\nexport class Choice extends Union {\n}\nexport class Choice3 extends Union {\n}\nexport class Choice4 extends Union {\n}\nexport class Choice5 extends Union {\n}\nexport class Choice6 extends Union {\n}\nexport class Choice7 extends Union {\n}\nexport function choice1Of2(x) {\n return new Choice(0, \"Choice1Of2\", x);\n}\nexport function choice2Of2(x) {\n return new Choice(1, \"Choice2Of2\", x);\n}\nexport function tryValueIfChoice1Of2(x) {\n return x.tag === 0 ? some(x.fields[0]) : undefined;\n}\nexport function tryValueIfChoice2Of2(x) {\n return x.tag === 1 ? some(x.fields[0]) : undefined;\n}\n// RESULT\nexport class Result extends Union {\n}\nexport function ok(x) {\n return new Result(0, \"Ok\", x);\n}\nexport function error(x) {\n return new Result(1, \"Error\", x);\n}\nexport function mapOk(f, result) {\n return result.tag === 0 ? ok(f(result.fields[0])) : result;\n}\nexport function mapError(f, result) {\n return result.tag === 1 ? error(f(result.fields[0])) : result;\n}\nexport function bindOk(f, result) {\n return result.tag === 0 ? f(result.fields[0]) : result;\n}\n//# sourceMappingURL=Option.js.map","import { List, declare, Record } from \"../Types.js\";\nimport { record_type, array_type, int32_type } from \"../Reflection.js\";\nimport { op_LeftShift, op_BitwiseAnd, op_Addition, compare, op_Subtraction, op_Division, equals, toInt, op_Modulus, op_Multiply, fromInteger, fromBits } from \"../Long.js\";\nimport { ofList, copy, initialize, map, fill } from \"../Array.js\";\nimport { int32ToString } from \"../Util.js\";\nimport { isNullOrEmpty, join } from \"../String.js\";\nexport const BigNat = declare(function BigInt_BigNat(bound, digits) {\n this.bound = bound | 0;\n this.digits = digits;\n}, Record);\nexport function BigNat$reflection() {\n return record_type(\"BigInt.BigNat\", [], BigNat, () => [[\"bound\", int32_type], [\"digits\", array_type(int32_type)]]);\n}\nexport function BigNatModule$002EFFT$$$pow32($x$$1, $n$$2) {\n BigNatModule$002EFFT$$$pow32: while (true) {\n const x = $x$$1,\n n = $n$$2;\n\n if (n === 0) {\n return 1;\n } else if (n % 2 === 0) {\n $x$$1 = x * x;\n $n$$2 = ~~(n / 2);\n continue BigNatModule$002EFFT$$$pow32;\n } else {\n return x * BigNatModule$002EFFT$$$pow32(x * x, ~~(n / 2)) | 0;\n }\n\n break;\n }\n}\nexport function BigNatModule$002EFFT$$$leastBounding2Power(b) {\n const findBounding2Power = function findBounding2Power($b$$1$$4, $tp$$5, $i$$6) {\n findBounding2Power: while (true) {\n const b$$1 = $b$$1$$4,\n tp = $tp$$5,\n i = $i$$6;\n\n if (b$$1 <= tp) {\n return [tp, i];\n } else {\n $b$$1$$4 = b$$1;\n $tp$$5 = tp * 2;\n $i$$6 = i + 1;\n continue findBounding2Power;\n }\n\n break;\n }\n };\n\n return findBounding2Power(b, 1, 0);\n}\nexport const BigNatModule$002EFFT$$$p = fromBits(2013265921, 0, false);\nconst BigNatModule$002EFFT$$$patternInput$004075 = [27, 15, 31, 440564289];\nexport const BigNatModule$002EFFT$$$w = BigNatModule$002EFFT$$$patternInput$004075[3];\nexport const BigNatModule$002EFFT$$$m = BigNatModule$002EFFT$$$patternInput$004075[1];\nexport const BigNatModule$002EFFT$$$k = BigNatModule$002EFFT$$$patternInput$004075[0];\nexport const BigNatModule$002EFFT$$$g = BigNatModule$002EFFT$$$patternInput$004075[2];\nexport const BigNatModule$002EFFT$$$primeP = BigNatModule$002EFFT$$$p;\nexport const BigNatModule$002EFFT$$$maxBitsInsideFp = 30;\nexport const BigNatModule$002EFFT$002EFp$$$p = 2013265921;\nexport const BigNatModule$002EFFT$002EFp$$$p64 = fromBits(2013265921, 0, true);\nexport function BigNatModule$002EFFT$002EFp$$$toInt(x$$1) {\n return ~~x$$1;\n}\nexport function BigNatModule$002EFFT$002EFp$$$ofInt32(x$$2) {\n return x$$2 >>> 0;\n}\nexport const BigNatModule$002EFFT$002EFp$$$mzero = 0;\nexport const BigNatModule$002EFFT$002EFp$$$mone = 1;\nexport const BigNatModule$002EFFT$002EFp$$$mtwo = 2;\nexport function BigNatModule$002EFFT$002EFp$$$mpow($x$$3$$9, $n$$1$$10) {\n BigNatModule$002EFFT$002EFp$$$mpow: while (true) {\n const x$$3 = $x$$3$$9,\n n$$1 = $n$$1$$10;\n\n if (n$$1 === 0) {\n return BigNatModule$002EFFT$002EFp$$$mone;\n } else if (n$$1 % 2 === 0) {\n $x$$3$$9 = toInt(op_Modulus(op_Multiply(fromInteger(x$$3, true, 6), fromInteger(x$$3, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n $n$$1$$10 = ~~(n$$1 / 2);\n continue BigNatModule$002EFFT$002EFp$$$mpow;\n } else {\n const y$$2 = BigNatModule$002EFFT$002EFp$$$mpow(toInt(op_Modulus(op_Multiply(fromInteger(x$$3, true, 6), fromInteger(x$$3, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0, ~~(n$$1 / 2));\n return toInt(op_Modulus(op_Multiply(fromInteger(x$$3, true, 6), fromInteger(y$$2, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }\n\n break;\n }\n}\nexport function BigNatModule$002EFFT$002EFp$$$mpowL($x$$7$$11, $n$$2$$12) {\n BigNatModule$002EFFT$002EFp$$$mpowL: while (true) {\n const x$$7 = $x$$7$$11,\n n$$2 = $n$$2$$12;\n\n if (equals(n$$2, fromBits(0, 0, false))) {\n return BigNatModule$002EFFT$002EFp$$$mone;\n } else if (equals(op_Modulus(n$$2, fromBits(2, 0, false)), fromBits(0, 0, false))) {\n $x$$7$$11 = toInt(op_Modulus(op_Multiply(fromInteger(x$$7, true, 6), fromInteger(x$$7, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n $n$$2$$12 = op_Division(n$$2, fromBits(2, 0, false));\n continue BigNatModule$002EFFT$002EFp$$$mpowL;\n } else {\n const y$$5 = BigNatModule$002EFFT$002EFp$$$mpowL(toInt(op_Modulus(op_Multiply(fromInteger(x$$7, true, 6), fromInteger(x$$7, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0, op_Division(n$$2, fromBits(2, 0, false)));\n return toInt(op_Modulus(op_Multiply(fromInteger(x$$7, true, 6), fromInteger(y$$5, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }\n\n break;\n }\n}\nexport function BigNatModule$002EFFT$002EFp$$$m2PowNthRoot(n$$3) {\n return BigNatModule$002EFFT$002EFp$$$mpow(BigNatModule$002EFFT$$$w >>> 0, BigNatModule$002EFFT$$$pow32(2, BigNatModule$002EFFT$$$k - n$$3));\n}\nexport function BigNatModule$002EFFT$002EFp$$$minv(x$$11) {\n return BigNatModule$002EFFT$002EFp$$$mpowL(x$$11, op_Subtraction(BigNatModule$002EFFT$$$primeP, fromBits(2, 0, false)));\n}\nexport function BigNatModule$002EFFT$$$computeFFT(lambda, mu, n$$4, w, u, res, offset) {\n if (n$$4 === 1) {\n res[offset] = u[mu];\n } else {\n const halfN = ~~(n$$4 / 2) | 0;\n const ww = toInt(op_Modulus(op_Multiply(fromInteger(w, true, 6), fromInteger(w, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n const offsetHalfN = offset + halfN | 0;\n BigNatModule$002EFFT$$$computeFFT(lambda * 2, mu, halfN, ww, u, res, offset);\n BigNatModule$002EFFT$$$computeFFT(lambda * 2, lambda + mu, halfN, ww, u, res, offsetHalfN);\n let wj = BigNatModule$002EFFT$002EFp$$$mone;\n\n for (let j = 0; j <= halfN - 1; j++) {\n const even = res[offset + j];\n const odd = res[offsetHalfN + j];\n let y$$8;\n const x$$13 = wj;\n y$$8 = toInt(op_Modulus(op_Multiply(fromInteger(x$$13, true, 6), fromInteger(odd, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n res[offset + j] = (even + y$$8) % BigNatModule$002EFFT$002EFp$$$p;\n let y$$10;\n const x$$15 = wj;\n y$$10 = toInt(op_Modulus(op_Multiply(fromInteger(x$$15, true, 6), fromInteger(odd, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n res[offsetHalfN + j] = (even + BigNatModule$002EFFT$002EFp$$$p - y$$10) % BigNatModule$002EFFT$002EFp$$$p;\n const y$$11 = wj;\n wj = toInt(op_Modulus(op_Multiply(fromInteger(w, true, 6), fromInteger(y$$11, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }\n }\n}\nexport function BigNatModule$002EFFT$$$computFftInPlace(n$$5, w$$1, u$$1) {\n const res$$1 = fill(new Uint32Array(n$$5), 0, n$$5, BigNatModule$002EFFT$002EFp$$$mzero);\n BigNatModule$002EFFT$$$computeFFT(1, 0, n$$5, w$$1, u$$1, res$$1, 0);\n return res$$1;\n}\nexport function BigNatModule$002EFFT$$$computeInverseFftInPlace(n$$6, w$$2, uT) {\n const bigKInv = BigNatModule$002EFFT$002EFp$$$minv(n$$6 >>> 0);\n return map(function (y$$12) {\n return toInt(op_Modulus(op_Multiply(fromInteger(bigKInv, true, 6), fromInteger(y$$12, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }, BigNatModule$002EFFT$$$computFftInPlace(n$$6, BigNatModule$002EFFT$002EFp$$$minv(w$$2), uT), Uint32Array);\n}\nexport const BigNatModule$002EFFT$$$maxTwoPower = 29;\nexport const BigNatModule$002EFFT$$$twoPowerTable = initialize(BigNatModule$002EFFT$$$maxTwoPower - 1, function (i$$1) {\n return BigNatModule$002EFFT$$$pow32(2, i$$1);\n}, Int32Array);\nexport function BigNatModule$002EFFT$$$computeFftPaddedPolynomialProduct(bigK, k, u$$2, v) {\n const w$$3 = BigNatModule$002EFFT$002EFp$$$m2PowNthRoot(k);\n const uT$$1 = BigNatModule$002EFFT$$$computFftInPlace(bigK, w$$3, u$$2);\n const vT = BigNatModule$002EFFT$$$computFftInPlace(bigK, w$$3, v);\n const rT = initialize(bigK, function (i$$2) {\n const x$$19 = uT$$1[i$$2];\n const y$$14 = vT[i$$2];\n return toInt(op_Modulus(op_Multiply(fromInteger(x$$19, true, 6), fromInteger(y$$14, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }, Uint32Array);\n const r = BigNatModule$002EFFT$$$computeInverseFftInPlace(bigK, w$$3, rT);\n return r;\n}\nexport function BigNatModule$002EFFT$$$padTo(n$$8, u$$3) {\n const uBound = u$$3.length | 0;\n return initialize(n$$8, function (i$$3) {\n return i$$3 < uBound ? BigNatModule$002EFFT$002EFp$$$ofInt32(u$$3[i$$3]) : BigNatModule$002EFFT$002EFp$$$mzero;\n }, Uint32Array);\n}\nexport function BigNatModule$002EFFT$$$computeFftPolynomialProduct(degu, u$$4, degv, v$$1) {\n const deguv = degu + degv | 0;\n const bound = deguv + 1 | 0;\n const patternInput = BigNatModule$002EFFT$$$leastBounding2Power(bound);\n const w$$4 = BigNatModule$002EFFT$002EFp$$$m2PowNthRoot(patternInput[1]);\n const u$$5 = BigNatModule$002EFFT$$$padTo(patternInput[0], u$$4);\n const v$$2 = BigNatModule$002EFFT$$$padTo(patternInput[0], v$$1);\n const uT$$2 = BigNatModule$002EFFT$$$computFftInPlace(patternInput[0], w$$4, u$$5);\n const vT$$1 = BigNatModule$002EFFT$$$computFftInPlace(patternInput[0], w$$4, v$$2);\n const rT$$1 = initialize(patternInput[0], function (i$$4) {\n const x$$20 = uT$$2[i$$4];\n const y$$15 = vT$$1[i$$4];\n return toInt(op_Modulus(op_Multiply(fromInteger(x$$20, true, 6), fromInteger(y$$15, true, 6)), BigNatModule$002EFFT$002EFp$$$p64)) >>> 0;\n }, Uint32Array);\n const r$$1 = BigNatModule$002EFFT$$$computeInverseFftInPlace(patternInput[0], w$$4, rT$$1);\n return map(BigNatModule$002EFFT$002EFp$$$toInt, r$$1, Int32Array);\n}\nexport const BigNatModule$002EFFT$$$mzero = BigNatModule$002EFFT$002EFp$$$mzero;\nexport const BigNatModule$002EFFT$$$mone = BigNatModule$002EFFT$002EFp$$$mone;\nexport const BigNatModule$002EFFT$$$maxFp = (BigNatModule$002EFFT$002EFp$$$p + BigNatModule$002EFFT$002EFp$$$p - BigNatModule$002EFFT$$$mone) % BigNatModule$002EFFT$002EFp$$$p;\nexport function BigNatModule$$$bound(n$$10) {\n return n$$10.bound;\n}\nexport function BigNatModule$$$setBound(n$$11, v$$3) {\n n$$11.bound = v$$3;\n}\nexport function BigNatModule$$$coeff(n$$12, i$$5) {\n return n$$12.digits[i$$5];\n}\nexport function BigNatModule$$$coeff64(n$$13, i$$6) {\n return fromInteger(BigNatModule$$$coeff(n$$13, i$$6), false, 2);\n}\nexport function BigNatModule$$$setCoeff(n$$14, i$$7, v$$4) {\n n$$14.digits[i$$7] = v$$4;\n}\nexport function BigNatModule$$$pow64($x$$23$$48, $n$$15$$49) {\n BigNatModule$$$pow64: while (true) {\n const x$$23 = $x$$23$$48,\n n$$15 = $n$$15$$49;\n\n if (n$$15 === 0) {\n return fromBits(1, 0, false);\n } else if (n$$15 % 2 === 0) {\n $x$$23$$48 = op_Multiply(x$$23, x$$23);\n $n$$15$$49 = ~~(n$$15 / 2);\n continue BigNatModule$$$pow64;\n } else {\n return op_Multiply(x$$23, BigNatModule$$$pow64(op_Multiply(x$$23, x$$23), ~~(n$$15 / 2)));\n }\n\n break;\n }\n}\nexport function BigNatModule$$$pow32($x$$24$$50, $n$$16$$51) {\n BigNatModule$$$pow32: while (true) {\n const x$$24 = $x$$24$$50,\n n$$16 = $n$$16$$51;\n\n if (n$$16 === 0) {\n return 1;\n } else if (n$$16 % 2 === 0) {\n $x$$24$$50 = x$$24 * x$$24;\n $n$$16$$51 = ~~(n$$16 / 2);\n continue BigNatModule$$$pow32;\n } else {\n return x$$24 * BigNatModule$$$pow32(x$$24 * x$$24, ~~(n$$16 / 2)) | 0;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$hash(n$$17) {\n let res$$2 = 0;\n\n for (let i$$8 = 0; i$$8 <= n$$17.bound - 1; i$$8++) {\n res$$2 = n$$17.digits[i$$8] + (res$$2 << 3);\n }\n\n return res$$2 | 0;\n}\nexport function BigNatModule$$$maxInt(a, b$$2) {\n if (a < b$$2) {\n return b$$2 | 0;\n } else {\n return a | 0;\n }\n}\nexport function BigNatModule$$$minInt(a$$1, b$$3) {\n if (a$$1 < b$$3) {\n return a$$1 | 0;\n } else {\n return b$$3 | 0;\n }\n}\nexport const BigNatModule$$$baseBits = 24;\nexport const BigNatModule$$$baseN = 16777216;\nexport const BigNatModule$$$baseMask = 16777215;\nexport const BigNatModule$$$baseNi64 = fromBits(16777216, 0, false);\nexport const BigNatModule$$$baseMaski64 = fromBits(16777215, 0, false);\nexport const BigNatModule$$$baseMaskU = fromBits(16777215, 0, true);\nexport const BigNatModule$$$baseMask32A = 16777215;\nexport const BigNatModule$$$baseMask32B = 255;\nexport const BigNatModule$$$baseShift32B = 24;\nexport const BigNatModule$$$baseMask64A = 16777215;\nexport const BigNatModule$$$baseMask64B = 16777215;\nexport const BigNatModule$$$baseMask64C = 65535;\nexport const BigNatModule$$$baseShift64B = 24;\nexport const BigNatModule$$$baseShift64C = 48;\nexport function BigNatModule$$$divbase(x$$25) {\n return ~~(x$$25 >>> 0 >>> BigNatModule$$$baseBits);\n}\nexport function BigNatModule$$$modbase(x$$26) {\n return x$$26 & BigNatModule$$$baseMask;\n}\nexport function BigNatModule$$$createN(b$$4) {\n return new BigNat(b$$4, new Int32Array(b$$4));\n}\nexport function BigNatModule$$$copyN(x$$27) {\n return new BigNat(x$$27.bound, copy(x$$27.digits, Int32Array));\n}\nexport function BigNatModule$$$normN(n$$18) {\n const findLeastBound = function findLeastBound($na$$62, $i$$9$$63) {\n findLeastBound: while (true) {\n const na = $na$$62,\n i$$9 = $i$$9$$63;\n\n if (i$$9 === -1 ? true : na[i$$9] !== 0) {\n return i$$9 + 1 | 0;\n } else {\n $na$$62 = na;\n $i$$9$$63 = i$$9 - 1;\n continue findLeastBound;\n }\n\n break;\n }\n };\n\n const bound$$1 = findLeastBound(n$$18.digits, n$$18.bound - 1) | 0;\n n$$18.bound = bound$$1;\n return n$$18;\n}\nexport const BigNatModule$$$boundInt = 2;\nexport const BigNatModule$$$boundInt64 = 3;\nexport const BigNatModule$$$boundBase = 1;\nexport function BigNatModule$$$embed(x$$28) {\n const x$$29 = (x$$28 < 0 ? 0 : x$$28) | 0;\n\n if (x$$29 < BigNatModule$$$baseN) {\n const r$$2 = BigNatModule$$$createN(1);\n r$$2.digits[0] = x$$29;\n return BigNatModule$$$normN(r$$2);\n } else {\n const r$$3 = BigNatModule$$$createN(BigNatModule$$$boundInt);\n\n for (let i$$10 = 0; i$$10 <= BigNatModule$$$boundInt - 1; i$$10++) {\n r$$3.digits[i$$10] = ~~(x$$29 / BigNatModule$$$pow32(BigNatModule$$$baseN, i$$10)) % BigNatModule$$$baseN;\n }\n\n return BigNatModule$$$normN(r$$3);\n }\n}\nexport function BigNatModule$$$embed64(x$$30) {\n const x$$31 = compare(x$$30, fromBits(0, 0, false)) < 0 ? fromBits(0, 0, false) : x$$30;\n const r$$4 = BigNatModule$$$createN(BigNatModule$$$boundInt64);\n\n for (let i$$11 = 0; i$$11 <= BigNatModule$$$boundInt64 - 1; i$$11++) {\n r$$4.digits[i$$11] = ~~toInt(op_Modulus(op_Division(x$$31, BigNatModule$$$pow64(BigNatModule$$$baseNi64, i$$11)), BigNatModule$$$baseNi64));\n }\n\n return BigNatModule$$$normN(r$$4);\n}\nexport function BigNatModule$$$eval32(n$$19) {\n if (n$$19.bound === 1) {\n return n$$19.digits[0] | 0;\n } else {\n let acc = 0;\n\n for (let i$$12 = n$$19.bound - 1; i$$12 >= 0; i$$12--) {\n acc = n$$19.digits[i$$12] + BigNatModule$$$baseN * acc;\n }\n\n return acc | 0;\n }\n}\nexport function BigNatModule$$$eval64(n$$20) {\n if (n$$20.bound === 1) {\n return fromInteger(n$$20.digits[0], false, 2);\n } else {\n let acc$$1 = fromBits(0, 0, false);\n\n for (let i$$13 = n$$20.bound - 1; i$$13 >= 0; i$$13--) {\n acc$$1 = op_Addition(fromInteger(n$$20.digits[i$$13], false, 2), op_Multiply(BigNatModule$$$baseNi64, acc$$1));\n }\n\n return acc$$1;\n }\n}\nexport const BigNatModule$$$one = BigNatModule$$$embed(1);\nexport const BigNatModule$$$zero = BigNatModule$$$embed(0);\nexport function BigNatModule$$$restrictTo(d, n$$21) {\n return new BigNat(BigNatModule$$$minInt(d, n$$21.bound), n$$21.digits);\n}\nexport function BigNatModule$$$shiftUp(d$$1, n$$22) {\n const m = BigNatModule$$$createN(n$$22.bound + d$$1);\n\n for (let i$$14 = 0; i$$14 <= n$$22.bound - 1; i$$14++) {\n m.digits[i$$14 + d$$1] = n$$22.digits[i$$14];\n }\n\n return m;\n}\nexport function BigNatModule$$$shiftDown(d$$2, n$$23) {\n if (n$$23.bound - d$$2 <= 0) {\n return BigNatModule$$$zero;\n } else {\n const m$$1 = BigNatModule$$$createN(n$$23.bound - d$$2);\n\n for (let i$$15 = 0; i$$15 <= m$$1.bound - 1; i$$15++) {\n m$$1.digits[i$$15] = n$$23.digits[i$$15 + d$$2];\n }\n\n return m$$1;\n }\n}\nexport function BigNatModule$$$degree(n$$24) {\n return n$$24.bound - 1;\n}\nexport function BigNatModule$$$addP($i$$16$$75, $n$$25$$76, $c$$77, $p$$78, $q$$79, $r$$5$$80) {\n BigNatModule$$$addP: while (true) {\n const i$$16 = $i$$16$$75,\n n$$25 = $n$$25$$76,\n c = $c$$77,\n p = $p$$78,\n q = $q$$79,\n r$$5 = $r$$5$$80;\n\n if (i$$16 < n$$25) {\n const x$$32 = (i$$16 < p.bound ? p.digits[i$$16] : 0) + (i$$16 < q.bound ? q.digits[i$$16] : 0) + c | 0;\n r$$5.digits[i$$16] = BigNatModule$$$modbase(x$$32);\n const c$$1 = BigNatModule$$$divbase(x$$32) | 0;\n $i$$16$$75 = i$$16 + 1;\n $n$$25$$76 = n$$25;\n $c$$77 = c$$1;\n $p$$78 = p;\n $q$$79 = q;\n $r$$5$$80 = r$$5;\n continue BigNatModule$$$addP;\n } else {\n void null;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$add(p$$1, q$$1) {\n const rbound = 1 + BigNatModule$$$maxInt(p$$1.bound, q$$1.bound) | 0;\n const r$$6 = BigNatModule$$$createN(rbound);\n BigNatModule$$$addP(0, rbound, 0, p$$1, q$$1, r$$6);\n return BigNatModule$$$normN(r$$6);\n}\nexport function BigNatModule$$$subP($i$$19$$83, $n$$26$$84, $c$$2$$85, $p$$2$$86, $q$$2$$87, $r$$7$$88) {\n BigNatModule$$$subP: while (true) {\n const i$$19 = $i$$19$$83,\n n$$26 = $n$$26$$84,\n c$$2 = $c$$2$$85,\n p$$2 = $p$$2$$86,\n q$$2 = $q$$2$$87,\n r$$7 = $r$$7$$88;\n\n if (i$$19 < n$$26) {\n const x$$33 = (i$$19 < p$$2.bound ? p$$2.digits[i$$19] : 0) - (i$$19 < q$$2.bound ? q$$2.digits[i$$19] : 0) + c$$2 | 0;\n\n if (x$$33 > 0) {\n r$$7.digits[i$$19] = BigNatModule$$$modbase(x$$33);\n const c$$3 = BigNatModule$$$divbase(x$$33) | 0;\n $i$$19$$83 = i$$19 + 1;\n $n$$26$$84 = n$$26;\n $c$$2$$85 = c$$3;\n $p$$2$$86 = p$$2;\n $q$$2$$87 = q$$2;\n $r$$7$$88 = r$$7;\n continue BigNatModule$$$subP;\n } else {\n const x$$34 = x$$33 + BigNatModule$$$baseN | 0;\n r$$7.digits[i$$19] = BigNatModule$$$modbase(x$$34);\n const c$$4 = BigNatModule$$$divbase(x$$34) - 1 | 0;\n $i$$19$$83 = i$$19 + 1;\n $n$$26$$84 = n$$26;\n $c$$2$$85 = c$$4;\n $p$$2$$86 = p$$2;\n $q$$2$$87 = q$$2;\n $r$$7$$88 = r$$7;\n continue BigNatModule$$$subP;\n }\n } else {\n const underflow = c$$2 !== 0;\n return underflow;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$sub(p$$3, q$$3) {\n const rbound$$1 = BigNatModule$$$maxInt(p$$3.bound, q$$3.bound) | 0;\n const r$$8 = BigNatModule$$$createN(rbound$$1);\n const underflow$$1 = BigNatModule$$$subP(0, rbound$$1, 0, p$$3, q$$3, r$$8);\n\n if (underflow$$1) {\n return BigNatModule$$$embed(0);\n } else {\n return BigNatModule$$$normN(r$$8);\n }\n}\nexport function BigNatModule$$$isZero(p$$4) {\n return p$$4.bound === 0;\n}\nexport function BigNatModule$$$IsZero(p$$5) {\n return BigNatModule$$$isZero(p$$5);\n}\nexport function BigNatModule$$$isOne(p$$6) {\n if (p$$6.bound === 1) {\n return p$$6.digits[0] === 1;\n } else {\n return false;\n }\n}\nexport function BigNatModule$$$equal(p$$7, q$$4) {\n if (p$$7.bound === q$$4.bound) {\n const check = function check($pa$$96, $qa$$97, $i$$22$$98) {\n check: while (true) {\n const pa = $pa$$96,\n qa = $qa$$97,\n i$$22 = $i$$22$$98;\n\n if (i$$22 === -1) {\n return true;\n } else if (pa[i$$22] === qa[i$$22]) {\n $pa$$96 = pa;\n $qa$$97 = qa;\n $i$$22$$98 = i$$22 - 1;\n continue check;\n } else {\n return false;\n }\n\n break;\n }\n };\n\n return check(p$$7.digits, q$$4.digits, p$$7.bound - 1);\n } else {\n return false;\n }\n}\nexport function BigNatModule$$$shiftCompare(p$$8, pn, q$$5, qn) {\n if (p$$8.bound + pn < q$$5.bound + qn) {\n return -1 | 0;\n } else if (p$$8.bound + pn > q$$5.bound + pn) {\n return 1;\n } else {\n const check$$1 = function check$$1($pa$$1$$103, $qa$$1$$104, $i$$23$$105) {\n check$$1: while (true) {\n const pa$$1 = $pa$$1$$103,\n qa$$1 = $qa$$1$$104,\n i$$23 = $i$$23$$105;\n\n if (i$$23 === -1) {\n return 0;\n } else {\n const pai = (i$$23 < pn ? 0 : pa$$1[i$$23 - pn]) | 0;\n const qai = (i$$23 < qn ? 0 : qa$$1[i$$23 - qn]) | 0;\n\n if (pai === qai) {\n $pa$$1$$103 = pa$$1;\n $qa$$1$$104 = qa$$1;\n $i$$23$$105 = i$$23 - 1;\n continue check$$1;\n } else if (pai < qai) {\n return -1 | 0;\n } else {\n return 1;\n }\n }\n\n break;\n }\n };\n\n return check$$1(p$$8.digits, q$$5.digits, p$$8.bound + pn - 1) | 0;\n }\n}\nexport function BigNatModule$$$compare(p$$9, q$$6) {\n if (p$$9.bound < q$$6.bound) {\n return -1 | 0;\n } else if (p$$9.bound > q$$6.bound) {\n return 1;\n } else {\n const check$$2 = function check$$2($pa$$2$$108, $qa$$2$$109, $i$$24$$110) {\n check$$2: while (true) {\n const pa$$2 = $pa$$2$$108,\n qa$$2 = $qa$$2$$109,\n i$$24 = $i$$24$$110;\n\n if (i$$24 === -1) {\n return 0;\n } else if (pa$$2[i$$24] === qa$$2[i$$24]) {\n $pa$$2$$108 = pa$$2;\n $qa$$2$$109 = qa$$2;\n $i$$24$$110 = i$$24 - 1;\n continue check$$2;\n } else if (pa$$2[i$$24] < qa$$2[i$$24]) {\n return -1 | 0;\n } else {\n return 1;\n }\n\n break;\n }\n };\n\n return check$$2(p$$9.digits, q$$6.digits, p$$9.bound - 1) | 0;\n }\n}\nexport function BigNatModule$$$lt(p$$10, q$$7) {\n return BigNatModule$$$compare(p$$10, q$$7) === -1;\n}\nexport function BigNatModule$$$gt(p$$11, q$$8) {\n return BigNatModule$$$compare(p$$11, q$$8) === 1;\n}\nexport function BigNatModule$$$lte(p$$12, q$$9) {\n return BigNatModule$$$compare(p$$12, q$$9) !== 1;\n}\nexport function BigNatModule$$$gte(p$$13, q$$10) {\n return BigNatModule$$$compare(p$$13, q$$10) !== -1;\n}\nexport function BigNatModule$$$min(a$$2, b$$5) {\n if (BigNatModule$$$lt(a$$2, b$$5)) {\n return a$$2;\n } else {\n return b$$5;\n }\n}\nexport function BigNatModule$$$max(a$$3, b$$6) {\n if (BigNatModule$$$lt(a$$3, b$$6)) {\n return b$$6;\n } else {\n return a$$3;\n }\n}\nexport function BigNatModule$$$contributeArr($a$$4$$123, $i$$25$$124, $c$$5$$125) {\n BigNatModule$$$contributeArr: while (true) {\n const a$$4 = $a$$4$$123,\n i$$25 = $i$$25$$124,\n c$$5 = $c$$5$$125;\n const x$$35 = op_Addition(fromInteger(a$$4[i$$25], false, 2), c$$5);\n const c$$6 = op_Division(x$$35, BigNatModule$$$baseNi64);\n let x$$38;\n const value = op_BitwiseAnd(x$$35, BigNatModule$$$baseMaski64);\n x$$38 = ~~toInt(value);\n a$$4[i$$25] = x$$38;\n\n if (compare(c$$6, fromBits(0, 0, false)) > 0) {\n $a$$4$$123 = a$$4;\n $i$$25$$124 = i$$25 + 1;\n $c$$5$$125 = c$$6;\n continue BigNatModule$$$contributeArr;\n } else {\n void null;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$scale(k$$2, p$$14) {\n const rbound$$2 = p$$14.bound + BigNatModule$$$boundInt | 0;\n const r$$9 = BigNatModule$$$createN(rbound$$2);\n const k$$3 = fromInteger(k$$2, false, 2);\n\n for (let i$$26 = 0; i$$26 <= p$$14.bound - 1; i$$26++) {\n const kpi = op_Multiply(k$$3, fromInteger(p$$14.digits[i$$26], false, 2));\n BigNatModule$$$contributeArr(r$$9.digits, i$$26, kpi);\n }\n\n return BigNatModule$$$normN(r$$9);\n}\nexport function BigNatModule$$$mulSchoolBookBothSmall(p$$15, q$$11) {\n var value$$1;\n const r$$11 = BigNatModule$$$createN(2);\n const rak = op_Multiply(fromInteger(p$$15, false, 2), fromInteger(q$$11, false, 2));\n BigNatModule$$$setCoeff(r$$11, 0, (value$$1 = op_BitwiseAnd(rak, BigNatModule$$$baseMaski64), (~~toInt(value$$1))));\n BigNatModule$$$setCoeff(r$$11, 1, ~~toInt(op_Division(rak, BigNatModule$$$baseNi64)));\n return BigNatModule$$$normN(r$$11);\n}\nexport function BigNatModule$$$mulSchoolBookCarry($r$$12$$130, $c$$8$$131, $k$$4$$132) {\n var value$$2;\n\n BigNatModule$$$mulSchoolBookCarry: while (true) {\n const r$$12 = $r$$12$$130,\n c$$8 = $c$$8$$131,\n k$$4 = $k$$4$$132;\n\n if (compare(c$$8, fromBits(0, 0, false)) > 0) {\n const rak$$1 = op_Addition(BigNatModule$$$coeff64(r$$12, k$$4), c$$8);\n BigNatModule$$$setCoeff(r$$12, k$$4, (value$$2 = op_BitwiseAnd(rak$$1, BigNatModule$$$baseMaski64), (~~toInt(value$$2))));\n $r$$12$$130 = r$$12;\n $c$$8$$131 = op_Division(rak$$1, BigNatModule$$$baseNi64);\n $k$$4$$132 = k$$4 + 1;\n continue BigNatModule$$$mulSchoolBookCarry;\n } else {\n void null;\n }\n\n break;\n }\n}\nexport function BigNatModule$$$mulSchoolBookOneSmall(p$$16, q$$12) {\n var value$$3;\n const bp = BigNatModule$$$bound(p$$16) | 0;\n const rbound$$3 = bp + 1 | 0;\n const r$$13 = BigNatModule$$$createN(rbound$$3);\n const q$$13 = fromInteger(q$$12, false, 2);\n let c$$9 = fromBits(0, 0, false);\n\n for (let i$$28 = 0; i$$28 <= bp - 1; i$$28++) {\n const rak$$2 = op_Addition(op_Addition(c$$9, BigNatModule$$$coeff64(r$$13, i$$28)), op_Multiply(BigNatModule$$$coeff64(p$$16, i$$28), q$$13));\n BigNatModule$$$setCoeff(r$$13, i$$28, (value$$3 = op_BitwiseAnd(rak$$2, BigNatModule$$$baseMaski64), (~~toInt(value$$3))));\n c$$9 = op_Division(rak$$2, BigNatModule$$$baseNi64);\n }\n\n BigNatModule$$$mulSchoolBookCarry(r$$13, c$$9, bp);\n return BigNatModule$$$normN(r$$13);\n}\nexport function BigNatModule$$$mulSchoolBookNeitherSmall(p$$17, q$$14) {\n var value$$4;\n const rbound$$4 = p$$17.bound + q$$14.bound | 0;\n const r$$14 = BigNatModule$$$createN(rbound$$4);\n\n for (let i$$29 = 0; i$$29 <= p$$17.bound - 1; i$$29++) {\n const pai$$1 = fromInteger(p$$17.digits[i$$29], false, 2);\n let c$$10 = fromBits(0, 0, false);\n let k$$5 = i$$29 | 0;\n\n for (let j$$1 = 0; j$$1 <= q$$14.bound - 1; j$$1++) {\n const qaj = fromInteger(q$$14.digits[j$$1], false, 2);\n const rak$$3 = op_Addition(op_Addition(fromInteger(r$$14.digits[k$$5], false, 2), c$$10), op_Multiply(pai$$1, qaj));\n r$$14.digits[k$$5] = (value$$4 = op_BitwiseAnd(rak$$3, BigNatModule$$$baseMaski64), (~~toInt(value$$4)));\n c$$10 = op_Division(rak$$3, BigNatModule$$$baseNi64);\n k$$5 = k$$5 + 1;\n }\n\n BigNatModule$$$mulSchoolBookCarry(r$$14, c$$10, k$$5);\n }\n\n return BigNatModule$$$normN(r$$14);\n}\nexport function BigNatModule$$$mulSchoolBook(p$$18, q$$15) {\n const pSmall = BigNatModule$$$bound(p$$18) === 1;\n const qSmall = BigNatModule$$$bound(q$$15) === 1;\n\n if (pSmall ? qSmall : false) {\n return BigNatModule$$$mulSchoolBookBothSmall(BigNatModule$$$coeff(p$$18, 0), BigNatModule$$$coeff(q$$15, 0));\n } else if (pSmall) {\n return BigNatModule$$$mulSchoolBookOneSmall(q$$15, BigNatModule$$$coeff(p$$18, 0));\n } else if (qSmall) {\n return BigNatModule$$$mulSchoolBookOneSmall(p$$18, BigNatModule$$$coeff(q$$15, 0));\n } else {\n return BigNatModule$$$mulSchoolBookNeitherSmall(p$$18, q$$15);\n }\n}\nexport const BigNatModule$002Eencoding = declare(function BigInt_BigNatModule_encoding(bigL, twoToBigL, k, bigK, bigN, split, splits) {\n this.bigL = bigL | 0;\n this.twoToBigL = twoToBigL | 0;\n this.k = k | 0;\n this.bigK = bigK | 0;\n this.bigN = bigN | 0;\n this.split = split | 0;\n this.splits = splits;\n}, Record);\nexport function BigNatModule$002Eencoding$reflection() {\n return record_type(\"BigInt.BigNatModule.encoding\", [], BigNatModule$002Eencoding, () => [[\"bigL\", int32_type], [\"twoToBigL\", int32_type], [\"k\", int32_type], [\"bigK\", int32_type], [\"bigN\", int32_type], [\"split\", int32_type], [\"splits\", array_type(int32_type)]]);\n}\nexport function BigNatModule$$$mkEncoding(bigL, k$$6, bigK$$2, bigN) {\n return new BigNatModule$002Eencoding(bigL, BigNatModule$$$pow32(2, bigL), k$$6, bigK$$2, bigN, ~~(BigNatModule$$$baseBits / bigL), initialize(~~(BigNatModule$$$baseBits / bigL), function (i$$30) {\n return BigNatModule$$$pow32(2, bigL * i$$30);\n }, Int32Array));\n}\nexport const BigNatModule$$$table = [BigNatModule$$$mkEncoding(1, 28, 268435456, 268435456), BigNatModule$$$mkEncoding(2, 26, 67108864, 134217728), BigNatModule$$$mkEncoding(3, 24, 16777216, 50331648), BigNatModule$$$mkEncoding(4, 22, 4194304, 16777216), BigNatModule$$$mkEncoding(5, 20, 1048576, 5242880), BigNatModule$$$mkEncoding(6, 18, 262144, 1572864), BigNatModule$$$mkEncoding(7, 16, 65536, 458752), BigNatModule$$$mkEncoding(8, 14, 16384, 131072), BigNatModule$$$mkEncoding(9, 12, 4096, 36864), BigNatModule$$$mkEncoding(10, 10, 1024, 10240), BigNatModule$$$mkEncoding(11, 8, 256, 2816), BigNatModule$$$mkEncoding(12, 6, 64, 768), BigNatModule$$$mkEncoding(13, 4, 16, 208)];\nexport function BigNatModule$$$calculateTableTow(bigL$$1) {\n const k$$7 = BigNatModule$002EFFT$$$maxBitsInsideFp - 2 * bigL$$1 | 0;\n const bigK$$3 = BigNatModule$$$pow64(fromBits(2, 0, false), k$$7);\n const N = op_Multiply(bigK$$3, fromInteger(bigL$$1, false, 2));\n return [bigL$$1, k$$7, bigK$$3, N];\n}\nexport function BigNatModule$$$encodingGivenResultBits(bitsRes) {\n const selectFrom = function selectFrom($i$$31$$145) {\n selectFrom: while (true) {\n const i$$31 = $i$$31$$145;\n\n if (i$$31 + 1 < BigNatModule$$$table.length ? bitsRes < BigNatModule$$$table[i$$31 + 1].bigN : false) {\n $i$$31$$145 = i$$31 + 1;\n continue selectFrom;\n } else {\n return BigNatModule$$$table[i$$31];\n }\n\n break;\n }\n };\n\n if (bitsRes >= BigNatModule$$$table[0].bigN) {\n throw new Error(\"Product is huge, around 268435456 bits, beyond quickmul\");\n } else {\n return selectFrom(0);\n }\n}\nexport const BigNatModule$$$bitmask = initialize(BigNatModule$$$baseBits, function (i$$32) {\n return BigNatModule$$$pow32(2, i$$32) - 1;\n}, Int32Array);\nexport const BigNatModule$$$twopowers = initialize(BigNatModule$$$baseBits, function (i$$33) {\n return BigNatModule$$$pow32(2, i$$33);\n}, Int32Array);\nexport const BigNatModule$$$twopowersI64 = initialize(BigNatModule$$$baseBits, function (i$$34) {\n return BigNatModule$$$pow64(fromBits(2, 0, false), i$$34);\n}, Array);\nexport function BigNatModule$$$wordBits(word) {\n const hi = function hi($k$$8$$147) {\n hi: while (true) {\n const k$$8 = $k$$8$$147;\n\n if (k$$8 === 0) {\n return 0;\n } else if ((word & BigNatModule$$$twopowers[k$$8 - 1]) !== 0) {\n return k$$8 | 0;\n } else {\n $k$$8$$147 = k$$8 - 1;\n continue hi;\n }\n\n break;\n }\n };\n\n return hi(BigNatModule$$$baseBits) | 0;\n}\nexport function BigNatModule$$$bits(u$$6) {\n if (u$$6.bound === 0) {\n return 0;\n } else {\n return BigNatModule$$$degree(u$$6) * BigNatModule$$$baseBits + BigNatModule$$$wordBits(u$$6.digits[BigNatModule$$$degree(u$$6)]) | 0;\n }\n}\nexport function BigNatModule$$$extractBits(n$$27, enc, bi) {\n const bj = bi + enc.bigL - 1 | 0;\n const biw = ~~(bi / BigNatModule$$$baseBits) | 0;\n const bjw = ~~(bj / BigNatModule$$$baseBits) | 0;\n\n if (biw !== bjw) {\n const x$$47 = (biw < n$$27.bound ? n$$27.digits[biw] : 0) | 0;\n const y$$17 = (bjw < n$$27.bound ? n$$27.digits[bjw] : 0) | 0;\n const xbit = bi % BigNatModule$$$baseBits | 0;\n const nxbits = BigNatModule$$$baseBits - xbit | 0;\n const x$$48 = x$$47 >> xbit | 0;\n const y$$18 = y$$17 << nxbits | 0;\n const x$$49 = x$$48 | y$$18 | 0;\n const x$$50 = x$$49 & BigNatModule$$$bitmask[enc.bigL] | 0;\n return x$$50 | 0;\n } else {\n const x$$51 = (biw < n$$27.bound ? n$$27.digits[biw] : 0) | 0;\n const xbit$$1 = bi % BigNatModule$$$baseBits | 0;\n const x$$52 = x$$51 >> xbit$$1 | 0;\n const x$$53 = x$$52 & BigNatModule$$$bitmask[enc.bigL] | 0;\n return x$$53 | 0;\n }\n}\nexport function BigNatModule$$$encodePoly(enc$$1, n$$28) {\n const poly = fill(new Uint32Array(enc$$1.bigK), 0, enc$$1.bigK, BigNatModule$002EFFT$002EFp$$$ofInt32(0));\n const biMax = n$$28.bound * BigNatModule$$$baseBits | 0;\n\n const encoder = function encoder($i$$38$$154, $bi$$1$$155) {\n encoder: while (true) {\n const i$$38 = $i$$38$$154,\n bi$$1 = $bi$$1$$155;\n\n if (i$$38 === enc$$1.bigK ? true : bi$$1 > biMax) {\n void null;\n } else {\n const pi = BigNatModule$$$extractBits(n$$28, enc$$1, bi$$1) | 0;\n poly[i$$38] = BigNatModule$002EFFT$002EFp$$$ofInt32(pi);\n const i$$39 = i$$38 + 1 | 0;\n const bi$$2 = bi$$1 + enc$$1.bigL | 0;\n $i$$38$$154 = i$$39;\n $bi$$1$$155 = bi$$2;\n continue encoder;\n }\n\n break;\n }\n };\n\n encoder(0, 0);\n return poly;\n}\nexport function BigNatModule$$$decodeResultBits(enc$$2, poly$$1) {\n let n$$29 = 0;\n\n for (let i$$40 = 0; i$$40 <= poly$$1.length - 1; i$$40++) {\n if (poly$$1[i$$40] !== BigNatModule$002EFFT$$$mzero) {\n n$$29 = i$$40;\n } else {\n void null;\n }\n }\n\n const rbits = BigNatModule$002EFFT$$$maxBitsInsideFp + enc$$2.bigL * n$$29 + 1 | 0;\n return rbits + 1 | 0;\n}\nexport function BigNatModule$$$decodePoly(enc$$3, poly$$2) {\n const rbound$$5 = ~~(BigNatModule$$$decodeResultBits(enc$$3, poly$$2) / BigNatModule$$$baseBits) + 1 | 0;\n const r$$15 = BigNatModule$$$createN(rbound$$5);\n\n const evaluate = function evaluate($i$$41$$160, $j$$2$$161, $d$$3$$162) {\n evaluate: while (true) {\n const i$$41 = $i$$41$$160,\n j$$2 = $j$$2$$161,\n d$$3 = $d$$3$$162;\n\n if (i$$41 === enc$$3.bigK) {\n void null;\n } else {\n if (j$$2 >= rbound$$5) {\n void null;\n } else {\n const x$$54 = op_Multiply(fromInteger(BigNatModule$002EFFT$002EFp$$$toInt(poly$$2[i$$41]), false, 2), BigNatModule$$$twopowersI64[d$$3]);\n BigNatModule$$$contributeArr(r$$15.digits, j$$2, x$$54);\n }\n\n const i$$43 = i$$41 + 1 | 0;\n const d$$4 = d$$3 + enc$$3.bigL | 0;\n const patternInput$$1 = d$$4 >= BigNatModule$$$baseBits ? [j$$2 + 1, d$$4 - BigNatModule$$$baseBits] : [j$$2, d$$4];\n $i$$41$$160 = i$$43;\n $j$$2$$161 = patternInput$$1[0];\n $d$$3$$162 = patternInput$$1[1];\n continue evaluate;\n }\n\n break;\n }\n };\n\n evaluate(0, 0, 0);\n return BigNatModule$$$normN(r$$15);\n}\nexport function BigNatModule$$$quickMulUsingFft(u$$7, v$$5) {\n const bitsRes$$1 = BigNatModule$$$bits(u$$7) + BigNatModule$$$bits(v$$5) | 0;\n const enc$$4 = BigNatModule$$$encodingGivenResultBits(bitsRes$$1);\n const upoly = BigNatModule$$$encodePoly(enc$$4, u$$7);\n const vpoly = BigNatModule$$$encodePoly(enc$$4, v$$5);\n const rpoly = BigNatModule$002EFFT$$$computeFftPaddedPolynomialProduct(enc$$4.bigK, enc$$4.k, upoly, vpoly);\n const r$$17 = BigNatModule$$$decodePoly(enc$$4, rpoly);\n return BigNatModule$$$normN(r$$17);\n}\nexport const BigNatModule$$$minDigitsKaratsuba = 16;\nexport function BigNatModule$$$recMulKaratsuba(mul, p$$19, q$$16) {\n const bp$$1 = p$$19.bound | 0;\n const bq = q$$16.bound | 0;\n const bmax = BigNatModule$$$maxInt(bp$$1, bq) | 0;\n\n if (bmax > BigNatModule$$$minDigitsKaratsuba) {\n const k$$9 = ~~(bmax / 2) | 0;\n const a0 = BigNatModule$$$restrictTo(k$$9, p$$19);\n const a1 = BigNatModule$$$shiftDown(k$$9, p$$19);\n const b0 = BigNatModule$$$restrictTo(k$$9, q$$16);\n const b1 = BigNatModule$$$shiftDown(k$$9, q$$16);\n const q0 = mul(a0, b0);\n const q1 = mul(BigNatModule$$$add(a0, a1), BigNatModule$$$add(b0, b1));\n const q2 = mul(a1, b1);\n const p1 = BigNatModule$$$sub(q1, BigNatModule$$$add(q0, q2));\n const r$$18 = BigNatModule$$$add(q0, BigNatModule$$$shiftUp(k$$9, BigNatModule$$$add(p1, BigNatModule$$$shiftUp(k$$9, q2))));\n return r$$18;\n } else {\n return BigNatModule$$$mulSchoolBook(p$$19, q$$16);\n }\n}\nexport function BigNatModule$$$mulKaratsuba(x$$55, y$$19) {\n return BigNatModule$$$recMulKaratsuba(BigNatModule$$$mulKaratsuba, x$$55, y$$19);\n}\nexport const BigNatModule$$$productDigitsUpperSchoolBook = ~~(64000 / BigNatModule$$$baseBits);\nexport const BigNatModule$$$singleDigitForceSchoolBook = ~~(32000 / BigNatModule$$$baseBits);\nexport const BigNatModule$$$productDigitsUpperFft = ~~(BigNatModule$$$table[0].bigN / BigNatModule$$$baseBits);\nexport function BigNatModule$$$mul(p$$20, q$$17) {\n return BigNatModule$$$mulSchoolBook(p$$20, q$$17);\n}\nexport function BigNatModule$$$scaleSubInPlace(x$$57, f, a$$5, n$$30) {\n const patternInput$$2 = [x$$57.digits, BigNatModule$$$degree(x$$57)];\n const patternInput$$3 = [a$$5.digits, BigNatModule$$$degree(a$$5)];\n const f$$1 = fromInteger(f, false, 2);\n let j$$4 = 0;\n let z$$7 = op_Multiply(f$$1, fromInteger(patternInput$$3[0][0], false, 2));\n\n while (compare(z$$7, fromBits(0, 0, false)) > 0 ? true : j$$4 < patternInput$$3[1]) {\n if (j$$4 > patternInput$$2[1]) {\n throw new Error(\"scaleSubInPlace: pre-condition did not apply, result would be -ve\");\n } else {\n void null;\n }\n\n let zLo;\n let value$$6;\n const x$$59 = z$$7;\n const value$$5 = op_BitwiseAnd(x$$59, BigNatModule$$$baseMaski64);\n value$$6 = ~~toInt(value$$5);\n zLo = value$$6;\n let zHi;\n const x$$60 = z$$7;\n zHi = op_Division(x$$60, BigNatModule$$$baseNi64);\n\n if (zLo <= patternInput$$2[0][j$$4 + n$$30]) {\n patternInput$$2[0][j$$4 + n$$30] = patternInput$$2[0][j$$4 + n$$30] - zLo;\n } else {\n patternInput$$2[0][j$$4 + n$$30] = patternInput$$2[0][j$$4 + n$$30] + (BigNatModule$$$baseN - zLo);\n zHi = op_Addition(zHi, fromBits(1, 0, false));\n }\n\n if (j$$4 < patternInput$$3[1]) {\n z$$7 = op_Addition(zHi, op_Multiply(f$$1, fromInteger(patternInput$$3[0][j$$4 + 1], false, 2)));\n } else {\n z$$7 = zHi;\n }\n\n j$$4 = j$$4 + 1;\n }\n\n void BigNatModule$$$normN(x$$57);\n}\nexport function BigNatModule$$$scaleSub(x$$61, f$$2, a$$7, n$$31) {\n const freshx = BigNatModule$$$add(x$$61, BigNatModule$$$zero);\n BigNatModule$$$scaleSubInPlace(freshx, f$$2, a$$7, n$$31);\n return BigNatModule$$$normN(freshx);\n}\nexport function BigNatModule$$$scaleAddInPlace(x$$62, f$$3, a$$8, n$$32) {\n const patternInput$$4 = [x$$62.digits, BigNatModule$$$degree(x$$62)];\n const patternInput$$5 = [a$$8.digits, BigNatModule$$$degree(a$$8)];\n const f$$4 = fromInteger(f$$3, false, 2);\n let j$$5 = 0;\n let z$$8 = op_Multiply(f$$4, fromInteger(patternInput$$5[0][0], false, 2));\n\n while (compare(z$$8, fromBits(0, 0, false)) > 0 ? true : j$$5 < patternInput$$5[1]) {\n if (j$$5 > patternInput$$4[1]) {\n throw new Error(\"scaleSubInPlace: pre-condition did not apply, result would be -ve\");\n } else {\n void null;\n }\n\n let zLo$$1;\n let value$$8;\n const x$$64 = z$$8;\n const value$$7 = op_BitwiseAnd(x$$64, BigNatModule$$$baseMaski64);\n value$$8 = ~~toInt(value$$7);\n zLo$$1 = value$$8;\n let zHi$$1;\n const x$$65 = z$$8;\n zHi$$1 = op_Division(x$$65, BigNatModule$$$baseNi64);\n\n if (zLo$$1 < BigNatModule$$$baseN - patternInput$$4[0][j$$5 + n$$32]) {\n patternInput$$4[0][j$$5 + n$$32] = patternInput$$4[0][j$$5 + n$$32] + zLo$$1;\n } else {\n patternInput$$4[0][j$$5 + n$$32] = zLo$$1 - (BigNatModule$$$baseN - patternInput$$4[0][j$$5 + n$$32]);\n zHi$$1 = op_Addition(zHi$$1, fromBits(1, 0, false));\n }\n\n if (j$$5 < patternInput$$5[1]) {\n z$$8 = op_Addition(zHi$$1, op_Multiply(f$$4, fromInteger(patternInput$$5[0][j$$5 + 1], false, 2)));\n } else {\n z$$8 = zHi$$1;\n }\n\n j$$5 = j$$5 + 1;\n }\n\n void BigNatModule$$$normN(x$$62);\n}\nexport function BigNatModule$$$scaleAdd(x$$66, f$$5, a$$10, n$$33) {\n const freshx$$1 = BigNatModule$$$add(x$$66, BigNatModule$$$zero);\n BigNatModule$$$scaleAddInPlace(freshx$$1, f$$5, a$$10, n$$33);\n return BigNatModule$$$normN(freshx$$1);\n}\nexport function BigNatModule$$$removeFactor(x$$67, a$$11, n$$34) {\n const patternInput$$6 = [BigNatModule$$$degree(a$$11), BigNatModule$$$degree(x$$67)];\n\n if (patternInput$$6[1] < patternInput$$6[0] + n$$34) {\n return 0;\n } else {\n let f$$6;\n\n if (patternInput$$6[0] === 0) {\n if (patternInput$$6[1] === n$$34) {\n f$$6 = ~~(x$$67.digits[n$$34] / a$$11.digits[0]);\n } else {\n const f64 = op_Division(op_Addition(op_Multiply(fromInteger(x$$67.digits[patternInput$$6[1]], false, 2), BigNatModule$$$baseNi64), fromInteger(x$$67.digits[patternInput$$6[1] - 1], false, 2)), fromInteger(a$$11.digits[0], false, 2));\n f$$6 = ~~toInt(f64);\n }\n } else if (patternInput$$6[1] === patternInput$$6[0] + n$$34) {\n f$$6 = ~~(x$$67.digits[patternInput$$6[1]] / (a$$11.digits[patternInput$$6[0]] + 1));\n } else {\n const f64$$1 = op_Division(op_Addition(op_Multiply(fromInteger(x$$67.digits[patternInput$$6[1]], false, 2), BigNatModule$$$baseNi64), fromInteger(x$$67.digits[patternInput$$6[1] - 1], false, 2)), op_Addition(fromInteger(a$$11.digits[patternInput$$6[0]], false, 2), fromBits(1, 0, false)));\n f$$6 = ~~toInt(f64$$1);\n }\n\n if (f$$6 === 0) {\n const lte = BigNatModule$$$shiftCompare(a$$11, n$$34, x$$67, 0) !== 1;\n\n if (lte) {\n return 1;\n } else {\n return 0;\n }\n } else {\n return f$$6 | 0;\n }\n }\n}\nexport function BigNatModule$$$divmod(b$$7, a$$12) {\n if (BigNatModule$$$isZero(a$$12)) {\n throw new Error();\n } else if (BigNatModule$$$degree(b$$7) < BigNatModule$$$degree(a$$12)) {\n return [BigNatModule$$$zero, b$$7];\n } else {\n const x$$68 = BigNatModule$$$copyN(b$$7);\n const d$$6 = BigNatModule$$$createN(BigNatModule$$$degree(b$$7) - BigNatModule$$$degree(a$$12) + 1 + 1);\n let p$$21 = BigNatModule$$$degree(b$$7) | 0;\n const m$$2 = BigNatModule$$$degree(a$$12) | 0;\n let n$$35 = p$$21 - m$$2 | 0;\n\n const Invariant = function Invariant(tupledArg) {\n void null;\n };\n\n let finished = false;\n\n while (!finished) {\n Invariant([d$$6, x$$68, n$$35, p$$21]);\n const f$$7 = BigNatModule$$$removeFactor(x$$68, a$$12, n$$35) | 0;\n\n if (f$$7 > 0) {\n BigNatModule$$$scaleSubInPlace(x$$68, f$$7, a$$12, n$$35);\n BigNatModule$$$scaleAddInPlace(d$$6, f$$7, BigNatModule$$$one, n$$35);\n Invariant([d$$6, x$$68, n$$35, p$$21]);\n } else {\n finished = f$$7 === 0 ? n$$35 === 0 : false;\n\n if (!finished) {\n if (p$$21 === m$$2 + n$$35) {\n Invariant([d$$6, x$$68, n$$35 - 1, p$$21]);\n n$$35 = n$$35 - 1;\n } else {\n Invariant([d$$6, x$$68, n$$35 - 1, p$$21 - 1]);\n n$$35 = n$$35 - 1;\n p$$21 = p$$21 - 1;\n }\n } else {\n void null;\n }\n }\n }\n\n return [BigNatModule$$$normN(d$$6), BigNatModule$$$normN(x$$68)];\n }\n}\nexport function BigNatModule$$$div(b$$8, a$$13) {\n return BigNatModule$$$divmod(b$$8, a$$13)[0];\n}\nexport function BigNatModule$$$rem(b$$9, a$$14) {\n return BigNatModule$$$divmod(b$$9, a$$14)[1];\n}\nexport function BigNatModule$$$bitAnd(a$$15, b$$10) {\n const rbound$$6 = BigNatModule$$$minInt(a$$15.bound, b$$10.bound) | 0;\n const r$$19 = BigNatModule$$$createN(rbound$$6);\n\n for (let i$$44 = 0; i$$44 <= r$$19.bound - 1; i$$44++) {\n r$$19.digits[i$$44] = a$$15.digits[i$$44] & b$$10.digits[i$$44];\n }\n\n return BigNatModule$$$normN(r$$19);\n}\nexport function BigNatModule$$$bitOr(a$$16, b$$11) {\n const rbound$$7 = BigNatModule$$$maxInt(a$$16.bound, b$$11.bound) | 0;\n const r$$20 = BigNatModule$$$createN(rbound$$7);\n\n for (let i$$45 = 0; i$$45 <= a$$16.bound - 1; i$$45++) {\n r$$20.digits[i$$45] = r$$20.digits[i$$45] | a$$16.digits[i$$45];\n }\n\n for (let i$$46 = 0; i$$46 <= b$$11.bound - 1; i$$46++) {\n r$$20.digits[i$$46] = r$$20.digits[i$$46] | b$$11.digits[i$$46];\n }\n\n return BigNatModule$$$normN(r$$20);\n}\nexport function BigNatModule$$$bitXor(a$$17, b$$12) {\n const rbound$$8 = BigNatModule$$$maxInt(a$$17.bound, b$$12.bound) | 0;\n const r$$21 = BigNatModule$$$createN(rbound$$8);\n\n for (let i$$47 = 0; i$$47 <= a$$17.bound - 1; i$$47++) {\n r$$21.digits[i$$47] = r$$21.digits[i$$47] ^ a$$17.digits[i$$47];\n }\n\n for (let i$$48 = 0; i$$48 <= b$$12.bound - 1; i$$48++) {\n r$$21.digits[i$$48] = r$$21.digits[i$$48] ^ b$$12.digits[i$$48];\n }\n\n return BigNatModule$$$normN(r$$21);\n}\nexport function BigNatModule$$$hcf(a$$18, b$$13) {\n const hcfloop = function hcfloop($a$$19$$206, $b$$14$$207) {\n hcfloop: while (true) {\n const a$$19 = $a$$19$$206,\n b$$14 = $b$$14$$207;\n\n if (BigNatModule$$$equal(BigNatModule$$$zero, a$$19)) {\n return b$$14;\n } else {\n const patternInput$$8 = BigNatModule$$$divmod(b$$14, a$$19);\n $a$$19$$206 = patternInput$$8[1];\n $b$$14$$207 = a$$19;\n continue hcfloop;\n }\n\n break;\n }\n };\n\n if (BigNatModule$$$lt(a$$18, b$$13)) {\n return hcfloop(a$$18, b$$13);\n } else {\n return hcfloop(b$$13, a$$18);\n }\n}\nexport const BigNatModule$$$two = BigNatModule$$$embed(2);\nexport function BigNatModule$$$powi(x$$69, n$$36) {\n const power = function power($acc$$2$$210, $x$$70$$211, $n$$37$$212) {\n power: while (true) {\n const acc$$2 = $acc$$2$$210,\n x$$70 = $x$$70$$211,\n n$$37 = $n$$37$$212;\n\n if (n$$37 === 0) {\n return acc$$2;\n } else if (n$$37 % 2 === 0) {\n $acc$$2$$210 = acc$$2;\n $x$$70$$211 = BigNatModule$$$mul(x$$70, x$$70);\n $n$$37$$212 = ~~(n$$37 / 2);\n continue power;\n } else {\n $acc$$2$$210 = BigNatModule$$$mul(x$$70, acc$$2);\n $x$$70$$211 = BigNatModule$$$mul(x$$70, x$$70);\n $n$$37$$212 = ~~(n$$37 / 2);\n continue power;\n }\n\n break;\n }\n };\n\n return power(BigNatModule$$$one, x$$69, n$$36);\n}\nexport function BigNatModule$$$pow(x$$71, n$$38) {\n const power$$1 = function power$$1($acc$$3$$215, $x$$72$$216, $n$$39$$217) {\n power$$1: while (true) {\n const acc$$3 = $acc$$3$$215,\n x$$72 = $x$$72$$216,\n n$$39 = $n$$39$$217;\n\n if (BigNatModule$$$isZero(n$$39)) {\n return acc$$3;\n } else {\n const patternInput$$9 = BigNatModule$$$divmod(n$$39, BigNatModule$$$two);\n\n if (BigNatModule$$$isZero(patternInput$$9[1])) {\n $acc$$3$$215 = acc$$3;\n $x$$72$$216 = BigNatModule$$$mul(x$$72, x$$72);\n $n$$39$$217 = patternInput$$9[0];\n continue power$$1;\n } else {\n $acc$$3$$215 = BigNatModule$$$mul(x$$72, acc$$3);\n $x$$72$$216 = BigNatModule$$$mul(x$$72, x$$72);\n $n$$39$$217 = patternInput$$9[0];\n continue power$$1;\n }\n }\n\n break;\n }\n };\n\n return power$$1(BigNatModule$$$one, x$$71, n$$38);\n}\nexport function BigNatModule$$$toFloat(n$$40) {\n const basef = BigNatModule$$$baseN;\n\n const evalFloat = function evalFloat($acc$$4$$219, $k$$10$$220, $i$$49$$221) {\n evalFloat: while (true) {\n const acc$$4 = $acc$$4$$219,\n k$$10 = $k$$10$$220,\n i$$49 = $i$$49$$221;\n\n if (i$$49 === n$$40.bound) {\n return acc$$4;\n } else {\n $acc$$4$$219 = acc$$4 + k$$10 * n$$40.digits[i$$49];\n $k$$10$$220 = k$$10 * basef;\n $i$$49$$221 = i$$49 + 1;\n continue evalFloat;\n }\n\n break;\n }\n };\n\n return evalFloat(0, 1, 0);\n}\nexport function BigNatModule$$$ofInt32(n$$41) {\n return BigNatModule$$$embed(n$$41);\n}\nexport function BigNatModule$$$ofInt64(n$$42) {\n return BigNatModule$$$embed64(n$$42);\n}\nexport function BigNatModule$$$toUInt32(n$$43) {\n const matchValue = n$$43.bound | 0;\n\n switch (matchValue) {\n case 0:\n {\n return 0;\n }\n\n case 1:\n {\n const value$$9 = n$$43.digits[0] | 0;\n return value$$9 >>> 0;\n }\n\n case 2:\n {\n const patternInput$$10 = [n$$43.digits[0], n$$43.digits[1]];\n\n if (patternInput$$10[1] > BigNatModule$$$baseMask32B) {\n throw new Error();\n } else {\n void null;\n }\n\n return ((patternInput$$10[0] & BigNatModule$$$baseMask32A) >>> 0) + ((patternInput$$10[1] & BigNatModule$$$baseMask32B) >>> 0 << BigNatModule$$$baseShift32B >>> 0);\n }\n\n default:\n {\n throw new Error();\n }\n }\n}\nexport function BigNatModule$$$toUInt64(n$$44) {\n const matchValue$$1 = n$$44.bound | 0;\n\n switch (matchValue$$1) {\n case 0:\n {\n return fromBits(0, 0, true);\n }\n\n case 1:\n {\n const value$$10 = n$$44.digits[0] | 0;\n return fromInteger(value$$10, true, 2);\n }\n\n case 2:\n {\n const patternInput$$11 = [n$$44.digits[0], n$$44.digits[1]];\n return op_Addition(fromInteger(patternInput$$11[0] & BigNatModule$$$baseMask64A, true, 2), op_LeftShift(fromInteger(patternInput$$11[1] & BigNatModule$$$baseMask64B, true, 2), BigNatModule$$$baseShift64B));\n }\n\n case 3:\n {\n const patternInput$$12 = [n$$44.digits[0], n$$44.digits[1], n$$44.digits[2]];\n\n if (patternInput$$12[2] > BigNatModule$$$baseMask64C) {\n throw new Error();\n } else {\n void null;\n }\n\n return op_Addition(op_Addition(fromInteger(patternInput$$12[0] & BigNatModule$$$baseMask64A, true, 2), op_LeftShift(fromInteger(patternInput$$12[1] & BigNatModule$$$baseMask64B, true, 2), BigNatModule$$$baseShift64B)), op_LeftShift(fromInteger(patternInput$$12[2] & BigNatModule$$$baseMask64C, true, 2), BigNatModule$$$baseShift64C));\n }\n\n default:\n {\n throw new Error();\n }\n }\n}\nexport function BigNatModule$$$toString(n$$45) {\n const degn = BigNatModule$$$degree(n$$45) | 0;\n\n const route = function route($prior$$227, $k$$11$$228, $ten2k$$229) {\n route: while (true) {\n const prior = $prior$$227,\n k$$11 = $k$$11$$228,\n ten2k = $ten2k$$229;\n\n if (BigNatModule$$$degree(ten2k) > degn) {\n return new List([k$$11, ten2k], prior);\n } else {\n $prior$$227 = new List([k$$11, ten2k], prior);\n $k$$11$$228 = k$$11 + 1;\n $ten2k$$229 = BigNatModule$$$mul(ten2k, ten2k);\n continue route;\n }\n\n break;\n }\n };\n\n const kten2ks = route(new List(), 0, BigNatModule$$$embed(10));\n\n const collect = function collect(isLeading, digits, n$$46, _arg1$$1) {\n if (_arg1$$1.tail != null) {\n const patternInput$$13 = BigNatModule$$$divmod(n$$46, _arg1$$1.head[1]);\n\n if (isLeading ? BigNatModule$$$isZero(patternInput$$13[0]) : false) {\n const digits$$1 = collect(isLeading, digits, patternInput$$13[1], _arg1$$1.tail);\n return digits$$1;\n } else {\n const digits$$2 = collect(false, digits, patternInput$$13[1], _arg1$$1.tail);\n const digits$$3 = collect(isLeading, digits$$2, patternInput$$13[0], _arg1$$1.tail);\n return digits$$3;\n }\n } else {\n const n$$47 = BigNatModule$$$eval32(n$$46) | 0;\n\n if (isLeading ? n$$47 === 0 : false) {\n return digits;\n } else {\n return new List(int32ToString(n$$47), digits);\n }\n }\n };\n\n const digits$$4 = collect(true, new List(), n$$45, kten2ks);\n\n if (digits$$4.tail == null) {\n return \"0\";\n } else {\n let arg00;\n arg00 = ofList(digits$$4, Array);\n return join(\"\", arg00);\n }\n}\nexport function BigNatModule$$$ofString(str) {\n const len = str.length | 0;\n\n if (isNullOrEmpty(str)) {\n throw new Error(\"empty string\\\\nParameter name: str\");\n } else {\n void null;\n }\n\n const ten = BigNatModule$$$embed(10);\n\n const build = function build($acc$$5$$235, $i$$50$$236) {\n build: while (true) {\n const acc$$5 = $acc$$5$$235,\n i$$50 = $i$$50$$236;\n\n if (i$$50 === len) {\n return acc$$5;\n } else {\n const c$$12 = str[i$$50];\n const d$$7 = c$$12.charCodeAt(0) - \"0\".charCodeAt(0) | 0;\n\n if (0 <= d$$7 ? d$$7 <= 9 : false) {\n $acc$$5$$235 = BigNatModule$$$add(BigNatModule$$$mul(ten, acc$$5), BigNatModule$$$embed(d$$7));\n $i$$50$$236 = i$$50 + 1;\n continue build;\n } else {\n throw new Error();\n }\n }\n\n break;\n }\n };\n\n return build(BigNatModule$$$embed(0), 0);\n}\nexport function BigNatModule$$$isSmall(n$$48) {\n return n$$48.bound <= 1;\n}\nexport function BigNatModule$$$getSmall(n$$49) {\n if (0 < n$$49.bound) {\n return n$$49.digits[0] | 0;\n } else {\n return 0;\n }\n}\nexport function BigNatModule$$$factorial(n$$50) {\n const productR = function productR(a$$20, b$$15) {\n if (BigNatModule$$$equal(a$$20, b$$15)) {\n return a$$20;\n } else {\n const m$$3 = BigNatModule$$$div(BigNatModule$$$add(a$$20, b$$15), BigNatModule$$$ofInt32(2));\n return BigNatModule$$$mul(productR(a$$20, m$$3), productR(BigNatModule$$$add(m$$3, BigNatModule$$$one), b$$15));\n }\n };\n\n return productR(BigNatModule$$$one, n$$50);\n}","import { declare, Record } from \"../Types.js\";\nimport { class_type } from \"../Reflection.js\";\nimport { BigNatModule$$$factorial as BigNatModule$0024$0024$0024factorial, BigNatModule$$$ofString as BigNatModule$0024$0024$0024ofString, BigNatModule$$$toFloat as BigNatModule$0024$0024$0024toFloat, BigNatModule$$$toUInt64 as BigNatModule$0024$0024$0024toUInt64, BigNatModule$$$toUInt32 as BigNatModule$0024$0024$0024toUInt32, BigNatModule$$$pow as BigNatModule$0024$0024$0024pow, BigNatModule$$$rem as BigNatModule$0024$0024$0024rem, BigNatModule$$$two as BigNatModule$0024$0024$0024two, BigNatModule$$$lte as BigNatModule$0024$0024$0024lte, BigNatModule$$$hcf as BigNatModule$0024$0024$0024hcf, BigNatModule$$$bitXor as BigNatModule$0024$0024$0024bitXor, BigNatModule$$$bitOr as BigNatModule$0024$0024$0024bitOr, BigNatModule$$$bitAnd as BigNatModule$0024$0024$0024bitAnd, BigNatModule$$$divmod as BigNatModule$0024$0024$0024divmod, BigNatModule$$$mul as BigNatModule$0024$0024$0024mul, BigNatModule$$$isOne as BigNatModule$0024$0024$0024isOne, BigNatModule$$$sub as BigNatModule$0024$0024$0024sub, BigNatModule$$$gte as BigNatModule$0024$0024$0024gte, BigNatModule$$$scale as BigNatModule$0024$0024$0024scale, BigNatModule$$$add as BigNatModule$0024$0024$0024add, BigNatModule$$$one as BigNatModule$0024$0024$0024one, BigNatModule$$$ofInt64 as BigNatModule$0024$0024$0024ofInt64, BigNatModule$$$toString as BigNatModule$0024$0024$0024toString, BigNatModule$$$hash as BigNatModule$0024$0024$0024hash, BigNatModule$$$gt as BigNatModule$0024$0024$0024gt, BigNatModule$$$lt as BigNatModule$0024$0024$0024lt, BigNatModule$$$isZero as BigNatModule$0024$0024$0024isZero, BigNatModule$$$equal as BigNatModule$0024$0024$0024equal, BigNatModule$$$getSmall as BigNatModule$0024$0024$0024getSmall, BigNatModule$$$isSmall as BigNatModule$0024$0024$0024isSmall, BigNatModule$$$ofInt32 as BigNatModule$0024$0024$0024ofInt32 } from \"./n\";\nimport { initialize } from \"../Array.js\";\nimport { op_Addition, op_Multiply, fromValue, equals, compare, fromBits, op_UnaryNegation, fromInteger } from \"../Long.js\";\nimport { op_UnaryNegation_Int32 } from \"../Int32.js\";\nimport Decimal from \"../Decimal.js\";\nexport const BigInteger = declare(function BigInt_BigInteger(signInt, v) {\n const $this$$1 = this;\n void null;\n $this$$1.signInt = signInt;\n $this$$1.v = v;\n void null;\n}, Record);\nexport function BigInteger$reflection() {\n return class_type(\"BigInt.BigInteger\", undefined, BigInteger);\n}\nexport function BigInteger$$$$002Ector$$Z2BE94A1(signInt, v) {\n return this instanceof BigInteger ? BigInteger.call(this, signInt, v) : new BigInteger(signInt, v);\n}\n\n(function BigInteger$$$$002Ecctor() {\n BigInteger.smallLim = 4096;\n BigInteger.smallPosTab = initialize(BigInteger.smallLim, BigNatModule$0024$0024$0024ofInt32, Array);\n BigInteger.one = BigInteger$$$$002Ector$$Z524259A4(1);\n BigInteger.two = BigInteger$$$$002Ector$$Z524259A4(2);\n BigInteger.zero = BigInteger$$$$002Ector$$Z524259A4(0);\n void null;\n})();\n\nexport function BigInteger$$$nat$$Z67CCE57D(n$$1) {\n if (BigNatModule$0024$0024$0024isSmall(n$$1) ? BigNatModule$0024$0024$0024getSmall(n$$1) < BigInteger.smallLim : false) {\n return BigInteger.smallPosTab[BigNatModule$0024$0024$0024getSmall(n$$1)];\n } else {\n return n$$1;\n }\n}\nexport function BigInteger$$$create$$Z2BE94A1(s, n$$2) {\n return BigInteger$$$$002Ector$$Z2BE94A1(s, BigInteger$$$nat$$Z67CCE57D(n$$2));\n}\nexport function BigInteger$$$posn$$Z67CCE57D(n$$3) {\n return BigInteger$$$$002Ector$$Z2BE94A1(1, BigInteger$$$nat$$Z67CCE57D(n$$3));\n}\nexport function BigInteger$$$negn$$Z67CCE57D(n$$4) {\n return BigInteger$$$$002Ector$$Z2BE94A1(-1, BigInteger$$$nat$$Z67CCE57D(n$$4));\n}\nexport function BigInteger$$get_Sign(x) {\n if (BigInteger$$get_IsZero(x)) {\n return 0;\n } else {\n return x.signInt | 0;\n }\n}\nexport function BigInteger$$get_SignInt(x$$1) {\n return x$$1.signInt;\n}\nexport function BigInteger$$get_V(x$$2) {\n return x$$2.v;\n}\nexport function BigInteger$$$op_Equality$$56F059C0(x$$3, y) {\n const matchValue = [BigInteger$$get_SignInt(x$$3), BigInteger$$get_SignInt(y)];\n var $target$$12;\n\n if (matchValue[0] === -1) {\n if (matchValue[1] === -1) {\n $target$$12 = 1;\n } else if (matchValue[1] === 0) {\n $target$$12 = 8;\n } else if (matchValue[1] === 1) {\n $target$$12 = 3;\n } else {\n $target$$12 = 9;\n }\n } else if (matchValue[0] === 0) {\n if (matchValue[1] === -1) {\n $target$$12 = 6;\n } else if (matchValue[1] === 0) {\n $target$$12 = 4;\n } else if (matchValue[1] === 1) {\n $target$$12 = 5;\n } else {\n $target$$12 = 9;\n }\n } else if (matchValue[0] === 1) {\n if (matchValue[1] === -1) {\n $target$$12 = 2;\n } else if (matchValue[1] === 0) {\n $target$$12 = 7;\n } else if (matchValue[1] === 1) {\n $target$$12 = 0;\n } else {\n $target$$12 = 9;\n }\n } else {\n $target$$12 = 9;\n }\n\n switch ($target$$12) {\n case 0:\n {\n return BigNatModule$0024$0024$0024equal(BigInteger$$get_V(x$$3), BigInteger$$get_V(y));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024equal(BigInteger$$get_V(x$$3), BigInteger$$get_V(y));\n }\n\n case 2:\n {\n if (BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$3))) {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y));\n } else {\n return false;\n }\n }\n\n case 3:\n {\n if (BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$3))) {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y));\n } else {\n return false;\n }\n }\n\n case 4:\n {\n return true;\n }\n\n case 5:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y));\n }\n\n case 6:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y));\n }\n\n case 7:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$3));\n }\n\n case 8:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$3));\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$op_Inequality$$56F059C0(x$$4, y$$1) {\n return !BigInteger$$$op_Equality$$56F059C0(x$$4, y$$1);\n}\nexport function BigInteger$$$op_LessThan$$56F059C0(x$$5, y$$2) {\n const matchValue$$1 = [BigInteger$$get_SignInt(x$$5), BigInteger$$get_SignInt(y$$2)];\n var $target$$17;\n\n if (matchValue$$1[0] === -1) {\n if (matchValue$$1[1] === -1) {\n $target$$17 = 1;\n } else if (matchValue$$1[1] === 0) {\n $target$$17 = 8;\n } else if (matchValue$$1[1] === 1) {\n $target$$17 = 3;\n } else {\n $target$$17 = 9;\n }\n } else if (matchValue$$1[0] === 0) {\n if (matchValue$$1[1] === -1) {\n $target$$17 = 6;\n } else if (matchValue$$1[1] === 0) {\n $target$$17 = 4;\n } else if (matchValue$$1[1] === 1) {\n $target$$17 = 5;\n } else {\n $target$$17 = 9;\n }\n } else if (matchValue$$1[0] === 1) {\n if (matchValue$$1[1] === -1) {\n $target$$17 = 2;\n } else if (matchValue$$1[1] === 0) {\n $target$$17 = 7;\n } else if (matchValue$$1[1] === 1) {\n $target$$17 = 0;\n } else {\n $target$$17 = 9;\n }\n } else {\n $target$$17 = 9;\n }\n\n switch ($target$$17) {\n case 0:\n {\n return BigNatModule$0024$0024$0024lt(BigInteger$$get_V(x$$5), BigInteger$$get_V(y$$2));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024lt(BigInteger$$get_V(y$$2), BigInteger$$get_V(x$$5));\n }\n\n case 2:\n {\n return false;\n }\n\n case 3:\n {\n if (!BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$5))) {\n return true;\n } else {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$2));\n }\n }\n\n case 4:\n {\n return false;\n }\n\n case 5:\n {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$2));\n }\n\n case 6:\n {\n return false;\n }\n\n case 7:\n {\n return false;\n }\n\n case 8:\n {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$5));\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$op_GreaterThan$$56F059C0(x$$6, y$$3) {\n const matchValue$$2 = [BigInteger$$get_SignInt(x$$6), BigInteger$$get_SignInt(y$$3)];\n var $target$$20;\n\n if (matchValue$$2[0] === -1) {\n if (matchValue$$2[1] === -1) {\n $target$$20 = 1;\n } else if (matchValue$$2[1] === 0) {\n $target$$20 = 8;\n } else if (matchValue$$2[1] === 1) {\n $target$$20 = 3;\n } else {\n $target$$20 = 9;\n }\n } else if (matchValue$$2[0] === 0) {\n if (matchValue$$2[1] === -1) {\n $target$$20 = 6;\n } else if (matchValue$$2[1] === 0) {\n $target$$20 = 4;\n } else if (matchValue$$2[1] === 1) {\n $target$$20 = 5;\n } else {\n $target$$20 = 9;\n }\n } else if (matchValue$$2[0] === 1) {\n if (matchValue$$2[1] === -1) {\n $target$$20 = 2;\n } else if (matchValue$$2[1] === 0) {\n $target$$20 = 7;\n } else if (matchValue$$2[1] === 1) {\n $target$$20 = 0;\n } else {\n $target$$20 = 9;\n }\n } else {\n $target$$20 = 9;\n }\n\n switch ($target$$20) {\n case 0:\n {\n return BigNatModule$0024$0024$0024gt(BigInteger$$get_V(x$$6), BigInteger$$get_V(y$$3));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024gt(BigInteger$$get_V(y$$3), BigInteger$$get_V(x$$6));\n }\n\n case 2:\n {\n if (!BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$6))) {\n return true;\n } else {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$3));\n }\n }\n\n case 3:\n {\n return false;\n }\n\n case 4:\n {\n return false;\n }\n\n case 5:\n {\n return false;\n }\n\n case 6:\n {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$3));\n }\n\n case 7:\n {\n return !BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$6));\n }\n\n case 8:\n {\n return false;\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$compare$$56F059C0(n$$5, nn) {\n if (BigInteger$$$op_LessThan$$56F059C0(n$$5, nn)) {\n return -1 | 0;\n } else if (BigInteger$$$op_Equality$$56F059C0(n$$5, nn)) {\n return 0;\n } else {\n return 1;\n }\n}\nexport function BigInteger$$$hash$$Z665282C2(z) {\n if (BigInteger$$get_SignInt(z) === 0) {\n return 1;\n } else {\n return BigInteger$$get_SignInt(z) + BigNatModule$0024$0024$0024hash(BigInteger$$get_V(z)) | 0;\n }\n}\n\nBigInteger.prototype.toString = function () {\n const x$$7 = this;\n const matchValue$$3 = BigInteger$$get_SignInt(x$$7) | 0;\n\n switch (matchValue$$3) {\n case -1:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$7)) ? \"0\" : \"-\" + BigNatModule$0024$0024$0024toString(BigInteger$$get_V(x$$7));\n }\n\n case 0:\n {\n return \"0\";\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024toString(BigInteger$$get_V(x$$7));\n }\n\n default:\n {\n throw new Error(\"signs should be +/- 1 or 0\");\n }\n }\n};\n\nexport function BigInteger$$get_StructuredDisplayString(x$$8) {\n return String(x$$8);\n}\n\nBigInteger.prototype.Equals = function (obj) {\n const this$ = this;\n return obj instanceof BigInteger ? BigInteger$$$op_Equality$$56F059C0(this$, obj) : false;\n};\n\nBigInteger.prototype.GetHashCode = function () {\n const x$$9 = this;\n return BigInteger$$$hash$$Z665282C2(x$$9) | 0;\n};\n\nexport function BigInteger$$$$002Ector$$Z524259A4(n$$6) {\n if (n$$6 >= 0) {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, 1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt32(n$$6)));\n } else if (n$$6 === -2147483648) {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, -1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt64(op_UnaryNegation(fromInteger(n$$6, false, 2)))));\n } else {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, -1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt32(op_UnaryNegation_Int32(n$$6))));\n }\n}\nexport function BigInteger$$$$002Ector$$Z524259C1(n$$7) {\n if (compare(n$$7, fromBits(0, 0, false)) >= 0) {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, 1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt64(n$$7)));\n } else if (equals(n$$7, fromBits(0, 2147483648, false))) {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, -1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024add(BigNatModule$0024$0024$0024ofInt64(fromBits(4294967295, 2147483647, false)), BigNatModule$0024$0024$0024one)));\n } else {\n return BigInteger$$$$002Ector$$Z2BE94A1.call(this, -1, BigInteger$$$nat$$Z67CCE57D(BigNatModule$0024$0024$0024ofInt64(op_UnaryNegation(n$$7))));\n }\n}\nexport function BigInteger$$$get_One() {\n return BigInteger.one;\n}\nexport function BigInteger$$$get_Two() {\n return BigInteger.two;\n}\nexport function BigInteger$$$get_Zero() {\n return BigInteger.zero;\n}\nexport function BigInteger$$$op_UnaryNegation$$Z665282C2(z$$1) {\n const matchValue$$4 = BigInteger$$get_SignInt(z$$1) | 0;\n\n if (matchValue$$4 === 0) {\n return BigInteger$$$get_Zero();\n } else {\n return BigInteger$$$create$$Z2BE94A1(op_UnaryNegation_Int32(matchValue$$4), BigInteger$$get_V(z$$1));\n }\n}\nexport function BigInteger$$$Scale$$Z320F31E(k, z$$2) {\n if (BigInteger$$get_SignInt(z$$2) === 0) {\n return BigInteger$$$get_Zero();\n } else if (k < 0) {\n return BigInteger$$$create$$Z2BE94A1(op_UnaryNegation_Int32(BigInteger$$get_SignInt(z$$2)), BigNatModule$0024$0024$0024scale(op_UnaryNegation_Int32(k), BigInteger$$get_V(z$$2)));\n } else {\n return BigInteger$$$create$$Z2BE94A1(BigInteger$$get_SignInt(z$$2), BigNatModule$0024$0024$0024scale(k, BigInteger$$get_V(z$$2)));\n }\n}\nexport function BigInteger$$$subnn$$6A57060(nx, ny) {\n if (BigNatModule$0024$0024$0024gte(nx, ny)) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024sub(nx, ny));\n } else {\n return BigInteger$$$negn$$Z67CCE57D(BigNatModule$0024$0024$0024sub(ny, nx));\n }\n}\nexport function BigInteger$$$addnn$$6A57060(nx$$1, ny$$1) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024add(nx$$1, ny$$1));\n}\nexport function BigInteger$$get_IsZero(x$$10) {\n if (BigInteger$$get_SignInt(x$$10) === 0) {\n return true;\n } else {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$10));\n }\n}\nexport function BigInteger$$get_IsOne(x$$11) {\n if (BigInteger$$get_SignInt(x$$11) === 1) {\n return BigNatModule$0024$0024$0024isOne(BigInteger$$get_V(x$$11));\n } else {\n return false;\n }\n}\nexport function BigInteger$$$op_Addition$$56F059C0(x$$12, y$$4) {\n if (BigInteger$$get_IsZero(y$$4)) {\n return x$$12;\n } else if (BigInteger$$get_IsZero(x$$12)) {\n return y$$4;\n } else {\n const matchValue$$5 = [BigInteger$$get_SignInt(x$$12), BigInteger$$get_SignInt(y$$4)];\n var $target$$38;\n\n if (matchValue$$5[0] === -1) {\n if (matchValue$$5[1] === -1) {\n $target$$38 = 1;\n } else if (matchValue$$5[1] === 1) {\n $target$$38 = 3;\n } else {\n $target$$38 = 4;\n }\n } else if (matchValue$$5[0] === 1) {\n if (matchValue$$5[1] === -1) {\n $target$$38 = 2;\n } else if (matchValue$$5[1] === 1) {\n $target$$38 = 0;\n } else {\n $target$$38 = 4;\n }\n } else {\n $target$$38 = 4;\n }\n\n switch ($target$$38) {\n case 0:\n {\n return BigInteger$$$addnn$$6A57060(BigInteger$$get_V(x$$12), BigInteger$$get_V(y$$4));\n }\n\n case 1:\n {\n return BigInteger$$$op_UnaryNegation$$Z665282C2(BigInteger$$$addnn$$6A57060(BigInteger$$get_V(x$$12), BigInteger$$get_V(y$$4)));\n }\n\n case 2:\n {\n return BigInteger$$$subnn$$6A57060(BigInteger$$get_V(x$$12), BigInteger$$get_V(y$$4));\n }\n\n case 3:\n {\n return BigInteger$$$subnn$$6A57060(BigInteger$$get_V(y$$4), BigInteger$$get_V(x$$12));\n }\n\n case 4:\n {\n throw new Error(\"signs should be +/- 1\\\\nParameter name: x\");\n }\n }\n }\n}\nexport function BigInteger$$$op_Subtraction$$56F059C0(x$$13, y$$5) {\n if (BigInteger$$get_IsZero(y$$5)) {\n return x$$13;\n } else if (BigInteger$$get_IsZero(x$$13)) {\n return BigInteger$$$op_UnaryNegation$$Z665282C2(y$$5);\n } else {\n const matchValue$$6 = [BigInteger$$get_SignInt(x$$13), BigInteger$$get_SignInt(y$$5)];\n var $target$$41;\n\n if (matchValue$$6[0] === -1) {\n if (matchValue$$6[1] === -1) {\n $target$$41 = 1;\n } else if (matchValue$$6[1] === 1) {\n $target$$41 = 3;\n } else {\n $target$$41 = 4;\n }\n } else if (matchValue$$6[0] === 1) {\n if (matchValue$$6[1] === -1) {\n $target$$41 = 2;\n } else if (matchValue$$6[1] === 1) {\n $target$$41 = 0;\n } else {\n $target$$41 = 4;\n }\n } else {\n $target$$41 = 4;\n }\n\n switch ($target$$41) {\n case 0:\n {\n return BigInteger$$$subnn$$6A57060(BigInteger$$get_V(x$$13), BigInteger$$get_V(y$$5));\n }\n\n case 1:\n {\n return BigInteger$$$subnn$$6A57060(BigInteger$$get_V(y$$5), BigInteger$$get_V(x$$13));\n }\n\n case 2:\n {\n return BigInteger$$$addnn$$6A57060(BigInteger$$get_V(x$$13), BigInteger$$get_V(y$$5));\n }\n\n case 3:\n {\n return BigInteger$$$op_UnaryNegation$$Z665282C2(BigInteger$$$addnn$$6A57060(BigInteger$$get_V(x$$13), BigInteger$$get_V(y$$5)));\n }\n\n case 4:\n {\n throw new Error(\"signs should be +/- 1\\\\nParameter name: x\");\n }\n }\n }\n}\nexport function BigInteger$$$op_Multiply$$56F059C0(x$$14, y$$6) {\n if (BigInteger$$get_IsZero(x$$14)) {\n return x$$14;\n } else if (BigInteger$$get_IsZero(y$$6)) {\n return y$$6;\n } else if (BigInteger$$get_IsOne(x$$14)) {\n return y$$6;\n } else if (BigInteger$$get_IsOne(y$$6)) {\n return x$$14;\n } else {\n const m = BigNatModule$0024$0024$0024mul(BigInteger$$get_V(x$$14), BigInteger$$get_V(y$$6));\n return BigInteger$$$create$$Z2BE94A1(BigInteger$$get_SignInt(x$$14) * BigInteger$$get_SignInt(y$$6), m);\n }\n}\nexport function BigInteger$$$DivRem$$56F059C0(x$$15, y$$7) {\n if (BigInteger$$get_IsZero(y$$7)) {\n throw new Error();\n } else {\n void null;\n }\n\n if (BigInteger$$get_IsZero(x$$15)) {\n return [BigInteger$$$get_Zero(), BigInteger$$$get_Zero()];\n } else {\n const patternInput = BigNatModule$0024$0024$0024divmod(BigInteger$$get_V(x$$15), BigInteger$$get_V(y$$7));\n const matchValue$$7 = [BigInteger$$get_SignInt(x$$15), BigInteger$$get_SignInt(y$$7)];\n var $target$$46;\n\n if (matchValue$$7[0] === -1) {\n if (matchValue$$7[1] === -1) {\n $target$$46 = 1;\n } else if (matchValue$$7[1] === 1) {\n $target$$46 = 3;\n } else {\n $target$$46 = 4;\n }\n } else if (matchValue$$7[0] === 1) {\n if (matchValue$$7[1] === -1) {\n $target$$46 = 2;\n } else if (matchValue$$7[1] === 1) {\n $target$$46 = 0;\n } else {\n $target$$46 = 4;\n }\n } else {\n $target$$46 = 4;\n }\n\n switch ($target$$46) {\n case 0:\n {\n return [BigInteger$$$posn$$Z67CCE57D(patternInput[0]), BigInteger$$$posn$$Z67CCE57D(patternInput[1])];\n }\n\n case 1:\n {\n return [BigInteger$$$posn$$Z67CCE57D(patternInput[0]), BigInteger$$$negn$$Z67CCE57D(patternInput[1])];\n }\n\n case 2:\n {\n return [BigInteger$$$negn$$Z67CCE57D(patternInput[0]), BigInteger$$$posn$$Z67CCE57D(patternInput[1])];\n }\n\n case 3:\n {\n return [BigInteger$$$negn$$Z67CCE57D(patternInput[0]), BigInteger$$$negn$$Z67CCE57D(patternInput[1])];\n }\n\n case 4:\n {\n throw new Error(\"signs should be +/- 1\\\\nParameter name: x\");\n }\n }\n }\n}\nexport function BigInteger$$$op_Division$$56F059C0(x$$16, y$$8) {\n const tuple = BigInteger$$$DivRem$$56F059C0(x$$16, y$$8);\n return tuple[0];\n}\nexport function BigInteger$$$op_Modulus$$56F059C0(x$$17, y$$9) {\n const tuple$$1 = BigInteger$$$DivRem$$56F059C0(x$$17, y$$9);\n return tuple$$1[1];\n}\nexport function BigInteger$$$op_RightShift$$62E082A2(x$$18, y$$10) {\n return BigInteger$$$op_Division$$56F059C0(x$$18, BigInteger$$$Pow$$62E082A2(BigInteger$$$get_Two(), y$$10));\n}\nexport function BigInteger$$$op_LeftShift$$62E082A2(x$$19, y$$11) {\n return BigInteger$$$op_Multiply$$56F059C0(x$$19, BigInteger$$$Pow$$62E082A2(BigInteger$$$get_Two(), y$$11));\n}\nexport function BigInteger$$$op_BitwiseAnd$$56F059C0(x$$20, y$$12) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024bitAnd(BigInteger$$get_V(x$$20), BigInteger$$get_V(y$$12)));\n}\nexport function BigInteger$$$op_BitwiseOr$$56F059C0(x$$21, y$$13) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024bitOr(BigInteger$$get_V(x$$21), BigInteger$$get_V(y$$13)));\n}\nexport function BigInteger$$$op_ExclusiveOr$$56F059C0(x$$22, y$$14) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024bitXor(BigInteger$$get_V(x$$22), BigInteger$$get_V(y$$14)));\n}\nexport function BigInteger$$$GreatestCommonDivisor$$56F059C0(x$$23, y$$15) {\n const matchValue$$8 = [BigInteger$$get_SignInt(x$$23), BigInteger$$get_SignInt(y$$15)];\n\n if (matchValue$$8[0] === 0) {\n if (matchValue$$8[1] === 0) {\n return BigInteger$$$get_Zero();\n } else {\n return BigInteger$$$posn$$Z67CCE57D(BigInteger$$get_V(y$$15));\n }\n } else if (matchValue$$8[1] === 0) {\n return BigInteger$$$posn$$Z67CCE57D(BigInteger$$get_V(x$$23));\n } else {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024hcf(BigInteger$$get_V(x$$23), BigInteger$$get_V(y$$15)));\n }\n}\nexport function BigInteger$$get_IsNegative(x$$24) {\n if (BigInteger$$get_SignInt(x$$24) === -1) {\n return !BigInteger$$get_IsZero(x$$24);\n } else {\n return false;\n }\n}\nexport function BigInteger$$get_IsPositive(x$$25) {\n if (BigInteger$$get_SignInt(x$$25) === 1) {\n return !BigInteger$$get_IsZero(x$$25);\n } else {\n return false;\n }\n}\nexport function BigInteger$$$Abs$$Z665282C2(x$$26) {\n if (BigInteger$$get_SignInt(x$$26) === -1) {\n return BigInteger$$$op_UnaryNegation$$Z665282C2(x$$26);\n } else {\n return x$$26;\n }\n}\nexport function BigInteger$$$op_LessThanOrEqual$$56F059C0(x$$27, y$$16) {\n const matchValue$$9 = [BigInteger$$get_SignInt(x$$27), BigInteger$$get_SignInt(y$$16)];\n var $target$$68;\n\n if (matchValue$$9[0] === -1) {\n if (matchValue$$9[1] === -1) {\n $target$$68 = 1;\n } else if (matchValue$$9[1] === 0) {\n $target$$68 = 6;\n } else if (matchValue$$9[1] === 1) {\n $target$$68 = 3;\n } else {\n $target$$68 = 9;\n }\n } else if (matchValue$$9[0] === 0) {\n if (matchValue$$9[1] === -1) {\n $target$$68 = 8;\n } else if (matchValue$$9[1] === 0) {\n $target$$68 = 4;\n } else if (matchValue$$9[1] === 1) {\n $target$$68 = 7;\n } else {\n $target$$68 = 9;\n }\n } else if (matchValue$$9[0] === 1) {\n if (matchValue$$9[1] === -1) {\n $target$$68 = 2;\n } else if (matchValue$$9[1] === 0) {\n $target$$68 = 5;\n } else if (matchValue$$9[1] === 1) {\n $target$$68 = 0;\n } else {\n $target$$68 = 9;\n }\n } else {\n $target$$68 = 9;\n }\n\n switch ($target$$68) {\n case 0:\n {\n return BigNatModule$0024$0024$0024lte(BigInteger$$get_V(x$$27), BigInteger$$get_V(y$$16));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024lte(BigInteger$$get_V(y$$16), BigInteger$$get_V(x$$27));\n }\n\n case 2:\n {\n if (BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$27))) {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$16));\n } else {\n return false;\n }\n }\n\n case 3:\n {\n return true;\n }\n\n case 4:\n {\n return true;\n }\n\n case 5:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$27));\n }\n\n case 6:\n {\n return true;\n }\n\n case 7:\n {\n return true;\n }\n\n case 8:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$16));\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$op_GreaterThanOrEqual$$56F059C0(x$$28, y$$17) {\n const matchValue$$10 = [BigInteger$$get_SignInt(x$$28), BigInteger$$get_SignInt(y$$17)];\n var $target$$71;\n\n if (matchValue$$10[0] === -1) {\n if (matchValue$$10[1] === -1) {\n $target$$71 = 1;\n } else if (matchValue$$10[1] === 0) {\n $target$$71 = 6;\n } else if (matchValue$$10[1] === 1) {\n $target$$71 = 3;\n } else {\n $target$$71 = 9;\n }\n } else if (matchValue$$10[0] === 0) {\n if (matchValue$$10[1] === -1) {\n $target$$71 = 8;\n } else if (matchValue$$10[1] === 0) {\n $target$$71 = 4;\n } else if (matchValue$$10[1] === 1) {\n $target$$71 = 7;\n } else {\n $target$$71 = 9;\n }\n } else if (matchValue$$10[0] === 1) {\n if (matchValue$$10[1] === -1) {\n $target$$71 = 2;\n } else if (matchValue$$10[1] === 0) {\n $target$$71 = 5;\n } else if (matchValue$$10[1] === 1) {\n $target$$71 = 0;\n } else {\n $target$$71 = 9;\n }\n } else {\n $target$$71 = 9;\n }\n\n switch ($target$$71) {\n case 0:\n {\n return BigNatModule$0024$0024$0024gte(BigInteger$$get_V(x$$28), BigInteger$$get_V(y$$17));\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024gte(BigInteger$$get_V(y$$17), BigInteger$$get_V(x$$28));\n }\n\n case 2:\n {\n return true;\n }\n\n case 3:\n {\n if (BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$28))) {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$17));\n } else {\n return false;\n }\n }\n\n case 4:\n {\n return true;\n }\n\n case 5:\n {\n return true;\n }\n\n case 6:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(x$$28));\n }\n\n case 7:\n {\n return BigNatModule$0024$0024$0024isZero(BigInteger$$get_V(y$$17));\n }\n\n case 8:\n {\n return true;\n }\n\n case 9:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$$Pow$$62E082A2(x$$29, y$$18) {\n if (y$$18 < 0) {\n throw new Error(\"y\");\n } else {\n void null;\n }\n\n const matchValue$$11 = [BigInteger$$get_IsZero(x$$29), y$$18];\n\n if (matchValue$$11[0]) {\n if (matchValue$$11[1] === 0) {\n return BigInteger$$$get_One();\n } else {\n return BigInteger$$$get_Zero();\n }\n } else {\n const yval = BigInteger$$$$002Ector$$Z524259A4(y$$18);\n return BigInteger$$$create$$Z2BE94A1(BigNatModule$0024$0024$0024isZero(BigNatModule$0024$0024$0024rem(BigInteger$$get_V(yval), BigNatModule$0024$0024$0024two)) ? 1 : BigInteger$$get_SignInt(x$$29), BigNatModule$0024$0024$0024pow(BigInteger$$get_V(x$$29), BigInteger$$get_V(yval)));\n }\n}\nexport function BigInteger$$get_ToInt32(x$$30) {\n if (BigInteger$$get_IsZero(x$$30)) {\n return 0;\n } else {\n const u = BigNatModule$0024$0024$0024toUInt32(BigInteger$$get_V(x$$30));\n\n if (u <= 2147483647 >>> 0) {\n return BigInteger$$get_SignInt(x$$30) * ~~u | 0;\n } else if (BigInteger$$get_SignInt(x$$30) === -1 ? u === 2147483647 + 1 >>> 0 : false) {\n return -2147483648 | 0;\n } else {\n throw new Error();\n }\n }\n}\nexport function BigInteger$$get_ToUInt32(x$$31) {\n if (BigInteger$$get_IsZero(x$$31)) {\n return 0;\n } else {\n return BigNatModule$0024$0024$0024toUInt32(BigInteger$$get_V(x$$31));\n }\n}\nexport function BigInteger$$get_ToInt64(x$$32) {\n if (BigInteger$$get_IsZero(x$$32)) {\n return fromBits(0, 0, false);\n } else {\n const u$$1 = BigNatModule$0024$0024$0024toUInt64(BigInteger$$get_V(x$$32));\n\n if (compare(u$$1, fromValue(fromBits(4294967295, 2147483647, false), true)) <= 0) {\n return op_Multiply(fromInteger(BigInteger$$get_SignInt(x$$32), false, 2), fromValue(u$$1, false));\n } else if (BigInteger$$get_SignInt(x$$32) === -1 ? equals(u$$1, fromValue(op_Addition(fromBits(4294967295, 2147483647, false), fromBits(1, 0, false)), true)) : false) {\n return fromBits(0, 2147483648, false);\n } else {\n throw new Error();\n }\n }\n}\nexport function BigInteger$$get_ToUInt64(x$$33) {\n if (BigInteger$$get_IsZero(x$$33)) {\n return fromBits(0, 0, true);\n } else {\n return BigNatModule$0024$0024$0024toUInt64(BigInteger$$get_V(x$$33));\n }\n}\nexport function BigInteger$$get_ToDouble(x$$34) {\n const matchValue$$12 = BigInteger$$get_SignInt(x$$34) | 0;\n\n switch (matchValue$$12) {\n case -1:\n {\n return -BigNatModule$0024$0024$0024toFloat(BigInteger$$get_V(x$$34));\n }\n\n case 0:\n {\n return 0;\n }\n\n case 1:\n {\n return BigNatModule$0024$0024$0024toFloat(BigInteger$$get_V(x$$34));\n }\n\n default:\n {\n throw new Error(\"signs should be +/- 1 or 0\\\\nParameter name: x\");\n }\n }\n}\nexport function BigInteger$$get_ToSByte(x$$35) {\n return (BigInteger$$get_ToInt32(x$$35) + 0x80 & 0xFF) - 0x80;\n}\nexport function BigInteger$$get_ToByte(x$$36) {\n return BigInteger$$get_ToUInt32(x$$36) & 0xFF;\n}\nexport function BigInteger$$get_ToInt16(x$$37) {\n return (BigInteger$$get_ToInt32(x$$37) + 0x8000 & 0xFFFF) - 0x8000;\n}\nexport function BigInteger$$get_ToUInt16(x$$38) {\n return BigInteger$$get_ToUInt32(x$$38) & 0xFFFF;\n}\nexport function BigInteger$$get_ToSingle(x$$39) {\n return BigInteger$$get_ToDouble(x$$39);\n}\nexport function BigInteger$$get_ToDecimal(x$$40) {\n return new Decimal(BigInteger$$get_ToDouble(x$$40));\n}\nexport function BigInteger$$$Parse$$Z721C83C5(text) {\n if (text == null) {\n throw new Error(\"text\");\n } else {\n void null;\n }\n\n const text$$1 = text.trim();\n const len = text$$1.length | 0;\n\n if (len === 0) {\n throw new Error();\n } else {\n void null;\n }\n\n const matchValue$$13 = [text$$1[0], len];\n\n if (matchValue$$13[0] === \"+\") {\n if (matchValue$$13[1] === 1) {\n throw new Error();\n } else {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024ofString(text$$1.slice(1, len - 1 + 1)));\n }\n } else if (matchValue$$13[0] === \"-\") {\n if (matchValue$$13[1] === 1) {\n throw new Error();\n } else {\n return BigInteger$$$negn$$Z67CCE57D(BigNatModule$0024$0024$0024ofString(text$$1.slice(1, len - 1 + 1)));\n }\n } else {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024ofString(text$$1));\n }\n}\nexport function BigInteger$$get_IsSmall(x$$41) {\n if (BigInteger$$get_IsZero(x$$41)) {\n return true;\n } else {\n return BigNatModule$0024$0024$0024isSmall(BigInteger$$get_V(x$$41));\n }\n}\nexport function BigInteger$$$Factorial$$Z665282C2(x$$42) {\n if (BigInteger$$get_IsNegative(x$$42)) {\n throw new Error(\"mustBeNonNegative\\\\nParameter name: x\");\n } else {\n void null;\n }\n\n if (BigInteger$$get_IsPositive(x$$42)) {\n return BigInteger$$$posn$$Z67CCE57D(BigNatModule$0024$0024$0024factorial(BigInteger$$get_V(x$$42)));\n } else {\n return BigInteger$$$get_One();\n }\n}\nexport function BigInteger$$$op_UnaryPlus$$Z665282C2(n1) {\n return n1;\n}\nexport function BigInteger$$$FromInt64$$Z524259C1(x$$43) {\n return BigInteger$$$$002Ector$$Z524259C1(x$$43);\n}\nexport function BigInteger$$$FromInt32$$Z524259A4(x$$44) {\n return BigInteger$$$$002Ector$$Z524259A4(x$$44);\n}\n\nBigInteger.prototype.CompareTo = function (obj$$1) {\n const this$$$1 = this;\n\n if (obj$$1 instanceof BigInteger) {\n return BigInteger$$$compare$$56F059C0(this$$$1, obj$$1) | 0;\n } else {\n throw new Error(\"the objects are not comparable\\\\nParameter name: obj\");\n }\n};","import { BigInteger$$$op_Inequality$$56F059C0 as BigInteger$0024$0024$0024op_Inequality$0024$002456F059C0, BigInteger$$$op_Equality$$56F059C0 as BigInteger$0024$0024$0024op_Equality$0024$002456F059C0, BigInteger$$$op_GreaterThanOrEqual$$56F059C0 as BigInteger$0024$0024$0024op_GreaterThanOrEqual$0024$002456F059C0, BigInteger$$$op_GreaterThan$$56F059C0 as BigInteger$0024$0024$0024op_GreaterThan$0024$002456F059C0, BigInteger$$$op_LessThanOrEqual$$56F059C0 as BigInteger$0024$0024$0024op_LessThanOrEqual$0024$002456F059C0, BigInteger$$$op_LessThan$$56F059C0 as BigInteger$0024$0024$0024op_LessThan$0024$002456F059C0, BigInteger$$$op_ExclusiveOr$$56F059C0 as BigInteger$0024$0024$0024op_ExclusiveOr$0024$002456F059C0, BigInteger$$$op_BitwiseOr$$56F059C0 as BigInteger$0024$0024$0024op_BitwiseOr$0024$002456F059C0, BigInteger$$$op_BitwiseAnd$$56F059C0 as BigInteger$0024$0024$0024op_BitwiseAnd$0024$002456F059C0, BigInteger$$$op_LeftShift$$62E082A2 as BigInteger$0024$0024$0024op_LeftShift$0024$002462E082A2, BigInteger$$$op_RightShift$$62E082A2 as BigInteger$0024$0024$0024op_RightShift$0024$002462E082A2, BigInteger$$$op_UnaryPlus$$Z665282C2 as BigInteger$0024$0024$0024op_UnaryPlus$0024$0024Z665282C2, BigInteger$$$op_UnaryNegation$$Z665282C2 as BigInteger$0024$0024$0024op_UnaryNegation$0024$0024Z665282C2, BigInteger$$$op_Modulus$$56F059C0 as BigInteger$0024$0024$0024op_Modulus$0024$002456F059C0, BigInteger$$$op_Division$$56F059C0 as BigInteger$0024$0024$0024op_Division$0024$002456F059C0, BigInteger$$$op_Multiply$$56F059C0 as BigInteger$0024$0024$0024op_Multiply$0024$002456F059C0, BigInteger$$$op_Subtraction$$56F059C0 as BigInteger$0024$0024$0024op_Subtraction$0024$002456F059C0, BigInteger$$$op_Addition$$56F059C0 as BigInteger$0024$0024$0024op_Addition$0024$002456F059C0, BigInteger$$get_IsOne as BigInteger$0024$0024get_IsOne, BigInteger$$get_IsZero as BigInteger$0024$0024get_IsZero, BigInteger$$get_Sign as BigInteger$0024$0024get_Sign, BigInteger$$get_ToDecimal as BigInteger$0024$0024get_ToDecimal, BigInteger$$get_ToDouble as BigInteger$0024$0024get_ToDouble, BigInteger$$get_ToSingle as BigInteger$0024$0024get_ToSingle, BigInteger$$get_ToUInt64 as BigInteger$0024$0024get_ToUInt64, BigInteger$$get_ToInt64 as BigInteger$0024$0024get_ToInt64, BigInteger$$get_ToUInt32 as BigInteger$0024$0024get_ToUInt32, BigInteger$$get_ToInt32 as BigInteger$0024$0024get_ToInt32, BigInteger$$get_ToUInt16 as BigInteger$0024$0024get_ToUInt16, BigInteger$$get_ToInt16 as BigInteger$0024$0024get_ToInt16, BigInteger$$get_ToByte as BigInteger$0024$0024get_ToByte, BigInteger$$get_ToSByte as BigInteger$0024$0024get_ToSByte, BigInteger$$$$002Ector$$Z524259A4 as BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4, BigInteger$$$$002Ector$$Z524259C1 as BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259C1, BigInteger$$$get_Two as BigInteger$0024$0024$0024get_Two, BigInteger$$$get_One as BigInteger$0024$0024$0024get_One, BigInteger$$$Abs$$Z665282C2 as BigInteger$0024$0024$0024Abs$0024$0024Z665282C2, BigInteger$$$Pow$$62E082A2 as BigInteger$0024$0024$0024Pow$0024$002462E082A2, BigInteger$$$GreatestCommonDivisor$$56F059C0 as BigInteger$0024$0024$0024GreatestCommonDivisor$0024$002456F059C0, BigInteger$$$DivRem$$56F059C0 as BigInteger$0024$0024$0024DivRem$0024$002456F059C0, BigInteger$$$Parse$$Z721C83C5 as BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5, BigInteger$$$get_Zero as BigInteger$0024$0024$0024get_Zero, BigInteger } from \"./BigInt/z\";\nimport { fromInteger } from \"./Long.js\";\nimport { min, comparePrimitives, equals as equals$$1, structuralHash } from \"./Util.js\";\nimport { delay, unfold, rangeNumber } from \"./Seq.js\";\nimport { fold, head, skipWhile, find, ofSeq } from \"./List.js\";\nimport { List } from \"./Types.js\";\nimport { fill, reverse, ofList } from \"./Array.js\";\nexport function isBigInt(x) {\n return x instanceof BigInteger;\n}\nexport function tryParse(str) {\n try {\n const res = BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5(str);\n return [true, res];\n } catch (matchValue) {\n return [false, BigInteger$0024$0024$0024get_Zero()];\n }\n}\nexport function parse(arg00) {\n return BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5(arg00);\n}\nexport function divRem(arg00$$1, arg01) {\n return BigInteger$0024$0024$0024DivRem$0024$002456F059C0(arg00$$1, arg01);\n}\nexport function greatestCommonDivisor(arg00$$2, arg01$$1) {\n return BigInteger$0024$0024$0024GreatestCommonDivisor$0024$002456F059C0(arg00$$2, arg01$$1);\n}\nexport function pow(arg00$$3, arg01$$2) {\n return BigInteger$0024$0024$0024Pow$0024$002462E082A2(arg00$$3, arg01$$2);\n}\nexport function abs(arg00$$4) {\n return BigInteger$0024$0024$0024Abs$0024$0024Z665282C2(arg00$$4);\n}\nexport const zero = BigInteger$0024$0024$0024get_Zero();\nexport const one = BigInteger$0024$0024$0024get_One();\nexport const two = BigInteger$0024$0024$0024get_Two();\nexport function fromString(s) {\n return BigInteger$0024$0024$0024Parse$0024$0024Z721C83C5(s);\n}\nexport function fromZero() {\n return BigInteger$0024$0024$0024get_Zero();\n}\nexport function fromOne() {\n return BigInteger$0024$0024$0024get_One();\n}\nexport function fromInt64(i) {\n return BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259C1(i);\n}\nexport function fromInt32(i$$1) {\n var value;\n\n if (i$$1 > 2147483647) {\n return BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259C1((value = i$$1, (fromInteger(value, false, 6))));\n } else {\n return BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4(i$$1);\n }\n}\nexport function toSByte(x$$1) {\n return BigInteger$0024$0024get_ToSByte(x$$1);\n}\nexport function toByte(x$$2) {\n return BigInteger$0024$0024get_ToByte(x$$2);\n}\nexport function toInt16(x$$3) {\n return BigInteger$0024$0024get_ToInt16(x$$3);\n}\nexport function toUInt16(x$$4) {\n return BigInteger$0024$0024get_ToUInt16(x$$4);\n}\nexport function toInt32(x$$5) {\n return BigInteger$0024$0024get_ToInt32(x$$5);\n}\nexport function toUInt32(x$$6) {\n return BigInteger$0024$0024get_ToUInt32(x$$6);\n}\nexport function toInt64(x$$7) {\n return BigInteger$0024$0024get_ToInt64(x$$7);\n}\nexport function toUInt64(x$$8) {\n return BigInteger$0024$0024get_ToUInt64(x$$8);\n}\nexport function toSingle(x$$9) {\n return BigInteger$0024$0024get_ToSingle(x$$9);\n}\nexport function toDouble(x$$10) {\n return BigInteger$0024$0024get_ToDouble(x$$10);\n}\nexport function toDecimal(x$$11) {\n return BigInteger$0024$0024get_ToDecimal(x$$11);\n}\nexport function sign(x$$12) {\n return BigInteger$0024$0024get_Sign(x$$12);\n}\nexport function isZero(x$$13) {\n return BigInteger$0024$0024get_IsZero(x$$13);\n}\nexport function isOne(x$$14) {\n return BigInteger$0024$0024get_IsOne(x$$14);\n}\nexport function hash(x$$15) {\n return structuralHash(x$$15);\n}\nexport function compare(x$$16, y) {\n return x$$16.CompareTo(y);\n}\nexport function equals(x$$17, y$$1) {\n return equals$$1(x$$17, y$$1);\n}\nexport function toString(x$$18) {\n return String(x$$18);\n}\nexport const get_Zero = BigInteger$0024$0024$0024get_Zero();\nexport const get_One = BigInteger$0024$0024$0024get_One();\nexport function op_Addition(arg00$$5, arg01$$3) {\n return BigInteger$0024$0024$0024op_Addition$0024$002456F059C0(arg00$$5, arg01$$3);\n}\nexport function op_Subtraction(arg00$$6, arg01$$4) {\n return BigInteger$0024$0024$0024op_Subtraction$0024$002456F059C0(arg00$$6, arg01$$4);\n}\nexport function op_Multiply(arg00$$7, arg01$$5) {\n return BigInteger$0024$0024$0024op_Multiply$0024$002456F059C0(arg00$$7, arg01$$5);\n}\nexport function op_Division(arg00$$8, arg01$$6) {\n return BigInteger$0024$0024$0024op_Division$0024$002456F059C0(arg00$$8, arg01$$6);\n}\nexport function op_Modulus(arg00$$9, arg01$$7) {\n return BigInteger$0024$0024$0024op_Modulus$0024$002456F059C0(arg00$$9, arg01$$7);\n}\nexport function op_UnaryNegation(arg00$$10) {\n return BigInteger$0024$0024$0024op_UnaryNegation$0024$0024Z665282C2(arg00$$10);\n}\nexport function op_UnaryPlus(arg00$$11) {\n return BigInteger$0024$0024$0024op_UnaryPlus$0024$0024Z665282C2(arg00$$11);\n}\nexport function op_RightShift(arg00$$12, arg01$$8) {\n return BigInteger$0024$0024$0024op_RightShift$0024$002462E082A2(arg00$$12, arg01$$8);\n}\nexport function op_LeftShift(arg00$$13, arg01$$9) {\n return BigInteger$0024$0024$0024op_LeftShift$0024$002462E082A2(arg00$$13, arg01$$9);\n}\nexport function op_BitwiseAnd(arg00$$14, arg01$$10) {\n return BigInteger$0024$0024$0024op_BitwiseAnd$0024$002456F059C0(arg00$$14, arg01$$10);\n}\nexport function op_BitwiseOr(arg00$$15, arg01$$11) {\n return BigInteger$0024$0024$0024op_BitwiseOr$0024$002456F059C0(arg00$$15, arg01$$11);\n}\nexport function op_ExclusiveOr(arg00$$16, arg01$$12) {\n return BigInteger$0024$0024$0024op_ExclusiveOr$0024$002456F059C0(arg00$$16, arg01$$12);\n}\nexport function op_LessThan(arg00$$17, arg01$$13) {\n return BigInteger$0024$0024$0024op_LessThan$0024$002456F059C0(arg00$$17, arg01$$13);\n}\nexport function op_LessThanOrEqual(arg00$$18, arg01$$14) {\n return BigInteger$0024$0024$0024op_LessThanOrEqual$0024$002456F059C0(arg00$$18, arg01$$14);\n}\nexport function op_GreaterThan(arg00$$19, arg01$$15) {\n return BigInteger$0024$0024$0024op_GreaterThan$0024$002456F059C0(arg00$$19, arg01$$15);\n}\nexport function op_GreaterThanOrEqual(arg00$$20, arg01$$16) {\n return BigInteger$0024$0024$0024op_GreaterThanOrEqual$0024$002456F059C0(arg00$$20, arg01$$16);\n}\nexport function op_Equality(arg00$$21, arg01$$17) {\n return BigInteger$0024$0024$0024op_Equality$0024$002456F059C0(arg00$$21, arg01$$17);\n}\nexport function op_Inequality(arg00$$22, arg01$$18) {\n return BigInteger$0024$0024$0024op_Inequality$0024$002456F059C0(arg00$$22, arg01$$18);\n}\n\nfunction flipTwosComplement(currByte, lowBitFound) {\n if (lowBitFound) {\n return [(currByte ^ 255) & 255, true];\n } else if (currByte === 0) {\n return [0, false];\n } else {\n let firstBitIndex;\n const list = ofSeq(rangeNumber(0, 1, 7));\n firstBitIndex = find(function predicate(i$$2) {\n return (currByte & 1 << i$$2) > 0;\n }, list);\n return [(currByte ^ 254 << firstBitIndex) & 255, true];\n }\n}\n\nexport function toByteArray(value$$1) {\n if (equals$$1(value$$1, zero)) {\n return new Uint8Array([0]);\n } else {\n const isPositive = value$$1.CompareTo(zero) > 0;\n const value$$2 = isPositive ? value$$1 : BigInteger$0024$0024$0024op_Multiply$0024$002456F059C0(BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4(-1), value$$1);\n let mask32;\n let i$$3;\n i$$3 = fromInteger(4294967295, false, 6);\n mask32 = fromInt64(i$$3);\n\n const loop = function loop($accumBytes$$74, $consumeValue$$75, $lowBitFound$$1$$76) {\n var value$$9, value$$10, value$$11;\n\n loop: while (true) {\n const accumBytes = $accumBytes$$74,\n consumeValue = $consumeValue$$75,\n lowBitFound$$1 = $lowBitFound$$1$$76;\n\n if (consumeValue.CompareTo(zero) <= 0) {\n let accumBytes$$1;\n\n if (isPositive) {\n accumBytes$$1 = skipWhile(function predicate$$1(b) {\n return b === 0;\n }, accumBytes);\n } else {\n accumBytes$$1 = skipWhile(function predicate$$2(b$$1) {\n return b$$1 === 255;\n }, accumBytes);\n }\n\n const isHighBitOne = (head(accumBytes$$1) & 128) !== 0;\n const accumBytes$$2 = (isPositive ? isHighBitOne : false) ? new List(0, accumBytes$$1) : (!isPositive ? !isHighBitOne : false) ? new List(255, accumBytes$$1) : accumBytes$$1;\n let array;\n array = ofList(accumBytes$$2, Uint8Array);\n return reverse(array, Uint8Array);\n } else {\n let currValue;\n const x$$19 = BigInteger$0024$0024$0024op_BitwiseAnd$0024$002456F059C0(consumeValue, mask32);\n currValue = toUInt32(x$$19);\n\n if (isPositive) {\n let b0;\n b0 = currValue & 0xFF;\n let b1;\n const value$$5 = currValue >>> 8;\n b1 = value$$5 & 0xFF;\n let b2;\n const value$$6 = currValue >>> 16;\n b2 = value$$6 & 0xFF;\n let b3;\n const value$$7 = currValue >>> 24;\n b3 = value$$7 & 0xFF;\n $accumBytes$$74 = new List(b3, new List(b2, new List(b1, new List(b0, accumBytes))));\n $consumeValue$$75 = BigInteger$0024$0024$0024op_RightShift$0024$002462E082A2(consumeValue, 32);\n $lowBitFound$$1$$76 = false;\n continue loop;\n } else {\n const patternInput = flipTwosComplement((currValue & 0xFF), lowBitFound$$1);\n const patternInput$$1 = flipTwosComplement((value$$9 = currValue >>> 8, (value$$9 & 0xFF)), patternInput[1]);\n const patternInput$$2 = flipTwosComplement((value$$10 = currValue >>> 16, (value$$10 & 0xFF)), patternInput$$1[1]);\n const patternInput$$3 = flipTwosComplement((value$$11 = currValue >>> 24, (value$$11 & 0xFF)), patternInput$$2[1]);\n $accumBytes$$74 = new List(patternInput$$3[0], new List(patternInput$$2[0], new List(patternInput$$1[0], new List(patternInput[0], accumBytes))));\n $consumeValue$$75 = BigInteger$0024$0024$0024op_RightShift$0024$002462E082A2(consumeValue, 32);\n $lowBitFound$$1$$76 = patternInput$$3[1];\n continue loop;\n }\n }\n\n break;\n }\n };\n\n return loop(new List(), value$$2, false);\n }\n}\nexport function fromByteArray(bytes) {\n if (bytes == null) {\n throw new Error(\"bytes\");\n } else {\n void null;\n }\n\n if (bytes.length === 0) {\n return zero;\n } else {\n const isPositive$$1 = (bytes[bytes.length - 1] & 128) === 0;\n const buffer = fill(new Uint8Array(4), 0, 4, 0);\n\n const loop$$1 = function loop$$1($accumUInt32$$80, $currIndex$$81, $bytesRemaining$$82, $lowBitFound$$6$$83) {\n loop$$1: while (true) {\n const accumUInt32 = $accumUInt32$$80,\n currIndex = $currIndex$$81,\n bytesRemaining = $bytesRemaining$$82,\n lowBitFound$$6 = $lowBitFound$$6$$83;\n\n if (bytesRemaining === 0) {\n let value$$14;\n value$$14 = fold(function folder(acc, value$$12) {\n var i$$4;\n return BigInteger$0024$0024$0024op_Addition$0024$002456F059C0(BigInteger$0024$0024$0024op_LeftShift$0024$002462E082A2(acc, 32), (i$$4 = (fromInteger(value$$12, false, 6)), (fromInt64(i$$4))));\n }, zero, accumUInt32);\n\n if (isPositive$$1) {\n return value$$14;\n } else {\n return BigInteger$0024$0024$0024op_Multiply$0024$002456F059C0(BigInteger$0024$0024$0024$0024002Ector$0024$0024Z524259A4(-1), value$$14);\n }\n } else {\n const bytesToProcess = min(comparePrimitives, bytesRemaining, 4) | 0;\n\n for (let i$$5 = 0; i$$5 <= bytesToProcess - 1; i$$5++) {\n buffer[i$$5] = bytes[currIndex + i$$5];\n }\n\n if (isPositive$$1) {\n fill(buffer, bytesToProcess, 4 - bytesToProcess, 0);\n const value$$15 = (((buffer[0] | buffer[1] << 8 >>> 0) >>> 0 | buffer[2] << 16 >>> 0) >>> 0 | buffer[3] << 24 >>> 0) >>> 0;\n $accumUInt32$$80 = new List(value$$15, accumUInt32);\n $currIndex$$81 = currIndex + bytesToProcess;\n $bytesRemaining$$82 = bytesRemaining - bytesToProcess;\n $lowBitFound$$6$$83 = false;\n continue loop$$1;\n } else {\n fill(buffer, bytesToProcess, 4 - bytesToProcess, 255);\n const patternInput$$4 = flipTwosComplement(buffer[0], lowBitFound$$6);\n const patternInput$$5 = flipTwosComplement(buffer[1], patternInput$$4[1]);\n const patternInput$$6 = flipTwosComplement(buffer[2], patternInput$$5[1]);\n const patternInput$$7 = flipTwosComplement(buffer[3], patternInput$$6[1]);\n const value$$16 = (((patternInput$$4[0] | patternInput$$5[0] << 8 >>> 0) >>> 0 | patternInput$$6[0] << 16 >>> 0) >>> 0 | patternInput$$7[0] << 24 >>> 0) >>> 0;\n $accumUInt32$$80 = new List(value$$16, accumUInt32);\n $currIndex$$81 = currIndex + bytesToProcess;\n $bytesRemaining$$82 = bytesRemaining - bytesToProcess;\n $lowBitFound$$6$$83 = patternInput$$7[1];\n continue loop$$1;\n }\n }\n\n break;\n }\n };\n\n return loop$$1(new List(), 0, bytes.length, false);\n }\n}\nexport function makeRangeStepFunction(step, last) {\n const stepComparedWithZero = step.CompareTo(zero) | 0;\n\n if (stepComparedWithZero === 0) {\n throw new Error(\"The step of a range cannot be zero\");\n } else {\n void null;\n }\n\n const stepGreaterThanZero = stepComparedWithZero > 0;\n return function (x$$20) {\n const comparedWithLast = x$$20.CompareTo(last) | 0;\n return ((stepGreaterThanZero ? comparedWithLast <= 0 : false) ? true : !stepGreaterThanZero ? comparedWithLast >= 0 : false) ? [x$$20, BigInteger$0024$0024$0024op_Addition$0024$002456F059C0(x$$20, step)] : undefined;\n };\n}\nexport function range(first, step$$1, last$$1) {\n const stepFn = makeRangeStepFunction(step$$1, last$$1);\n return delay(function () {\n return unfold(stepFn, first);\n });\n}","// Adapted from: https://github.com/dcodeIO/long.js/blob/master/src/long.js\n// Apache License 2.0: https://github.com/dcodeIO/long.js/blob/master/LICENSE\nexport default Long;\n/**\n * wasm optimizations, to do native i64 multiplication and divide\n */\nvar wasm = null;\ntry {\n wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11\n ])), {}).exports;\n}\ncatch (e) {\n // no wasm support :(\n}\n/**\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n * See the from* functions below for more convenient ways of constructing Longs.\n * @exports Long\n * @class A Long class for representing a 64 bit two's-complement integer value.\n * @param {number} low The low (signed) 32 bits of the long\n * @param {number} high The high (signed) 32 bits of the long\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @constructor\n */\nexport function Long(low, high, unsigned) {\n /**\n * The low 32 bits as a signed value.\n * @type {number}\n */\n this.low = low | 0;\n /**\n * The high 32 bits as a signed value.\n * @type {number}\n */\n this.high = high | 0;\n /**\n * Whether unsigned or not.\n * @type {boolean}\n */\n this.unsigned = !!unsigned;\n}\nLong.prototype.GetHashCode = function () {\n let h1 = this.unsigned ? 1 : 0;\n h1 = ((h1 << 5) + h1) ^ this.high;\n h1 = ((h1 << 5) + h1) ^ this.low;\n return h1;\n};\nLong.prototype.Equals = function (x) { return equals(this, x); };\nLong.prototype.CompareTo = function (x) { return compare(this, x); };\nLong.prototype.toString = function (radix) { return toString(this, radix); };\nLong.prototype.toJSON = function () { return toString(this); };\n// The internal representation of a long is the two given signed, 32-bit values.\n// We use 32-bit pieces because these are the size of integers on which\n// Javascript performs bit-operations. For operations like addition and\n// multiplication, we split each number into 16 bit pieces, which can easily be\n// multiplied within Javascript's floating-point representation without overflow\n// or change in sign.\n//\n// In the algorithms below, we frequently reduce the negative case to the\n// positive case by negating the input(s) and then post-processing the result.\n// Note that we must ALWAYS check specially whether those values are MIN_VALUE\n// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n// a positive number, it overflows back into a negative). Not handling this\n// case would often result in infinite recursion.\n//\n// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n// methods on which they depend.\n/**\n * An indicator used to reliably determine if an object is a Long or not.\n * @type {boolean}\n * @const\n * @private\n */\nLong.prototype.__isLong__;\nObject.defineProperty(Long.prototype, \"__isLong__\", { value: true });\n/**\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n * @inner\n */\nexport function isLong(obj) {\n return (obj && obj[\"__isLong__\"]) === true;\n}\n/**\n * Tests if the specified object is a Long.\n * @function\n * @param {*} obj Object\n * @returns {boolean}\n */\n// Long.isLong = isLong;\n/**\n * A cache of the Long representations of small integer values.\n * @type {!Object}\n * @inner\n */\nvar INT_CACHE = {};\n/**\n * A cache of the Long representations of small unsigned integer values.\n * @type {!Object}\n * @inner\n */\nvar UINT_CACHE = {};\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nexport function fromInt(value, unsigned) {\n var obj, cachedObj, cache;\n if (unsigned) {\n value >>>= 0;\n if (cache = (0 <= value && value < 256)) {\n cachedObj = UINT_CACHE[value];\n if (cachedObj)\n return cachedObj;\n }\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\n if (cache)\n UINT_CACHE[value] = obj;\n return obj;\n }\n else {\n value |= 0;\n if (cache = (-128 <= value && value < 128)) {\n cachedObj = INT_CACHE[value];\n if (cachedObj)\n return cachedObj;\n }\n obj = fromBits(value, value < 0 ? -1 : 0, false);\n if (cache)\n INT_CACHE[value] = obj;\n return obj;\n }\n}\n/**\n * Returns a Long representing the given 32 bit integer value.\n * @function\n * @param {number} value The 32 bit integer in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n// Long.fromInt = fromInt;\n/**\n * @param {number} value\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nexport function fromNumber(value, unsigned) {\n if (isNaN(value))\n return unsigned ? UZERO : ZERO;\n if (unsigned) {\n if (value < 0)\n return UZERO;\n if (value >= TWO_PWR_64_DBL)\n return MAX_UNSIGNED_VALUE;\n }\n else {\n if (value <= -TWO_PWR_63_DBL)\n return MIN_VALUE;\n if (value + 1 >= TWO_PWR_63_DBL)\n return MAX_VALUE;\n }\n if (value < 0)\n return negate(fromNumber(-value, unsigned));\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\n}\n/**\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n * @function\n * @param {number} value The number in question\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n// Long.fromNumber = fromNumber;\n/**\n * @param {number} lowBits\n * @param {number} highBits\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nexport function fromBits(lowBits, highBits, unsigned) {\n return new Long(lowBits, highBits, unsigned);\n}\n/**\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n * assumed to use 32 bits.\n * @function\n * @param {number} lowBits The low 32 bits\n * @param {number} highBits The high 32 bits\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long} The corresponding Long value\n */\n// Long.fromBits = fromBits;\n/**\n * @function\n * @param {number} base\n * @param {number} exponent\n * @returns {number}\n * @inner\n */\nvar pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n/**\n * @param {string} str\n * @param {(boolean|number)=} unsigned\n * @param {number=} radix\n * @returns {!Long}\n * @inner\n */\nexport function fromString(str, unsigned, radix) {\n if (str.length === 0)\n throw Error('empty string');\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\n return ZERO;\n if (typeof unsigned === 'number') {\n // For goog.math.long compatibility\n radix = unsigned,\n unsigned = false;\n }\n else {\n unsigned = !!unsigned;\n }\n radix = radix || 10;\n if (radix < 2 || 36 < radix)\n throw RangeError('radix');\n var p = str.indexOf('-');\n if (p > 0)\n throw Error('interior hyphen');\n else if (p === 0) {\n return negate(fromString(str.substring(1), unsigned, radix));\n }\n // Do several (8) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 8));\n var result = ZERO;\n for (var i = 0; i < str.length; i += 8) {\n var size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix);\n if (size < 8) {\n var power = fromNumber(pow_dbl(radix, size));\n result = add(multiply(result, power), fromNumber(value));\n }\n else {\n result = multiply(result, radixToPower);\n result = add(result, fromNumber(value));\n }\n }\n result.unsigned = unsigned;\n return result;\n}\n/**\n * Returns a Long representation of the given string, written using the specified radix.\n * @function\n * @param {string} str The textual representation of the Long\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n * @returns {!Long} The corresponding Long value\n */\n// Long.fromString = fromString;\n/**\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n * @param {boolean=} unsigned\n * @returns {!Long}\n * @inner\n */\nexport function fromValue(val, unsigned) {\n if (typeof val === 'number')\n return fromNumber(val, unsigned);\n if (typeof val === 'string')\n return fromString(val, unsigned);\n // Throws for non-objects, converts non-instanceof Long:\n return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned);\n}\n/**\n * Converts the specified value to a Long using the appropriate from* function for its type.\n * @function\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {!Long}\n */\n// Long.fromValue = fromValue;\n// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n// no runtime penalty for these.\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_16_DBL = 1 << 16;\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_24_DBL = 1 << 24;\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n/**\n * @type {number}\n * @const\n * @inner\n */\nvar TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n/**\n * @type {!Long}\n * @const\n * @inner\n */\nvar TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n/**\n * @type {!Long}\n * @inner\n */\nexport var ZERO = fromInt(0);\n/**\n * Signed zero.\n * @type {!Long}\n */\n// Long.ZERO = ZERO;\n/**\n * @type {!Long}\n * @inner\n */\nexport var UZERO = fromInt(0, true);\n/**\n * Unsigned zero.\n * @type {!Long}\n */\n// Long.UZERO = UZERO;\n/**\n * @type {!Long}\n * @inner\n */\nexport var ONE = fromInt(1);\n/**\n * Signed one.\n * @type {!Long}\n */\n// Long.ONE = ONE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var UONE = fromInt(1, true);\n/**\n * Unsigned one.\n * @type {!Long}\n */\n// Long.UONE = UONE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var NEG_ONE = fromInt(-1);\n/**\n * Signed negative one.\n * @type {!Long}\n */\n// Long.NEG_ONE = NEG_ONE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var MAX_VALUE = fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0, false);\n/**\n * Maximum signed value.\n * @type {!Long}\n */\n// Long.MAX_VALUE = MAX_VALUE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF | 0, 0xFFFFFFFF | 0, true);\n/**\n * Maximum unsigned value.\n * @type {!Long}\n */\n// Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n/**\n * @type {!Long}\n * @inner\n */\nexport var MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n/**\n * Minimum signed value.\n * @type {!Long}\n */\n// Long.MIN_VALUE = MIN_VALUE;\n/**\n * @alias Long.prototype\n * @inner\n */\n// var LongPrototype = Long.prototype;\n/**\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n * @this {!Long}\n * @returns {number}\n */\nexport function toInt($this) {\n return $this.unsigned ? $this.low >>> 0 : $this.low;\n}\n;\n/**\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n * @this {!Long}\n * @returns {number}\n */\nexport function toNumber($this) {\n if ($this.unsigned)\n return (($this.high >>> 0) * TWO_PWR_32_DBL) + ($this.low >>> 0);\n return $this.high * TWO_PWR_32_DBL + ($this.low >>> 0);\n}\n;\n/**\n * Converts the Long to a string written in the specified radix.\n * @this {!Long}\n * @param {number=} radix Radix (2-36), defaults to 10\n * @returns {string}\n * @override\n * @throws {RangeError} If `radix` is out of range\n */\nexport function toString($this, radix) {\n radix = radix || 10;\n if (radix < 2 || 36 < radix)\n throw RangeError('radix');\n if (isZero($this))\n return '0';\n if (isNegative($this)) { // Unsigned Longs are never negative\n if (equals($this, MIN_VALUE)) {\n // We need to change the Long value before it can be negated, so we remove\n // the bottom-most digit in this base and then recurse to do the rest.\n var radixLong = fromNumber(radix), div = divide($this, radixLong), rem1 = subtract(multiply(div, radixLong), $this);\n return toString(div, radix) + toInt(rem1).toString(radix);\n }\n else\n return '-' + toString(negate($this), radix);\n }\n // Do several (6) digits each time through the loop, so as to\n // minimize the calls to the very expensive emulated div.\n var radixToPower = fromNumber(pow_dbl(radix, 6), $this.unsigned), rem = $this;\n var result = '';\n while (true) {\n var remDiv = divide(rem, radixToPower), intval = toInt(subtract(rem, multiply(remDiv, radixToPower))) >>> 0, digits = intval.toString(radix);\n rem = remDiv;\n if (isZero(rem))\n return digits + result;\n else {\n while (digits.length < 6)\n digits = '0' + digits;\n result = '' + digits + result;\n }\n }\n}\n;\n/**\n * Gets the high 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed high bits\n */\nexport function getHighBits($this) {\n return $this.high;\n}\n;\n/**\n * Gets the high 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned high bits\n */\nexport function getHighBitsUnsigned($this) {\n return $this.high >>> 0;\n}\n;\n/**\n * Gets the low 32 bits as a signed integer.\n * @this {!Long}\n * @returns {number} Signed low bits\n */\nexport function getLowBits($this) {\n return $this.low;\n}\n;\n/**\n * Gets the low 32 bits as an unsigned integer.\n * @this {!Long}\n * @returns {number} Unsigned low bits\n */\nexport function getLowBitsUnsigned($this) {\n return $this.low >>> 0;\n}\n;\n/**\n * Gets the number of bits needed to represent the absolute value of this Long.\n * @this {!Long}\n * @returns {number}\n */\nexport function getNumBitsAbs($this) {\n if (isNegative($this)) // Unsigned Longs are never negative\n return equals($this, MIN_VALUE) ? 64 : getNumBitsAbs(negate($this));\n var val = $this.high != 0 ? $this.high : $this.low;\n for (var bit = 31; bit > 0; bit--)\n if ((val & (1 << bit)) != 0)\n break;\n return $this.high != 0 ? bit + 33 : bit + 1;\n}\n;\n/**\n * Tests if this Long's value equals zero.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isZero($this) {\n return $this.high === 0 && $this.low === 0;\n}\n;\n/**\n * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n * @returns {boolean}\n */\n// LongPrototype.eqz = LongPrototype.isZero;\n/**\n * Tests if this Long's value is negative.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isNegative($this) {\n return !$this.unsigned && $this.high < 0;\n}\n;\n/**\n * Tests if this Long's value is positive.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isPositive($this) {\n return $this.unsigned || $this.high >= 0;\n}\n;\n/**\n * Tests if this Long's value is odd.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isOdd($this) {\n return ($this.low & 1) === 1;\n}\n;\n/**\n * Tests if this Long's value is even.\n * @this {!Long}\n * @returns {boolean}\n */\nexport function isEven($this) {\n return ($this.low & 1) === 0;\n}\n;\n/**\n * Tests if this Long's value equals the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function equals($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n if ($this.unsigned !== other.unsigned && ($this.high >>> 31) === 1 && (other.high >>> 31) === 1)\n return false;\n return $this.high === other.high && $this.low === other.low;\n}\n;\n/**\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.eq = LongPrototype.equals;\n/**\n * Tests if this Long's value differs from the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function notEquals($this, other) {\n return !equals($this, /* validates */ other);\n}\n;\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.neq = LongPrototype.notEquals;\n/**\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.ne = LongPrototype.notEquals;\n/**\n * Tests if this Long's value is less than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function lessThan($this, other) {\n return compare($this, /* validates */ other) < 0;\n}\n;\n/**\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.lt = LongPrototype.lessThan;\n/**\n * Tests if this Long's value is less than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function lessThanOrEqual($this, other) {\n return compare($this, /* validates */ other) <= 0;\n}\n;\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.lte = LongPrototype.lessThanOrEqual;\n/**\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.le = LongPrototype.lessThanOrEqual;\n/**\n * Tests if this Long's value is greater than the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function greaterThan($this, other) {\n return compare($this, /* validates */ other) > 0;\n}\n;\n/**\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.gt = LongPrototype.greaterThan;\n/**\n * Tests if this Long's value is greater than or equal the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\nexport function greaterThanOrEqual($this, other) {\n return compare($this, /* validates */ other) >= 0;\n}\n;\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.gte = LongPrototype.greaterThanOrEqual;\n/**\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {boolean}\n */\n// LongPrototype.ge = LongPrototype.greaterThanOrEqual;\n/**\n * Compares this Long's value with the specified's.\n * @this {!Long}\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\nexport function compare($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n if (equals($this, other))\n return 0;\n var thisNeg = isNegative($this), otherNeg = isNegative(other);\n if (thisNeg && !otherNeg)\n return -1;\n if (!thisNeg && otherNeg)\n return 1;\n // At this point the sign bits are the same\n if (!$this.unsigned)\n return isNegative(subtract($this, other)) ? -1 : 1;\n // Both are positive if at least one is unsigned\n return (other.high >>> 0) > ($this.high >>> 0) || (other.high === $this.high && (other.low >>> 0) > ($this.low >>> 0)) ? -1 : 1;\n}\n;\n/**\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n * @function\n * @param {!Long|number|string} other Other value\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n * if the given one is greater\n */\n// LongPrototype.comp = LongPrototype.compare;\n/**\n * Negates this Long's value.\n * @this {!Long}\n * @returns {!Long} Negated Long\n */\nexport function negate($this) {\n if (!$this.unsigned && equals($this, MIN_VALUE))\n return MIN_VALUE;\n return add(not($this), ONE);\n}\n;\n/**\n * Negates this Long's value. This is an alias of {@link Long#negate}.\n * @function\n * @returns {!Long} Negated Long\n */\n// LongPrototype.neg = LongPrototype.negate;\n/**\n * Returns the sum of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} addend Addend\n * @returns {!Long} Sum\n */\nexport function add($this, addend) {\n if (!isLong(addend))\n addend = fromValue(addend);\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n var a48 = $this.high >>> 16;\n var a32 = $this.high & 0xFFFF;\n var a16 = $this.low >>> 16;\n var a00 = $this.low & 0xFFFF;\n var b48 = addend.high >>> 16;\n var b32 = addend.high & 0xFFFF;\n var b16 = addend.low >>> 16;\n var b00 = addend.low & 0xFFFF;\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 + b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 + b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 + b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 + b48;\n c48 &= 0xFFFF;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, $this.unsigned);\n}\n;\n/**\n * Returns the difference of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\nexport function subtract($this, subtrahend) {\n if (!isLong(subtrahend))\n subtrahend = fromValue(subtrahend);\n return add($this, negate(subtrahend));\n}\n;\n/**\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n * @function\n * @param {!Long|number|string} subtrahend Subtrahend\n * @returns {!Long} Difference\n */\n// LongPrototype.sub = LongPrototype.subtract;\n/**\n * Returns the product of this and the specified Long.\n * @this {!Long}\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\nexport function multiply($this, multiplier) {\n if (isZero($this))\n return $this.unsigned ? UZERO : ZERO;\n if (!isLong(multiplier))\n multiplier = fromValue(multiplier);\n // use wasm support if present\n if (wasm) {\n var low = wasm.mul($this.low, $this.high, multiplier.low, multiplier.high);\n return fromBits(low, wasm.get_high(), $this.unsigned);\n }\n if (isZero(multiplier))\n return $this.unsigned ? UZERO : ZERO;\n if (equals($this, MIN_VALUE))\n return isOdd(multiplier) ? MIN_VALUE : ZERO;\n if (equals(multiplier, MIN_VALUE))\n return isOdd($this) ? MIN_VALUE : ZERO;\n if (isNegative($this)) {\n if (isNegative(multiplier))\n return multiply(negate($this), negate(multiplier));\n else\n return negate(multiply(negate($this), multiplier));\n }\n else if (isNegative(multiplier))\n return negate(multiply($this, negate(multiplier)));\n // If both longs are small, use float multiplication\n if (lessThan($this, TWO_PWR_24) && lessThan(multiplier, TWO_PWR_24))\n return fromNumber(toNumber($this) * toNumber(multiplier), $this.unsigned);\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n // We can skip products that would overflow.\n var a48 = $this.high >>> 16;\n var a32 = $this.high & 0xFFFF;\n var a16 = $this.low >>> 16;\n var a00 = $this.low & 0xFFFF;\n var b48 = multiplier.high >>> 16;\n var b32 = multiplier.high & 0xFFFF;\n var b16 = multiplier.low >>> 16;\n var b00 = multiplier.low & 0xFFFF;\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\n c00 += a00 * b00;\n c16 += c00 >>> 16;\n c00 &= 0xFFFF;\n c16 += a16 * b00;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c16 += a00 * b16;\n c32 += c16 >>> 16;\n c16 &= 0xFFFF;\n c32 += a32 * b00;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a16 * b16;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c32 += a00 * b32;\n c48 += c32 >>> 16;\n c32 &= 0xFFFF;\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n c48 &= 0xFFFF;\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, $this.unsigned);\n}\n;\n/**\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n * @function\n * @param {!Long|number|string} multiplier Multiplier\n * @returns {!Long} Product\n */\n// LongPrototype.mul = LongPrototype.multiply;\n/**\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\n * unsigned if this Long is unsigned.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\nexport function divide($this, divisor) {\n if (!isLong(divisor))\n divisor = fromValue(divisor);\n if (isZero(divisor))\n throw Error('division by zero');\n // use wasm support if present\n if (wasm) {\n // guard against signed division overflow: the largest\n // negative number / -1 would be 1 larger than the largest\n // positive number, due to two's complement.\n if (!$this.unsigned &&\n $this.high === -0x80000000 &&\n divisor.low === -1 && divisor.high === -1) {\n // be consistent with non-wasm code path\n return $this;\n }\n var low = ($this.unsigned ? wasm.div_u : wasm.div_s)($this.low, $this.high, divisor.low, divisor.high);\n return fromBits(low, wasm.get_high(), $this.unsigned);\n }\n if (isZero($this))\n return $this.unsigned ? UZERO : ZERO;\n var approx, rem, res;\n if (!$this.unsigned) {\n // This section is only relevant for signed longs and is derived from the\n // closure library as a whole.\n if (equals($this, MIN_VALUE)) {\n if (equals(divisor, ONE) || equals(divisor, NEG_ONE))\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n else if (equals(divisor, MIN_VALUE))\n return ONE;\n else {\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n var halfThis = shiftRight($this, 1);\n approx = shiftLeft(divide(halfThis, divisor), 1);\n if (equals(approx, ZERO)) {\n return isNegative(divisor) ? ONE : NEG_ONE;\n }\n else {\n rem = subtract($this, multiply(divisor, approx));\n res = add(approx, divide(rem, divisor));\n return res;\n }\n }\n }\n else if (equals(divisor, MIN_VALUE))\n return $this.unsigned ? UZERO : ZERO;\n if (isNegative($this)) {\n if (isNegative(divisor))\n return divide(negate($this), negate(divisor));\n return negate(divide(negate($this), divisor));\n }\n else if (isNegative(divisor))\n return negate(divide($this, negate(divisor)));\n res = ZERO;\n }\n else {\n // The algorithm below has not been made for unsigned longs. It's therefore\n // required to take special care of the MSB prior to running it.\n if (!divisor.unsigned)\n divisor = toUnsigned(divisor);\n if (greaterThan(divisor, $this))\n return UZERO;\n if (greaterThan(divisor, shiftRightUnsigned($this, 1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\n return UONE;\n res = UZERO;\n }\n // Repeat the following until the remainder is less than other: find a\n // floating-point that approximates remainder / other *from below*, add this\n // into the result, and subtract it from the remainder. It is critical that\n // the approximate value is less than or equal to the real value so that the\n // remainder never becomes negative.\n rem = $this;\n while (greaterThanOrEqual(rem, divisor)) {\n // Approximate the result of division. This may be a little greater or\n // smaller than the actual value.\n approx = Math.max(1, Math.floor(toNumber(rem) / toNumber(divisor)));\n // We will tweak the approximate result by changing it in the 48-th digit or\n // the smallest non-fractional digit, whichever is larger.\n var log2 = Math.ceil(Math.log(approx) / Math.LN2), delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), \n // Decrease the approximation until it is smaller than the remainder. Note\n // that if it is too large, the product overflows and is negative.\n approxRes = fromNumber(approx), approxRem = multiply(approxRes, divisor);\n while (isNegative(approxRem) || greaterThan(approxRem, rem)) {\n approx -= delta;\n approxRes = fromNumber(approx, $this.unsigned);\n approxRem = multiply(approxRes, divisor);\n }\n // We know the answer can't be zero... and actually, zero would cause\n // infinite recursion since we would make no progress.\n if (isZero(approxRes))\n approxRes = ONE;\n res = add(res, approxRes);\n rem = subtract(rem, approxRem);\n }\n return res;\n}\n;\n/**\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Quotient\n */\n// LongPrototype.div = LongPrototype.divide;\n/**\n * Returns this Long modulo the specified.\n * @this {!Long}\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\nexport function modulo($this, divisor) {\n if (!isLong(divisor))\n divisor = fromValue(divisor);\n // use wasm support if present\n if (wasm) {\n var low = ($this.unsigned ? wasm.rem_u : wasm.rem_s)($this.low, $this.high, divisor.low, divisor.high);\n return fromBits(low, wasm.get_high(), $this.unsigned);\n }\n return subtract($this, multiply(divide($this, divisor), divisor));\n}\n;\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n// LongPrototype.mod = LongPrototype.modulo;\n/**\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n * @function\n * @param {!Long|number|string} divisor Divisor\n * @returns {!Long} Remainder\n */\n// LongPrototype.rem = LongPrototype.modulo;\n/**\n * Returns the bitwise NOT of this Long.\n * @this {!Long}\n * @returns {!Long}\n */\nexport function not($this) {\n return fromBits(~$this.low, ~$this.high, $this.unsigned);\n}\n;\n/**\n * Returns the bitwise AND of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nexport function and($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n return fromBits($this.low & other.low, $this.high & other.high, $this.unsigned);\n}\n;\n/**\n * Returns the bitwise OR of this Long and the specified.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nexport function or($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n return fromBits($this.low | other.low, $this.high | other.high, $this.unsigned);\n}\n;\n/**\n * Returns the bitwise XOR of this Long and the given one.\n * @this {!Long}\n * @param {!Long|number|string} other Other Long\n * @returns {!Long}\n */\nexport function xor($this, other) {\n if (!isLong(other))\n other = fromValue(other);\n return fromBits($this.low ^ other.low, $this.high ^ other.high, $this.unsigned);\n}\n;\n/**\n * Returns this Long with bits shifted to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nexport function shiftLeft($this, numBits) {\n if (isLong(numBits))\n numBits = toInt(numBits);\n if ((numBits &= 63) === 0)\n return $this;\n else if (numBits < 32)\n return fromBits($this.low << numBits, ($this.high << numBits) | ($this.low >>> (32 - numBits)), $this.unsigned);\n else\n return fromBits(0, $this.low << (numBits - 32), $this.unsigned);\n}\n;\n/**\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n// LongPrototype.shl = LongPrototype.shiftLeft;\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nexport function shiftRight($this, numBits) {\n if (isLong(numBits))\n numBits = toInt(numBits);\n if ((numBits &= 63) === 0)\n return $this;\n else if (numBits < 32)\n return fromBits(($this.low >>> numBits) | ($this.high << (32 - numBits)), $this.high >> numBits, $this.unsigned);\n else\n return fromBits($this.high >> (numBits - 32), $this.high >= 0 ? 0 : -1, $this.unsigned);\n}\n;\n/**\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n// LongPrototype.shr = LongPrototype.shiftRight;\n/**\n * Returns this Long with bits logically shifted to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\nexport function shiftRightUnsigned($this, numBits) {\n if (isLong(numBits))\n numBits = toInt(numBits);\n numBits &= 63;\n if (numBits === 0)\n return $this;\n else {\n var high = $this.high;\n if (numBits < 32) {\n var low = $this.low;\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, $this.unsigned);\n }\n else if (numBits === 32)\n return fromBits(high, 0, $this.unsigned);\n else\n return fromBits(high >>> (numBits - 32), 0, $this.unsigned);\n }\n}\n;\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n// LongPrototype.shru = LongPrototype.shiftRightUnsigned;\n/**\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Shifted Long\n */\n// LongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n/**\n * Returns this Long with bits rotated to the left by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nexport const rotateLeft = function rotateLeft(numBits) {\n var b;\n if (isLong(numBits))\n numBits = numBits.toInt();\n if ((numBits &= 63) === 0)\n return this;\n if (numBits === 32)\n return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = (32 - numBits);\n return fromBits(((this.low << numBits) | (this.high >>> b)), ((this.high << numBits) | (this.low >>> b)), this.unsigned);\n }\n numBits -= 32;\n b = (32 - numBits);\n return fromBits(((this.high << numBits) | (this.low >>> b)), ((this.low << numBits) | (this.high >>> b)), this.unsigned);\n};\n/**\n * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n// LongPrototype.rotl = LongPrototype.rotateLeft;\n/**\n * Returns this Long with bits rotated to the right by the given amount.\n * @this {!Long}\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\nexport const rotateRight = function rotateRight(numBits) {\n var b;\n if (isLong(numBits))\n numBits = numBits.toInt();\n if ((numBits &= 63) === 0)\n return this;\n if (numBits === 32)\n return fromBits(this.high, this.low, this.unsigned);\n if (numBits < 32) {\n b = (32 - numBits);\n return fromBits(((this.high << b) | (this.low >>> numBits)), ((this.low << b) | (this.high >>> numBits)), this.unsigned);\n }\n numBits -= 32;\n b = (32 - numBits);\n return fromBits(((this.low << b) | (this.high >>> numBits)), ((this.high << b) | (this.low >>> numBits)), this.unsigned);\n};\n/**\n * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n * @function\n * @param {number|!Long} numBits Number of bits\n * @returns {!Long} Rotated Long\n */\n// LongPrototype.rotr = LongPrototype.rotateRight;\n/**\n * Converts this Long to signed.\n * @this {!Long}\n * @returns {!Long} Signed long\n */\nexport function toSigned($this) {\n if (!$this.unsigned)\n return $this;\n return fromBits($this.low, $this.high, false);\n}\n;\n/**\n * Converts this Long to unsigned.\n * @this {!Long}\n * @returns {!Long} Unsigned long\n */\nexport function toUnsigned($this) {\n if ($this.unsigned)\n return $this;\n return fromBits($this.low, $this.high, true);\n}\n;\n/**\n * Converts this Long to its byte representation.\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @this {!Long}\n * @returns {!Array.} Byte representation\n */\nexport function toBytes($this, le) {\n return le ? toBytesLE($this) : toBytesBE($this);\n}\n;\n/**\n * Converts this Long to its little endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Little endian byte representation\n */\nexport function toBytesLE($this) {\n var hi = $this.high, lo = $this.low;\n return [\n lo & 0xff,\n lo >>> 8 & 0xff,\n lo >>> 16 & 0xff,\n lo >>> 24,\n hi & 0xff,\n hi >>> 8 & 0xff,\n hi >>> 16 & 0xff,\n hi >>> 24\n ];\n}\n;\n/**\n * Converts this Long to its big endian byte representation.\n * @this {!Long}\n * @returns {!Array.} Big endian byte representation\n */\nexport function toBytesBE($this) {\n var hi = $this.high, lo = $this.low;\n return [\n hi >>> 24,\n hi >>> 16 & 0xff,\n hi >>> 8 & 0xff,\n hi & 0xff,\n lo >>> 24,\n lo >>> 16 & 0xff,\n lo >>> 8 & 0xff,\n lo & 0xff\n ];\n}\n;\n/**\n * Creates a Long from its byte representation.\n * @param {!Array.} bytes Byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @param {boolean=} le Whether little or big endian, defaults to big endian\n * @returns {Long} The corresponding Long value\n */\nexport function fromBytes(bytes, unsigned, le) {\n return le ? fromBytesLE(bytes, unsigned) : fromBytesBE(bytes, unsigned);\n}\n;\n/**\n * Creates a Long from its little endian byte representation.\n * @param {!Array.} bytes Little endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nexport function fromBytesLE(bytes, unsigned) {\n return new Long(bytes[0] |\n bytes[1] << 8 |\n bytes[2] << 16 |\n bytes[3] << 24, bytes[4] |\n bytes[5] << 8 |\n bytes[6] << 16 |\n bytes[7] << 24, unsigned);\n}\n;\n/**\n * Creates a Long from its big endian byte representation.\n * @param {!Array.} bytes Big endian byte representation\n * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n * @returns {Long} The corresponding Long value\n */\nexport function fromBytesBE(bytes, unsigned) {\n return new Long(bytes[4] << 24 |\n bytes[5] << 16 |\n bytes[6] << 8 |\n bytes[7], bytes[0] << 24 |\n bytes[1] << 16 |\n bytes[2] << 8 |\n bytes[3], unsigned);\n}\n;\n//# sourceMappingURL=long.js.map","import { isValid } from \"./Int32\";\nimport * as LongLib from \"./lib/long\";\nexport default LongLib.Long;\nexport const get_Zero = LongLib.ZERO;\nexport const get_One = LongLib.ONE;\nexport const op_Addition = LongLib.add;\nexport const op_Subtraction = LongLib.subtract;\nexport const op_Multiply = LongLib.multiply;\nexport const op_Division = LongLib.divide;\nexport const op_Modulus = LongLib.modulo;\nexport const op_UnaryNegation = LongLib.negate;\nexport const op_LeftShift = LongLib.shiftLeft;\nexport const op_RightShift = LongLib.shiftRight;\nexport const op_RightShiftUnsigned = LongLib.shiftRightUnsigned;\nexport const op_BitwiseAnd = LongLib.and;\nexport const op_BitwiseOr = LongLib.or;\nexport const op_ExclusiveOr = LongLib.xor;\nexport const op_LogicalNot = LongLib.not;\nexport const op_LessThan = LongLib.lessThan;\nexport const op_LessThanOrEqual = LongLib.lessThanOrEqual;\nexport const op_GreaterThan = LongLib.greaterThan;\nexport const op_GreaterThanOrEqual = LongLib.greaterThanOrEqual;\nexport const op_Equality = LongLib.equals;\nexport const op_Inequality = LongLib.notEquals;\nexport const equals = LongLib.equals;\nexport const compare = LongLib.compare;\nexport const fromInt = LongLib.fromInt;\nexport const fromBits = LongLib.fromBits;\nexport const fromBytes = LongLib.fromBytes;\nexport const fromNumber = LongLib.fromNumber;\nexport const fromString = LongLib.fromString;\nexport const fromValue = LongLib.fromValue;\nexport const toInt = LongLib.toInt;\nexport const toBytes = LongLib.toBytes;\nexport const toNumber = LongLib.toNumber;\nexport const toString = LongLib.toString;\nexport const getLowBits = LongLib.getLowBits;\nexport const getHighBits = LongLib.getHighBits;\nexport const getLowBitsUnsigned = LongLib.getLowBitsUnsigned;\nexport const getHighBitsUnsigned = LongLib.getHighBitsUnsigned;\nfunction getMaxValue(unsigned, radix, isNegative) {\n switch (radix) {\n case 2: return unsigned ?\n \"1111111111111111111111111111111111111111111111111111111111111111\" :\n (isNegative ? \"1000000000000000000000000000000000000000000000000000000000000000\"\n : \"111111111111111111111111111111111111111111111111111111111111111\");\n case 8: return unsigned ?\n \"1777777777777777777777\" :\n (isNegative ? \"1000000000000000000000\" : \"777777777777777777777\");\n case 10: return unsigned ?\n \"18446744073709551615\" :\n (isNegative ? \"9223372036854775808\" : \"9223372036854775807\");\n case 16: return unsigned ?\n \"FFFFFFFFFFFFFFFF\" :\n (isNegative ? \"8000000000000000\" : \"7FFFFFFFFFFFFFFF\");\n default: throw new Error(\"Invalid radix.\");\n }\n}\nexport function abs(x) {\n if (!x.unsigned && LongLib.isNegative(x)) {\n return op_UnaryNegation(x);\n }\n else {\n return x;\n }\n}\nexport function fromInteger(value, unsigned, kind) {\n let x = value;\n let xh = 0;\n switch (kind) {\n case 0:\n x = value << 24 >> 24;\n xh = x;\n break;\n case 4:\n x = value << 24 >>> 24;\n break;\n case 1:\n x = value << 16 >> 16;\n xh = x;\n break;\n case 5:\n x = value << 16 >>> 16;\n break;\n case 2:\n x = value >> 0;\n xh = x;\n break;\n case 6:\n x = value >>> 0;\n break;\n }\n return LongLib.fromBits(x, xh >> 31, unsigned);\n}\nexport function parse(str, style, unsigned, _bitsize, radix) {\n const res = isValid(str, style, radix);\n if (res != null) {\n const lessOrEqual = (x, y) => {\n const len = Math.max(x.length, y.length);\n return x.padStart(len, \"0\") <= y.padStart(len, \"0\");\n };\n const isNegative = res.sign === \"-\";\n const maxValue = getMaxValue(unsigned || res.radix !== 10, res.radix, isNegative);\n if (lessOrEqual(res.digits.toUpperCase(), maxValue)) {\n str = isNegative ? res.sign + res.digits : res.digits;\n return LongLib.fromString(str, unsigned, res.radix);\n }\n }\n throw new Error(\"Input string was not in a correct format.\");\n}\nexport function tryParse(str, style, unsigned, bitsize) {\n try {\n const v = parse(str, style, unsigned, bitsize);\n return [true, v];\n }\n catch (_a) {\n // supress error\n }\n return [false, LongLib.ZERO];\n}\nexport function unixEpochMillisecondsToTicks(ms, offset) {\n return op_Multiply(op_Addition(op_Addition(LongLib.fromNumber(ms), 62135596800000), offset), 10000);\n}\nexport function ticksToUnixEpochMilliseconds(ticks) {\n return LongLib.toNumber(op_Subtraction(op_Division(ticks, 10000), 62135596800000));\n}\nexport function makeRangeStepFunction(step, last, unsigned) {\n const stepComparedWithZero = LongLib.compare(step, unsigned ? LongLib.UZERO : LongLib.ZERO);\n if (stepComparedWithZero === 0) {\n throw new Error(\"The step of a range cannot be zero\");\n }\n const stepGreaterThanZero = stepComparedWithZero > 0;\n return (x) => {\n const comparedWithLast = LongLib.compare(x, last);\n if ((stepGreaterThanZero && comparedWithLast <= 0)\n || (!stepGreaterThanZero && comparedWithLast >= 0)) {\n return [x, op_Addition(x, step)];\n }\n else {\n return undefined;\n }\n };\n}\n//# sourceMappingURL=Long.js.map","import { declare, FSharpRef } from \"./Types.js\";\nimport { iterateIndexed, toIterator, getEnumerator, delay, collect, map, sumBy, iterate } from \"./Seq.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { getItemFromDict, tryGetValue } from \"./Util.js\";\nimport { some } from \"./Option.js\";\nexport const MutableSet$00601 = declare(function Fable_Collections_MutableSet(items, comparer) {\n const $this$$1 = this;\n const this$ = new FSharpRef(null);\n $this$$1.comparer = comparer;\n this$.contents = $this$$1;\n $this$$1.hashMap = new Map([]);\n $this$$1[\"init@21-2\"] = 1;\n iterate(function (item) {\n const value = MutableSet$00601$$Add$$2B595(this$.contents, item);\n void value;\n }, items);\n void null;\n});\nexport function MutableSet$00601$reflection($gen$$4) {\n return class_type(\"Fable.Collections.MutableSet`1\", [$gen$$4], MutableSet$00601);\n}\nexport function MutableSet$00601$$$$002Ector$$Z6150332D(items, comparer) {\n return this instanceof MutableSet$00601 ? MutableSet$00601.call(this, items, comparer) : new MutableSet$00601(items, comparer);\n}\n\nfunction MutableSet$00601$$TryFindIndex$$2B595(this$$$1, k) {\n const h = this$$$1.comparer.GetHashCode(k) | 0;\n const matchValue = tryGetValue(this$$$1.hashMap, h, null);\n\n if (matchValue[0]) {\n return [true, h, matchValue[1].findIndex(function (v) {\n return this$$$1.comparer.Equals(k, v);\n })];\n } else {\n return [false, h, -1];\n }\n}\n\nfunction MutableSet$00601$$TryFind$$2B595(this$$$2, k$$1) {\n const matchValue$$1 = MutableSet$00601$$TryFindIndex$$2B595(this$$$2, k$$1);\n var $target$$9;\n\n if (matchValue$$1[0]) {\n if (matchValue$$1[2] > -1) {\n $target$$9 = 0;\n } else {\n $target$$9 = 1;\n }\n } else {\n $target$$9 = 1;\n }\n\n switch ($target$$9) {\n case 0:\n {\n return some(getItemFromDict(this$$$2.hashMap, matchValue$$1[1])[matchValue$$1[2]]);\n }\n\n case 1:\n {\n return undefined;\n }\n }\n}\n\nexport function MutableSet$00601$$get_Comparer(this$$$3) {\n return this$$$3.comparer;\n}\nexport function MutableSet$00601$$Clear(this$$$4) {\n this$$$4.hashMap.clear();\n}\nexport function MutableSet$00601$$get_Count(this$$$5) {\n const source = this$$$5.hashMap.values();\n return sumBy(function projection(pairs) {\n return pairs.length;\n }, source, {\n GetZero() {\n return 0;\n },\n\n Add($x$$2, $y$$3) {\n return $x$$2 + $y$$3;\n }\n\n }) | 0;\n}\nexport function MutableSet$00601$$Add$$2B595(this$$$6, k$$2) {\n const matchValue$$2 = MutableSet$00601$$TryFindIndex$$2B595(this$$$6, k$$2);\n var $target$$16;\n\n if (matchValue$$2[0]) {\n if (matchValue$$2[2] > -1) {\n $target$$16 = 0;\n } else {\n $target$$16 = 1;\n }\n } else {\n $target$$16 = 1;\n }\n\n switch ($target$$16) {\n case 0:\n {\n return false;\n }\n\n case 1:\n {\n if (matchValue$$2[0]) {\n const value$$1 = void getItemFromDict(this$$$6.hashMap, matchValue$$2[1]).push(k$$2);\n void null;\n return true;\n } else {\n this$$$6.hashMap.set(matchValue$$2[1], [k$$2]);\n return true;\n }\n }\n }\n}\nexport function MutableSet$00601$$Contains$$2B595(this$$$7, k$$3) {\n const matchValue$$3 = MutableSet$00601$$TryFindIndex$$2B595(this$$$7, k$$3);\n var $target$$19;\n\n if (matchValue$$3[0]) {\n if (matchValue$$3[2] > -1) {\n $target$$19 = 0;\n } else {\n $target$$19 = 1;\n }\n } else {\n $target$$19 = 1;\n }\n\n switch ($target$$19) {\n case 0:\n {\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n}\nexport function MutableSet$00601$$Remove$$2B595(this$$$8, k$$4) {\n const matchValue$$4 = MutableSet$00601$$TryFindIndex$$2B595(this$$$8, k$$4);\n var $target$$22;\n\n if (matchValue$$4[0]) {\n if (matchValue$$4[2] > -1) {\n $target$$22 = 0;\n } else {\n $target$$22 = 1;\n }\n } else {\n $target$$22 = 1;\n }\n\n switch ($target$$22) {\n case 0:\n {\n getItemFromDict(this$$$8.hashMap, matchValue$$4[1]).splice(matchValue$$4[2], 1);\n return true;\n }\n\n case 1:\n {\n return false;\n }\n }\n}\n\nMutableSet$00601.prototype[Symbol.iterator] = function () {\n var elems;\n const this$$$9 = this;\n return toIterator((elems = delay(function () {\n return collect(function (values$$1) {\n return map(function (value$$2) {\n return value$$2;\n }, values$$1);\n }, this$$$9.hashMap.values());\n }), getEnumerator(elems)));\n};\n\nMutableSet$00601.prototype.Add = function (item$$1) {\n const this$$$10 = this;\n const value$$3 = MutableSet$00601$$Add$$2B595(this$$$10, item$$1);\n void value$$3;\n};\n\nMutableSet$00601.prototype.Clear = function () {\n const this$$$11 = this;\n MutableSet$00601$$Clear(this$$$11);\n};\n\nMutableSet$00601.prototype.Contains = function (item$$2) {\n const this$$$12 = this;\n return MutableSet$00601$$Contains$$2B595(this$$$12, item$$2);\n};\n\nMutableSet$00601.prototype.CopyTo = function (array, arrayIndex) {\n const this$$$13 = this;\n iterateIndexed(function action(i$$8, e) {\n array[arrayIndex + i$$8] = e;\n }, this$$$13);\n};\n\nObject.defineProperty(MutableSet$00601.prototype, \"Count\", {\n \"get\": function () {\n const this$$$14 = this;\n return MutableSet$00601$$get_Count(this$$$14) | 0;\n }\n});\nObject.defineProperty(MutableSet$00601.prototype, \"IsReadOnly\", {\n \"get\": function () {\n return false;\n }\n});\n\nMutableSet$00601.prototype.Remove = function (item$$3) {\n const this$$$16 = this;\n return MutableSet$00601$$Remove$$2B595(this$$$16, item$$3);\n};\n\nObject.defineProperty(MutableSet$00601.prototype, \"size\", {\n \"get\": function () {\n const this$$$17 = this;\n return MutableSet$00601$$get_Count(this$$$17) | 0;\n }\n});\n\nMutableSet$00601.prototype.add = function (k$$5) {\n const this$$$18 = this;\n const value$$4 = MutableSet$00601$$Add$$2B595(this$$$18, k$$5);\n void value$$4;\n return this$$$18;\n};\n\nMutableSet$00601.prototype.add_ = function (k$$6) {\n const this$$$19 = this;\n return MutableSet$00601$$Add$$2B595(this$$$19, k$$6);\n};\n\nMutableSet$00601.prototype.clear = function () {\n const this$$$20 = this;\n MutableSet$00601$$Clear(this$$$20);\n};\n\nMutableSet$00601.prototype.delete = function (k$$7) {\n const this$$$21 = this;\n return MutableSet$00601$$Remove$$2B595(this$$$21, k$$7);\n};\n\nMutableSet$00601.prototype.has = function (k$$8) {\n const this$$$22 = this;\n return MutableSet$00601$$Contains$$2B595(this$$$22, k$$8);\n};\n\nMutableSet$00601.prototype.keys = function () {\n const this$$$23 = this;\n return map(function mapping(x) {\n return x;\n }, this$$$23);\n};\n\nMutableSet$00601.prototype.values = function () {\n const this$$$24 = this;\n return map(function mapping$$1(x$$1) {\n return x$$1;\n }, this$$$24);\n};\n\nMutableSet$00601.prototype.entries = function () {\n const this$$$25 = this;\n return map(function mapping$$2(v$$1) {\n return [v$$1, v$$1];\n }, this$$$25);\n};","import { List, Record, declare, Union } from \"./Types.js\";\nimport { class_type, record_type, bool_type, list_type, union_type, int32_type } from \"./Reflection.js\";\nimport { value as value$$2, some, Choice } from \"./Option.js\";\nimport { iterate as iterate$$1, delay, collect, singleton as singleton$$1, empty as empty$$1, fold as fold$$1, toIterator, map as map$$1, reduce, getEnumerator, unfold } from \"./Seq.js\";\nimport { structuralHash, isDisposable } from \"./Util.js\";\nimport { join } from \"./String.js\";\nimport { MutableSet$00601$$Add$$2B595 as MutableSet$002400601$0024$0024Add$0024$00242B595, MutableSet$00601$$$$002Ector$$Z6150332D as MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D } from \"./MutableSet\";\nexport const SetTree$00601 = declare(function Set_SetTree(tag, name, ...fields) {\n this.tag = tag | 0;\n this.name = name;\n this.fields = fields;\n}, Union);\nexport function SetTree$00601$reflection($gen$$3) {\n return union_type(\"Set.SetTree`1\", [$gen$$3], SetTree$00601, () => [\"SetEmpty\", [\"SetNode\", [[\"Item1\", $gen$$3], [\"Item2\", SetTree$00601$reflection($gen$$3)], [\"Item3\", SetTree$00601$reflection($gen$$3)], [\"Item4\", int32_type]]], [\"SetOne\", [[\"Item\", $gen$$3]]]]);\n}\nexport function SetTreeModule$$$countAux($s$$4, $acc$$5) {\n SetTreeModule$$$countAux: while (true) {\n const s = $s$$4,\n acc = $acc$$5;\n\n switch (s.tag) {\n case 2:\n {\n return acc + 1 | 0;\n }\n\n case 0:\n {\n return acc | 0;\n }\n\n default:\n {\n $s$$4 = s.fields[1];\n $acc$$5 = SetTreeModule$$$countAux(s.fields[2], acc + 1);\n continue SetTreeModule$$$countAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$count(s$$1) {\n return SetTreeModule$$$countAux(s$$1, 0);\n}\nexport function SetTreeModule$$$SetOne(n) {\n return new SetTree$00601(2, \"SetOne\", n);\n}\nexport function SetTreeModule$$$SetNode(x, l$$1, r$$1, h) {\n return new SetTree$00601(1, \"SetNode\", x, l$$1, r$$1, h);\n}\nexport function SetTreeModule$$$height(t) {\n switch (t.tag) {\n case 2:\n {\n return 1;\n }\n\n case 1:\n {\n return t.fields[3] | 0;\n }\n\n default:\n {\n return 0;\n }\n }\n}\nexport const SetTreeModule$$$tolerance = 2;\nexport function SetTreeModule$$$mk(l$$2, k, r$$2) {\n var $target$$16;\n\n if (l$$2.tag === 0) {\n if (r$$2.tag === 0) {\n $target$$16 = 0;\n } else {\n $target$$16 = 1;\n }\n } else {\n $target$$16 = 1;\n }\n\n switch ($target$$16) {\n case 0:\n {\n return SetTreeModule$$$SetOne(k);\n }\n\n case 1:\n {\n const hl = SetTreeModule$$$height(l$$2) | 0;\n const hr = SetTreeModule$$$height(r$$2) | 0;\n const m = (hl < hr ? hr : hl) | 0;\n return SetTreeModule$$$SetNode(k, l$$2, r$$2, m + 1);\n }\n }\n}\nexport function SetTreeModule$$$rebalance(t1, k$$1, t2) {\n const t1h = SetTreeModule$$$height(t1) | 0;\n const t2h = SetTreeModule$$$height(t2) | 0;\n\n if (t2h > t1h + SetTreeModule$$$tolerance) {\n if (t2.tag === 1) {\n if (SetTreeModule$$$height(t2.fields[1]) > t1h + 1) {\n if (t2.fields[1].tag === 1) {\n return SetTreeModule$$$mk(SetTreeModule$$$mk(t1, k$$1, t2.fields[1].fields[1]), t2.fields[1].fields[0], SetTreeModule$$$mk(t2.fields[1].fields[2], t2.fields[0], t2.fields[2]));\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return SetTreeModule$$$mk(SetTreeModule$$$mk(t1, k$$1, t2.fields[1]), t2.fields[0], t2.fields[2]);\n }\n } else {\n throw new Error(\"rebalance\");\n }\n } else if (t1h > t2h + SetTreeModule$$$tolerance) {\n if (t1.tag === 1) {\n if (SetTreeModule$$$height(t1.fields[2]) > t2h + 1) {\n if (t1.fields[2].tag === 1) {\n return SetTreeModule$$$mk(SetTreeModule$$$mk(t1.fields[1], t1.fields[0], t1.fields[2].fields[1]), t1.fields[2].fields[0], SetTreeModule$$$mk(t1.fields[2].fields[2], k$$1, t2));\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return SetTreeModule$$$mk(t1.fields[1], t1.fields[0], SetTreeModule$$$mk(t1.fields[2], k$$1, t2));\n }\n } else {\n throw new Error(\"rebalance\");\n }\n } else {\n return SetTreeModule$$$mk(t1, k$$1, t2);\n }\n}\nexport function SetTreeModule$$$add(comparer, k$$2, t$$1) {\n switch (t$$1.tag) {\n case 2:\n {\n const c$$1 = comparer.Compare(k$$2, t$$1.fields[0]) | 0;\n\n if (c$$1 < 0) {\n return SetTreeModule$$$SetNode(k$$2, new SetTree$00601(0, \"SetEmpty\"), t$$1, 2);\n } else if (c$$1 === 0) {\n return t$$1;\n } else {\n return SetTreeModule$$$SetNode(k$$2, t$$1, new SetTree$00601(0, \"SetEmpty\"), 2);\n }\n }\n\n case 0:\n {\n return SetTreeModule$$$SetOne(k$$2);\n }\n\n default:\n {\n const c = comparer.Compare(k$$2, t$$1.fields[0]) | 0;\n\n if (c < 0) {\n return SetTreeModule$$$rebalance(SetTreeModule$$$add(comparer, k$$2, t$$1.fields[1]), t$$1.fields[0], t$$1.fields[2]);\n } else if (c === 0) {\n return t$$1;\n } else {\n return SetTreeModule$$$rebalance(t$$1.fields[1], t$$1.fields[0], SetTreeModule$$$add(comparer, k$$2, t$$1.fields[2]));\n }\n }\n }\n}\nexport function SetTreeModule$$$balance(comparer$$1, t1$$1, k$$3, t2$$1) {\n var $target$$27, t2$$2, t1$$2, k1, t2$$3, k2$$2, t1$$3, h1, h2, k1$$1, k2$$3, t11, t12, t21, t22;\n\n if (t1$$1.tag === 2) {\n if (t2$$1.tag === 0) {\n $target$$27 = 1;\n t1$$2 = t1$$1;\n } else if (t2$$1.tag === 2) {\n $target$$27 = 2;\n k1 = t1$$1.fields[0];\n t2$$3 = t2$$1;\n } else {\n $target$$27 = 2;\n k1 = t1$$1.fields[0];\n t2$$3 = t2$$1;\n }\n } else if (t1$$1.tag === 1) {\n if (t2$$1.tag === 2) {\n $target$$27 = 3;\n k2$$2 = t2$$1.fields[0];\n t1$$3 = t1$$1;\n } else if (t2$$1.tag === 1) {\n $target$$27 = 4;\n h1 = t1$$1.fields[3];\n h2 = t2$$1.fields[3];\n k1$$1 = t1$$1.fields[0];\n k2$$3 = t2$$1.fields[0];\n t11 = t1$$1.fields[1];\n t12 = t1$$1.fields[2];\n t21 = t2$$1.fields[1];\n t22 = t2$$1.fields[2];\n } else {\n $target$$27 = 1;\n t1$$2 = t1$$1;\n }\n } else {\n $target$$27 = 0;\n t2$$2 = t2$$1;\n }\n\n switch ($target$$27) {\n case 0:\n {\n return SetTreeModule$$$add(comparer$$1, k$$3, t2$$2);\n }\n\n case 1:\n {\n return SetTreeModule$$$add(comparer$$1, k$$3, t1$$2);\n }\n\n case 2:\n {\n return SetTreeModule$$$add(comparer$$1, k$$3, SetTreeModule$$$add(comparer$$1, k1, t2$$3));\n }\n\n case 3:\n {\n return SetTreeModule$$$add(comparer$$1, k$$3, SetTreeModule$$$add(comparer$$1, k2$$2, t1$$3));\n }\n\n case 4:\n {\n if (h1 + SetTreeModule$$$tolerance < h2) {\n return SetTreeModule$$$rebalance(SetTreeModule$$$balance(comparer$$1, t1$$1, k$$3, t21), k2$$3, t22);\n } else if (h2 + SetTreeModule$$$tolerance < h1) {\n return SetTreeModule$$$rebalance(t11, k1$$1, SetTreeModule$$$balance(comparer$$1, t12, k$$3, t2$$1));\n } else {\n return SetTreeModule$$$mk(t1$$1, k$$3, t2$$1);\n }\n }\n }\n}\nexport function SetTreeModule$$$split(comparer$$2, pivot, t$$2) {\n switch (t$$2.tag) {\n case 2:\n {\n const c$$3 = comparer$$2.Compare(t$$2.fields[0], pivot) | 0;\n\n if (c$$3 < 0) {\n return [t$$2, false, new SetTree$00601(0, \"SetEmpty\")];\n } else if (c$$3 === 0) {\n return [new SetTree$00601(0, \"SetEmpty\"), true, new SetTree$00601(0, \"SetEmpty\")];\n } else {\n return [new SetTree$00601(0, \"SetEmpty\"), false, t$$2];\n }\n }\n\n case 0:\n {\n return [new SetTree$00601(0, \"SetEmpty\"), false, new SetTree$00601(0, \"SetEmpty\")];\n }\n\n default:\n {\n const c$$2 = comparer$$2.Compare(pivot, t$$2.fields[0]) | 0;\n\n if (c$$2 < 0) {\n const patternInput = SetTreeModule$$$split(comparer$$2, pivot, t$$2.fields[1]);\n return [patternInput[0], patternInput[1], SetTreeModule$$$balance(comparer$$2, patternInput[2], t$$2.fields[0], t$$2.fields[2])];\n } else if (c$$2 === 0) {\n return [t$$2.fields[1], true, t$$2.fields[2]];\n } else {\n const patternInput$$1 = SetTreeModule$$$split(comparer$$2, pivot, t$$2.fields[2]);\n return [SetTreeModule$$$balance(comparer$$2, t$$2.fields[1], t$$2.fields[0], patternInput$$1[0]), patternInput$$1[1], patternInput$$1[2]];\n }\n }\n }\n}\nexport function SetTreeModule$$$spliceOutSuccessor(t$$3) {\n switch (t$$3.tag) {\n case 2:\n {\n return [t$$3.fields[0], new SetTree$00601(0, \"SetEmpty\")];\n }\n\n case 1:\n {\n if (t$$3.fields[1].tag === 0) {\n return [t$$3.fields[0], t$$3.fields[2]];\n } else {\n const patternInput$$2 = SetTreeModule$$$spliceOutSuccessor(t$$3.fields[1]);\n return [patternInput$$2[0], SetTreeModule$$$mk(patternInput$$2[1], t$$3.fields[0], t$$3.fields[2])];\n }\n }\n\n default:\n {\n throw new Error(\"internal error: Set.spliceOutSuccessor\");\n }\n }\n}\nexport function SetTreeModule$$$remove(comparer$$3, k$$4, t$$4) {\n switch (t$$4.tag) {\n case 2:\n {\n const c$$4 = comparer$$3.Compare(k$$4, t$$4.fields[0]) | 0;\n\n if (c$$4 === 0) {\n return new SetTree$00601(0, \"SetEmpty\");\n } else {\n return t$$4;\n }\n }\n\n case 1:\n {\n const c$$5 = comparer$$3.Compare(k$$4, t$$4.fields[0]) | 0;\n\n if (c$$5 < 0) {\n return SetTreeModule$$$rebalance(SetTreeModule$$$remove(comparer$$3, k$$4, t$$4.fields[1]), t$$4.fields[0], t$$4.fields[2]);\n } else if (c$$5 === 0) {\n if (t$$4.fields[1].tag === 0) {\n return t$$4.fields[2];\n } else if (t$$4.fields[2].tag === 0) {\n return t$$4.fields[1];\n } else {\n const patternInput$$3 = SetTreeModule$$$spliceOutSuccessor(t$$4.fields[2]);\n return SetTreeModule$$$mk(t$$4.fields[1], patternInput$$3[0], patternInput$$3[1]);\n }\n } else {\n return SetTreeModule$$$rebalance(t$$4.fields[1], t$$4.fields[0], SetTreeModule$$$remove(comparer$$3, k$$4, t$$4.fields[2]));\n }\n }\n\n default:\n {\n return t$$4;\n }\n }\n}\nexport function SetTreeModule$$$mem($comparer$$4$$35, $k$$5$$36, $t$$5$$37) {\n SetTreeModule$$$mem: while (true) {\n const comparer$$4 = $comparer$$4$$35,\n k$$5 = $k$$5$$36,\n t$$5 = $t$$5$$37;\n\n switch (t$$5.tag) {\n case 2:\n {\n return comparer$$4.Compare(k$$5, t$$5.fields[0]) === 0;\n }\n\n case 0:\n {\n return false;\n }\n\n default:\n {\n const c$$6 = comparer$$4.Compare(k$$5, t$$5.fields[0]) | 0;\n\n if (c$$6 < 0) {\n $comparer$$4$$35 = comparer$$4;\n $k$$5$$36 = k$$5;\n $t$$5$$37 = t$$5.fields[1];\n continue SetTreeModule$$$mem;\n } else if (c$$6 === 0) {\n return true;\n } else {\n $comparer$$4$$35 = comparer$$4;\n $k$$5$$36 = k$$5;\n $t$$5$$37 = t$$5.fields[2];\n continue SetTreeModule$$$mem;\n }\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$iter($f$$38, $t$$6$$39) {\n SetTreeModule$$$iter: while (true) {\n const f = $f$$38,\n t$$6 = $t$$6$$39;\n\n switch (t$$6.tag) {\n case 2:\n {\n f(t$$6.fields[0]);\n break;\n }\n\n case 0:\n {\n void null;\n break;\n }\n\n default:\n {\n SetTreeModule$$$iter(f, t$$6.fields[1]);\n f(t$$6.fields[0]);\n $f$$38 = f;\n $t$$6$$39 = t$$6.fields[2];\n continue SetTreeModule$$$iter;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$foldBack($f$$1$$40, $m$$1$$41, $x$$1$$42) {\n SetTreeModule$$$foldBack: while (true) {\n const f$$1 = $f$$1$$40,\n m$$1 = $m$$1$$41,\n x$$1 = $x$$1$$42;\n\n switch (m$$1.tag) {\n case 2:\n {\n return f$$1(m$$1.fields[0], x$$1);\n }\n\n case 0:\n {\n return x$$1;\n }\n\n default:\n {\n $f$$1$$40 = f$$1;\n $m$$1$$41 = m$$1.fields[1];\n $x$$1$$42 = f$$1(m$$1.fields[0], SetTreeModule$$$foldBack(f$$1, m$$1.fields[2], x$$1));\n continue SetTreeModule$$$foldBack;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$fold($f$$2$$43, $x$$2$$44, $m$$2$$45) {\n SetTreeModule$$$fold: while (true) {\n const f$$2 = $f$$2$$43,\n x$$2 = $x$$2$$44,\n m$$2 = $m$$2$$45;\n\n switch (m$$2.tag) {\n case 2:\n {\n return f$$2(x$$2, m$$2.fields[0]);\n }\n\n case 0:\n {\n return x$$2;\n }\n\n default:\n {\n const x$$3 = SetTreeModule$$$fold(f$$2, x$$2, m$$2.fields[1]);\n const x$$4 = f$$2(x$$3, m$$2.fields[0]);\n $f$$2$$43 = f$$2;\n $x$$2$$44 = x$$4;\n $m$$2$$45 = m$$2.fields[2];\n continue SetTreeModule$$$fold;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$forall($f$$3$$46, $m$$3$$47) {\n SetTreeModule$$$forall: while (true) {\n const f$$3 = $f$$3$$46,\n m$$3 = $m$$3$$47;\n\n switch (m$$3.tag) {\n case 2:\n {\n return f$$3(m$$3.fields[0]);\n }\n\n case 0:\n {\n return true;\n }\n\n default:\n {\n if (f$$3(m$$3.fields[0]) ? SetTreeModule$$$forall(f$$3, m$$3.fields[1]) : false) {\n $f$$3$$46 = f$$3;\n $m$$3$$47 = m$$3.fields[2];\n continue SetTreeModule$$$forall;\n } else {\n return false;\n }\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$exists($f$$4$$48, $m$$4$$49) {\n SetTreeModule$$$exists: while (true) {\n const f$$4 = $f$$4$$48,\n m$$4 = $m$$4$$49;\n\n switch (m$$4.tag) {\n case 2:\n {\n return f$$4(m$$4.fields[0]);\n }\n\n case 0:\n {\n return false;\n }\n\n default:\n {\n if (f$$4(m$$4.fields[0]) ? true : SetTreeModule$$$exists(f$$4, m$$4.fields[1])) {\n return true;\n } else {\n $f$$4$$48 = f$$4;\n $m$$4$$49 = m$$4.fields[2];\n continue SetTreeModule$$$exists;\n }\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$isEmpty(m$$5) {\n if (m$$5.tag === 0) {\n return true;\n } else {\n return false;\n }\n}\nexport function SetTreeModule$$$subset(comparer$$5, a, b) {\n return SetTreeModule$$$forall(function (x$$5) {\n return SetTreeModule$$$mem(comparer$$5, x$$5, b);\n }, a);\n}\nexport function SetTreeModule$$$psubset(comparer$$6, a$$1, b$$1) {\n if (SetTreeModule$$$forall(function (x$$6) {\n return SetTreeModule$$$mem(comparer$$6, x$$6, b$$1);\n }, a$$1)) {\n return SetTreeModule$$$exists(function (x$$7) {\n return !SetTreeModule$$$mem(comparer$$6, x$$7, a$$1);\n }, b$$1);\n } else {\n return false;\n }\n}\nexport function SetTreeModule$$$filterAux($comparer$$7$$57, $f$$5$$58, $s$$2$$59, $acc$$1$$60) {\n SetTreeModule$$$filterAux: while (true) {\n const comparer$$7 = $comparer$$7$$57,\n f$$5 = $f$$5$$58,\n s$$2 = $s$$2$$59,\n acc$$1 = $acc$$1$$60;\n\n switch (s$$2.tag) {\n case 2:\n {\n if (f$$5(s$$2.fields[0])) {\n return SetTreeModule$$$add(comparer$$7, s$$2.fields[0], acc$$1);\n } else {\n return acc$$1;\n }\n }\n\n case 0:\n {\n return acc$$1;\n }\n\n default:\n {\n const acc$$2 = f$$5(s$$2.fields[0]) ? SetTreeModule$$$add(comparer$$7, s$$2.fields[0], acc$$1) : acc$$1;\n $comparer$$7$$57 = comparer$$7;\n $f$$5$$58 = f$$5;\n $s$$2$$59 = s$$2.fields[1];\n $acc$$1$$60 = SetTreeModule$$$filterAux(comparer$$7, f$$5, s$$2.fields[2], acc$$2);\n continue SetTreeModule$$$filterAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$filter(comparer$$8, f$$6, s$$3) {\n return SetTreeModule$$$filterAux(comparer$$8, f$$6, s$$3, new SetTree$00601(0, \"SetEmpty\"));\n}\nexport function SetTreeModule$$$diffAux($comparer$$9$$64, $m$$6$$65, $acc$$3$$66) {\n SetTreeModule$$$diffAux: while (true) {\n const comparer$$9 = $comparer$$9$$64,\n m$$6 = $m$$6$$65,\n acc$$3 = $acc$$3$$66;\n\n switch (m$$6.tag) {\n case 2:\n {\n return SetTreeModule$$$remove(comparer$$9, m$$6.fields[0], acc$$3);\n }\n\n case 0:\n {\n return acc$$3;\n }\n\n default:\n {\n $comparer$$9$$64 = comparer$$9;\n $m$$6$$65 = m$$6.fields[1];\n $acc$$3$$66 = SetTreeModule$$$diffAux(comparer$$9, m$$6.fields[2], SetTreeModule$$$remove(comparer$$9, m$$6.fields[0], acc$$3));\n continue SetTreeModule$$$diffAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$diff(comparer$$10, a$$2, b$$2) {\n return SetTreeModule$$$diffAux(comparer$$10, b$$2, a$$2);\n}\nexport function SetTreeModule$$$union(comparer$$11, t1$$4, t2$$4) {\n var $target$$73, h1$$1, h2$$1, k1$$4, k2$$16, t11$$2, t12$$2, t21$$1, t22$$1, t$$7, t$$8, k1$$5, t2$$5, k2$$17, t1$$5;\n\n if (t1$$4.tag === 0) {\n $target$$73 = 1;\n t$$7 = t2$$4;\n } else if (t1$$4.tag === 2) {\n if (t2$$4.tag === 0) {\n $target$$73 = 2;\n t$$8 = t1$$4;\n } else if (t2$$4.tag === 2) {\n $target$$73 = 3;\n k1$$5 = t1$$4.fields[0];\n t2$$5 = t2$$4;\n } else {\n $target$$73 = 3;\n k1$$5 = t1$$4.fields[0];\n t2$$5 = t2$$4;\n }\n } else if (t2$$4.tag === 0) {\n $target$$73 = 2;\n t$$8 = t1$$4;\n } else if (t2$$4.tag === 2) {\n $target$$73 = 4;\n k2$$17 = t2$$4.fields[0];\n t1$$5 = t1$$4;\n } else {\n $target$$73 = 0;\n h1$$1 = t1$$4.fields[3];\n h2$$1 = t2$$4.fields[3];\n k1$$4 = t1$$4.fields[0];\n k2$$16 = t2$$4.fields[0];\n t11$$2 = t1$$4.fields[1];\n t12$$2 = t1$$4.fields[2];\n t21$$1 = t2$$4.fields[1];\n t22$$1 = t2$$4.fields[2];\n }\n\n switch ($target$$73) {\n case 0:\n {\n if (h1$$1 > h2$$1) {\n const patternInput$$4 = SetTreeModule$$$split(comparer$$11, k1$$4, t2$$4);\n return SetTreeModule$$$balance(comparer$$11, SetTreeModule$$$union(comparer$$11, t11$$2, patternInput$$4[0]), k1$$4, SetTreeModule$$$union(comparer$$11, t12$$2, patternInput$$4[2]));\n } else {\n const patternInput$$5 = SetTreeModule$$$split(comparer$$11, k2$$16, t1$$4);\n return SetTreeModule$$$balance(comparer$$11, SetTreeModule$$$union(comparer$$11, t21$$1, patternInput$$5[0]), k2$$16, SetTreeModule$$$union(comparer$$11, t22$$1, patternInput$$5[2]));\n }\n }\n\n case 1:\n {\n return t$$7;\n }\n\n case 2:\n {\n return t$$8;\n }\n\n case 3:\n {\n return SetTreeModule$$$add(comparer$$11, k1$$5, t2$$5);\n }\n\n case 4:\n {\n return SetTreeModule$$$add(comparer$$11, k2$$17, t1$$5);\n }\n }\n}\nexport function SetTreeModule$$$intersectionAux($comparer$$12$$74, $b$$3$$75, $m$$7$$76, $acc$$4$$77) {\n SetTreeModule$$$intersectionAux: while (true) {\n const comparer$$12 = $comparer$$12$$74,\n b$$3 = $b$$3$$75,\n m$$7 = $m$$7$$76,\n acc$$4 = $acc$$4$$77;\n\n switch (m$$7.tag) {\n case 2:\n {\n if (SetTreeModule$$$mem(comparer$$12, m$$7.fields[0], b$$3)) {\n return SetTreeModule$$$add(comparer$$12, m$$7.fields[0], acc$$4);\n } else {\n return acc$$4;\n }\n }\n\n case 0:\n {\n return acc$$4;\n }\n\n default:\n {\n const acc$$5 = SetTreeModule$$$intersectionAux(comparer$$12, b$$3, m$$7.fields[2], acc$$4);\n const acc$$6 = SetTreeModule$$$mem(comparer$$12, m$$7.fields[0], b$$3) ? SetTreeModule$$$add(comparer$$12, m$$7.fields[0], acc$$5) : acc$$5;\n $comparer$$12$$74 = comparer$$12;\n $b$$3$$75 = b$$3;\n $m$$7$$76 = m$$7.fields[1];\n $acc$$4$$77 = acc$$6;\n continue SetTreeModule$$$intersectionAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$intersection(comparer$$13, a$$3, b$$4) {\n return SetTreeModule$$$intersectionAux(comparer$$13, b$$4, a$$3, new SetTree$00601(0, \"SetEmpty\"));\n}\nexport function SetTreeModule$$$partition1(comparer$$14, f$$7, k$$16, acc1, acc2) {\n if (f$$7(k$$16)) {\n return [SetTreeModule$$$add(comparer$$14, k$$16, acc1), acc2];\n } else {\n return [acc1, SetTreeModule$$$add(comparer$$14, k$$16, acc2)];\n }\n}\nexport function SetTreeModule$$$partitionAux($comparer$$15$$86, $f$$8$$87, $s$$4$$88, $acc_0$$89, $acc_1$$90) {\n SetTreeModule$$$partitionAux: while (true) {\n const comparer$$15 = $comparer$$15$$86,\n f$$8 = $f$$8$$87,\n s$$4 = $s$$4$$88,\n acc_0 = $acc_0$$89,\n acc_1 = $acc_1$$90;\n\n switch (s$$4.tag) {\n case 2:\n {\n return SetTreeModule$$$partition1(comparer$$15, f$$8, s$$4.fields[0], acc_0, acc_1);\n }\n\n case 0:\n {\n return [acc_0, acc_1];\n }\n\n default:\n {\n const acc$$8 = SetTreeModule$$$partitionAux(comparer$$15, f$$8, s$$4.fields[2], acc_0, acc_1);\n const acc$$9 = SetTreeModule$$$partition1(comparer$$15, f$$8, s$$4.fields[0], acc$$8[0], acc$$8[1]);\n $comparer$$15$$86 = comparer$$15;\n $f$$8$$87 = f$$8;\n $s$$4$$88 = s$$4.fields[1];\n $acc_0$$89 = acc$$9[0];\n $acc_1$$90 = acc$$9[1];\n continue SetTreeModule$$$partitionAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$partition(comparer$$16, f$$9, s$$5) {\n const seed = [new SetTree$00601(0, \"SetEmpty\"), new SetTree$00601(0, \"SetEmpty\")];\n return SetTreeModule$$$partitionAux(comparer$$16, f$$9, s$$5, seed[0], seed[1]);\n}\nexport function SetTreeModule$$$$007CMatchSetNode$007CMatchSetEmpty$007C(s$$6) {\n switch (s$$6.tag) {\n case 2:\n {\n return new Choice(0, \"Choice1Of2\", [s$$6.fields[0], new SetTree$00601(0, \"SetEmpty\"), new SetTree$00601(0, \"SetEmpty\")]);\n }\n\n case 0:\n {\n return new Choice(1, \"Choice2Of2\", void null);\n }\n\n default:\n {\n return new Choice(0, \"Choice1Of2\", [s$$6.fields[0], s$$6.fields[1], s$$6.fields[2]]);\n }\n }\n}\nexport function SetTreeModule$$$minimumElementAux($s$$7$$95, $n$$1$$96) {\n SetTreeModule$$$minimumElementAux: while (true) {\n const s$$7 = $s$$7$$95,\n n$$1 = $n$$1$$96;\n\n switch (s$$7.tag) {\n case 2:\n {\n return s$$7.fields[0];\n }\n\n case 0:\n {\n return n$$1;\n }\n\n default:\n {\n $s$$7$$95 = s$$7.fields[1];\n $n$$1$$96 = s$$7.fields[0];\n continue SetTreeModule$$$minimumElementAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$minimumElementOpt(s$$8) {\n switch (s$$8.tag) {\n case 2:\n {\n return some(s$$8.fields[0]);\n }\n\n case 0:\n {\n return undefined;\n }\n\n default:\n {\n return some(SetTreeModule$$$minimumElementAux(s$$8.fields[1], s$$8.fields[0]));\n }\n }\n}\nexport function SetTreeModule$$$maximumElementAux($s$$9$$98, $n$$2$$99) {\n SetTreeModule$$$maximumElementAux: while (true) {\n const s$$9 = $s$$9$$98,\n n$$2 = $n$$2$$99;\n\n switch (s$$9.tag) {\n case 2:\n {\n return s$$9.fields[0];\n }\n\n case 0:\n {\n return n$$2;\n }\n\n default:\n {\n $s$$9$$98 = s$$9.fields[2];\n $n$$2$$99 = s$$9.fields[0];\n continue SetTreeModule$$$maximumElementAux;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$maximumElementOpt(s$$10) {\n switch (s$$10.tag) {\n case 2:\n {\n return some(s$$10.fields[0]);\n }\n\n case 0:\n {\n return undefined;\n }\n\n default:\n {\n return some(SetTreeModule$$$maximumElementAux(s$$10.fields[2], s$$10.fields[0]));\n }\n }\n}\nexport function SetTreeModule$$$minimumElement(s$$11) {\n const matchValue$$4 = SetTreeModule$$$minimumElementOpt(s$$11);\n\n if (matchValue$$4 == null) {\n throw new Error(\"Set contains no elements\");\n } else {\n const k$$27 = value$$2(matchValue$$4);\n return k$$27;\n }\n}\nexport function SetTreeModule$$$maximumElement(s$$12) {\n const matchValue$$5 = SetTreeModule$$$maximumElementOpt(s$$12);\n\n if (matchValue$$5 == null) {\n throw new Error(\"Set contains no elements\");\n } else {\n const k$$28 = value$$2(matchValue$$5);\n return k$$28;\n }\n}\nexport const SetTreeModule$002ESetIterator$00601 = declare(function Set_SetTreeModule_SetIterator(stack, started) {\n this.stack = stack;\n this.started = started;\n}, Record);\nexport function SetTreeModule$002ESetIterator$00601$reflection($gen$$103) {\n return record_type(\"Set.SetTreeModule.SetIterator`1\", [$gen$$103], SetTreeModule$002ESetIterator$00601, () => [[\"stack\", list_type(SetTree$00601$reflection($gen$$103))], [\"started\", bool_type]]);\n}\nexport function SetTreeModule$$$collapseLHS($stack$$104) {\n SetTreeModule$$$collapseLHS: while (true) {\n const stack = $stack$$104;\n\n if (stack.tail != null) {\n if (stack.head.tag === 2) {\n return stack;\n } else if (stack.head.tag === 1) {\n $stack$$104 = new List(stack.head.fields[1], new List(SetTreeModule$$$SetOne(stack.head.fields[0]), new List(stack.head.fields[2], stack.tail)));\n continue SetTreeModule$$$collapseLHS;\n } else {\n $stack$$104 = stack.tail;\n continue SetTreeModule$$$collapseLHS;\n }\n } else {\n return new List();\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$mkIterator(s$$13) {\n return new SetTreeModule$002ESetIterator$00601(SetTreeModule$$$collapseLHS(new List(s$$13, new List())), false);\n}\nexport function SetTreeModule$$$notStarted() {\n throw new Error(\"Enumeration not started\");\n}\nexport function SetTreeModule$$$alreadyFinished() {\n throw new Error(\"Enumeration already started\");\n}\nexport function SetTreeModule$$$current(i) {\n if (i.started) {\n const matchValue$$6 = i.stack;\n\n if (matchValue$$6.tail == null) {\n return SetTreeModule$$$alreadyFinished();\n } else if (matchValue$$6.head.tag === 2) {\n return matchValue$$6.head.fields[0];\n } else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for current\");\n }\n } else {\n return SetTreeModule$$$notStarted();\n }\n}\nexport function SetTreeModule$$$moveNext(i$$1) {\n if (i$$1.started) {\n const matchValue$$7 = i$$1.stack;\n\n if (matchValue$$7.tail == null) {\n return false;\n } else if (matchValue$$7.head.tag === 2) {\n i$$1.stack = SetTreeModule$$$collapseLHS(matchValue$$7.tail);\n return !(i$$1.stack.tail == null);\n } else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for moveNext\");\n }\n } else {\n i$$1.started = true;\n return !(i$$1.stack.tail == null);\n }\n}\nexport const SetTreeModule$002EmkIEnumerator$00601 = declare(function Set_SetTreeModule_mkIEnumerator(s$$14) {\n const $this$$1 = this;\n $this$$1.s = s$$14;\n $this$$1.i = SetTreeModule$$$mkIterator($this$$1.s);\n void null;\n});\nexport function SetTreeModule$002EmkIEnumerator$00601$reflection($gen$$108) {\n return class_type(\"Set.SetTreeModule.mkIEnumerator`1\", [$gen$$108], SetTreeModule$002EmkIEnumerator$00601);\n}\nexport function SetTreeModule$002EmkIEnumerator$00601$$$$002Ector$$Z5B395D56(s$$14) {\n return this instanceof SetTreeModule$002EmkIEnumerator$00601 ? SetTreeModule$002EmkIEnumerator$00601.call(this, s$$14) : new SetTreeModule$002EmkIEnumerator$00601(s$$14);\n}\nObject.defineProperty(SetTreeModule$002EmkIEnumerator$00601.prototype, \"Current\", {\n \"get\": function () {\n const __ = this;\n return SetTreeModule$$$current(__.i);\n }\n});\n\nSetTreeModule$002EmkIEnumerator$00601.prototype.MoveNext = function () {\n const __$$1 = this;\n return SetTreeModule$$$moveNext(__$$1.i);\n};\n\nSetTreeModule$002EmkIEnumerator$00601.prototype.Reset = function () {\n const __$$2 = this;\n __$$2.i = SetTreeModule$$$mkIterator(__$$2.s);\n};\n\nSetTreeModule$002EmkIEnumerator$00601.prototype.Dispose = function () {\n void null;\n};\n\nexport function SetTreeModule$$$mkIEnumerator(s$$15) {\n return SetTreeModule$002EmkIEnumerator$00601$$$$002Ector$$Z5B395D56(s$$15);\n}\nexport function SetTreeModule$$$toSeq(s$$16) {\n const en = SetTreeModule$$$mkIEnumerator(s$$16);\n return unfold(function generator(en$$1) {\n if (en$$1.MoveNext()) {\n return [en$$1.Current, en$$1];\n } else {\n return undefined;\n }\n }, en);\n}\nexport function SetTreeModule$$$compareStacks($comparer$$17$$112, $l1$$113, $l2$$114) {\n SetTreeModule$$$compareStacks: while (true) {\n const comparer$$17 = $comparer$$17$$112,\n l1 = $l1$$113,\n l2 = $l2$$114;\n var $target$$115, t1$$6, t2$$6, n1k, n2k, t1$$7, t2$$7, n1k$$1, n2k$$1, n2r, t1$$8, t2$$8, emp, n1k$$2, n1r, n2k$$2, t1$$9, t2$$9, n1k$$3, n1r$$1, n2k$$3, n2r$$1, t1$$10, t2$$10, n1k$$4, t1$$11, n1k$$5, n1l, n1r$$2, t1$$12, n2k$$4, t2$$11, n2k$$5, n2l, n2r$$2, t2$$12;\n\n if (l1.tail != null) {\n if (l2.tail != null) {\n if (l2.head.tag === 2) {\n if (l1.head.tag === 2) {\n $target$$115 = 4;\n n1k = l1.head.fields[0];\n n2k = l2.head.fields[0];\n t1$$7 = l1.tail;\n t2$$7 = l2.tail;\n } else if (l1.head.tag === 1) {\n if (l1.head.fields[1].tag === 0) {\n $target$$115 = 6;\n emp = l1.head.fields[1];\n n1k$$2 = l1.head.fields[0];\n n1r = l1.head.fields[2];\n n2k$$2 = l2.head.fields[0];\n t1$$9 = l1.tail;\n t2$$9 = l2.tail;\n } else {\n $target$$115 = 9;\n n1k$$5 = l1.head.fields[0];\n n1l = l1.head.fields[1];\n n1r$$2 = l1.head.fields[2];\n t1$$12 = l1.tail;\n }\n } else {\n $target$$115 = 10;\n n2k$$4 = l2.head.fields[0];\n t2$$11 = l2.tail;\n }\n } else if (l2.head.tag === 1) {\n if (l2.head.fields[1].tag === 0) {\n if (l1.head.tag === 2) {\n $target$$115 = 5;\n n1k$$1 = l1.head.fields[0];\n n2k$$1 = l2.head.fields[0];\n n2r = l2.head.fields[2];\n t1$$8 = l1.tail;\n t2$$8 = l2.tail;\n } else if (l1.head.tag === 1) {\n if (l1.head.fields[1].tag === 0) {\n $target$$115 = 7;\n n1k$$3 = l1.head.fields[0];\n n1r$$1 = l1.head.fields[2];\n n2k$$3 = l2.head.fields[0];\n n2r$$1 = l2.head.fields[2];\n t1$$10 = l1.tail;\n t2$$10 = l2.tail;\n } else {\n $target$$115 = 9;\n n1k$$5 = l1.head.fields[0];\n n1l = l1.head.fields[1];\n n1r$$2 = l1.head.fields[2];\n t1$$12 = l1.tail;\n }\n } else {\n $target$$115 = 11;\n n2k$$5 = l2.head.fields[0];\n n2l = l2.head.fields[1];\n n2r$$2 = l2.head.fields[2];\n t2$$12 = l2.tail;\n }\n } else if (l1.head.tag === 2) {\n $target$$115 = 8;\n n1k$$4 = l1.head.fields[0];\n t1$$11 = l1.tail;\n } else if (l1.head.tag === 1) {\n $target$$115 = 9;\n n1k$$5 = l1.head.fields[0];\n n1l = l1.head.fields[1];\n n1r$$2 = l1.head.fields[2];\n t1$$12 = l1.tail;\n } else {\n $target$$115 = 11;\n n2k$$5 = l2.head.fields[0];\n n2l = l2.head.fields[1];\n n2r$$2 = l2.head.fields[2];\n t2$$12 = l2.tail;\n }\n } else if (l1.head.tag === 2) {\n $target$$115 = 8;\n n1k$$4 = l1.head.fields[0];\n t1$$11 = l1.tail;\n } else if (l1.head.tag === 1) {\n $target$$115 = 9;\n n1k$$5 = l1.head.fields[0];\n n1l = l1.head.fields[1];\n n1r$$2 = l1.head.fields[2];\n t1$$12 = l1.tail;\n } else {\n $target$$115 = 3;\n t1$$6 = l1.tail;\n t2$$6 = l2.tail;\n }\n } else {\n $target$$115 = 2;\n }\n } else if (l2.tail != null) {\n $target$$115 = 1;\n } else {\n $target$$115 = 0;\n }\n\n switch ($target$$115) {\n case 0:\n {\n return 0;\n }\n\n case 1:\n {\n return -1 | 0;\n }\n\n case 2:\n {\n return 1;\n }\n\n case 3:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = t1$$6;\n $l2$$114 = t2$$6;\n continue SetTreeModule$$$compareStacks;\n }\n\n case 4:\n {\n const c$$7 = comparer$$17.Compare(n1k, n2k) | 0;\n\n if (c$$7 !== 0) {\n return c$$7 | 0;\n } else {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = t1$$7;\n $l2$$114 = t2$$7;\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n case 5:\n {\n const c$$8 = comparer$$17.Compare(n1k$$1, n2k$$1) | 0;\n\n if (c$$8 !== 0) {\n return c$$8 | 0;\n } else {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(new SetTree$00601(0, \"SetEmpty\"), t1$$8);\n $l2$$114 = new List(n2r, t2$$8);\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n case 6:\n {\n const c$$9 = comparer$$17.Compare(n1k$$2, n2k$$2) | 0;\n\n if (c$$9 !== 0) {\n return c$$9 | 0;\n } else {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(n1r, t1$$9);\n $l2$$114 = new List(emp, t2$$9);\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n case 7:\n {\n const c$$10 = comparer$$17.Compare(n1k$$3, n2k$$3) | 0;\n\n if (c$$10 !== 0) {\n return c$$10 | 0;\n } else {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(n1r$$1, t1$$10);\n $l2$$114 = new List(n2r$$1, t2$$10);\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n case 8:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(new SetTree$00601(0, \"SetEmpty\"), new List(SetTreeModule$$$SetOne(n1k$$4), t1$$11));\n $l2$$114 = l2;\n continue SetTreeModule$$$compareStacks;\n }\n\n case 9:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = new List(n1l, new List(SetTreeModule$$$SetNode(n1k$$5, new SetTree$00601(0, \"SetEmpty\"), n1r$$2, 0), t1$$12));\n $l2$$114 = l2;\n continue SetTreeModule$$$compareStacks;\n }\n\n case 10:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = l1;\n $l2$$114 = new List(new SetTree$00601(0, \"SetEmpty\"), new List(SetTreeModule$$$SetOne(n2k$$4), t2$$11));\n continue SetTreeModule$$$compareStacks;\n }\n\n case 11:\n {\n $comparer$$17$$112 = comparer$$17;\n $l1$$113 = l1;\n $l2$$114 = new List(n2l, new List(SetTreeModule$$$SetNode(n2k$$5, new SetTree$00601(0, \"SetEmpty\"), n2r$$2, 0), t2$$12));\n continue SetTreeModule$$$compareStacks;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$compare(comparer$$18, s1, s2) {\n if (s1.tag === 0) {\n if (s2.tag === 0) {\n return 0;\n } else {\n return -1 | 0;\n }\n } else if (s2.tag === 0) {\n return 1;\n } else {\n return SetTreeModule$$$compareStacks(comparer$$18, new List(s1, new List()), new List(s2, new List())) | 0;\n }\n}\nexport function SetTreeModule$$$choose(s$$17) {\n return SetTreeModule$$$minimumElement(s$$17);\n}\nexport function SetTreeModule$$$loop($m$$8$$120, $acc$$10$$121) {\n SetTreeModule$$$loop: while (true) {\n const m$$8 = $m$$8$$120,\n acc$$10 = $acc$$10$$121;\n\n switch (m$$8.tag) {\n case 2:\n {\n return new List(m$$8.fields[0], acc$$10);\n }\n\n case 0:\n {\n return acc$$10;\n }\n\n default:\n {\n $m$$8$$120 = m$$8.fields[1];\n $acc$$10$$121 = new List(m$$8.fields[0], SetTreeModule$$$loop(m$$8.fields[2], acc$$10));\n continue SetTreeModule$$$loop;\n }\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$toList(s$$18) {\n return SetTreeModule$$$loop(s$$18, new List());\n}\nexport function SetTreeModule$$$copyToArray(s$$19, arr, i$$2) {\n let j = i$$2 | 0;\n SetTreeModule$$$iter(function (x$$8) {\n arr[j] = x$$8;\n j = j + 1;\n }, s$$19);\n}\nexport function SetTreeModule$$$mkFromEnumerator($comparer$$19$$126, $acc$$11$$127, $e$$128) {\n SetTreeModule$$$mkFromEnumerator: while (true) {\n const comparer$$19 = $comparer$$19$$126,\n acc$$11 = $acc$$11$$127,\n e = $e$$128;\n\n if (e.MoveNext()) {\n $comparer$$19$$126 = comparer$$19;\n $acc$$11$$127 = SetTreeModule$$$add(comparer$$19, e.Current, acc$$11);\n $e$$128 = e;\n continue SetTreeModule$$$mkFromEnumerator;\n } else {\n return acc$$11;\n }\n\n break;\n }\n}\nexport function SetTreeModule$$$ofSeq(comparer$$20, c$$11) {\n const ie = getEnumerator(c$$11);\n\n try {\n return SetTreeModule$$$mkFromEnumerator(comparer$$20, new SetTree$00601(0, \"SetEmpty\"), ie);\n } finally {\n if (isDisposable(ie)) {\n ie.Dispose();\n } else {\n void null;\n }\n }\n}\nexport function SetTreeModule$$$ofArray(comparer$$21, arr$$1) {\n let acc$$12 = new SetTree$00601(0, \"SetEmpty\");\n\n for (let i$$3 = 0; i$$3 <= arr$$1.length - 1; i$$3++) {\n acc$$12 = SetTreeModule$$$add(comparer$$21, arr$$1[i$$3], acc$$12);\n }\n\n return acc$$12;\n}\nexport const FSharpSet = declare(function Set_Set(comparer$$22, tree) {\n const $this$$2 = this;\n $this$$2.comparer = comparer$$22;\n $this$$2.tree = tree;\n void null;\n});\nexport function FSharpSet$reflection($gen$$133) {\n return class_type(\"Set.FSharpSet\", [$gen$$133], FSharpSet);\n}\nexport function FSharpSet$$$$002Ector$$2528C5CB(comparer$$22, tree) {\n return this instanceof FSharpSet ? FSharpSet.call(this, comparer$$22, tree) : new FSharpSet(comparer$$22, tree);\n}\nexport function FSharpSet$$get_Comparer(__$$4) {\n return __$$4.comparer;\n}\nexport function FSharpSet$$get_Tree(__$$5) {\n return __$$5.tree;\n}\nexport function FSharpSet$$Add$$2B595(s$$20, x$$9) {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$20), SetTreeModule$$$add(FSharpSet$$get_Comparer(s$$20), x$$9, FSharpSet$$get_Tree(s$$20)));\n}\nexport function FSharpSet$$Remove$$2B595(s$$21, x$$10) {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$21), SetTreeModule$$$remove(FSharpSet$$get_Comparer(s$$21), x$$10, FSharpSet$$get_Tree(s$$21)));\n}\nexport function FSharpSet$$get_Count(s$$22) {\n return SetTreeModule$$$count(FSharpSet$$get_Tree(s$$22));\n}\nexport function FSharpSet$$Contains$$2B595(s$$23, x$$11) {\n return SetTreeModule$$$mem(FSharpSet$$get_Comparer(s$$23), x$$11, FSharpSet$$get_Tree(s$$23));\n}\nexport function FSharpSet$$Iterate$$5028453F(s$$24, x$$12) {\n SetTreeModule$$$iter(x$$12, FSharpSet$$get_Tree(s$$24));\n}\nexport function FSharpSet$$Fold(s$$25, f$$10, z) {\n return SetTreeModule$$$fold(function (x$$13, z$$1) {\n return f$$10(z$$1, x$$13);\n }, z, FSharpSet$$get_Tree(s$$25));\n}\nexport function FSharpSet$$get_IsEmpty(s$$26) {\n return SetTreeModule$$$isEmpty(FSharpSet$$get_Tree(s$$26));\n}\nexport function FSharpSet$$Partition$$Z1D55A0D7(s$$27, f$$11) {\n const matchValue$$10 = FSharpSet$$get_Tree(s$$27);\n\n if (matchValue$$10.tag === 0) {\n return [s$$27, s$$27];\n } else {\n const patternInput$$6 = SetTreeModule$$$partition(FSharpSet$$get_Comparer(s$$27), f$$11, FSharpSet$$get_Tree(s$$27));\n return [FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$27), patternInput$$6[0]), FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$27), patternInput$$6[1])];\n }\n}\nexport function FSharpSet$$Filter$$Z1D55A0D7(s$$28, f$$12) {\n const matchValue$$11 = FSharpSet$$get_Tree(s$$28);\n\n if (matchValue$$11.tag === 0) {\n return s$$28;\n } else {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(s$$28), SetTreeModule$$$filter(FSharpSet$$get_Comparer(s$$28), f$$12, FSharpSet$$get_Tree(s$$28)));\n }\n}\nexport function FSharpSet$$Map$$7597B8F7(s$$29, f$$13, comparer$$23) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$23, SetTreeModule$$$fold(function (acc$$13, k$$33) {\n return SetTreeModule$$$add(comparer$$23, f$$13(k$$33), acc$$13);\n }, new SetTree$00601(0, \"SetEmpty\"), FSharpSet$$get_Tree(s$$29)));\n}\nexport function FSharpSet$$Exists$$Z1D55A0D7(s$$30, f$$14) {\n return SetTreeModule$$$exists(f$$14, FSharpSet$$get_Tree(s$$30));\n}\nexport function FSharpSet$$ForAll$$Z1D55A0D7(s$$31, f$$15) {\n return SetTreeModule$$$forall(f$$15, FSharpSet$$get_Tree(s$$31));\n}\nexport function FSharpSet$$$op_Subtraction(a$$4, b$$5) {\n const matchValue$$12 = FSharpSet$$get_Tree(a$$4);\n\n if (matchValue$$12.tag === 0) {\n return a$$4;\n } else {\n const matchValue$$13 = FSharpSet$$get_Tree(b$$5);\n\n if (matchValue$$13.tag === 0) {\n return a$$4;\n } else {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(a$$4), SetTreeModule$$$diff(FSharpSet$$get_Comparer(a$$4), FSharpSet$$get_Tree(a$$4), FSharpSet$$get_Tree(b$$5)));\n }\n }\n}\nexport function FSharpSet$$$op_Addition(a$$5, b$$6) {\n const matchValue$$14 = FSharpSet$$get_Tree(b$$6);\n\n if (matchValue$$14.tag === 0) {\n return a$$5;\n } else {\n const matchValue$$15 = FSharpSet$$get_Tree(a$$5);\n\n if (matchValue$$15.tag === 0) {\n return b$$6;\n } else {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(a$$5), SetTreeModule$$$union(FSharpSet$$get_Comparer(a$$5), FSharpSet$$get_Tree(a$$5), FSharpSet$$get_Tree(b$$6)));\n }\n }\n}\nexport function FSharpSet$$$Intersection$$Z3BE9BFE0(a$$6, b$$7) {\n const matchValue$$16 = FSharpSet$$get_Tree(b$$7);\n\n if (matchValue$$16.tag === 0) {\n return b$$7;\n } else {\n const matchValue$$17 = FSharpSet$$get_Tree(a$$6);\n\n if (matchValue$$17.tag === 0) {\n return a$$6;\n } else {\n return FSharpSet$$$$002Ector$$2528C5CB(FSharpSet$$get_Comparer(a$$6), SetTreeModule$$$intersection(FSharpSet$$get_Comparer(a$$6), FSharpSet$$get_Tree(a$$6), FSharpSet$$get_Tree(b$$7)));\n }\n }\n}\nexport function FSharpSet$$$IntersectionMany$$Z15B59630(sets) {\n return reduce(FSharpSet$$$Intersection$$Z3BE9BFE0, sets);\n}\nexport function FSharpSet$$$Equality$$Z3BE9BFE0(a$$7, b$$8) {\n return SetTreeModule$$$compare(FSharpSet$$get_Comparer(a$$7), FSharpSet$$get_Tree(a$$7), FSharpSet$$get_Tree(b$$8)) === 0;\n}\nexport function FSharpSet$$$Compare$$Z3BE9BFE0(a$$8, b$$9) {\n return SetTreeModule$$$compare(FSharpSet$$get_Comparer(a$$8), FSharpSet$$get_Tree(a$$8), FSharpSet$$get_Tree(b$$9));\n}\nexport function FSharpSet$$get_Choose(x$$14) {\n return SetTreeModule$$$choose(FSharpSet$$get_Tree(x$$14));\n}\nexport function FSharpSet$$get_MinimumElement(x$$15) {\n return SetTreeModule$$$minimumElement(FSharpSet$$get_Tree(x$$15));\n}\nexport function FSharpSet$$get_MaximumElement(x$$16) {\n return SetTreeModule$$$maximumElement(FSharpSet$$get_Tree(x$$16));\n}\nexport function FSharpSet$$IsSubsetOf$$6A20B1FF(x$$17, y) {\n return SetTreeModule$$$subset(FSharpSet$$get_Comparer(x$$17), FSharpSet$$get_Tree(x$$17), FSharpSet$$get_Tree(y));\n}\nexport function FSharpSet$$IsSupersetOf$$6A20B1FF(x$$18, y$$1) {\n return SetTreeModule$$$subset(FSharpSet$$get_Comparer(x$$18), FSharpSet$$get_Tree(y$$1), FSharpSet$$get_Tree(x$$18));\n}\nexport function FSharpSet$$IsProperSubsetOf$$6A20B1FF(x$$19, y$$2) {\n return SetTreeModule$$$psubset(FSharpSet$$get_Comparer(x$$19), FSharpSet$$get_Tree(x$$19), FSharpSet$$get_Tree(y$$2));\n}\nexport function FSharpSet$$IsProperSupersetOf$$6A20B1FF(x$$20, y$$3) {\n return SetTreeModule$$$psubset(FSharpSet$$get_Comparer(x$$20), FSharpSet$$get_Tree(y$$3), FSharpSet$$get_Tree(x$$20));\n}\n\nFSharpSet.prototype.toString = function () {\n var strings;\n const this$ = this;\n return \"set [\" + (strings = map$$1(function (x$$21) {\n let copyOfStruct = x$$21;\n return String(copyOfStruct);\n }, this$), (join(\"; \", strings))) + \"]\";\n};\n\nFSharpSet.prototype.GetHashCode = function () {\n const this$$$1 = this;\n let res = 0;\n const e$$1 = SetTreeModule$$$mkIEnumerator(FSharpSet$$get_Tree(this$$$1));\n\n while (e$$1.MoveNext()) {\n const x$$22 = res | 0;\n const y$$4 = structuralHash(e$$1.Current) | 0;\n res = (x$$22 << 1) + y$$4 + 631;\n }\n\n return Math.abs(res) | 0;\n};\n\nFSharpSet.prototype.Equals = function (that) {\n const this$$$2 = this;\n return SetTreeModule$$$compare(FSharpSet$$get_Comparer(this$$$2), FSharpSet$$get_Tree(this$$$2), FSharpSet$$get_Tree(that)) === 0;\n};\n\nFSharpSet.prototype.CompareTo = function (that$$1) {\n const this$$$3 = this;\n return SetTreeModule$$$compare(FSharpSet$$get_Comparer(this$$$3), FSharpSet$$get_Tree(this$$$3), FSharpSet$$get_Tree(that$$1)) | 0;\n};\n\nFSharpSet.prototype[Symbol.iterator] = function () {\n const s$$32 = this;\n return toIterator(SetTreeModule$$$mkIEnumerator(FSharpSet$$get_Tree(s$$32)));\n};\n\nexport function isEmpty(s$$33) {\n return FSharpSet$$get_IsEmpty(s$$33);\n}\nexport function contains(x$$23, s$$34) {\n return FSharpSet$$Contains$$2B595(s$$34, x$$23);\n}\nexport function add(x$$24, s$$35) {\n return FSharpSet$$Add$$2B595(s$$35, x$$24);\n}\nexport function singleton(x$$25, comparer$$24) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$24, new SetTree$00601(2, \"SetOne\", x$$25));\n}\nexport function remove(x$$26, s$$36) {\n return FSharpSet$$Remove$$2B595(s$$36, x$$26);\n}\nexport function union(s1$$2, s2$$2) {\n return FSharpSet$$$op_Addition(s1$$2, s2$$2);\n}\nexport function unionMany(sets$$1, comparer$$25) {\n return fold$$1(FSharpSet$$$op_Addition, FSharpSet$$$$002Ector$$2528C5CB(comparer$$25, new SetTree$00601(0, \"SetEmpty\")), sets$$1);\n}\nexport function intersect(s1$$3, s2$$3) {\n return FSharpSet$$$Intersection$$Z3BE9BFE0(s1$$3, s2$$3);\n}\nexport function intersectMany(sets$$2) {\n return FSharpSet$$$IntersectionMany$$Z15B59630(sets$$2);\n}\nexport function iterate(f$$16, s$$37) {\n FSharpSet$$Iterate$$5028453F(s$$37, f$$16);\n}\nexport function empty(comparer$$26) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$26, new SetTree$00601(0, \"SetEmpty\"));\n}\nexport function forAll(f$$17, s$$38) {\n return FSharpSet$$ForAll$$Z1D55A0D7(s$$38, f$$17);\n}\nexport function exists(f$$18, s$$39) {\n return FSharpSet$$Exists$$Z1D55A0D7(s$$39, f$$18);\n}\nexport function filter(f$$19, s$$40) {\n return FSharpSet$$Filter$$Z1D55A0D7(s$$40, f$$19);\n}\nexport function partition(f$$20, s$$41) {\n return FSharpSet$$Partition$$Z1D55A0D7(s$$41, f$$20);\n}\nexport function fold(f$$21, z$$2, s$$42) {\n return SetTreeModule$$$fold(f$$21, z$$2, FSharpSet$$get_Tree(s$$42));\n}\nexport function foldBack(f$$22, s$$43, z$$3) {\n return SetTreeModule$$$foldBack(f$$22, FSharpSet$$get_Tree(s$$43), z$$3);\n}\nexport function map(f$$23, s$$44, comparer$$27) {\n return FSharpSet$$Map$$7597B8F7(s$$44, f$$23, comparer$$27);\n}\nexport function count(s$$45) {\n return FSharpSet$$get_Count(s$$45);\n}\nexport function minimumElement(s$$46) {\n return FSharpSet$$get_MinimumElement(s$$46);\n}\nexport function maximumElement(s$$47) {\n return FSharpSet$$get_MaximumElement(s$$47);\n}\nexport function ofList(li, comparer$$28) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$28, SetTreeModule$$$ofSeq(comparer$$28, li));\n}\nexport function ofArray(arr$$2, comparer$$29) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$29, SetTreeModule$$$ofArray(comparer$$29, arr$$2));\n}\nexport function toList(s$$48) {\n return SetTreeModule$$$toList(FSharpSet$$get_Tree(s$$48));\n}\nexport function toArray(s$$49, cons) {\n const n$$3 = count(s$$49) | 0;\n const res$$1 = new cons(n$$3);\n SetTreeModule$$$copyToArray(FSharpSet$$get_Tree(s$$49), res$$1, 0);\n return res$$1;\n}\nexport function toSeq(s$$50) {\n return SetTreeModule$$$toSeq(FSharpSet$$get_Tree(s$$50));\n}\nexport function ofSeq(elements, comparer$$30) {\n return FSharpSet$$$$002Ector$$2528C5CB(comparer$$30, SetTreeModule$$$ofSeq(comparer$$30, elements));\n}\nexport function difference(x$$28, y$$6) {\n return FSharpSet$$$op_Subtraction(x$$28, y$$6);\n}\nexport function isSubset(x$$29, y$$7) {\n return FSharpSet$$IsSubsetOf$$6A20B1FF(x$$29, y$$7);\n}\nexport function isSuperset(x$$30, y$$8) {\n return FSharpSet$$IsSupersetOf$$6A20B1FF(x$$30, y$$8);\n}\nexport function isProperSubset(x$$31, y$$9) {\n return FSharpSet$$IsProperSubsetOf$$6A20B1FF(x$$31, y$$9);\n}\nexport function isProperSuperset(x$$32, y$$10) {\n return FSharpSet$$IsProperSupersetOf$$6A20B1FF(x$$32, y$$10);\n}\nexport function minElement(s$$51) {\n return FSharpSet$$get_MinimumElement(s$$51);\n}\nexport function maxElement(s$$52) {\n return FSharpSet$$get_MaximumElement(s$$52);\n}\nexport function createMutable(source, comparer$$31) {\n const set = MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D(source, comparer$$31);\n return set;\n}\nexport function distinct(xs, comparer$$32) {\n return delay(function () {\n const set$$1 = MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D(empty$$1(), comparer$$32);\n return collect(function (x$$33) {\n return MutableSet$002400601$0024$0024Add$0024$00242B595(set$$1, x$$33) ? singleton$$1(x$$33) : empty$$1();\n }, xs);\n });\n}\nexport function distinctBy(projection, xs$$1, comparer$$33) {\n return delay(function () {\n const set$$2 = MutableSet$002400601$0024$0024$0024$0024002Ector$0024$0024Z6150332D(empty$$1(), comparer$$33);\n return collect(function (x$$34) {\n return MutableSet$002400601$0024$0024Add$0024$00242B595(set$$2, projection(x$$34)) ? singleton$$1(x$$34) : empty$$1();\n }, xs$$1);\n });\n}\nexport function unionWith(s1$$4, s2$$4) {\n return fold$$1(function folder(acc$$14, x$$35) {\n return acc$$14.add(x$$35);\n }, s1$$4, s2$$4);\n}\nexport function intersectWith(s1$$5, s2$$5, comparer$$34) {\n const s2$$6 = ofSeq(s2$$5, comparer$$34);\n iterate$$1(function (x$$36) {\n if (!FSharpSet$$Contains$$2B595(s2$$6, x$$36)) {\n const value = s1$$5.delete(x$$36);\n void value;\n } else {\n void null;\n }\n }, s1$$5);\n}\nexport function exceptWith(s1$$6, s2$$7) {\n iterate$$1(function (x$$37) {\n const value$$1 = s1$$6.delete(x$$37);\n void value$$1;\n }, s2$$7);\n}\nexport function isSubsetOf(s1$$7, s2$$8, comparer$$35) {\n return isSubset(ofSeq(s1$$7, comparer$$35), ofSeq(s2$$8, comparer$$35));\n}\nexport function isSupersetOf(s1$$8, s2$$9, comparer$$36) {\n return isSuperset(ofSeq(s1$$8, comparer$$36), ofSeq(s2$$9, comparer$$36));\n}\nexport function isProperSubsetOf(s1$$9, s2$$10, comparer$$37) {\n return isProperSubset(ofSeq(s1$$9, comparer$$37), ofSeq(s2$$10, comparer$$37));\n}\nexport function isProperSupersetOf(s1$$10, s2$$11, comparer$$38) {\n return isProperSuperset(ofSeq(s1$$10, comparer$$38), ofSeq(s2$$11, comparer$$38));\n}","export function create(pattern, options = 0) {\n // Supported RegexOptions\n // * IgnoreCase: 0x0001\n // * Multiline: 0x0002\n // * Singleline: 0x0010\n // * ECMAScript: 0x0100 (ignored)\n if ((options & ~(1 ^ 2 ^ 16 ^ 256)) !== 0) {\n throw new Error(\"RegexOptions only supports: IgnoreCase, Multiline, Singleline and ECMAScript\");\n }\n let flags = \"g\";\n flags += options & 1 ? \"i\" : \"\"; // 0x0001 RegexOptions.IgnoreCase\n flags += options & 2 ? \"m\" : \"\";\n flags += options & 16 ? \"s\" : \"\";\n return new RegExp(pattern, flags);\n}\n// From http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\nexport function escape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n}\nexport function unescape(str) {\n return str.replace(/\\\\([\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|])/g, \"$1\");\n}\nexport function isMatch(str, pattern, options = 0) {\n let reg;\n reg = str instanceof RegExp\n ? (reg = str, str = pattern, reg.lastIndex = options, reg)\n : reg = create(pattern, options);\n return reg.test(str);\n}\nexport function match(str, pattern, options = 0) {\n let reg;\n reg = str instanceof RegExp\n ? (reg = str, str = pattern, reg.lastIndex = options, reg)\n : reg = create(pattern, options);\n return reg.exec(str);\n}\nexport function matches(str, pattern, options = 0) {\n let reg;\n reg = str instanceof RegExp\n ? (reg = str, str = pattern, reg.lastIndex = options, reg)\n : reg = create(pattern, options);\n if (!reg.global) {\n throw new Error(\"Non-global RegExp\"); // Prevent infinite loop\n }\n let m = reg.exec(str);\n const matches = [];\n while (m !== null) {\n matches.push(m);\n m = reg.exec(str);\n }\n return matches;\n}\nexport function options(reg) {\n let options = 256; // ECMAScript\n options |= reg.ignoreCase ? 1 : 0;\n options |= reg.multiline ? 2 : 0;\n return options;\n}\nexport function replace(reg, input, replacement, limit, offset = 0) {\n function replacer() {\n let res = arguments[0];\n if (limit) {\n limit--;\n const match = [];\n const len = arguments.length;\n for (let i = 0; i < len - 2; i++) {\n match.push(arguments[i]);\n }\n match.index = arguments[len - 2];\n match.input = arguments[len - 1];\n res = replacement(match);\n }\n return res;\n }\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit !== null && limit !== void 0 ? limit : 0);\n input = tmp;\n limit = undefined;\n }\n if (typeof replacement === \"function\") {\n limit = limit == null ? -1 : limit;\n return input.substring(0, offset) + input.substring(offset).replace(reg, replacer);\n }\n else {\n // $0 doesn't work with JS regex, see #1155\n replacement = replacement.replace(/\\$0/g, (_s) => \"$&\");\n if (limit != null) {\n let m;\n const sub1 = input.substring(offset);\n const _matches = matches(reg, sub1);\n const sub2 = matches.length > limit ? (m = _matches[limit - 1], sub1.substring(0, m.index + m[0].length)) : sub1;\n return input.substring(0, offset) + sub2.replace(reg, replacement)\n + input.substring(offset + sub2.length);\n }\n else {\n return input.replace(reg, replacement);\n }\n }\n}\nexport function split(reg, input, limit, offset = 0) {\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit !== null && limit !== void 0 ? limit : 0);\n input = tmp;\n limit = undefined;\n }\n input = input.substring(offset);\n return input.split(reg, limit);\n}\n//# sourceMappingURL=RegExp.js.map","namespace Fable.Parsimmon\r\n\r\nopen Fable.Core\r\nopen Fable.Core.JsInterop\r\n\r\ntype ParseResult<'t> =\r\n abstract status : bool\r\n abstract value : 't\r\n\r\ntype IParserOffSet =\r\n abstract offset : int\r\n abstract line : int\r\n abstract column : int\r\n\r\ntype TokenPosition =\r\n { offset: int\r\n line: int\r\n column: int }\r\n\r\ntype NodeResult<'t> =\r\n { name: string\r\n value: 't\r\n start: TokenPosition\r\n ``end``: TokenPosition }\r\n\r\ntype IParser<'t> =\r\n abstract map<'u> : ('t -> 'u) -> IParser<'u>\r\n abstract parse : string -> ParseResult<'t>\r\n abstract times : int -> IParser<'t []>\r\n abstract times : int * int -> IParser<'t []>\r\n abstract many : unit -> IParser<'t []>\r\n []\r\n abstract chain : IParser<'u> -> IParser<'u>\r\n []\r\n abstract bind : ('t -> IParser<'u>) -> IParser<'u>\r\n abstract skip : IParser<'u> -> IParser<'t>\r\n abstract sepBy : IParser<'u> -> IParser<'t []>\r\n abstract fallback : 't -> IParser<'t>\r\n abstract trim : IParser<'u> -> IParser<'t>\r\n abstract notFollowedBy : IParser<'u> -> IParser<'t>\r\n abstract atMost : int -> IParser<'t[]>\r\n abstract atLeast : int -> IParser<'t[]>\r\n []\r\n abstract orTry : IParser<'t> -> IParser<'t>\r\n abstract sepBy1 : IParser<'u> -> IParser<'t []>\r\n []\r\n abstract node : string -> IParser>\r\n\r\nmodule Parsimmon =\r\n let parseRaw (input: string) (parser: IParser<'t>) =\r\n parser.parse input\r\n\r\n let parse (input: string) (parser: IParser<'t>) =\r\n parser.parse input\r\n |> fun result ->\r\n match result.status with\r\n | true -> Some result.value\r\n | false -> None\r\n\r\n /// A parser that consumes no input and yields an object an object representing the current offset into the parse: it has a 0-based character offset property and 1-based line and column properties\r\n let index : IParser =\r\n import \"index\" \"./Parsimmon.js\"\r\n\r\n /// Returns a new parser which tries parser, and if it fails uses otherParser. Example:\r\n let orTry (otherParser: IParser<'t>) (parser: IParser<'t>) : IParser<'t> =\r\n parser.orTry(otherParser)\r\n\r\n /// Returns a new parser that tries to parse the input exactly `n` times\r\n let times<'t> (n: int) (parser : IParser<'t>) : IParser<'t[]> =\r\n parser.times n\r\n\r\n /// Expects parser at least n times. Yields an array of the results.\r\n let atLeast (n: int) (parser: IParser<'t>) : IParser<'t[]> =\r\n parser.atLeast n\r\n\r\n\r\n /// Expects parser at most n times. Yields an array of the results.\r\n let atMost (n: int) (parser: IParser<'t>) : IParser<'t[]> =\r\n parser.atMost n\r\n\r\n let skip (skipped: IParser<'u>) (keep: IParser<'t>) : IParser<'t> =\r\n keep.skip skipped\r\n\r\n let many (parser : IParser<'t>) : IParser<'t[]> =\r\n parser.many()\r\n\r\n /// Returns a parser that looks for a match to the regexp and yields the entire text matched. The regexp will always match starting at the current parse location.\r\n []\r\n let regex (pattern: string) : IParser = jsNative\r\n /// Returns a parser that looks for a match to the regexp and yields the entire text matched. The regexp will always match starting at the current parse location.\r\n []\r\n let regexGroupNumber (pattern: string) (groupNumber: int): IParser = jsNative\r\n let ofLazy (f: unit -> IParser<'t>) : IParser<'t> =\r\n import \"lazy\" \"./Parsimmon.js\"\r\n\r\n /// This is the same as Parsimmon.sepBy, but matches the parser at least once.\r\n let seperateByAtLeastOne (seperator : IParser<'u>) (parser: IParser<'t>) : IParser<'t[]> =\r\n parser.sepBy1(seperator)\r\n\r\n /// Expects parser \"after\" to follow parser \"before\", and yields the result of \"before\".\r\n let chain (after: IParser<'u>) (before: IParser<'t>) : IParser<'u> =\r\n before.chain after\r\n\r\n /// Returns a new parser which tries parser \"p\", and on success calls the function \"f\" with the result of the parse, which is expected to return another parser, which will be tried next. This allows you to dynamically decide how to continue the parse, which is impossible with the other combinators.\r\n let bind (f: 't -> IParser<'u>) (p: IParser<'t>) : IParser<'u> =\r\n p.bind f\r\n\r\n /// A parser that consumes one letter\r\n let letter : IParser =\r\n import \"letter\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that tries `parser` and succeeds if `parser` is able to parse between `min` and `max` times\r\n let timesBetween (min: int) (max: int) (parser: IParser<'u>) =\r\n parser.times(min, max)\r\n\r\n /// A parser that consumes one or more letters\r\n let letters : IParser =\r\n import \"letters\" \"./Parsimmon.js\"\r\n\r\n /// A parser that expects to be at the end of the input (zero characters left).\r\n let endOfFile : IParser =\r\n import \"eof\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that looks for anything but whatever \"p\" wants to parse, and does not consume it. Yields the same result as \"before\".\r\n let notFollowedBy (p: IParser<'u>) (before: IParser<'t>) : IParser<'t> =\r\n before.notFollowedBy p\r\n\r\n /// Returns a parser that doesn't consume any input, and yields the given value\r\n let succeed (value: 't) : IParser<'t> =\r\n import \"succeed\" \"./Parsimmon.js\"\r\n\r\n /// Parses using parser, but does not consume what it parses. Yields an empty string.\r\n let lookahead (parser: IParser<'t>) : IParser =\r\n import \"lookahead\" \"./Parsimmon.js\"\r\n\r\n // A parser that consumes one digit\r\n let digit : IParser =\r\n import \"digit\" \"./Parsimmon.js\"\r\n\r\n // A parser that consumes one or more digits\r\n let digits : IParser =\r\n digit\r\n |> many\r\n\r\n /// Returns a new parser which tries \"parser\" and, if it fails, yields value without consuming any input.\r\n let fallback (value: 't) (parser: IParser<'t>) : IParser<'t> =\r\n parser.fallback value\r\n\r\n let seperateBy (content: IParser<'u>) (others: IParser<'t>) : IParser<'t[]> =\r\n others.sepBy(content)\r\n\r\n let between (left: IParser<'t>) (right: IParser<'u>) (middle: IParser<'v>) =\r\n left\r\n |> chain middle\r\n |> skip right\r\n\r\n /// Transforms the parsed value of the given parser.\r\n let map (f: 't -> 'u) (parser: IParser<'t>) = parser.map f\r\n\r\n /// Alias of Parsimmon.concat\r\n let tie (parser: IParser) : IParser =\r\n map (String.concat \"\") parser\r\n\r\n /// A parser that consumes and yields the next character of the input.\r\n let any : IParser =\r\n import \"any\" \"./Parsimmon.js\"\r\n\r\n /// Accepts any number of parsers, yielding the value of the first one that succeeds, backtracking in between.\r\n let choose (ps: IParser<'t> list) : IParser<'t> =\r\n List.reduce (fun acc parser -> acc.orTry(parser)) ps\r\n\r\n /// A parser that consumes and yields the entire remainder of the input.\r\n let all : IParser =\r\n import \"all\" \"./Parsimmon.js\"\r\n\r\n /// Returns a failing parser with the given message.\r\n let fail (input: string) : IParser =\r\n import \"fail\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that yield a single character if it passes the predicate function.\r\n let satisfy (f: string -> bool) : IParser =\r\n import \"test\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser yield a string containing all the next characters that pass the predicate \"f\"\r\n let takeWhile (f: string -> bool) : IParser =\r\n import \"takeWhile\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that can only parse the exact given input string\r\n let str (input: string) : IParser =\r\n import \"string\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that parses any of the characters of the input string\r\n let oneOf (input: string) : IParser =\r\n import \"oneOf\" \"./Parsimmon.js\"\r\n\r\n let whitespace : IParser =\r\n import \"whitespace\" \"./Parsimmon.js\"\r\n\r\n let optionalWhitespace : IParser =\r\n import \"optWhitespace\" \"./Parsimmon.js\"\r\n\r\n /// Returns a parser that succeeds one or more times\r\n let atLeastOneOrMany (parser: IParser<'t>) : IParser<'t[]> =\r\n atLeast 1 parser\r\n\r\n let stringReturn (input: string) (value: 't) : IParser<'t> =\r\n str input\r\n |> map (fun _ -> value)\r\n\r\n /// Returns a parser that parses comsumes any character of a string other than the characters of the input string\r\n let noneOf (input: string) : IParser =\r\n import \"noneOf\" \"./Parsimmon.js\"\r\n\r\n let seq2 (p1: IParser<'t>) (p2:IParser<'u>) : IParser<'t * 'u> =\r\n import \"seq\" \"./Parsimmon.js\"\r\n\r\n let trim (trimmed: IParser<'a>) (p: IParser<'t>) : IParser<'t> =\r\n p.trim trimmed\r\n\r\n /// Equivalent to `parser.map (String.concat \"\")`\r\n let concat (parser: IParser) : IParser =\r\n parser.map (String.concat \"\")\r\n\r\n let seq3 (p1: IParser<'t>)\r\n (p2: IParser<'u>)\r\n (p3:IParser<'v>) : IParser<'t * 'u * 'v> =\r\n import \"seq\" \"./Parsimmon.js\"\r\n\r\n let seq4 (p1: IParser<'t>)\r\n (p2: IParser<'u>)\r\n (p3:IParser<'v>)\r\n (p4:IParser<'w>) : IParser<'t * 'u * 'v * 'w> =\r\n import \"seq\" \"./Parsimmon.js\"\r\n\r\n let seq5 (p1: IParser<'t>)\r\n (p2: IParser<'u>)\r\n (p3: IParser<'v>)\r\n (p4: IParser<'w>)\r\n (p5: IParser<'q>) : IParser<'t * 'u * 'v * 'w * 'q> =\r\n import \"seq\" \"./Parsimmon.js\"\r\n\r\n /// Equivalent to `parser.node(\"description\")`\r\n let node<'t> description (p:IParser<'t>) = p.node(description)","namespace Fable.SimpleJson\r\n\r\nopen Fable.Parsimmon\r\n\r\n#nowarn \"40\"\r\n\r\nmodule Parser =\r\n\r\n let digits = \r\n Parsimmon.digit \r\n |> Parsimmon.atLeastOneOrMany\r\n |> Parsimmon.concat\r\n\r\n let jint = digits |> Parsimmon.map float\r\n\r\n let negJint = \r\n Parsimmon.seq2 (Parsimmon.str \"-\") jint \r\n |> Parsimmon.map (fun (sign, number) -> -number)\r\n\r\n let jfloat = \r\n\r\n let digits = \r\n Parsimmon.digit \r\n |> Parsimmon.many\r\n |> Parsimmon.concat\r\n\r\n let dot = Parsimmon.str \".\"\r\n\r\n let decimals = \r\n Parsimmon.digit\r\n |> Parsimmon.atLeastOneOrMany\r\n |> Parsimmon.concat\r\n\r\n Parsimmon.seq3 digits dot decimals\r\n |> Parsimmon.map (fun (digitsLeft,dot,digitsRight) -> \r\n match digitsLeft with\r\n | \"\" -> \"0\"\r\n | other -> other \r\n |> fun digitsLeft ->\r\n [digitsLeft; dot; digitsRight]\r\n |> String.concat \"\" \r\n |> float\r\n )\r\n\r\n let negativeJFloat = \r\n Parsimmon.seq2 (Parsimmon.str \"-\") jfloat \r\n |> Parsimmon.map (fun (sign, number) -> -number)\r\n\r\n let jnumber = \r\n [jfloat; negativeJFloat; jint; negJint] \r\n |> Parsimmon.choose\r\n |> Parsimmon.map JNumber\r\n\r\n let jbool = \r\n [ Parsimmon.stringReturn \"true\" (JBool true)\r\n Parsimmon.stringReturn \"false\" (JBool false)]\r\n |> Parsimmon.choose\r\n\r\n let jnull = Parsimmon.stringReturn \"null\" JNull\r\n\r\n let stringLiteral =\r\n let escape = \r\n Parsimmon.oneOf \"\\\"\\\\/bfnrt\"\r\n |> Parsimmon.map(function\r\n | \"b\" -> \"\\b\"\r\n | \"f\" -> \"\\u000C\"\r\n | \"n\" -> \"\\n\"\r\n | \"r\" -> \"\\r\"\r\n | \"t\" -> \"\\t\"\r\n | c -> c) // every other char is mapped to itself\r\n\r\n let escapedCharSnippet = \r\n Parsimmon.seq2 (Parsimmon.str \"\\\\\") escape\r\n |> Parsimmon.map snd\r\n\r\n let normalCharSnippet = Parsimmon.satisfy (fun c -> c <> \"\\\"\" && c <> \"\\\\\")\r\n\r\n let anyCharSnippet = \r\n normalCharSnippet\r\n |> Parsimmon.orTry escapedCharSnippet\r\n |> Parsimmon.many\r\n |> Parsimmon.concat\r\n\r\n anyCharSnippet\r\n |> Parsimmon.between (Parsimmon.str \"\\\"\") (Parsimmon.str \"\\\"\")\r\n \r\n let jstring = stringLiteral.map JString\r\n\r\n let withWhitespace p = \r\n Parsimmon.between (Parsimmon.optionalWhitespace) (Parsimmon.optionalWhitespace) p\r\n \r\n let jvalue = \r\n [ jnull; jbool; jnumber; jstring ]\r\n |> List.map withWhitespace\r\n |> Parsimmon.choose\r\n \r\n let comma = withWhitespace (Parsimmon.str \",\")\r\n \r\n let rec json = Parsimmon.ofLazy <| fun () ->\r\n \r\n let leftBracket = withWhitespace (Parsimmon.str \"[\")\r\n let rightBracket = withWhitespace (Parsimmon.str \"]\")\r\n \r\n let arrayValue = Parsimmon.seperateBy comma json\r\n \r\n let jarray = \r\n arrayValue\r\n |> Parsimmon.between leftBracket rightBracket\r\n |> Parsimmon.map (List.ofArray >> JArray)\r\n\r\n let leftBrace = withWhitespace (Parsimmon.str \"{\")\r\n let rightBrace = withWhitespace (Parsimmon.str \"}\")\r\n \r\n let keyValues = \r\n Parsimmon.seq3 \r\n (withWhitespace stringLiteral)\r\n (withWhitespace (Parsimmon.str \":\"))\r\n (withWhitespace json)\r\n |> Parsimmon.map (fun (key, _ , value) -> key,value)\r\n |> Parsimmon.seperateBy comma\r\n\r\n let jobject = \r\n keyValues\r\n |> Parsimmon.between leftBrace rightBrace\r\n |> Parsimmon.map (List.ofArray >> Map.ofList >> JObject)\r\n\r\n [jvalue; jarray; jobject]\r\n |> Parsimmon.choose\r\n \r\n let jsonParser = withWhitespace json\r\n","namespace Fable.SimpleJson\r\n\r\nopen Fable.Core\r\nopen Fable.Parsimmon\r\nopen Parser\r\nopen Fable.Import\r\nopen System\r\nopen Fable.Core.JsInterop\r\n\r\n[]\r\nmodule InteropUtil =\r\n []\r\n let arrayFrom (xs: obj) : obj = jsNative\r\n []\r\n let get<'a> (key: string) (x: obj) : 'a = jsNative\r\n []\r\n let isDate (x: obj) = jsNative\r\n []\r\n let hasKey (key: string) (x: 'a) = jsNative\r\n let isDateOffset (x: obj) = isDate x && hasKey \"offset\" x\r\n []\r\n let getTypeOf (x: obj) : string = jsNative\r\n let isObjectLiteral (x: obj) = getTypeOf x = \"object\"\r\n let isBigInt (x: obj) =\r\n not (isNull x)\r\n && isObjectLiteral x\r\n && hasKey \"signInt\" x\r\n && hasKey \"v\" x\r\n && hasKey \"digits\" (get \"v\" x)\r\n && hasKey \"bound\" (get \"v\" x)\r\n\r\n []\r\n let log (x: 'a) : unit = jsNative\r\n\r\nmodule SimpleJson =\r\n /// Tries to parse a string into a Json structured JSON data.\r\n let tryParse (input: string) : Option =\r\n Parsimmon.parse input jsonParser\r\n\r\n /// Parses the input string into a structured JSON data. Fails with an exception if parsing fails.\r\n let parse (input: string) : Json =\r\n match tryParse input with\r\n | Some result -> result\r\n | None -> failwithf \"Could not parse the JSON input: %s\" input\r\n\r\n /// Stringifies a Json object back to string representation\r\n let rec toString = function\r\n | JNull -> \"null\"\r\n | JBool true -> \"true\"\r\n | JBool false -> \"false\"\r\n | JNumber number -> string number\r\n | JString text -> sprintf \"\\\"%s\\\"\" text\r\n | JArray elements ->\r\n elements\r\n |> List.map toString\r\n |> String.concat \",\"\r\n |> sprintf \"[%s]\"\r\n | JObject map ->\r\n map\r\n |> Map.toList\r\n |> List.map (fun (key,value) -> sprintf \"\\\"%s\\\":%s\" key (toString value))\r\n |> String.concat \",\"\r\n |> sprintf \"{%s}\"\r\n\r\n let stringify (value: 'a) : string =\r\n if isNullOrUndefined value\r\n then JS.JSON.stringify(null)\r\n else JS.JSON.stringify(value, (fun key v ->\r\n if isDateOffset (get key jsThis) then\r\n let dateOffset : DateTimeOffset = get key jsThis\r\n box (dateOffset.ToString(\"O\"))\r\n elif isBigInt (get key jsThis) then\r\n let bigInt : bigint = get key jsThis\r\n box (string (decimal bigInt))\r\n else\r\n match v with\r\n | :? string -> v\r\n | :? System.Collections.IEnumerable ->\r\n if JS.Constructors.Array.isArray(v) then v\r\n else arrayFrom v\r\n | _ when isBigInt v -> box (string (decimal (unbox v)))\r\n | _ when isDateOffset v -> box ((unbox v).ToString(\"O\"))\r\n | _ -> v\r\n ), 0)\r\n\r\n let rec internal parseNative' (x: obj) =\r\n match x with\r\n | TypeCheck.NativeString str -> JString str\r\n | TypeCheck.NativeNumber number -> JNumber number\r\n | TypeCheck.NativeBool value -> JBool value\r\n | TypeCheck.Null _ -> JNull\r\n | TypeCheck.NativeArray arr -> JArray (List.ofArray (Array.map parseNative' arr))\r\n | TypeCheck.NativeObject object ->\r\n [ for key in JS.Constructors.Object.keys object -> key, parseNative' (get key object) ]\r\n |> Map.ofList\r\n |> JObject\r\n | _ -> JNull\r\n\r\n /// Parses and converts the input string to Json using Javascript's native parsing capabilities\r\n let parseNative (input: string) =\r\n let parsed = JS.JSON.parse input\r\n parseNative' parsed\r\n\r\n let tryParseNative (input: string) =\r\n try Some (parseNative input)\r\n with | ex -> None\r\n\r\n /// Tries to convert an object literal to the Json by calling JSON.stringify on the object first\r\n let fromObjectLiteral (x: 'a) =\r\n try Some (parseNative' x)\r\n with | _ -> None\r\n\r\n /// Transforms all keys of the objects within the Json structure\r\n let rec mapKeys f = function\r\n | JObject dictionary ->\r\n dictionary\r\n |> Map.toList\r\n |> List.map (fun (key, value) -> f key, mapKeys f value)\r\n |> Map.ofList\r\n |> JObject\r\n | JArray values ->\r\n values\r\n |> List.map (mapKeys f)\r\n |> JArray\r\n | otherJsonValue -> otherJsonValue\r\n\r\n /// Transforms object values recursively using function `f` that takes the key and value of the object and returns a new value\r\n let rec mapbyKey f = function\r\n | JObject dictionary ->\r\n dictionary\r\n |> Map.toList\r\n |> List.map (fun (key, value) -> key, f key value)\r\n |> Map.ofList\r\n |> JObject\r\n | JArray values ->\r\n values\r\n |> List.map (mapbyKey f)\r\n |> JArray\r\n | otherJsonValue -> otherJsonValue\r\n\r\n /// Transforms keys of object selectively by path segments\r\n let mapKeysByPath f json =\r\n let rec mapKey xs = function\r\n | JObject dictionary ->\r\n dictionary\r\n |> Map.toList\r\n |> List.map (fun (key, value) ->\r\n let keyPath = List.concat [xs; [key]]\r\n match f keyPath with\r\n | Some nextKey -> nextKey, mapKey keyPath value\r\n | None -> key, mapKey keyPath value)\r\n |> Map.ofList\r\n |> JObject\r\n | JArray values ->\r\n values\r\n |> List.map (mapKey xs)\r\n |> JArray\r\n | otherJsonValue -> otherJsonValue\r\n mapKey [] json\r\n\r\n let rec readPath (keys: string list) (input: Json) =\r\n match keys, input with\r\n | [ ], _ -> None\r\n | [ key ], JObject dict -> Map.tryFind key dict\r\n | firstKey :: rest, JObject dict ->\r\n match Map.tryFind firstKey dict with\r\n | Some (JObject nextDict) -> readPath rest (JObject nextDict)\r\n | _ -> None\r\n | _ -> None","namespace Fable.SimpleJson\r\n\r\nopen Fable.Core\r\nopen Fable.Core.JsInterop\r\n\r\nmodule TypeCheck =\r\n\r\n []\r\n let typeofString (x: obj) : bool = jsNative\r\n\r\n []\r\n let typeofBool (x: obj) : bool = jsNative\r\n\r\n []\r\n let typeofNumber (x: obj) : bool = jsNative\r\n []\r\n let typeofObject (x: obj) : bool = jsNative\r\n\r\n let (|NativeString|_|) (x: obj) =\r\n if typeofString x\r\n then Some (unbox x)\r\n else None\r\n\r\n let (|NativeBool|_|) (x: obj) =\r\n if typeofBool x\r\n then Some (unbox x)\r\n else None\r\n\r\n let (|NativeNumber|_|) (x: obj) =\r\n if typeofNumber x\r\n then Some (unbox x)\r\n else None\r\n\r\n let (|NativeObject|_|) (x: obj) =\r\n if typeofObject x\r\n then Some x\r\n else None\r\n\r\n let (|Null|_|) (x: obj) =\r\n if isNull x\r\n then Some x\r\n else None\r\n\r\n let (|NativeArray|_|) (x: obj) =\r\n if (JS.Constructors.Array.isArray x)\r\n then Some (unbox x)\r\n else None","/**\n * DateTimeOffset functions.\n *\n * Note: Date instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoc when `.getTime()` is called.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { fromValue, ticksToUnixEpochMilliseconds, unixEpochMillisecondsToTicks } from \"./Long\";\nimport { compareDates, dateOffset, padWithZeros } from \"./Util\";\nexport const offsetRegex = /(?:Z|[+-](\\d+):?([0-5]?\\d)?)\\s*$/;\nexport function dateOffsetToString(offset) {\n const isMinus = offset < 0;\n offset = Math.abs(offset);\n const hours = ~~(offset / 3600000);\n const minutes = (offset % 3600000) / 60000;\n return (isMinus ? \"-\" : \"+\") +\n padWithZeros(hours, 2) + \":\" +\n padWithZeros(minutes, 2);\n}\nexport function dateToHalfUTCString(date, half) {\n const str = date.toISOString();\n return half === \"first\"\n ? str.substring(0, str.indexOf(\"T\"))\n : str.substring(str.indexOf(\"T\") + 1, str.length - 1);\n}\nfunction dateToISOString(d, utc) {\n if (utc) {\n return d.toISOString();\n }\n else {\n // JS Date is always local\n const printOffset = d.kind == null ? true : d.kind === 2 /* Local */;\n return padWithZeros(d.getFullYear(), 4) + \"-\" +\n padWithZeros(d.getMonth() + 1, 2) + \"-\" +\n padWithZeros(d.getDate(), 2) + \"T\" +\n padWithZeros(d.getHours(), 2) + \":\" +\n padWithZeros(d.getMinutes(), 2) + \":\" +\n padWithZeros(d.getSeconds(), 2) + \".\" +\n padWithZeros(d.getMilliseconds(), 3) +\n (printOffset ? dateOffsetToString(d.getTimezoneOffset() * -60000) : \"\");\n }\n}\nfunction dateToISOStringWithOffset(dateWithOffset, offset) {\n const str = dateWithOffset.toISOString();\n return str.substring(0, str.length - 1) + dateOffsetToString(offset);\n}\nfunction dateToStringWithCustomFormat(date, format, utc) {\n return format.replace(/(\\w)\\1*/g, (match) => {\n let rep = Number.NaN;\n switch (match.substring(0, 1)) {\n case \"y\":\n const y = utc ? date.getUTCFullYear() : date.getFullYear();\n rep = match.length < 4 ? y % 100 : y;\n break;\n case \"M\":\n rep = (utc ? date.getUTCMonth() : date.getMonth()) + 1;\n break;\n case \"d\":\n rep = utc ? date.getUTCDate() : date.getDate();\n break;\n case \"H\":\n rep = utc ? date.getUTCHours() : date.getHours();\n break;\n case \"h\":\n const h = utc ? date.getUTCHours() : date.getHours();\n rep = h > 12 ? h % 12 : h;\n break;\n case \"m\":\n rep = utc ? date.getUTCMinutes() : date.getMinutes();\n break;\n case \"s\":\n rep = utc ? date.getUTCSeconds() : date.getSeconds();\n break;\n case \"f\":\n rep = utc ? date.getUTCMilliseconds() : date.getMilliseconds();\n break;\n }\n if (Number.isNaN(rep)) {\n return match;\n }\n else {\n return (rep < 10 && match.length > 1) ? \"0\" + rep : \"\" + rep;\n }\n });\n}\nfunction dateToStringWithOffset(date, format) {\n var _a, _b, _c;\n const d = new Date(date.getTime() + ((_a = date.offset) !== null && _a !== void 0 ? _a : 0));\n if (typeof format !== \"string\") {\n return d.toISOString().replace(/\\.\\d+/, \"\").replace(/[A-Z]|\\.\\d+/g, \" \") + dateOffsetToString(((_b = date.offset) !== null && _b !== void 0 ? _b : 0));\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\": return dateToHalfUTCString(d, \"first\");\n case \"T\":\n case \"t\": return dateToHalfUTCString(d, \"second\");\n case \"O\":\n case \"o\": return dateToISOStringWithOffset(d, ((_c = date.offset) !== null && _c !== void 0 ? _c : 0));\n default: throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(d, format, true);\n }\n}\nfunction dateToStringWithKind(date, format) {\n const utc = date.kind === 1 /* UTC */;\n if (typeof format !== \"string\") {\n return utc ? date.toUTCString() : date.toLocaleString();\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\":\n return utc ? dateToHalfUTCString(date, \"first\") : date.toLocaleDateString();\n case \"T\":\n case \"t\":\n return utc ? dateToHalfUTCString(date, \"second\") : date.toLocaleTimeString();\n case \"O\":\n case \"o\":\n return dateToISOString(date, utc);\n default:\n throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(date, format, utc);\n }\n}\nexport function toString(date, format, _provider) {\n return date.offset != null\n ? dateToStringWithOffset(date, format)\n : dateToStringWithKind(date, format);\n}\nexport function DateTime(value, kind) {\n const d = new Date(value);\n d.kind = (kind == null ? 0 /* Unspecified */ : kind) | 0;\n return d;\n}\nexport function fromTicks(ticks, kind) {\n ticks = fromValue(ticks);\n kind = kind != null ? kind : 0 /* Unspecified */;\n let date = DateTime(ticksToUnixEpochMilliseconds(ticks), kind);\n // Ticks are local to offset (in this case, either UTC or Local/Unknown).\n // If kind is anything but UTC, that means that the tick number was not\n // in utc, thus getTime() cannot return UTC, and needs to be shifted.\n if (kind !== 1 /* UTC */) {\n date = DateTime(date.getTime() - dateOffset(date), kind);\n }\n return date;\n}\nexport function fromDateTimeOffset(date, kind) {\n var _a;\n switch (kind) {\n case 1 /* UTC */: return DateTime(date.getTime(), 1 /* UTC */);\n case 2 /* Local */: return DateTime(date.getTime(), 2 /* Local */);\n default:\n const d = DateTime(date.getTime() + ((_a = date.offset) !== null && _a !== void 0 ? _a : 0), kind);\n return DateTime(d.getTime() - dateOffset(d), kind);\n }\n}\nexport function getTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), dateOffset(date));\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTime(-62135596800000, 0 /* Unspecified */);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTime(253402300799999, 0 /* Unspecified */);\n}\nexport function parseRaw(str) {\n let date = new Date(str);\n if (isNaN(date.getTime())) {\n // Try to check strings JS Date cannot parse (see #1045, #1422)\n // tslint:disable-next-line:max-line-length\n const m = /^\\s*(\\d+[^\\w\\s:]\\d+[^\\w\\s:]\\d+)?\\s*(\\d+:\\d+(?::\\d+(?:\\.\\d+)?)?)?\\s*([AaPp][Mm])?\\s*([+-]\\d+(?::\\d+)?)?\\s*$/.exec(str);\n if (m != null) {\n let baseDate;\n let timeInSeconds = 0;\n if (m[2] != null) {\n const timeParts = m[2].split(\":\");\n timeInSeconds =\n parseInt(timeParts[0], 10) * 3600 +\n parseInt(timeParts[1] || \"0\", 10) * 60 +\n parseFloat(timeParts[2] || \"0\");\n if (m[3] != null && m[3].toUpperCase() === \"PM\") {\n timeInSeconds += 720;\n }\n }\n if (m[4] != null) { // There's an offset, parse as UTC\n if (m[1] != null) {\n baseDate = new Date(m[1] + \" UTC\");\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getUTCFullYear() + \"/\" + (d.getUTCMonth() + 1) + \"/\" + d.getUTCDate());\n }\n const offsetParts = m[4].substr(1).split(\":\");\n let offsetInMinutes = parseInt(offsetParts[0], 10) * 60 + parseInt(offsetParts[1] || \"0\", 10);\n if (m[4][0] === \"+\") {\n offsetInMinutes *= -1;\n }\n timeInSeconds += offsetInMinutes * 60;\n }\n else {\n if (m[1] != null) {\n baseDate = new Date(m[1]);\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate());\n }\n }\n date = new Date(baseDate.getTime() + timeInSeconds * 1000);\n // correct for daylight savings time\n date = new Date(date.getTime() + (date.getTimezoneOffset() - baseDate.getTimezoneOffset()) * 60000);\n }\n else {\n throw new Error(\"The string is not a valid Date.\");\n }\n }\n return date;\n}\nexport function parse(str, detectUTC = false) {\n const date = parseRaw(str);\n const offset = offsetRegex.exec(str);\n // .NET always parses DateTime as Local if there's offset info (even \"Z\")\n // Newtonsoft.Json uses UTC if the offset is \"Z\"\n const kind = offset != null\n ? (detectUTC && offset[0] === \"Z\" ? 1 /* UTC */ : 2 /* Local */)\n : 0 /* Unspecified */;\n return DateTime(date.getTime(), kind);\n}\nexport function tryParse(v, _refValue) {\n try {\n // if value is null or whitespace, parsing fails\n if (v == null || v.trim() === \"\") {\n return [false, minValue()];\n }\n return [true, parse(v)];\n }\n catch (_err) {\n return [false, minValue()];\n }\n}\nexport function create(year, month, day, h = 0, m = 0, s = 0, ms = 0, kind) {\n const dateValue = kind === 1 /* UTC */\n ? Date.UTC(year, month - 1, day, h, m, s, ms)\n : new Date(year, month - 1, day, h, m, s, ms).getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date.\");\n }\n const date = DateTime(dateValue, kind);\n if (year <= 99) {\n date.setFullYear(year, month - 1, day);\n }\n return date;\n}\nexport function now() {\n return DateTime(Date.now(), 2 /* Local */);\n}\nexport function utcNow() {\n return DateTime(Date.now(), 1 /* UTC */);\n}\nexport function today() {\n return date(now());\n}\nexport function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nexport function daysInMonth(year, month) {\n return month === 2\n ? (isLeapYear(year) ? 29 : 28)\n : (month >= 8 ? (month % 2 === 0 ? 31 : 30) : (month % 2 === 0 ? 30 : 31));\n}\nexport function toUniversalTime(date) {\n return date.kind === 1 /* UTC */ ? date : DateTime(date.getTime(), 1 /* UTC */);\n}\nexport function toLocalTime(date) {\n return date.kind === 2 /* Local */ ? date : DateTime(date.getTime(), 2 /* Local */);\n}\nexport function specifyKind(d, kind) {\n return create(year(d), month(d), day(d), hour(d), minute(d), second(d), millisecond(d), kind);\n}\nexport function timeOfDay(d) {\n return hour(d) * 3600000\n + minute(d) * 60000\n + second(d) * 1000\n + millisecond(d);\n}\nexport function date(d) {\n return create(year(d), month(d), day(d), 0, 0, 0, 0, d.kind);\n}\nexport function day(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCDate() : d.getDate();\n}\nexport function hour(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCHours() : d.getHours();\n}\nexport function millisecond(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCMilliseconds() : d.getMilliseconds();\n}\nexport function minute(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCMinutes() : d.getMinutes();\n}\nexport function month(d) {\n return (d.kind === 1 /* UTC */ ? d.getUTCMonth() : d.getMonth()) + 1;\n}\nexport function second(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCSeconds() : d.getSeconds();\n}\nexport function year(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCFullYear() : d.getFullYear();\n}\nexport function dayOfWeek(d) {\n return d.kind === 1 /* UTC */ ? d.getUTCDay() : d.getDay();\n}\nexport function dayOfYear(d) {\n const _year = year(d);\n const _month = month(d);\n let _day = day(d);\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n const newDate = DateTime(d.getTime() + ts, d.kind);\n if (d.kind === 2 /* Local */) {\n const oldTzOffset = d.getTimezoneOffset();\n const newTzOffset = newDate.getTimezoneOffset();\n return oldTzOffset !== newTzOffset\n ? DateTime(newDate.getTime() + (newTzOffset - oldTzOffset) * 60000, d.kind)\n : newDate;\n }\n else {\n return newDate;\n }\n}\nexport function addDays(d, v) {\n return add(d, v * 86400000);\n}\nexport function addHours(d, v) {\n return add(d, v * 3600000);\n}\nexport function addMinutes(d, v) {\n return add(d, v * 60000);\n}\nexport function addSeconds(d, v) {\n return add(d, v * 1000);\n}\nexport function addMilliseconds(d, v) {\n return add(d, v);\n}\nexport function addYears(d, v) {\n const newMonth = month(d);\n const newYear = year(d) + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function addMonths(d, v) {\n let newMonth = month(d) + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = year(d) + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function subtract(d, that) {\n return typeof that === \"number\"\n ? add(d, -that)\n : d.getTime() - that.getTime();\n}\nexport function toLongDateString(d) {\n return d.toDateString();\n}\nexport function toShortDateString(d) {\n return d.toLocaleDateString();\n}\nexport function toLongTimeString(d) {\n return d.toLocaleTimeString();\n}\nexport function toShortTimeString(d) {\n return d.toLocaleTimeString().replace(/:\\d\\d(?!:)/, \"\");\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport const compare = compareDates;\nexport const compareTo = compareDates;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\nexport function isDaylightSavingTime(x) {\n const jan = new Date(x.getFullYear(), 0, 1);\n const jul = new Date(x.getFullYear(), 6, 1);\n return isDST(jan.getTimezoneOffset(), jul.getTimezoneOffset(), x.getTimezoneOffset());\n}\nfunction isDST(janOffset, julOffset, tOffset) {\n return Math.min(janOffset, julOffset) === tOffset;\n}\nexport default DateTime;\n//# sourceMappingURL=Date.js.map"],"sourceRoot":""}