{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../../src/fable-library/Util.ts","webpack:///../../src/fable-library/Types.ts","webpack:///../../src/fable-library/Reflection.ts","webpack:///../../src/fable-library/Option.ts","webpack:///../../../src/fable-library/lib/big.js","webpack:///../../src/fable-library/Decimal.ts","webpack:///../../src/fable-library/Int32.ts","webpack:///../../../src/fable-library/lib/long.js","webpack:///../../src/fable-library/Long.ts","webpack:///../../src/fable-library/Seq.ts","webpack:///../../src/fable-library/Date.ts","webpack:///../../src/fable-library/RegExp.ts","webpack:///../../src/fable-library/String.ts","webpack:///./.fable/fable-library.2.13.0/MutableMap.js","webpack:///./.fable/fable-library.2.13.0/Map.js","webpack:///./.fable/fable-library.2.13.0/MutableSet.js","webpack:///./.fable/fable-library.2.13.0/Set.js","webpack:///./.fable/fable-library.2.13.0/Array.js","webpack:///./.fable/fable-library.2.13.0/List.js","webpack:///src/Shared/Domain.fs","webpack:///.fable/Fable.Promise.3.2.0/Promise.fs","webpack:///.fable/Fable.Fetch.2.6.0/Fetch.fs","webpack:///src/Shared/Urls.fs","webpack:///.fable/Thoth.Json.4.1.0/Extra.fs","webpack:///../../src/fable-library/Guid.ts","webpack:///../../src/fable-library/TimeSpan.ts","webpack:///.fable/Thoth.Json.4.1.0/Encode.fs","webpack:///./.fable/fable-library.2.13.0/BigInt/n.js","webpack:///./.fable/fable-library.2.13.0/BigInt/z.js","webpack:///./.fable/fable-library.2.13.0/BigInt.js","webpack:///../../src/fable-library/DateOffset.ts","webpack:///.fable/Thoth.Json.4.1.0/Decode.fs","webpack:///.fable/Fable.Date.1.0.0/Date.Local.fs","webpack:///src/Client/pages/admin/Shared.fs","webpack:///.fable/Thoth.Fetch.2.0.0/Fetch.fs","webpack:///../../src/fable-library/AsyncBuilder.ts","webpack:///../../src/fable-library/Async.ts","webpack:///../../src/fable-library/Observable.ts","webpack:///../../src/fable-library/Event.ts","webpack:///../../src/fable-library/Timer.ts","webpack:///.fable/Fable.Elmish.Browser.3.0.5/prelude.fs","webpack:///.fable/Fable.Elmish.3.1.0/cmd.fs","webpack:///.fable/Fable.React.5.4.0/Fable.React.Props.fs","webpack:///src/Client/pages/Home.fs","webpack:///src/Client/Scaffold.fs","webpack:///src/Client/pages/Tenant.fs","webpack:///src/Client/Keyboard.fs","webpack:///.fable/Fable.Elmish.Browser.3.0.5/parser.fs","webpack:///src/Client/Pages.fs","webpack:///src/Client/Style.fs","webpack:///src/Client/pages/admin/EditPage.fs","webpack:///src/Client/pages/admin/EditCategory.fs","webpack:///src/Client/pages/admin/EditUsers.fs","webpack:///src/Client/pages/admin/EditFiles.fs","webpack:///src/Client/pages/admin/HelpPacks.fs","webpack:///.fable/Fable.Elmish.3.1.0/ring.fs","webpack:///.fable/Fable.Elmish.3.1.0/program.fs","webpack:///.fable/Fable.Elmish.Browser.3.0.5/navigation.fs","webpack:///src/Client/pages/Admin.fs","webpack:///src/Client/pages/PasswordReset.fs","webpack:///src/Client/pages/AlcoholAudit.fs","webpack:///src/Client/pages/Referral.fs","webpack:///src/Client/pages/ConfirmReferral.fs","webpack:///src/Client/pages/Menu.fs","webpack:///.fable/Fable.Elmish.React.3.0.1/common.fs","webpack:///.fable/Fable.Elmish.React.3.0.1/react.fs","webpack:///src/Client/App.fs","webpack:///src/Client/pages/Training.fs"],"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","x","f","rm","P","e","y","Long","$this","other","fromBits","str","_a","cur","rep","utc","date","getUTCHours","getHours","toUniversalTime","flags","precision","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","matchValue","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","sumBy","pairs$$2","values","GetZero","Add","$x$$2","$y$$3","this$$$8","k$$4","v$$1","matchValue$$4","msg","format","Error","set","MutableMap$00602$$Remove$$2B595","this$$$10","k$$6","matchValue$$6","iterator","this$$$11","toIterator","getEnumerator","delay","collect","pairs$$3","map","pair$$3","item","Clear","Contains","item$$1","matchValue$$7","equals","CopyTo","array","arrayIndex","iterateIndexed","i$$10","Remove","item$$2","matchValue$$8","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","fields","Union","MapTreeModule$$$size","MapTreeModule$$$sizeAux","$acc$$5","$m$$6","acc","MapTreeModule$$$empty","MapTreeModule$$$height","_arg1","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$$$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","List","head","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","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","add","k$$37","v$$27","m$$24","k$$28","v$$24","__$$6","tryFind","k$$39","m$$26","k$$33","__$$23","f$$35","m$$37","ofSeq","l$$23","comparer$$19","empty","comparer$$21","createMutable","source$$3","comparer$$22","MutableMap$002400602$0024$0024$0024$0024002Ector$0024$00246623D9B3","toString","join","map$$2","kv","combineHash","x$$16","y$$3","res$$3","e$$1","activePatternResult3682","structuralHash","Math","abs","that","CompareTo","obj","res$$4","finished","e1","e2","kvp1","kvp2","c$$10","compare","_arg1$$1","k$$34","k$$35","kv$$1","k$$36","v$$26","kv$$2","MutableSet$00601","items","MutableSet$00601$$Add$$2B595","MutableSet$00601$$TryFindIndex$$2B595","MutableSet$00601$$Clear","MutableSet$00601$$get_Count","MutableSet$00601$$Contains$$2B595","MutableSet$00601$$Remove$$2B595","values$$1","value$$2","i$$8","item$$3","add_","x$$1","SetTree$00601","SetTreeModule$$$SetOne","SetTreeModule$$$SetNode","SetTreeModule$$$height","SetTreeModule$$$mk","l$$2","r$$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","comparer$$18","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","c$$7","SetTreeModule$$$ofSeq","comparer$$20","c$$11","$comparer$$19$$126","$acc$$11$$127","$e$$128","acc$$11","SetTreeModule$$$mkFromEnumerator","i$$1","SetTreeModule$$$moveNext","FSharpSet","FSharpSet$$$$002Ector$$2528C5CB","FSharpSet$$get_Comparer","__$$4","FSharpSet$$get_Tree","elements","comparer$$30","map$$1","x$$21","String","res","that$$1","fill","target","targetIndex","count","f$$1","source$$1","cons$$2","ArrayBuffer","isView","len$$1","target$$2","i$$4","initialize","count$$8","initializer","cons$$15","result$$7","i$$13","fold","folder$$4","state$$6","array$$78","reduce","delegateArg0$$2","delegateArg1$$2","foldBack2","f$$9","array1$$11","array2$$11","state$$17","folder$$12","array1$$10","array2$$10","state$$16","acc$$8","size$$1","i$$43","foldBackIndexed2","x$$22","y$$8","acc$$9","ofList","source$$7","cons$$32","from","tryLast","$_arg1$$4$$6","_arg1$$4","foldIndexed","state","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","reverse","xs$$9","acc$$1","x$$6","xs$$12","fold$$1","acc$$3","x$$9","concat","lists","state$$3","xs$$14","acc$$4","x$$10","xs$$27","_arg1$$7","append","xs$$28","ys$$10","x$$15","f$$15","xs$$29","collect$$1","f$$16","xs$$31","mapIndexed","f$$17","xs$$33","acc$$12","x$$17","f$$24","xs$$46","unitVar0","x$$24","ofArray","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","tryPick","f$$30","xs$$53","_arg1$$10","x$$29","tryFindIndexed","f$$32","xs$$55","i$$11","x$$31","undefined","findIndexed","f$$34","xs$$57","value$$1","find","xs$$58","_arg1$$12","x$$34","xs$$69","_arg1$$13","filter","f$$42","xs$$71","acc$$17","x$$37","groupBy","projection$$5","xs$$139","eq$$4","dict","createMutable$$1","matchValue$$16","addToDict","result$$1","key$$1","b","tb","tupledArg","list","f1","f2","r1","r2","combine","( <*> )","email","( )","postcode","answers","drinkFrequencyScore","howManyScore","frequencyScore","occuranceScore","dob","emailValidations","postcodeValidations","dateOfBirthValidations","Justification","targetTheme","pageTheme","getThemeMatcher","idGetter","direction","id","blocks","prev","loop","_","generator","onSuccess","onError","er","a","url","init","response","message","tenant","fmtPages","fmtPageById","fmtCategories","fmtUsers","fmtFiles","filename","fmtGetFile","fmtReferral","fmtHelpPacks","__","factory","( .ctor )","caseStrategy","fieldName","lowerFirst","guidRegex","arguments","decimal","datetimeOffset","timespan","sbyte","int16","uint16","datetime","space","encoder","nil","autoEncodeRecordsAndUnions","extra","skipNullField","encoderRef","setters","fi","targetKey","encode","autoEncoder","source","arg10","clo1","patternInput","fieldTypes","Array","fullname","seq","enumType","byte","clo2","arg20","encoders","option","Value","valueEncoder","keyType","activePatternResult3717","keyEncoder","clo4","arg40","_arg2","activePatternResult3721","guid","makeExtra","resolver","defaultArg","BigNat","bound","digits","BigNatModule$002EFFT$$$pow32","$x$$1","$n$$2","BigNatModule$002EFFT$$$maxTwoPower","Int32Array","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$$$baseNi64","BigNatModule$$$baseMaski64","BigNatModule$$$createN","b$$4","BigNatModule$$$normN","n$$18","bound$$1","$na$$62","$i$$9$$63","na","findLeastBound","BigNatModule$$$embed","x$$28","r$$3","BigNatModule$$$boundInt","BigNatModule$$$one","BigNatModule$$$zero","BigNatModule$$$degree","n$$24","BigNatModule$$$isZero","p$$4","BigNatModule$$$equal","p$$7","q$$4","$pa$$96","$qa$$97","$i$$22$$98","pa","qa","i$$22","check","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$$$mulSchoolBookCarry","$r$$12$$130","$c$$8$$131","$k$$4$$132","r$$12","rak$$1","op_Addition","op_BitwiseAnd","toInt","op_Division","BigNatModule$$$mulSchoolBookOneSmall","p$$16","q$$12","value$$3","bp","r$$13","q$$13","i$$28","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","j$$1","qaj","rak$$3","BigNatModule$$$mulSchoolBookNeitherSmall","BigNatModule$002Eencoding","bigL","twoToBigL","bigK","bigN","split","splits","BigNatModule$$$mkEncoding","bigK$$2","i$$30","BigNatModule$$$table","i$$32","i$$33","i$$34","BigNatModule$$$mul","p$$20","q$$17","BigNatModule$$$scaleSubInPlace","x$$57","a$$5","n$$30","patternInput$$3","j$$4","z$$7","zLo","value$$5","zHi","BigNatModule$$$scaleAddInPlace","x$$62","f$$3","a$$8","n$$32","patternInput$$4","patternInput$$5","f$$4","j$$5","z$$8","zLo$$1","value$$7","zHi$$1","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$$68","x$$27","array$$31","d$$6","p$$21","m$$2","n$$35","f$$7","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","k$$11","ten2k","route","digits$$4","isLeading","n$$46","patternInput$$13","digits$$2","n$$47","n$$19","i$$12","BigNatModule$$$eval32","int32ToString","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$$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$$$get_One","one","BigInteger$$$get_Two","two","BigInteger$$$get_Zero","zero","BigNatModule$0024$0024$0024toString","z","n$$17","res$$2","BigNatModule$0024$0024$0024hash","obj$$1","n$$5","nn","BigInteger$0024$0024$0024get_Zero","BigInteger$0024$0024$0024get_One","BigInteger$0024$0024$0024get_Two","genericMsg","newLine","errorToString","path","error","reason","decoder","fromValue","arg0","uint32","min","max","decodeMaybeNull","badPathError","fieldNames","currentPath","index","requestedIndex","vArray","tokens","arr","succeed","output","andThen","cb","ctor","d1","unwrapWith","errors","fieldValue","isUndefined","field","firstPath","firstValue","curValue","optional","mixedArray","decoders","arg30","clo3","uci","predicate$$13","autoDecoder","autoDecodeRecordsAndUnions","isOptional","decoderRef","decoderInfos","folder$$8","state$$12","reduceRight","delegateArg0$$4","delegateArg1$$4","autoObject","xs","makeUnion","int","keyDecoder","valueDecoder","autoObject2","decoder1","decoder2","v1","v2","( arg10@ )","( arg20@ )","runner","ar","bool","unit","string","float","float32","json","fromString","generateDecoder","local","day","month","formatString","token","symbol","padWith","fromDayOfWeek","mod12","fromMonth","year","takeLastChars","copyOfStruct","arg00","emptyString","num","last","dataResolver","responseResolver","eitherUnitOr","cont","ResolveType","text","httpMethod","properties","headers","body","list2","resolve","exn","tryFetchAs","fetchAs","ex","interval","callback","returnVal","dispatch","cmd","g","cmds","task","arg","ofSuccess","ofError","stringEnum","case","overflow","overflowY","TenantCache","props","stackTheme","theme","entry","CSSProp","appendTheme","existing","inheritedTheme","setText","element","txt","activePatternResult5301","activePatternResult5300","vid","HTMLAttr","renderBlock","block","children","accent","propList","renderColumn","renderPage","page","hierarchy","container","hier","node","header","accentClass","overwriteProps","tenantName","slug","jwt","TenantRef","Slug","locationContainsSpaces","location","ev","keyPress","conditional","onEnter","onEscape","ofFunc","visited","unvisited","args","tipe","stringToSomething","mkState","custom","subValue","parse","parser","parseHelp","states","segments","splitUrl","toKeyValuePair","segment","comparer$$12","array1$$6","array2$$6","i$$40","result$$13","length1","length2","compareWith","parseParams","querystring","iter","toHash","pGuid","parseBefore","parseAfter","parsers","area","fa","panelWithTitleContent","panelClass","title","content","modal","closeAction","buttons","css","formGroup","formGroupWithErrors","hasError","fluidContainer","textInput","placeholder","onChangeMsg","maxLength","renderAttribution","hider","siteFooter","loginClick","licenseClick","jsVoid","click","getFilesCmd","imagesOnly","promise","fmtImages","postSavePageCmd","oldId","dto","getAllPagesCmd","getPageCmd","getPageUniquenessCmd","fmtPageExistsById","allowDeleteFirst","scopeId","labeller","lbl","_arg3","_arg5","_arg4","IThemeItem","blockId","renderContent","_arg6","LinkEmbed","renderTextBlockNoButtons","renderTextBlock","panel","targetPanel","renderShape","thisShape","currentShape","selected","viewEditPage","user","pageState","show","closer","files","selectedFile","allFiles","tuple","file","ImageShape","x$$18","_arg7","_arg8","_arg9","_arg10","_arg11","viewListPages","pages","meta","replaceTextBlock","replaceWith","TextBlocks","swapTextBlock","swapId","replaceBlock","repl","removeBlock","findTextBlock","replaceStyle","matcher","newBlock","appendBlock","editing","model","modifier","success","editingAction","Action","editingActionU","modifyBlockList","scope","replacer","ps","modifyBlock","replacementBlock","newPage","PageWidth","grouped","today","SelectedFile","LinkTarget","_arg13","_arg12","_arg15","_arg14","embed","encoded","link","linkText","replacement","_arg17","_arg16","_arg19","_arg18","_arg21","_arg20","_arg23","_arg22","newCards","_arg25","_arg24","_arg27","_arg26","_arg29","_arg28","_arg31","_arg30","_arg33","_arg32","_arg35","_arg34","Theme","Header","ColourAccent","newContent","_arg37","_arg36","_arg38","_arg40","_arg39","_arg42","_arg41","_arg44","_arg43","_arg46","_arg45","_arg47","Preview","_arg49","_arg48","_arg51","_arg50","IsLandingPage","_arg53","_arg52","getAllCategoriesCmd","fmtCategoriesById","newCategory","deletePageCmd","getAllUsersCmd","postSaveEmailCmd","username","fmtUserEmailByName","deleteUserCmd","fmtUsersByName","dispatchSuccess","newUser","User","SaveErrors","( arg30@ )","DeleteError","EmailError","notEmpty","getAllFilesCmd","uploadFileCmd","formData","document","getElementById","targetToMsg","renderTarget","label","prop","trig","size","ix","source$$6","wix'","wix","setState","program","sub","rb","reentered","syncDispatch","nextMsg","rix'","newUrl","history","dispatchEvent","lastLocation","onChangeRef","href","urlUpdate","onLocationChange","mapUpdate","mapView","mapSetState","mapSubscribe","update","view","userUpdate","userView","userSetState","userSubscribe","userInit","unitVar1","actionName","dispatchContent","action","toggle","ret","renderer","err","isEmpty","cat","mapSuccessMessage","current","SuccessMessage","ErrorMessages","FileBeingDeleted","Filename","Packs","Target","packs","SuccessMessageChange","setter","localStorage","linkTo","icon","cn","getPasswordResetCmd","fmtPasswordReset","updatePasswordCmd","password","ob","bar","amt","cls","sug","getAlcoholText","fmtAlcoholText","stage","EnteredGender","score","next","nextStage","prevStage","nextButton","hasNext","disable","first","opt","event","referButton","lines","line","conditions","conText","renderResult","alcBox","imgs","opacity","cond","swidth","width","fopt","renderNotStarted","submitReferralCmd","referral","getTenantDisplayName","fmtTenantName","getTenantDisplayNameCmd","audit","Referral","State","AllowedPostcodes","Pathways","DateOfBirthErrors","PostcodeErrors","EmailErrors","SubmissionErrors","DateOfBirth","Gender","unwrapValidations","renderSubstance","drug","display","warn","predicate","formLabel","mandatory","renderValidations","errs","demoList","renderDemographics","renderScoreBar","renderCoreDetails","form","postReferralInfoCmd","fmtConfirmReferral","authUser","login","getPageHierarchy","postGetPageHierarchyCmd","resetEmail","dismissSuccessCmd","start","withPages","renderMenu","root","openMenu","child","menu","loc","TreeNodeDTO","equal","comp","lazyView2With","placeholderId","lastRequest","nextProps","_nextState","checkMenu","PageModel","Audit","envKey","env","batch","menuCmd","menuActions","am","OutputTest","menuUpdate","Menu","Tenant","MenuCollapse","LoginError","ResetError","opened","adminPage","PostcodeAllowed","lcode","Sexuality","OkayToLeaveAMessage","PolicyUrl","uses","UsesAlcohol","UsesAmphetamines","UsesCocaine","UsesEcstasy","UsesKetamine","UsesCannabis","UsesCrackCocaine","UsesPrescribedOrOverTheCounter","UsesSpice","UsesOtherDrug","UsesOpiates","Email","ErrorMsg","PasswordScore","PasswordWarning","PasswordSuggestion","pwInfo","zxcvbn","banned","feedback","ErrorMessage","EnvironmentRoot","details","viewPage","handleExn","toNavigableWith","subscribe","hash","parseHash","runWith","withReactBatchedUsing"],"mappings":"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,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,IAAK,GAAI,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,EAAG,GAAI,EAAG,IAAK,GAAI,GAAI,EAAG,EAAG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GA3G7D,IAhVGq9B,EAAyBC,EAgV5Bf,EAAcj5B,EADf,gBACmBu2B,GADnB,gBACwB95B,GAAS,OAAAw8B,EAAmB,SAAC1C,EAApB0C,CAAyBx8B,KA6GtD,YAAWknB,GACb,OAAK,MAALA,EAEM,aAAa6B,EAAGlG,GAAH,cAAGA,EAAC,MAAjBqE,EAA2C,QAD7C,gB,8DAnde,OAAdnB,KAAsB,Y,8DACR,OAAdA,KAAsB,Y,mBAkenB,YAAqBG,EAA8BgB,EAAgCiC,GACzF,IAAAjD,EAAekD,GAAWlD,EAAa,wBAExCjmB,EADckpB,EAxpCrB,cAypC2D7pB,OAApD+8B,GAAanT,GAAUhC,GAAvBhB,GAA2C,EAA3CjmB,GAEO,YAAek+B,EAAejY,EAA8BgB,EAAgCiC,GAEtG,OAAAiV,GAAuB,IADTC,GAAmCnY,EAAqBgB,EAAiBiC,IACpEgV,G,ynBC1qC3B,cACI,OACI,OAAY,UACC,WACH,QACA,QACF,MACC,OACA,OACE,SACG,YACF,UACC,WACA,YAEb,OAAY,MACC,MACH,MACA,MACF,MACC,MACA,MACE,MACG,MACF,MACC,MACA,OAEb,OAAW,SACC,UACE,YACD,WACF,SACE,WACF,UAEX,OAAW,MACC,MACE,MACD,MACF,MACE,MACF,OACG,WA1ClB,GA6CA,OAAO,KACA,OAGX,OACI,OACI,OAAY,UACC,WACH,QACA,QACF,MACC,OACA,OACE,SACG,YACF,UACC,WACA,YAEb,OAAY,MACC,MACH,MACA,MACF,MACC,MACA,MACE,MACG,MACF,MACC,MACA,OAEb,OAAW,SACC,UACE,YACD,WACF,SACE,WACF,UAEX,OAAW,MACC,MACE,MACD,MACF,MACE,MACF,OACG,WA1ClB,GA6CA,OAAO,KACA,OAGX,OACI,OACI,OAAY,UACC,UACH,OACA,QACF,MACC,OACA,UACE,OACG,YACF,UACC,WACA,YAEb,OAAY,MACC,MACH,OACA,MACF,MACC,MACA,OACE,OACG,MACF,MACC,MACA,OAEb,OAAW,QACC,QACE,WACD,QACF,WACE,SACF,YAEX,OAAW,MACC,MACE,MACD,MACF,MACE,MACF,OACG,WA1ClB,GA6CA,OAAO,GACA,KAGX,OACI,OACI,OAAY,SACC,UACH,OACA,SACF,MACC,OACA,OACE,SACG,WACF,UACC,SACA,WAEb,OAAY,MACC,MACH,MACA,MACF,MACC,MACA,MACE,MACG,MACF,MACC,MACA,OAEb,OAAW,cACC,UACE,QACD,UACF,UACE,UACF,eAEX,OAAW,MACC,MACE,MACD,MACF,MACE,MACF,OACG,WA1ClB,GA6CA,OAAO,GACA,KAGX,OACI,OACI,OAAY,SACC,UACH,UACA,UACF,QACC,SACA,SACE,YACG,aACF,UACC,WACA,YAEb,OAAY,MACC,MACH,OACA,MACF,MACC,MACA,MACE,MACG,QACF,MACC,MACA,OAEb,OAAW,QACC,OACE,SACD,YACF,SACE,UACF,YAEX,OAAW,MACC,OACE,MACD,OACF,MACE,MACF,OACG,cA1ClB,GA6CA,OAAO,KACA,OAIX,OACI,OACI,OAAY,SACC,UACH,OACA,QACF,MACC,OACA,OACE,SACG,YACF,UACC,WACA,YAEb,OAAY,MACC,MACH,OACA,MACF,MACC,OACA,OACE,MACG,OACF,MACC,MACA,OAEb,OAAW,SACC,WACE,WACD,aACF,UACE,UACF,WAEX,OAAW,KACC,KACE,KACD,KACF,KACE,KACF,MACG,aA1ClB,GA6CA,OAAO,GACA,KCjVF,YAAeG,EAAgCC,GAA/C,OACHA,GADG,OAQa,OAAAD,EAAY,OARzB,OAEa,OAAAA,EAAY,OAFzB,OAGc,OAAAA,EAAa,QAH3B,OAIgB,OAAAA,EAAe,UAJ/B,OAKe,OAAAA,EAAc,SAL7B,OAMa,OAAAA,EAAY,OANzB,OAOe,OAAAA,EAAc,SAP7B,QASF,UAAU,kCAAV1W,CAAA2W,IAEE,YAAMv9B,GAAI,OAAO,KAAJA,GAAc,IAAJA,EAAW,GAAQA,EAAI,GAAJ,EAE1C,YAAWs9B,EAA4BE,GAAvC,OACHA,GADG,KACH,EACC,OAAAF,EAAa,QAFX,KACH,EAEC,OAAAA,EAAc,SAHZ,KACH,EAGC,OAAAA,EAAW,MAJT,KACH,EAIC,OAAAA,EAAW,MALT,KAC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","file":"app.d89f805023f0d917ac69.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([200,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\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, isSetter) => {\n if (!isSetter) {\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","// 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 { 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","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","// 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 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","// 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 { 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","/**\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(input) {\n if (input === null) {\n throw new Error(\"Value cannot be null when parsing DateTime\");\n }\n if (input.trim() === \"\") {\n throw new Error(\"An empty string is not recognized as a valid DateTime\");\n }\n let date = new Date(input);\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(input);\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 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","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","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// 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}\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 { 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 activePatternResult3682 = patternInput$$5;\n res$$3 = combineHash(res$$3, structuralHash(activePatternResult3682[0]));\n res$$3 = combineHash(res$$3, structuralHash(activePatternResult3682[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}","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}","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}","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}","/// Domain model shared between client and server.\nnamespace SharedCode.Domain\n \nopen System\n\ntype Validated =\n | Success\n | Failure of string list\n with\n static member ToResult =\n function\n | Success -> Ok ()\n | Failure reasons -> Error reasons\n\ntype DrugName =\n | Alcohol = 1\n | Amphetamines = 2\n | Cocaine = 3\n | Ecstasy = 4\n | Ketamine = 5\n | Cannabis = 6\n | CrackCocaine = 7\n | PrescribedOrOverTheCounter = 8\n | Spice = 9\n | OtherDrug = 10\n | Opiates = 11\n\ntype Behaviour =\n | Default = 1\n | Audit = 2\n | NoRefer = 3\n\n[]\ntype DrugConfig =\n {\n Name: DrugName\n Behaviour: Behaviour\n }\n\n[]\ntype ReferralInfo =\n {\n DrugPathways: DrugConfig array\n AllowedPostcodes: string array\n ContactNumber: string\n APIRoot: string\n PolicyUrl: string\n }\n\n[]\ntype TenantDisplay =\n {\n Name: string\n Area: string\n Location: string\n ContactNumber: string\n LandingPage: string option\n }\n\ntype ReferralHelpPack =\n { \n Name: string; \n Link: string\n }\n\ntype CategoryRef = CategoryRef of int\n\ntype TenantRef = TenantRef of string\n with static member get = function TenantRef t -> t\ntype ServiceRef = ServiceRef of int\ntype ImageRef = ImageRef of int\n\ntype Slug = Slug of string\n with \n static member get = function Slug str -> str \n static member map f = function Slug str -> f str |> Slug\n\ntype ScopedTarget = { Tenant: TenantRef; Slug: Slug }\n\ntype User =\n {\n Id: int;\n Username: string\n Tenant: TenantRef\n Email: string\n EmailHash: string\n }\n\ntype PasswordResetRequest =\n {\n UserId: int\n Date: DateTime\n Id: Guid\n }\n\ntype ReplacementPassword =\n {\n Id: System.Guid\n Password: string\n }\n\ntype EmailEntry = Email of string\n with\n static member Get = function Email e -> e\n\ntype UserEmail =\n {\n UserId: int\n Email: string\n }\n\ntype JWT =\n {\n Account: User\n Token: string\n }\n\ntype LoginResponse =\n | SignIn of JWT\n | LoginFailure of string\n\ntype Login = \n { \n UserName : string\n Password : string\n PasswordId : Guid\n ResetEmail: string\n }\n\ntype Service =\n {\n Id: int;\n Name: string;\n Tenant: TenantRef;\n Categories: CategoryRef list;\n }\n\ntype Font =\n | Pacifico\n | ABeeZee\n | Arial\n | Helvetica\n | TimesNewRoman\n\ntype IThemeItem =\n | Background of string\n | Colour of string\n | Font of Font\n | FontSize of string\n\ntype ColourAccent =\n | Inherited\n | Light\n | Dark\n | Turquoise\n | DarkRed\n | Blue\n | Grey\n\ntype Theme = IThemeItem list\n\ntype BlockContent =\n | RawText of string\n | Markdown of string\n | PageNavigation\n | YouTubeEmbed of link: string * height: string * width: string * allowFullScreen: bool\n\ntype Justification =\n | LeftAligned\n | Centered\n\ntype Block =\n {\n Id: Guid;\n Header: (ColourAccent*BlockContent) option;\n Content: BlockContent;\n Theme: Theme\n Justification: Justification\n }\n with static member GetId b = b.Id\n\nmodule BlockModule =\n let map (f: BlockContent -> BlockContent) b = \n { b with Header = Option.map (fun (a,c) -> a, f c) b.Header; Content = f b.Content }\n\ntype ImageShape =\n | Rectangle\n | RoundedRectangle\n | Circle\n | Thumbnail\n\ntype ImageBlock =\n {\n Url: string;\n HoverText: string\n Alt: string;\n }\n\ntype TextBlock =\n | SingleColumn of id: Guid * Block list\n | TwoColumn of id: Guid * left:Block list * right:Block list\n | MainAndSideBar of id: Guid * left:Block list * right:Block list\n | CardList of id: Guid * ImageShape * ((ImageBlock * Block) list)\n with\n static member MapList (f: Block list -> Block list) (tb: TextBlock) =\n match tb with\n | SingleColumn (id, blocks) -> SingleColumn (id, (f blocks))\n | TwoColumn (id,l,r) -> TwoColumn (id,f l,f r)\n | MainAndSideBar (id,main,sb) -> MainAndSideBar (id, f main, f sb)\n | CardList (id, shape, items) -> CardList (id, shape, items |> List.map (fun (img,blocks) -> img, f [blocks] |> List.head))\n static member Map (f: Block -> Block) (tb: TextBlock) = TextBlock.MapList (List.map f) tb\n \n static member Id =\n function\n | SingleColumn (id,_) -> id\n | TwoColumn (id,_,_) -> id\n | MainAndSideBar (id,_,_) -> id\n | CardList (id,_,_) -> id\n\ntype PageWidth =\n | WholePage\n | Centered\n\ntype Location =\n {\n Id: Slug\n Name: string\n }\n with\n static member getId l = Slug.get l.Id\n static member mapId f (l:Location) = { l with Id = f l.Id }\n\ntype PageMeta =\n {\n Location: Location\n IsLandingPage: bool\n Training: bool\n }\n\ntype TreeNodeDTO =\n | Node of ref:Location * children: TreeNodeDTO []\n with\n member this.Children = this |> function Node (_, c) -> c\n member this.Key = this |> function Node (ref,_) -> ref\n\ntype Hierarchy =\n {\n Breadcrumbs: Location list\n Siblings: Location list\n }\n with\n static member none = { Breadcrumbs = []; Siblings = [] }\n\ntype GenericPage =\n {\n Location: Location\n Tenant: TenantRef\n Header: Block option\n BannerImage: ImageRef option\n TextBlocks: TextBlock list\n Theme: Theme\n PageWidth: PageWidth \n IsLandingPage: bool\n }\n\ntype Snapshot<'a> =\n {\n Content: 'a;\n IdentifierWhenLoaded: Slug\n }\n\ntype PageResult =\n {\n Page: GenericPage\n Hierarchy: Hierarchy\n }\n\ntype BlockTranslationContext =\n {\n Block: TextBlock;\n Page: GenericPage;\n Hierarchy: Hierarchy\n }\n\ntype Page =\n | Generic of GenericPage\n\ntype ServiceContent =\n {\n Service: Service\n Pages: Page list\n }\n\ntype Direction =\n | Up\n | Down\n\ntype FileMeta =\n {\n Name: string;\n Size: int;\n DateUploaded: DateTime;\n Thumbnail: string;\n Image: bool\n }\n\ntype Gender =\n | Male\n | Female\n | NotKnown\n | NotSpecified\n\ntype RemoteAuthEndpoint =\n {\n Url: string\n OTC: int\n Provider: string\n Area: string\n }\n\ntype LINKSAuthResponse =\n {\n OTC: int\n MAC: string\n Username: string\n Provider: string\n Hash: string\n }\n\nmodule Validation =\n let combine r1 r2 =\n match r1,r2 with\n | Success, Success -> Success\n | Failure f, Success | Success, Failure f -> Failure f\n | Failure f1, Failure f2 -> Failure (f1@f2)\n\n let bind f1 f2 =\n fun x -> combine (f1 x) (f2 x)\n\n let (<*>) = bind\n\n let () (b: bool) (s: string) =\n if b then Failure [s] else Success\n\nmodule HelpPacks =\n type PackDownloads =\n {\n Alcohol: string*string;\n Amphetamines: string*string;\n Cocaine: string*string;\n Ecstasy: string*string;\n Ketamine: string*string;\n Cannabis: string*string;\n Opiates: string*string;\n Crack: string*string;\n PrescribedOrOverTheCounter: string*string;\n Spice: string*string;\n OtherDrug: string*string;\n }\n\nmodule SharedValidations =\n open Validation\n open System.Text.RegularExpressions\n\n let ``email address must contain at`` (email: string) =\n not (email.Contains \"@\") \"The email must contain the '@' character.\"\n\n let ``email address must contain dot`` (email: string) =\n not (email.Contains \".\") \"The email must contain the '.' character.\"\n\n let ``email address must not contain space`` (email: string) =\n email.Contains \" \" \"The email must not contain a space.\"\n\n let emailValidations =\n ``email address must contain at``\n <*> ``email address must contain dot``\n <*> ``email address must not contain space``\n\n let ``postcode must contain space`` (postcode: string) =\n not (postcode.Contains \" \") \"The postcode must contain a space.\"\n\n let ``postcode must match regex`` (postcode: string) =\n let regex = Regex(@\"^(zz99 3vz|gir 0aa|[a-pr-uwyz]([0-9]{1,2}|([a-hik-y][0-9]|[a-hk-y][0-9]([0-9]|[abehmnprv-y]))|[0-9][a-hjkps-uw]) [0-9][abd-hjlnp-uw-z]{2})$\", RegexOptions.IgnoreCase)\n not (regex.IsMatch postcode) \"The postcode must be valid.\"\n\n let postcodeValidations =\n ``postcode must contain space``\n <*> ``postcode must match regex``\n\nmodule AlcoholAuditDomain =\n // Alcohol Audit\n\n type DrinkFrequency =\n | Never\n | Monthly\n | MultiplePerMonth\n | FewTimesAWeek\n | MostDays\n\n type Frequency =\n | Never\n | LessThanMonthly\n | Monthly\n | Weekly\n | AlmostDaily\n\n type Occurance =\n | No\n | NotInLastYear\n | InLastYear \n\n [] // used in config\n type AlcoholWording =\n {\n LowRiskText: string[]\n ConditionText: string[]\n DependenceText: string[]\n ReferOnLow: bool\n ReferOnIncreasing: bool\n ReferOnHigh: bool\n ReferOnDependence: bool\n }\n\n\n type AlcoholAuditAnswers = \n { \n Gender: Gender\n DrinkFrequency: DrinkFrequency\n HowManyInDay: int\n BingeFrequency: Frequency\n UnableToStop: Frequency\n FailedToDo: Frequency\n NeededADrink: Frequency\n Remorse: Frequency\n UnableToRemember: Frequency\n Injured: Occurance\n FriendConcerned: Occurance\n }\n\n let drinkFrequencyScore =\n function\n | DrinkFrequency.Never -> 0\n | DrinkFrequency.Monthly -> 1\n | MultiplePerMonth -> 2\n | FewTimesAWeek -> 3\n | MostDays -> 4\n\n let frequencyScore =\n function\n | Frequency.Never -> 0\n | LessThanMonthly -> 1\n | Monthly -> 2\n | Weekly -> 3\n | AlmostDaily -> 4\n\n let occuranceScore =\n function\n | No -> 0\n | NotInLastYear -> 2\n | InLastYear -> 4\n \n let howManyScore =\n function \n | -1 -> 0\n | 0 | 1 | 2 -> 0\n | 3 | 4 -> 1\n | 5 | 6 -> 2\n | 7 | 8 | 9 -> 3\n | _ -> 4\n\n let calculateAuditScore answers =\n drinkFrequencyScore answers.DrinkFrequency\n + howManyScore answers.HowManyInDay\n + frequencyScore answers.BingeFrequency\n + frequencyScore answers.UnableToStop\n + frequencyScore answers.FailedToDo\n + frequencyScore answers.NeededADrink\n + frequencyScore answers.Remorse\n + frequencyScore answers.UnableToRemember\n + occuranceScore answers.Injured\n + occuranceScore answers.FriendConcerned\nopen AlcoholAuditDomain\n\nmodule ReferralForms =\n let sexualities =\n [\n \"\", \"Not entered\"\n \"9\", \"Not answered\"; \n \"Z\", \"I don't want to say\"; \n \"U\", \"I'm not sure\"; \n \"1\", \"Hetrosexual or straight\"; \n \"2\", \"Gay or lesbian\"; \n \"3\", \"Bisexual\"; \n \"4\", \"Something else not listed here\"\n ]\n\n let ethnicities =\n [\n \"\", \"Not entered\"\n \"Z\", \"Not answered\"; \n \"99\", \"I don't want to say or I don't know\"; \n \"A\", \"White British\"; \n \"B\", \"White Irish\"; \n \"C\", \"Other White\"; \n \"D\", \"White and Black Caribbean\"\n \"E\", \"White and Black African\"\n \"F\", \"White and Asian\"\n \"G\", \"Other mixed\"\n \"H\", \"Indian\"\n \"J\", \"Pakistani\"\n \"K\", \"Bangladeshi\"\n \"L\", \"Other Asian\"\n \"M\", \"Carribean\"\n \"N\", \"African\"\n \"P\", \"Other Black\"\n \"R\", \"Chinese\"\n \"S\", \"Other\"\n ]\n\n let nationalities =\n [\n \"\", \"Not entered\"\n \"GBR\", \"United Kingdom\"\n \"AFG\", \"Afghanistan\"\n \"ALB\", \"Albania\"\n \"DZA\", \"Algeria\"\n \"ASM\", \"American Samoa\"\n \"AND\", \"Andorra\"\n \"AGO\", \"Angola\"\n \"ATG\", \"Antigua and Barbuda\"\n \"ARG\", \"Argentina\"\n \"ARM\", \"Armenia\"\n \"AUS\", \"Australia\"\n \"AUT\", \"Austria\"\n \"AZE\", \"Azerbaijan\"\n \"BHS\", \"Bahamas\"\n \"BHR\", \"Bahrain\"\n \"BGD\", \"Bangladesh\"\n \"BRB\", \"Barbados\"\n \"BLR\", \"Belarus\"\n \"BEL\", \"Belgium\"\n \"BLZ\", \"Belize\"\n \"BEN\", \"Benin\"\n \"BTN\", \"Bhutan\"\n \"BES\", \"Bonaire, Sint Eustatius and Saba\"\n \"BIH\", \"Bosnia and Herzegovina\"\n \"BWA\", \"Botswana\"\n \"BRA\", \"Brazil\"\n \"IOT\", \"British Indian Ocean Territory\"\n \"BRN\", \"Brunei Darussalam\"\n \"BGR\", \"Bulgaria\"\n \"BFA\", \"Burkina Faso\"\n \"BDI\", \"Burundi\"\n \"CPV\", \"Cabo Verde\"\n \"KHM\", \"Cambodia\"\n \"CMR\", \"Cameroon\"\n \"CAN\", \"Canada\"\n \"CAF\", \"Central African Republic\"\n \"CHL\", \"Chile\"\n \"CHN\", \"China\"\n \"COL\", \"Colombia\"\n \"COM\", \"Comoros\"\n \"COG\", \"Congo\"\n \"COD\", \"Congo (the Democratic Republic of the)\"\n \"CRI\", \"Costa Rica\"\n \"HRV\", \"Croatia\"\n \"CUB\", \"Cuba\"\n \"CUW\", \"Curaçao\"\n \"CYP\", \"Cyprus\"\n \"CZE\", \"Czech Republic\"\n \"DNK\", \"Denmark\"\n \"DJI\", \"Djibouti\"\n \"DMA\", \"Dominica\"\n \"DOM\", \"Dominican Republic\"\n \"ECU\", \"Ecuador\"\n \"EGY\", \"Egypt\"\n \"SLV\", \"El Salvador\"\n \"ENG\", \"English\"\n \"GNQ\", \"Equatorial Guinea\"\n \"ERI\", \"Eritrea\"\n \"EST\", \"Estonia\"\n \"ETH\", \"Ethiopia\"\n \"FJI\", \"Fiji\"\n \"FIN\", \"Finland\"\n \"FRA\", \"France\"\n \"GUF\", \"French Guiana\"\n \"GAB\", \"Gabon\"\n \"GMB\", \"Gambia\"\n \"GEO\", \"Georgia\"\n \"DEU\", \"Germany\"\n \"GHA\", \"Ghana\"\n \"GRC\", \"Greece\"\n \"GRD\", \"Grenada\"\n \"GUM\", \"Guam\"\n \"GTM\", \"Guatemala\"\n \"GIN\", \"Guinea\"\n \"GNB\", \"Guinea-Bissau\"\n \"GUY\", \"Guyana\"\n \"HTI\", \"Haiti\"\n \"HND\", \"Honduras\"\n \"HKG\", \"Hong Kong\"\n \"HUN\", \"Hungary\"\n \"ISL\", \"Iceland\"\n \"IND\", \"India\"\n \"IDN\", \"Indonesia\"\n \"IRAN\", \"Iran\"\n \"IRN\", \"Iran Islamic Republic of\"\n \"IRQ\", \"Iraq\"\n \"IRL\", \"Ireland\"\n \"ISR\", \"Israel\"\n \"ITA\", \"Italy\"\n \"JAM\", \"Jamaica\"\n \"JPN\", \"Japan\"\n \"JOR\", \"Jordan\"\n \"KAZ\", \"Kazakhstan\"\n \"KEN\", \"Kenya\"\n \"KIR\", \"Kiribati\"\n \"KOR\", \"Korea\"\n \"KWT\", \"Kuwait\"\n \"LAO\", \"Lao People's Democratic Republic\"\n \"LVA\", \"Latvia\"\n \"LBN\", \"Lebanon\"\n \"LBY\", \"Libya\"\n \"LTU\", \"Lithuania\"\n \"LUX\", \"Luxembourg\"\n \"MKD\", \"Macedonia the former Yugoslav Republic of\"\n \"MWI\", \"Malawi\"\n \"MYS\", \"Malaysia\"\n \"MDV\", \"Maldives\"\n \"MLI\", \"Mali\"\n \"MLT\", \"Malta\"\n \"MTQ\", \"Martinique\"\n \"MRT\", \"Mauritania\"\n \"MUS\", \"Mauritius\"\n \"MEX\", \"Mexico\"\n \"FSM\", \"Micronesia Federated States of\"\n \"MDA\", \"Moldova Republic of\"\n \"MNG\", \"Mongolia\"\n \"MNE\", \"Montenegro\"\n \"MAR\", \"Morocco\"\n \"MOZ\", \"Mozambique\"\n \"NAM\", \"Namibia\"\n \"NRU\", \"Nauru\"\n \"NPL\", \"Nepal\"\n \"NLD\", \"Netherlands\"\n \"NZL\", \"New Zealand\"\n \"NIC\", \"Nicaragua\"\n \"NGA\", \"Nigeria\"\n \"NOR\", \"Norway\"\n \"Z\", \"Not Stated\"\n \"OMN\", \"Oman\"\n \"PAK\", \"Pakistan\"\n \"PLW\", \"Palau\"\n \"PSE\", \"Palestinian Territory Occupied\"\n \"PAN\", \"Panama\"\n \"PNG\", \"Papua New Guinea\"\n \"PRY\", \"Paraguay\"\n \"PER\", \"Peru\"\n \"PHL\", \"Philippines\"\n \"POL\", \"Poland\"\n \"PRT\", \"Portugal\"\n \"PRI\", \"Puerto Rico\"\n \"QAT\", \"Qatar\"\n \"ROU\", \"Romania\"\n \"RUS\", \"Russian Federation\"\n \"RWA\", \"Rwanda\"\n \"BLM\", \"Saint Barthélemy\"\n \"MAF\", \"Saint Martin (French part)\"\n \"SAU\", \"Saudi Arabia\"\n \"SEN\", \"Senegal\"\n \"SRB\", \"Serbia\"\n \"SLE\", \"Sierra Leone\"\n \"SGP\", \"Singapore\"\n \"SVK\", \"Slovakia\"\n \"SVN\", \"Slovenia\"\n \"SOM\", \"Somalia\"\n \"ZAF\", \"South Africa\"\n \"SGS\", \"South Georgia and the South Sandwich Islands\"\n \"SSD\", \"South Sudan\"\n \"ESP\", \"Spain\"\n \"LKA\", \"Sri Lanka\"\n \"SDN\", \"Sudan\"\n \"SWZ\", \"Swaziland\"\n \"SWE\", \"Sweden\"\n \"CHE\", \"Switzerland\"\n \"SYR\", \"Syrian Arab Republic\"\n \"TWN\", \"Taiwan Province China of\"\n \"TJK\", \"Tajikistan\"\n \"TZA\", \"Tanzania United Republic of\"\n \"THA\", \"Thailand\"\n \"TLS\", \"Timor-Leste\"\n \"TGO\", \"Togo\"\n \"TON\", \"Tonga\"\n \"TTO\", \"Trinidad and Tobago\"\n \"TUN\", \"Tunisia\"\n \"TCA\", \"Turk and Caicos Islands\"\n \"TUR\", \"Turkey\"\n \"TUV\", \"Tuvalu\"\n \"UGA\", \"Uganda\"\n \"UKR\", \"Ukraine\"\n \"ARE\", \"United Arab Emirates\"\n \"USA\", \"United States\"\n \"URY\", \"Uruguay\"\n \"VEN\", \"Venezuela\"\n \"VNM\", \"Viet Nam\"\n \"YEM\", \"Yemen\"\n \"ZMB\", \"Zambia\"\n \"ZWE\", \"Zimbabwe\"\n ]\n\n let disabilities =\n [\n \"\", \"Not entered\"\n \"ZZ\", \"Not stated\"\n \"4\", \"Learning Disability\"\n \"1\", \"Behaviour and emotional\"\n \"2\", \"Hearing\"\n \"3\", \"Manual dexterity\"\n \"5\", \"Mobility and gross motor\"\n \"6\", \"Perception of physical danger\"\n \"7\", \"Personal, self-care and continence\"\n \"8\", \"Progressive conditions and physical health\"\n \"9\", \"Sight\"\n \"10\", \"Speech\"\n \"NN\", \"No disability\"\n \"XX\", \"Other\"\n ]\n\n let parentalStatuses =\n [\n \"\", \"Not entered\"\n \"11\", \"I have children - they all live with me\"\n \"12\", \"I have children - some of them live with me\"\n \"13\", \"I have children but they don't live with me\"\n \"14\", \"I don't have children\"\n \"15\", \"I don't want to answer\"\n ]\n\n let employmentStatuses =\n [\n \"\", \"Not entered\"\n \"1\", \"I am in regular employment\"\n \"2\", \"I am a student\"\n \"9\", \"I am long term sick or disabled\"\n \"10\", \"Homemaker\"\n \"12\", \"I am unemployed but I am seeking work\"\n \"13\", \"I am unemployed but not receiving benefits\"\n \"14\", \"I do unpaid voluntary work\"\n \"15\", \"I have retired\"\n \"16\", \"I am unemployed and I'm not seeking work\"\n \"99\", \"I don't want to say\"\n \"5\", \"Something not mentioned here\"\n ]\n\n type SelfReferralForm =\n {\n Id: System.Guid\n Date: DateTime\n Postcode: string\n UsesAlcohol: bool;\n UsesAmphetamines: bool;\n UsesCocaine: bool;\n UsesEcstasy: bool;\n UsesKetamine: bool;\n UsesCannabis: bool;\n UsesCrackCocaine: bool;\n UsesPrescribedOrOverTheCounter: bool;\n UsesSpice: bool;\n UsesOtherDrug: bool;\n UsesOpiates: bool;\n Forename: string\n Surname: string\n DateOfBirth: DateTime\n Gender: Gender\n EmailAddress: string\n Address: string\n TelephoneNumber: string\n OkayToLeaveAMessage: bool\n Sexuality: string option\n Ethnicity: string option\n Nationality: string option\n Disability: string option\n Parental: int option\n Employment: int option\n PsychologicalHealth: int\n PhysicalHealth: int\n OverallHealth: int\n AgeFirstUsedAlcohol: int option\n HowOftenDrink: int option\n DrinkingDayUnits: int option\n AlcoholBingeFrequency: int option\n Smoking: string\n SubstanceUseDescription: string\n ConcernedAboutUsage: string\n PersonalHabitsAndChanges: string\n }\n\n let zero date = \n { \n Id = Guid.Empty\n Date = date\n Postcode = \"\" \n UsesAlcohol = false\n UsesAmphetamines = false\n UsesCocaine = false\n UsesEcstasy = false\n UsesKetamine = false\n UsesCannabis = false\n UsesCrackCocaine = false\n UsesPrescribedOrOverTheCounter = false\n UsesSpice = false\n UsesOtherDrug = false\n UsesOpiates = false\n Forename = \"\"\n Surname = \"\"\n DateOfBirth = DateTime.MinValue\n Gender = Male\n EmailAddress = \"\"\n Address = \"\"\n TelephoneNumber = \"\"\n OkayToLeaveAMessage = false\n Sexuality = None\n Ethnicity = None\n Nationality = None\n Disability = None\n Parental = None\n Employment = None\n PsychologicalHealth = 0\n PhysicalHealth = 0\n OverallHealth = 0\n AgeFirstUsedAlcohol = None\n AlcoholBingeFrequency = None\n Smoking = \"\"\n SubstanceUseDescription = \"\"\n ConcernedAboutUsage = \"\"\n PersonalHabitsAndChanges = \"\"\n HowOftenDrink = None\n DrinkingDayUnits = None\n }\n\n type ReferralFormSet =\n {\n SelfReferral: SelfReferralForm\n AlcoholAudit: AlcoholAuditAnswers option\n }\n \n let usesAny (form: SelfReferralForm) =\n form.UsesAlcohol || form.UsesAmphetamines || form.UsesCocaine || form.UsesEcstasy || form.UsesKetamine || form.UsesCannabis || form.UsesCrackCocaine || form.UsesPrescribedOrOverTheCounter || form.UsesSpice || form.UsesOtherDrug || form.UsesOpiates\n\n open Validation\n\n let getDOB (referral: SelfReferralForm) = referral.DateOfBirth\n let getEmail (referral: SelfReferralForm) = referral.EmailAddress\n let getPostcode (referral: SelfReferralForm) = referral.Postcode\n\n let ``date of birth cannot be in the future`` (dob:DateTime) =\n dob.Date > DateTime.Now \"Cannot be a future date.\"\n\n let ``date of birth cannot be too old`` (dob:DateTime) =\n dob.Date < DateTime(1900, 1, 1) \"Cannot be before 1900.\"\n\n let dateOfBirthValidations =\n ``date of birth cannot be in the future``\n <*> ``date of birth cannot be too old``\n\n open SharedValidations\n\n let allValidations =\n (getEmail >> emailValidations)\n <*> (getPostcode >> postcodeValidations)\n <*> (getDOB >> dateOfBirthValidations)\n\nmodule Paths =\n let makePath (tenant: TenantRef) (slug: Slug) =\n let (Slug s) = slug\n let (TenantRef t) = tenant\n sprintf \"#areas/%s/pages/%s\" t s\n\nmodule PageLogic =\n let blockType =\n function\n | SingleColumn _ -> \"Single Column\"\n | TwoColumn _ -> \"Two Column\"\n | MainAndSideBar _ -> \"Main Content and Sidebar\"\n | CardList _ -> \"Card List\"\n\n let parseBlockType id =\n function\n | \"Single Column\" -> SingleColumn (id,[])\n | \"Two Column\" -> TwoColumn (id, [], [])\n | \"Main Content and Sidebar\" -> MainAndSideBar (id, [], [])\n | \"Card List\" -> CardList (id, Rectangle, [])\n | _ -> failwith \"Failed to parse BlockType\"\n\n let formatAccent =\n function\n | Inherited -> \"Inherited\"\n | Light -> \"Light\"\n | Dark -> \"Dark\"\n | Turquoise-> \"Turquoise\"\n | DarkRed-> \"Dark Red\"\n | Blue -> \"Blue\"\n | Grey -> \"Grey\"\n\n let parseAccent =\n function\n | \"Inherited\" -> Inherited\n | \"Light\" -> Light\n | \"Dark\" -> Dark\n | \"Turquoise\" -> Turquoise\n | \"Dark Red\" -> DarkRed\n | \"Blue\" -> Blue\n | \"Grey\" -> Grey\n | _ -> failwith \"Could not parse accent\"\n\n let formatContent =\n function\n | Markdown _ -> \"Markdown\"\n | RawText _ -> \"Unformatted text\"\n | PageNavigation -> \"Automatically generated page navigation\"\n | YouTubeEmbed _ -> \"Embedded YouTube video\"\n\n let parseFormatContent =\n function \n | \"Markdown\" -> Markdown \"\"\n | \"Unformatted text\" -> RawText \"\"\n | \"Automatically generated page navigation\" -> PageNavigation\n | \"Embedded YouTube video\" -> YouTubeEmbed (\"\", \"\", \"\", false)\n | _ -> failwith \"Could not parse format content\"\n\n let formatJustification =\n function\n | LeftAligned -> \"Left Aligned\"\n | Justification.Centered -> \"Centered\"\n\n let parseJustification =\n function\n | \"Left Aligned\" -> LeftAligned\n | \"Centered\" -> Justification.Centered\n | _ -> failwith \"Could not parse justification\"\n\n let getThemeMatcher targetTheme = \n match targetTheme with\n | IThemeItem.Background _ -> fun x -> match x with Background b -> Some b | _ -> None\n | IThemeItem.Colour _ -> fun x -> match x with Colour b -> Some b | _ -> None\n | IThemeItem.Font _ -> fun x -> match x with _ -> None\n | IThemeItem.FontSize _ -> fun x -> match x with FontSize b -> Some b | _ -> None\n\n let getFromTheme targetTheme pageTheme =\n let matcher = getThemeMatcher targetTheme\n match pageTheme |> List.tryPick matcher with\n | None -> \"\"\n | Some x -> x\n\nmodule Elements =\n let swapId idGetter direction id list =\n let rec loop blocks prev acc finished =\n match blocks, prev with\n | [], _ -> acc |> List.rev\n | H::T, _ when finished -> loop T None (H::acc) true\n | H::T, (Some p) -> \n if idGetter H = id then\n match direction with\n | Down -> loop T (Some H) (prev.Value::acc) false // should succeed next iteration\n | Up -> loop T None (prev.Value::H::acc) true\n else if idGetter p = id then\n match direction with\n | Up -> loop T None (H::prev.Value::acc) true\n | Down -> loop T None (prev.Value::H::acc) true\n else\n loop T (Some H) (prev.Value::acc) false\n | H::T,_ -> loop T (Some H) acc false\n loop list None [] false\n let swapById idGetter direction item list =\n swapId idGetter direction (idGetter item) list","[]\r\nmodule PromiseImpl\r\n\r\nlet promise = Promise.PromiseBuilder()\r\n\r\n[]\r\nmodule SettledValue =\r\n\r\n /// \r\n /// Helper functionm to convert a settled result into an F# result\r\n /// \r\n /// The settled result\r\n /// \r\n /// The F# result\r\n /// \r\n /// \r\n /// Promise.allSettled [success; rejection]\r\n /// |> Promise.iter (fun results ->\r\n /// for result in results do \r\n /// match SettledValue.toResult result with \r\n /// | Ok value ->\r\n /// printfn \"Success: %A\" value\r\n /// | Error err -> \r\n /// eprintfn \"Error: %O\" err\r\n /// )\r\n /// \r\n /// \r\n let toResult (p: Promise.SettledValue<'T>) =\r\n match p.status with \r\n | Promise.Fulfilled -> Ok p.value.Value\r\n | Promise.Rejected -> Error p.reason.Value","/// The Fetch API provides a JavaScript interface for accessing and manipulating parts of the HTTP pipeline, such as requests and responses.\r\n/// It also provides a global fetch() method that provides an easy, logical way to fetch resources asynchronously across the network.\r\nmodule Fetch\r\n\r\n#nowarn \"1182\" // Unused values\r\n\r\nopen System\r\nopen Fable.Core\r\nopen Fable.Core.JsInterop\r\nopen Browser.Types\r\n\r\n[]\r\nmodule Types =\r\n []\r\n type RequestDestination =\r\n | [] Empty\r\n | Audio\r\n | [] AudioWorklet\r\n | Document\r\n | Embed\r\n | Font\r\n | Frame\r\n | Iframe\r\n | Image\r\n | Manifest\r\n | Object\r\n | [] PaintWorklet\r\n | Report\r\n | Script\r\n | [] SharedWorker\r\n | Style\r\n | Track\r\n | Video\r\n | Worker\r\n | [] XSLT\r\n\r\n type Body =\r\n abstract bodyUsed: bool with get, set\r\n abstract arrayBuffer: unit -> JS.Promise\r\n abstract blob: unit -> JS.Promise\r\n abstract formData: unit -> JS.Promise\r\n abstract json : unit -> JS.Promise\r\n abstract json<'T> : unit -> JS.Promise<'T>\r\n abstract text : unit -> JS.Promise\r\n\r\n and Request = //(input: U2, ?init: RequestInit) =\r\n inherit Body\r\n abstract ``method`` : string with get\r\n abstract url: string with get\r\n abstract headers: Headers with get\r\n abstract destination : RequestDestination with get\r\n abstract referrer: string with get\r\n abstract referrerPolicy: ReferrerPolicy with get\r\n abstract mode: U2 with get\r\n abstract credentials: U2 with get\r\n abstract cache: U2 with get\r\n abstract redirect: RedirectMode with get\r\n abstract integrity: string with get\r\n abstract keepalive: bool with get\r\n abstract isReloadNavigation: bool with get\r\n abstract isHistoryNavigation: bool with get\r\n abstract clone: unit -> Request\r\n\r\n and RequestInit =\r\n abstract ``method``: string option with get, set\r\n abstract headers: HeaderInit option with get, set\r\n abstract body: BodyInit option with get, set\r\n abstract referrer: string with get, set\r\n abstract referrerPolicy: ReferrerPolicy with get, set\r\n abstract mode: RequestMode option with get, set\r\n abstract credentials: RequestCredentials option with get, set\r\n abstract cache: RequestCache option with get, set\r\n abstract redirect: RedirectMode with get, set\r\n abstract integrity: string with get, set\r\n abstract keepalive: bool with get, set\r\n\r\n and [] RequestContext =\r\n | Audio | Beacon | Cspreport | Download | Embed | Eventsource | Favicon | Fetch | Font\r\n | Form | Frame | Hyperlink | Iframe | Image | Imageset | Import | Internal | Location\r\n | Manifest | Object | Ping | Plugin | Prefetch | Script | Serviceworker | Sharedworker\r\n | Subresource | Style | Track | Video | Worker | Xmlhttprequest | Xslt\r\n\r\n and [] RequestMode =\r\n | []Sameorigin | []Nocors | Cors\r\n\r\n and [] RequestCredentials =\r\n Omit | []Sameorigin | Include\r\n\r\n and [] RequestCache =\r\n | Default\r\n | []Nostore\r\n | Reload\r\n | []Nocache\r\n | []Forcecache\r\n | []Onlyifcached\r\n\r\n and [] RedirectMode =\r\n | Follow | Error | Manual\r\n\r\n and [] ReferrerPolicy =\r\n | []NoReferrer\r\n | []NoReferrerWhenDowngrade\r\n | Origin\r\n | []OriginWhenCrossOrigin\r\n | []UnsafeUrl\r\n\r\n and Headers =\r\n abstract append : string * string -> unit\r\n abstract delete : string -> unit\r\n abstract get : string -> string\r\n abstract getAll : string -> string[]\r\n abstract has : string -> bool\r\n abstract set : string * string -> unit\r\n\r\n /// Specifying which web sites can participate in cross-origin resource sharing\r\n [] abstract AccessControlAllowOrigin: string option\r\n\r\n /// Specifies which patch document formats this server supports\r\n [] abstract AcceptPatch: string option\r\n\r\n /// What partial content range types this server supports via byte serving\r\n [] abstract AcceptRanges: string option\r\n\r\n /// The age the object has been in a proxy cache in seconds\r\n [] abstract Age: string option\r\n\r\n /// Valid actions for a specified resource. To be used for a 405 Method not allowed\r\n [] abstract Allow: string option\r\n\r\n /// A server uses \"Alt-Svc\" header (meaning Alternative Services) to indicate that its resources can also be accessed at a different network location (host or port) or using a different protocol\r\n [] abstract AltSvc: string option\r\n\r\n /// Tells all caching mechanisms from server to client whether they may cache this object. It is measured in seconds\r\n [] abstract CacheControl: string option\r\n\r\n /// Control options for the current connection and list of hop-by-hop response fields\r\n [] abstract Connection: string option\r\n\r\n /// An opportunity to raise a \"File Download\" dialogue box for a known MIME type with binary format or suggest a filename for dynamic content. Quotes are necessary with special characters.\r\n [] abstract ContentDisposition: string option\r\n\r\n /// The type of encoding used on the data\r\n [] abstract ContentEncoding: string option\r\n\r\n /// The natural language or languages of the intended audience for the enclosed content\r\n [] abstract ContentLanguage: string option\r\n\r\n /// The length of the response body in octets (8-bit bytes)\r\n [] abstract ContentLength: string option\r\n\r\n /// An alternate location for the returned data\r\n [] abstract ContentLocation: string option\r\n\r\n /// A Base64-encoded binary MD5 sum of the content of the response\r\n [] abstract ContentMD5: string option\r\n\r\n /// Where in a full body message this partial message belongs\r\n [] abstract ContentRange: string option\r\n\r\n /// The MIME type of this content\r\n [] abstract ContentType: string option\r\n\r\n /// The date and time that the message was sent (in \"HTTP-date\" format as defined by RFC 7231)\r\n [] abstract Date: string option\r\n\r\n /// An identifier for a specific version of a resource, often a message digest\r\n [] abstract ETag: string option\r\n\r\n /// Gives the date/time after which the response is considered stale (in \"HTTP-date\" format as defined by RFC 7231)\r\n [] abstract Expires: string option\r\n\r\n /// The last modified date for the requested object (in \"HTTP-date\" format as defined by RFC 7231)\r\n [] abstract LastModified: string option\r\n\r\n /// Used to express a typed relationship with another resource, where the relation type is defined by RFC 5988\r\n [] abstract Link: string option\r\n\r\n /// Used in redirection, or when a new resource has been created.\r\n [] abstract Location: string option\r\n\r\n /// This field is supposed to set P3P policy, in the form of P3P:CP=\"your_compact_policy\".\r\n [] abstract P3P: string option\r\n\r\n /// Implementation-specific fields that may have various effects anywhere along the request-response chain.\r\n [] abstract Pragma: string option\r\n\r\n /// Request authentication to access the proxy.\r\n [] abstract ProxyAuthenticate: string option\r\n\r\n /// HTTP Public Key Pinning, announces hash of website's authentic TLS certificate\r\n [] abstract PublicKeyPins: string option\r\n\r\n /// Used in redirection, or when a new resource has been created. This refresh redirects after 5 seconds.\r\n [] abstract Refresh: string option\r\n\r\n /// If an entity is temporarily unavailable, this instructs the client to try again later. Value could be a specified period of time (in seconds) or a HTTP-date.\r\n [] abstract RetryAfter: string option\r\n\r\n /// A name for the server\r\n [] abstract Server: string option\r\n\r\n /// An HTTP cookie\r\n [] abstract SetCookie: string option\r\n\r\n /// CGI header field specifying the status of the HTTP response. Normal HTTP responses use a separate \"Status-Line\" instead, defined by RFC 7230\r\n [] abstract Status: string option\r\n\r\n /// A HSTS Policy informing the HTTP client how long to cache the HTTPS only policy and whether this applies to subdomains.\r\n [] abstract StrictTransportSecurity: string option\r\n\r\n /// The Trailer general field value indicates that the given set of header fields is present in the trailer of a message encoded with chunked transfer coding.\r\n [] abstract Trailer: string option\r\n\r\n /// The form of encoding used to safely transfer the entity to the user. Currently defined methods are: chunked, compress, deflate, gzip, identity.\r\n [] abstract TransferEncoding: string option\r\n\r\n /// Tracking Status Value, value suggested to be sent in response to a DNT(do-not-track)\r\n [] abstract TSV: string option\r\n\r\n /// Ask the client to upgrade to another protocol.\r\n [] abstract Upgrade: string option\r\n\r\n /// Tells downstream proxies how to match future request headers to decide whether the cached response can be used rather than requesting a fresh one from the origin server.\r\n [] abstract Vary: string option\r\n\r\n /// Informs the client of proxies through which the response was sent.\r\n [] abstract Via: string option\r\n\r\n /// A general warning about possible problems with the entity body.\r\n [] abstract Warning: string option\r\n\r\n /// Indicates the authentication scheme that should be used to access the requested entity.\r\n [] abstract WWWAuthenticate: string option\r\n\r\n /// Clickjacking protection: deny - no rendering within a frame, sameorigin - no rendering if origin mismatch, allow-from - allow from specified location, allowall - non-standard, allow from any location\r\n [] abstract XFrameOptions: string option\r\n\r\n /// Cross-site scripting (XSS) filter\r\n [] abstract XXSSProtection: string option\r\n\r\n /// Content Security Policy definition.\r\n [] abstract ContentSecurityPolicy: string option\r\n\r\n /// The only defined value, \"nosniff\", prevents Internet Explorer from MIME-sniffing a response away from the declared content-type. This also applies to Google Chrome, when downloading extensions\r\n [] abstract XContentTypeOptions: string option\r\n\r\n /// Specifies the technology (e.g. ASP.NET, PHP, JBoss) supporting the web application (version details are often in X-Runtime, X-Version, or X-AspNet-Version)\r\n [] abstract XPoweredBy: string option\r\n\r\n /// Recommends the preferred rendering engine (often a backward-compatibility mode) to use to display the content. Also used to activate Chrome Frame in Internet Explorer.\r\n [] abstract XUACompatible: string option\r\n\r\n /// Provide the duration of the audio or video in seconds; only supported by Gecko browsers\r\n [] abstract XContentDuration: string option\r\n\r\n /// Tells a server which (presumably in the middle of a HTTP -> HTTPS migration) hosts mixed content that the client would prefer redirection to HTTPS and can handle Content-Security-Policy: upgrade-insecure-requests\r\n [] abstract UpgradeInsecureRequests: string option\r\n\r\n /// Correlates HTTP requests between a client and server.\r\n [] abstract XRequestID: string option\r\n\r\n /// Correlates HTTP requests between a client and server.\r\n [] abstract XCorrelationID: string option\r\n\r\n\r\n and Response = //(?body: BodyInit, ?init: ResponseInit) =\r\n inherit Body\r\n\r\n [] abstract Type: ResponseType\r\n\r\n [] abstract Redirected: bool\r\n\r\n /// Verifies that the fetch was successful\r\n [] abstract Ok: bool\r\n\r\n /// Returns the HTTP status code\r\n [] abstract Status: int\r\n\r\n /// Returns the HTTP status message\r\n [] abstract StatusText: string\r\n\r\n /// Returns the response URL\r\n [] abstract Url: string\r\n\r\n /// Returns the headers objct\r\n [] abstract Headers : Headers\r\n\r\n [] abstract clone: unit -> Response\r\n\r\n\r\n and [] ResponseType =\r\n | Basic | Cors | Default | Error | Opaque\r\n\r\n and ResponseInit =\r\n abstract status: float with get, set\r\n abstract statusText: string option with get, set\r\n abstract headers: HeaderInit option with get, set\r\n\r\n and HeaderInit =\r\n U2\r\n\r\n and BodyInit =\r\n U3\r\n\r\n []\r\n type RequestInfo =\r\n /// Uses a simple Url as string to create the request info\r\n | Url of string\r\n /// Uses a Request object as request info\r\n | Req of Request\r\n\r\n type [] GlobalFetch =\r\n []static member fetch (req: RequestInfo, ?init: RequestInit) = jsNative :JS.Promise\r\n\r\n []\r\n type HttpMethod =\r\n | [] CONNECT\r\n | [] DELETE\r\n | [] GET\r\n | [] HEAD\r\n | [] OPTIONS\r\n | [] PATCH\r\n | [] POST\r\n | [] PUT\r\n | [] TRACE\r\n\r\n type IHttpRequestHeaders =\r\n interface end\r\n\r\n type HttpRequestHeaders =\r\n | Accept of string\r\n | [] AcceptCharset of string\r\n | [] AcceptEncoding of string\r\n | [] AcceptLanguage of string\r\n | [] AcceptDatetime of string\r\n | Authorization of string\r\n | [] CacheControl of string\r\n | Connection of string\r\n | Cookie of string\r\n | [] ContentLength of string\r\n | [] ContentMD5 of string\r\n | [] ContentType of string\r\n | Date of string\r\n | Expect of string\r\n | Forwarded of string\r\n | From of string\r\n | Host of string\r\n | [] IfMatch of string\r\n | [] IfModifiedSince of string\r\n | [] IfNoneMatch of string\r\n | [] IfRange of string\r\n | [] IfUnmodifiedSince of string\r\n | [] MaxForwards of int\r\n | Origin of string\r\n | Pragma of string\r\n | [] ProxyAuthorization of string\r\n | Range of string\r\n | Referer of string\r\n | [] SOAPAction of string\r\n | [] TE of string\r\n | [] UserAgent of string\r\n | Upgrade of string\r\n | Via of string\r\n | Warning of string\r\n | [] XRequestedWith of string\r\n | [] DNT of string\r\n | [] XForwardedFor of string\r\n | [] XForwardedHost of string\r\n | [] XForwardedProto of string\r\n | [] FrontEndHttps of string\r\n | [] XHttpMethodOverride of string\r\n | [] XATTDeviceId of string\r\n | [] XWapProfile of string\r\n | [] ProxyConnection of string\r\n | [] XUIDH of string\r\n | [] XCsrfToken of string\r\n | [] Custom of key:string * value:obj\r\n\r\n type AbortSignal =\r\n inherit Browser.Types.EventTarget\r\n abstract aborted : bool with get\r\n abstract onabort : (unit -> unit) with get, set\r\n abstract reason: obj with get\r\n abstract throwIfAborted: unit -> unit\r\n\r\n type AbortController =\r\n abstract signal : AbortSignal with get\r\n abstract abort : (unit -> unit) with get\r\n\r\n []\r\n type RequestProperties =\r\n | Method of HttpMethod\r\n | Headers of IHttpRequestHeaders\r\n | Body of BodyInit\r\n | Mode of RequestMode\r\n | Credentials of RequestCredentials\r\n | Cache of RequestCache\r\n | Redirect of RedirectMode\r\n | Referrer of string\r\n | ReferrerPolicy of ReferrerPolicy\r\n | Integrity of string\r\n | KeepAlive of bool\r\n | Signal of AbortSignal\r\n \r\n type ResponseInitProperties =\r\n | Status of int\r\n | StatusText of string\r\n | Headers of (string * string)[]\r\n\r\n[]\r\nlet private createResponseInit (content: obj, options: obj): Response = jsNative\r\n\r\ntype Response with\r\n\r\n static member create(content: string, ?options: seq) : Response =\r\n let options = defaultArg options Seq.empty\r\n createResponseInit (content, keyValueList CaseRules.LowerFirst options)\r\n\r\n static member create(content: Blob, ?options: seq) : Response =\r\n let options = defaultArg options Seq.empty\r\n createResponseInit (content, keyValueList CaseRules.LowerFirst options)\r\n\r\n static member create(content: JS.ArrayBuffer, ?options: seq) : Response =\r\n let options = defaultArg options Seq.empty\r\n createResponseInit (content, keyValueList CaseRules.LowerFirst options)\r\n\r\n static member create(content: JS.ArrayBufferView, ?options: seq) : Response =\r\n let options = defaultArg options Seq.empty\r\n createResponseInit (content, keyValueList CaseRules.LowerFirst options)\r\n\r\n []\r\n static member json<'T>(value: 'T, ?status: int): Response = jsNative\r\n\r\n []\r\n static member redirect(url: string, ?status: int): Response = jsNative\r\n\r\n []\r\n static member error(): Response = jsNative\r\n\r\n[]\r\nlet newAbortController () : AbortController = jsNative\r\n\r\nlet inline requestHeaders (headers: HttpRequestHeaders list) =\r\n RequestProperties.Headers(keyValueList CaseRules.None headers :?> IHttpRequestHeaders)\r\n\r\nlet inline requestProps (props: RequestProperties list) =\r\n keyValueList CaseRules.LowerFirst props :?> RequestInit\r\n\r\nlet private errorString (response: Response) =\r\n string response.Status + \" \" + response.StatusText + \" for URL \" + response.Url\r\n\r\n/// Retrieves data from the specified resource. Fails if `response.Ok` evals to false.\r\nlet fetch (url: string) (init: RequestProperties list) : JS.Promise =\r\n GlobalFetch.fetch(RequestInfo.Url url, requestProps init)\r\n |> Promise.map (fun response ->\r\n if response.Ok\r\n then response\r\n else errorString response |> failwith)\r\n\r\n/// Retrieves data from the specified resource without check for 2xx status.\r\nlet fetchUnsafe (url: string) (init: RequestProperties list) : JS.Promise =\r\n GlobalFetch.fetch(RequestInfo.Url url, requestProps init)\r\n\r\nlet tryFetch (url: string) (init: RequestProperties list) : JS.Promise> =\r\n fetch url init |> Promise.result\r\n\r\n/// Sends a HTTP OPTIONS request.\r\nlet tryOptionsRequest (url:string) : JS.Promise> =\r\n fetch url [RequestProperties.Method HttpMethod.OPTIONS] |> Promise.result\r\n","namespace Client\n\nmodule FetchRequest = \n open Elmish\n open Fable.Core\n open Fetch\n open Thoth.Json\n\n module private CustomDecoders = \n open Thoth.Json\n open System.Globalization\n\n let inline private isString (o: JsonValue) : bool = o :? string\n let inline private asString (o: JsonValue): string = unbox o\n\n ///Override the default behavior of Thoth which is to fail if a string is null\n let string: Decoder =\n fun path value ->\n if isString value then\n Ok(asString value)\n else Ok null\n \n ///Override the default behavior of Thoth.Json which is to convert dates to UTC\n let datetime: Decoder =\n fun path value ->\n if isString value then\n match System.DateTime.TryParse (asString value) with\n | true, x -> x.ToUniversalTime().ToLocalTime() |> Ok\n | _ -> (path, BadPrimitive(\"a datetime\", value)) |> Error\n else\n (path, BadPrimitive(\"a datetime\", value)) |> Error\n\n let extraCoders = \n Extra.empty\n |> Extra.withCustom Encode.string CustomDecoders.string\n |> Extra.withCustom Encode.datetime CustomDecoders.datetime\n |> Extra.withDecimal\n\n let inline getPromise<'Response> url overwriteProps: JS.Promise<'Response> =\n promise {\n let props = \n overwriteProps\n |> Option.defaultValue\n [ \n Fetch.requestHeaders [\n HttpRequestHeaders.ContentType \"application/json\"\n ]\n ]\n\n return! Thoth.Fetch.Fetch.get(url, properties=props, extra=extraCoders)\n }\n\n let inline get url (onSuccess: 'Response -> 'Msg) (onFailure: exn -> 'Msg) = \n Cmd.OfPromise.either (fun _ -> getPromise<'Response> url None) () onSuccess onFailure\n\n \n let inline getWithToken url token onSuccess onFailure =\n let promise = \n [\n Fetch.requestHeaders [\n HttpRequestHeaders.ContentType \"application/json\"\n HttpRequestHeaders.Authorization (\"Bearer \" + token)\n ]\n ] \n |> Some \n |> getPromise url\n Cmd.OfPromise.either (fun _ -> promise) () onSuccess onFailure\n\n\n let inline deletePromise<'DTO, 'Response> url overwriteProps (dto: 'DTO): JS.Promise<'Response> =\n promise {\n let props = \n overwriteProps\n |> Option.defaultValue\n [ \n Fetch.requestHeaders [\n HttpRequestHeaders.ContentType \"application/json\"\n ]\n ]\n\n return! Thoth.Fetch.Fetch.delete(url, dto, properties=props, extra=extraCoders)\n }\n\n let inline deleteWithToken url dto token (onSuccess: 'Response -> 'Msg) (onFailure: exn -> 'Msg) =\n let promise = \n [\n Fetch.requestHeaders [\n HttpRequestHeaders.ContentType \"application/json\"\n HttpRequestHeaders.Authorization (\"Bearer \" + token)\n ]\n ] \n |> Some \n |> deletePromise url\n Cmd.OfPromise.either promise dto onSuccess onFailure\n\n\n let inline postPromise<'DTO, 'Response> url overwriteProps (dto: 'DTO): JS.Promise<'Response> =\n promise {\n let props = \n overwriteProps \n |> Option.defaultValue\n [ \n yield Fetch.requestHeaders [\n ContentType \"application/json\" \n ]\n ]\n\n return! Thoth.Fetch.Fetch.post(url, dto, properties=props, extra=extraCoders)\n }\n\n let inline post url dto (onSuccess: 'Response -> 'Msg) (onFailure: exn -> 'Msg) = \n Cmd.OfPromise.either (postPromise url None) dto onSuccess onFailure\n\n let inline postNoDTOPromise<'Response> url overwriteProps : JS.Promise<'Response> =\n promise {\n let props = \n overwriteProps \n |> Option.defaultValue\n [ \n yield Fetch.requestHeaders [\n ContentType \"application/json\" \n ]\n ]\n\n return! Thoth.Fetch.Fetch.post(url, data=None, properties=props, extra=extraCoders)\n }\n\n let inline postNoDTO url (onSuccess: 'Response -> 'Msg) (onFailure: exn -> 'Msg) = \n Cmd.OfPromise.either (fun _ -> postNoDTOPromise url None) () onSuccess onFailure\n\n let inline postNoDTOWithCredentials url (onSuccess: 'Response -> 'Msg) (onFailure: exn -> 'Msg) = \n Cmd.OfPromise.either \n (fun _ -> postNoDTOPromise url (Some([\n Fetch.requestHeaders [\n ContentType \"application/json\" \n ]\n Credentials RequestCredentials.Include\n ])))\n () \n onSuccess \n onFailure\n\n let inline putPromise<'DTO, 'Response> url overwriteProps (dto: 'DTO): JS.Promise<'Response> =\n promise {\n let props = \n overwriteProps \n |> Option.defaultValue\n [ \n yield Fetch.requestHeaders [\n ContentType \"application/json\" \n ]\n ]\n\n return! Thoth.Fetch.Fetch.put(url, dto, properties=props, extra=extraCoders)\n }\n\n let inline put url dto (onSuccess: 'Response -> 'Msg) (onFailure: exn -> 'Msg) = \n Cmd.OfPromise.either (putPromise url None) dto onSuccess onFailure\n\n let inline postWithToken url dto token onSuccess onFailure =\n let promise = \n [\n Fetch.requestHeaders [\n HttpRequestHeaders.ContentType \"application/json\"\n HttpRequestHeaders.Authorization (\"Bearer \" + token)\n ]\n ] \n |> Some \n |> postPromise url\n Cmd.OfPromise.either promise dto onSuccess onFailure\n\nmodule BrowserLocalStorage =\n open Thoth.Json\n open Browser.WebStorage\n\n let inline load<'T> key: Result<'T,string> =\n let o = localStorage.getItem(key)\n if isNull o\n then \"No item found in local storage with key \" + key |> Error\n else Decode.Auto.fromString o\n\n let delete key =\n localStorage.removeItem(key)\n\n let inline save key (data: 'T) =\n localStorage.setItem(key, Encode.Auto.toString(0, data))\n\n\nmodule Utils = \n\n open Fetch\n open Fable.Core\n\n let appendToken token =\n [ \n Fetch.requestHeaders [\n HttpRequestHeaders.Authorization (\"Bearer \" + token)\n ]\n ]\n\n let emptyString = System.String.IsNullOrWhiteSpace\n let (|NOTEMPTY|_|) str =\n if emptyString str then None else Some(str)\n\n let be num = if num = 1 then \"is\" else \"are\"\n let plural last num = \n match last,num with\n | _,1 -> last\n | \"y\",_ -> \"ies\"\n | _ -> last + \"s\"\n\n let optString = function None -> \"\" | Some x -> x.ToString()\n\n let formatDate d f = Date.Format.localFormat Date.Local.englishUK d f","[]\nmodule Thoth.Json.Extra\n\nopen Fable.Core\n\n#if !FABLE_REPL_LIB\nlet empty: ExtraCoders =\n { Hash = \"\"\n Coders = Map.empty }\n\nlet inline internal withCustomAndKey (encoder: Encoder<'Value>) (decoder: Decoder<'Value>)\n (extra: ExtraCoders): ExtraCoders =\n { extra with\n Hash = System.Guid.NewGuid().ToString()\n Coders =\n extra.Coders |> Map.add typeof<'Value>.FullName (Encode.boxEncoder encoder, Decode.boxDecoder decoder) }\n\nlet inline withCustom (encoder: Encoder<'Value>) (decoder: Decoder<'Value>) (extra: ExtraCoders): ExtraCoders =\n withCustomAndKey encoder decoder extra\n\nlet inline withInt64 (extra: ExtraCoders): ExtraCoders = withCustomAndKey Encode.int64 Decode.int64 extra\n\nlet inline withUInt64 (extra: ExtraCoders): ExtraCoders =\n withCustomAndKey Encode.uint64 Decode.uint64 extra\n\nlet inline withDecimal (extra: ExtraCoders): ExtraCoders =\n withCustomAndKey Encode.decimal Decode.decimal extra\n\nlet inline withBigInt (extra: ExtraCoders): ExtraCoders =\n withCustomAndKey Encode.bigint Decode.bigint extra\n#endif","import { trim } from \"./String\";\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,2}[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[\\)\\}]{0,2}$/;\nconst guidRegexNoHyphen = /^([0-9a-f]{8})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{12})$/;\nconst guidRegexHex = /^\\{0x[0-9a-f]{8},(0x[0-9a-f]{4},){2}\\{(0x[0-9a-f]{2},){7}0x[0-9a-f]{2}\\}\\}$/;\nconst guidHexCaptures = /^([0-9a-f]{8})-(([0-9a-f]{4})-)(([0-9a-f]{4})-)([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/;\nexport function toString(str, format, _provider) {\n if (format && (format === null || format === void 0 ? void 0 : format.length) > 0) {\n switch (format) {\n case \"N\":\n return str.replace(/-/g, '');\n case \"D\":\n return str;\n case \"B\":\n return \"{\" + str + \"}\";\n case \"P\":\n return \"(\" + str + \")\";\n case \"X\":\n return str.replace(guidHexCaptures, \"{0x$1,0x$3,0x$5,{0x$6,0x$7,0x$8,0x$9,0x$10,0x$11,0x$12,0x$13}}\");\n default:\n throw new Error(\"Unrecognized Guid print format\");\n }\n }\n else {\n return str;\n }\n}\n/** Validates UUID as specified in RFC4122 (versions 1-5). */\nexport function validateGuid(str, doNotThrow) {\n function hyphenateGuid(str) {\n return str.replace(guidRegexNoHyphen, \"$1-$2-$3-$4-$5\");\n }\n const wsTrimAndLowered = str.trim().toLowerCase();\n if (guidRegex.test(wsTrimAndLowered)) {\n const containersTrimmed = trim(wsTrimAndLowered, \"{\", \"}\", \"(\", \")\");\n return doNotThrow ? [true, containersTrimmed] : containersTrimmed;\n }\n else if (guidRegexNoHyphen.test(wsTrimAndLowered)) {\n const hyphenatedGuid = hyphenateGuid(wsTrimAndLowered);\n return doNotThrow ? [true, hyphenatedGuid] : hyphenatedGuid;\n }\n else if (guidRegexHex.test(wsTrimAndLowered)) {\n const hyphenatedGuid = hyphenateGuid(wsTrimAndLowered.replace(/[\\{\\},]|0x/g, ''));\n return doNotThrow ? [true, hyphenatedGuid] : hyphenatedGuid;\n }\n else if (doNotThrow) {\n return [false, \"00000000-0000-0000-0000-000000000000\"];\n }\n else {\n throw new Error(\"Guid should contain 32 digits with 4 dashes: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n }\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}\n//# sourceMappingURL=Guid.js.map","// 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","namespace Thoth.Json\nopen System.Text.RegularExpressions\n\n[]\nmodule Encode =\n\n open System.Collections.Generic\n open System.Globalization\n open Fable.Core\n open Fable.Core.JsInterop\n\n []\n let private arrayFrom(x: JsonValue seq): JsonValue = jsNative\n\n ///**Description**\n /// Encode a string\n ///\n ///**Parameters**\n /// * `value` - parameter of type `string`\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let inline string (value : string) : JsonValue =\n box value\n\n ///**Description**\n /// Encode a GUID\n ///\n ///**Parameters**\n /// * `value` - parameter of type `System.Guid`\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let guid (value : System.Guid) : JsonValue =\n box (value.ToString())\n\n ///**Description**\n /// Encode a Float. `Infinity` and `NaN` are encoded as `null`.\n ///\n ///**Parameters**\n /// * `value` - parameter of type `float`\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let inline float (value : float) : JsonValue =\n box value\n\n let inline float32 (value : float32) : JsonValue =\n box value\n\n ///**Description**\n /// Encode a Decimal.\n ///\n ///**Parameters**\n /// * `value` - parameter of type `decimal`\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let decimal (value : decimal) : JsonValue =\n value.ToString() |> string\n\n ///**Description**\n /// Encode null\n ///\n ///**Parameters**\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let nil : JsonValue =\n box null\n\n ///**Description**\n /// Encode a bool\n ///**Parameters**\n /// * `value` - parameter of type `bool`\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let inline bool (value : bool) : JsonValue =\n box value\n\n ///**Description**\n /// Encode an object\n ///\n ///**Parameters**\n /// * `values` - parameter of type `(string * Value) list`\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let object (values : (string * JsonValue) seq) : JsonValue =\n let o = obj()\n for (key, value) in values do\n o?(key) <- value\n box o\n\n ///**Description**\n /// Encode an array\n ///\n ///**Parameters**\n /// * `values` - parameter of type `Value array`\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let inline array (values : JsonValue array) : JsonValue =\n box values\n\n ///**Description**\n /// Encode a list\n ///**Parameters**\n /// * `values` - parameter of type `Value list`\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let list (values : JsonValue list) : JsonValue =\n // Don't use List.toArray as it may create a typed array\n arrayFrom values\n\n let seq (values : JsonValue seq) : JsonValue =\n arrayFrom values\n\n ///**Description**\n /// Encode a dictionary\n ///**Parameters**\n /// * `values` - parameter of type `Map`\n ///\n ///**Output Type**\n /// * `Value`\n ///\n ///**Exceptions**\n ///\n let dict (values : Map) : JsonValue =\n values\n |> Map.toList\n |> object\n\n let bigint (value : bigint) : JsonValue =\n box (value.ToString())\n\n let datetimeOffset (value : System.DateTimeOffset) : JsonValue =\n value.ToString(\"O\", CultureInfo.InvariantCulture) |> string\n\n /// **Description**\n /// Encode a timespan\n /// **Parameters**\n /// * `value` - parameter of type `System.TimeSpan`\n ///\n /// **Output Type**\n /// * `Value`\n ///\n /// **Exceptions**\n ///\n let timespan (value : System.TimeSpan) : JsonValue =\n value.ToString() |> string\n\n let sbyte (value : sbyte) : JsonValue =\n box (value.ToString(CultureInfo.InvariantCulture))\n\n let byte (value : byte) : JsonValue =\n box (value.ToString(CultureInfo.InvariantCulture))\n\n let int16 (value : int16) : JsonValue =\n box (value.ToString(CultureInfo.InvariantCulture))\n\n let uint16 (value : uint16) : JsonValue =\n box (value.ToString(CultureInfo.InvariantCulture))\n\n let inline int (value : int) : JsonValue =\n box value\n\n let inline uint32 (value : uint32) : JsonValue =\n box value\n\n let int64 (value : int64) : JsonValue =\n box (value.ToString(CultureInfo.InvariantCulture))\n\n let uint64 (value : uint64) : JsonValue =\n box (value.ToString(CultureInfo.InvariantCulture))\n\n let unit () : JsonValue =\n box null\n\n let tuple2\n (enc1 : Encoder<'T1>)\n (enc2 : Encoder<'T2>)\n (v1, v2) : JsonValue =\n box [| enc1 v1\n enc2 v2 |]\n\n let tuple3\n (enc1 : Encoder<'T1>)\n (enc2 : Encoder<'T2>)\n (enc3 : Encoder<'T3>)\n (v1, v2, v3) : JsonValue =\n box [| enc1 v1\n enc2 v2\n enc3 v3 |]\n\n let tuple4\n (enc1 : Encoder<'T1>)\n (enc2 : Encoder<'T2>)\n (enc3 : Encoder<'T3>)\n (enc4 : Encoder<'T4>)\n (v1, v2, v3, v4) : JsonValue =\n box [| enc1 v1\n enc2 v2\n enc3 v3\n enc4 v4 |]\n\n let tuple5\n (enc1 : Encoder<'T1>)\n (enc2 : Encoder<'T2>)\n (enc3 : Encoder<'T3>)\n (enc4 : Encoder<'T4>)\n (enc5 : Encoder<'T5>)\n (v1, v2, v3, v4, v5) : JsonValue =\n box [| enc1 v1\n enc2 v2\n enc3 v3\n enc4 v4\n enc5 v5 |]\n\n let tuple6\n (enc1 : Encoder<'T1>)\n (enc2 : Encoder<'T2>)\n (enc3 : Encoder<'T3>)\n (enc4 : Encoder<'T4>)\n (enc5 : Encoder<'T5>)\n (enc6 : Encoder<'T6>)\n (v1, v2, v3, v4, v5, v6) : JsonValue =\n box [| enc1 v1\n enc2 v2\n enc3 v3\n enc4 v4\n enc5 v5\n enc6 v6 |]\n\n let tuple7\n (enc1 : Encoder<'T1>)\n (enc2 : Encoder<'T2>)\n (enc3 : Encoder<'T3>)\n (enc4 : Encoder<'T4>)\n (enc5 : Encoder<'T5>)\n (enc6 : Encoder<'T6>)\n (enc7 : Encoder<'T7>)\n (v1, v2, v3, v4, v5, v6, v7) : JsonValue =\n box [| enc1 v1\n enc2 v2\n enc3 v3\n enc4 v4\n enc5 v5\n enc6 v6\n enc7 v7 |]\n\n let tuple8\n (enc1 : Encoder<'T1>)\n (enc2 : Encoder<'T2>)\n (enc3 : Encoder<'T3>)\n (enc4 : Encoder<'T4>)\n (enc5 : Encoder<'T5>)\n (enc6 : Encoder<'T6>)\n (enc7 : Encoder<'T7>)\n (enc8 : Encoder<'T8>)\n (v1, v2, v3, v4, v5, v6, v7, v8) : JsonValue =\n box [| enc1 v1\n enc2 v2\n enc3 v3\n enc4 v4\n enc5 v5\n enc6 v6\n enc7 v7\n enc8 v8 |]\n\n\n ////////////\n // Enum ///\n /////////\n\n module Enum =\n\n let byte<'TEnum when 'TEnum : enum> (value : 'TEnum) : JsonValue =\n LanguagePrimitives.EnumToValue value\n |> byte\n\n let sbyte<'TEnum when 'TEnum : enum> (value : 'TEnum) : JsonValue =\n LanguagePrimitives.EnumToValue value\n |> sbyte\n\n let int16<'TEnum when 'TEnum : enum> (value : 'TEnum) : JsonValue =\n LanguagePrimitives.EnumToValue value\n |> int16\n\n let uint16<'TEnum when 'TEnum : enum> (value : 'TEnum) : JsonValue =\n LanguagePrimitives.EnumToValue value\n |> uint16\n\n let int<'TEnum when 'TEnum : enum> (value : 'TEnum) : JsonValue =\n LanguagePrimitives.EnumToValue value\n |> int\n\n let uint32<'TEnum when 'TEnum : enum> (value : 'TEnum) : JsonValue =\n LanguagePrimitives.EnumToValue value\n |> uint32\n\n /// **Description**\n ///\n /// The DateTime is always encoded using UTC representation\n ///\n /// **Parameters**\n /// * `value` - parameter of type `System.DateTime`\n ///\n /// **Output Type**\n /// * `Value`\n ///\n /// **Exceptions**\n ///\n let datetime (value : System.DateTime) : JsonValue =\n value.ToString(\"O\", CultureInfo.InvariantCulture) |> string\n\n ///**Description**\n /// Convert a `Value` into a prettified string.\n ///**Parameters**\n /// * `space` - parameter of type `int` - Amount of indentation\n /// * `value` - parameter of type `obj` - Value to convert\n ///\n ///**Output Type**\n /// * `string`\n ///\n ///**Exceptions**\n ///\n let toString (space: int) (value: JsonValue) : string =\n JS.JSON.stringify(value, !!null, space)\n\n ///**Description**\n /// Encode an option\n ///**Parameters**\n /// * `encoder` - parameter of type `'a -> Value`\n ///\n ///**Output Type**\n /// * `'a option -> Value`\n ///\n ///**Exceptions**\n ///\n let option (encoder : 'a -> JsonValue) =\n Option.map encoder >> Option.defaultWith (fun _ -> nil)\n\n //////////////////\n // Reflection ///\n ////////////////\n\n open FSharp.Reflection\n open Fable.Core.DynamicExtensions\n\n // As generics are erased by Fable, let's just do an unsafe cast for performance\n let inline boxEncoder (d: Encoder<'T>): BoxedEncoder =\n !!d\n\n let inline unboxEncoder (d: BoxedEncoder): Encoder<'T> =\n !!d\n\n let rec private autoEncodeRecordsAndUnions extra (caseStrategy : CaseStrategy) (skipNullField : bool) (t: System.Type) : BoxedEncoder =\n // Add the encoder to extra in case one of the fields is recursive\n let encoderRef = ref Unchecked.defaultof<_>\n let extra = extra |> Map.add t.FullName encoderRef\n let encoder =\n if FSharpType.IsRecord(t, allowAccessToPrivateRepresentation=true) then\n let setters =\n FSharpType.GetRecordFields(t, allowAccessToPrivateRepresentation=true)\n |> Array.map (fun fi ->\n let targetKey = Util.Casing.convert caseStrategy fi.Name\n let encode = autoEncoder extra caseStrategy skipNullField fi.PropertyType\n fun (source: obj) (target: JsonValue) ->\n let value = FSharpValue.GetRecordField(source, fi)\n if not skipNullField || (skipNullField && not (isNull value)) then // Discard null fields\n target.[targetKey] <- encode value\n target)\n fun (source: obj) ->\n (JsonValue(), setters) ||> Seq.fold (fun target set -> set source target)\n elif FSharpType.IsUnion(t, allowAccessToPrivateRepresentation=true) then\n fun (value: obj) ->\n let info, fields = FSharpValue.GetUnionFields(value, t, allowAccessToPrivateRepresentation=true)\n match fields.Length with\n | 0 -> string info.Name\n | len ->\n let fieldTypes = info.GetFields()\n let target = Array.zeroCreate (len + 1)\n target.[0] <- string info.Name\n for i = 1 to len do\n let encode = autoEncoder extra caseStrategy skipNullField fieldTypes.[i-1].PropertyType\n target.[i] <- encode fields.[i-1]\n array target\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 encoder for %s. Please pass an extra encoder.\" t.FullName\n |> failwith\n encoderRef := encoder\n encoder\n\n and private autoEncoder (extra: Map>) caseStrategy (skipNullField : bool) (t: System.Type) : BoxedEncoder =\n let fullname = t.FullName\n match Map.tryFind fullname extra with\n | Some encoderRef -> fun v -> encoderRef.contents v\n | None ->\n if t.IsArray then\n let encoder = t.GetElementType() |> autoEncoder extra caseStrategy skipNullField\n fun (value: obj) ->\n value :?> obj seq |> Seq.map encoder |> seq\n elif t.IsEnum then\n let enumType = System.Enum.GetUnderlyingType(t).FullName\n if enumType = typeof.FullName then\n boxEncoder sbyte\n elif enumType = typeof.FullName then\n boxEncoder byte\n elif enumType = typeof.FullName then\n boxEncoder int16\n elif enumType = typeof.FullName then\n boxEncoder uint16\n elif enumType = typeof.FullName then\n boxEncoder int\n elif enumType = typeof.FullName then\n boxEncoder uint32\n else\n failwithf\n \"\"\"Cannot generate auto encoder 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 encoder.\n \"\"\" t.FullName\n elif t.IsGenericType then\n if FSharpType.IsTuple(t) then\n let encoders =\n FSharpType.GetTupleElements(t)\n |> Array.map (autoEncoder extra caseStrategy skipNullField)\n fun (value: obj) ->\n FSharpValue.GetTupleFields(value)\n |> Seq.mapi (fun i x -> encoders.[i] x) |> seq\n else\n let fullname = t.GetGenericTypeDefinition().FullName\n if fullname = typedefof.FullName then\n // Evaluate lazily so we don't need to generate the encoder for null values\n let encoder = lazy\n t.GenericTypeArguments.[0]\n |> autoEncoder extra caseStrategy skipNullField\n |> option\n |> boxEncoder\n boxEncoder(fun (value: obj) ->\n if isNull value then nil\n else encoder.Value value)\n elif fullname = typedefof.FullName\n || fullname = typedefof>.FullName then\n // Disable seq support for now because I don't know how to implements to on Thoth.Json.Net\n // || fullname = typedefof.FullName then\n let encoder = t.GenericTypeArguments.[0] |> autoEncoder extra caseStrategy skipNullField\n fun (value: obj) ->\n value :?> obj seq |> Seq.map encoder |> seq\n elif fullname = typedefof< Map >.FullName then\n let keyType = t.GenericTypeArguments.[0]\n let valueEncoder = t.GenericTypeArguments.[1] |> autoEncoder extra caseStrategy skipNullField\n if keyType.FullName = typeof.FullName\n || keyType.FullName = typeof.FullName then\n fun value ->\n // Fable compiles Guids as strings so this works, but maybe we should make the conversion explicit\n // (see dotnet version) in case Fable implementation of Guids change\n (JsonValue(), value :?> Map)\n ||> Seq.fold (fun target (KeyValue(k,v)) ->\n target.[k] <- valueEncoder v\n target)\n else\n let keyEncoder = keyType |> autoEncoder extra caseStrategy skipNullField\n fun value ->\n value :?> Map |> Seq.map (fun (KeyValue(k,v)) ->\n array [|keyEncoder k; valueEncoder v|]) |> seq\n else\n autoEncodeRecordsAndUnions extra caseStrategy skipNullField t\n else\n if fullname = typeof.FullName then\n boxEncoder bool\n elif fullname = typeof.FullName then\n boxEncoder unit\n elif fullname = typeof.FullName then\n boxEncoder string\n elif fullname = typeof.FullName then\n boxEncoder sbyte\n elif fullname = typeof.FullName then\n boxEncoder byte\n elif fullname = typeof.FullName then\n boxEncoder int16\n elif fullname = typeof.FullName then\n boxEncoder uint16\n elif fullname = typeof.FullName then\n boxEncoder int\n elif fullname = typeof.FullName then\n boxEncoder uint32\n elif fullname = typeof.FullName then\n boxEncoder float\n elif fullname = typeof.FullName then\n boxEncoder float32\n // These number types require extra libraries in Fable. To prevent penalizing\n // all users, extra encoders (withInt64, etc) must be passed when they're needed.\n\n // elif fullname = typeof.FullName then\n // boxEncoder int64\n // elif fullname = typeof.FullName then\n // boxEncoder uint64\n // elif fullname = typeof.FullName then\n // boxEncoder bigint\n // elif fullname = typeof.FullName then\n // boxEncoder decimal\n elif fullname = typeof.FullName then\n boxEncoder datetime\n elif fullname = typeof.FullName then\n boxEncoder datetimeOffset\n elif fullname = typeof.FullName then\n boxEncoder timespan\n elif fullname = typeof.FullName then\n boxEncoder guid\n elif fullname = typeof.FullName then\n boxEncoder id\n else\n autoEncodeRecordsAndUnions extra caseStrategy skipNullField t\n\n let private makeExtra (extra: ExtraCoders option) =\n match extra with\n | None -> Map.empty\n | Some e -> Map.map (fun _ (enc,_) -> ref enc) e.Coders\n\n type Auto =\n static member generateEncoderCached<'T>(?caseStrategy : CaseStrategy, ?extra: ExtraCoders, ?skipNullField: bool, [] ?resolver: ITypeResolver<'T>): Encoder<'T> =\n let t = Util.resolveType resolver\n let caseStrategy = defaultArg caseStrategy PascalCase\n let skipNullField = defaultArg skipNullField true\n\n let key =\n t.FullName\n |> (+) (Operators.string caseStrategy)\n |> (+) (extra |> Option.map (fun e -> e.Hash) |> Option.defaultValue \"\")\n\n Util.CachedEncoders.GetOrAdd(key , fun _ ->\n autoEncoder (makeExtra extra) caseStrategy skipNullField t) |> unboxEncoder\n\n static member generateEncoder<'T>(?caseStrategy : CaseStrategy, ?extra: ExtraCoders, ?skipNullField: bool, [] ?resolver: ITypeResolver<'T>): Encoder<'T> =\n let caseStrategy = defaultArg caseStrategy PascalCase\n let skipNullField = defaultArg skipNullField true\n Util.resolveType resolver\n |> autoEncoder (makeExtra extra) caseStrategy skipNullField |> unboxEncoder\n\n static member toString(space : int, value : 'T, ?caseStrategy : CaseStrategy, ?extra: ExtraCoders, ?skipNullField: bool, [] ?resolver: ITypeResolver<'T>) : string =\n let encoder = Auto.generateEncoder(?caseStrategy=caseStrategy, ?extra=extra, ?skipNullField=skipNullField, ?resolver=resolver)\n encoder value |> toString space\n\n ///**Description**\n /// Convert a `Value` into a prettified string.\n ///**Parameters**\n /// * `space` - parameter of type `int` - Amount of indentation\n /// * `value` - parameter of type `obj` - Value to convert\n ///\n ///**Output Type**\n /// * `string`\n ///\n ///**Exceptions**\n ///\n []\n let encode (space: int) (value: JsonValue) : string = toString space value\n","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}","/**\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","\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","[]\nmodule Date.Local\n\nopen System\n\ntype Months =\n { January : string\n February : string\n March : string\n April : string\n May : string\n June : string\n July : string\n August : string\n September : string\n October : string\n November : string\n December : string }\n\ntype DaysOfWeek =\n { Monday : string\n Tuesday : string\n Wednesday : string\n Thursday : string\n Friday : string\n Saturday : string\n Sunday : string }\n\ntype Date =\n { Months : Months\n AbbreviatedMonths : Months\n Days : DaysOfWeek\n AbbreviatedDays : DaysOfWeek\n DefaultFormat : string\n FirstDayOfTheWeek : DayOfWeek }\n\ntype Time =\n { AM : string\n PM : string }\n\ntype Localization =\n { Date : Date\n Time : Time }\n\nlet englishUK =\n { Date =\n { Months =\n { January = \"January\"\n February = \"February\"\n March = \"March\"\n April = \"April\"\n May = \"May\"\n June = \"June\"\n July = \"July\"\n August = \"August\"\n September = \"September\"\n October = \"October\"\n November = \"November\"\n December = \"December\" }\n AbbreviatedMonths =\n { January = \"Jan\"\n February = \"Feb\"\n March = \"Mar\"\n April = \"Apr\"\n May = \"May\"\n June = \"Jun\"\n July = \"Jul\"\n August = \"Aug\"\n September = \"Sep\"\n October = \"Oct\"\n November = \"Nov\"\n December = \"Dec\" }\n Days =\n { Monday = \"Monday\"\n Tuesday = \"Tuesday\"\n Wednesday = \"Wednesday\"\n Thursday = \"Thursday\"\n Friday = \"Friday\"\n Saturday = \"Saturday\"\n Sunday = \"Sunday\" }\n AbbreviatedDays =\n { Monday = \"Mon\"\n Tuesday = \"Tue\"\n Wednesday = \"Wed\"\n Thursday = \"Thu\"\n Friday = \"Fri\"\n Saturday = \"Sat\"\n Sunday = \"Sun\" }\n DefaultFormat = \"d/M/yyyy\"\n FirstDayOfTheWeek = DayOfWeek.Monday }\n Time =\n { AM = \"AM\"\n PM = \"PM\" } }\n\nlet englishUS =\n { Date =\n { Months =\n { January = \"January\"\n February = \"February\"\n March = \"March\"\n April = \"April\"\n May = \"May\"\n June = \"June\"\n July = \"July\"\n August = \"August\"\n September = \"September\"\n October = \"October\"\n November = \"November\"\n December = \"December\" }\n AbbreviatedMonths =\n { January = \"Jan\"\n February = \"Feb\"\n March = \"Mar\"\n April = \"Apr\"\n May = \"May\"\n June = \"Jun\"\n July = \"Jul\"\n August = \"Aug\"\n September = \"Sep\"\n October = \"Oct\"\n November = \"Nov\"\n December = \"Dec\" }\n Days =\n { Monday = \"Monday\"\n Tuesday = \"Tuesday\"\n Wednesday = \"Wednesday\"\n Thursday = \"Thursday\"\n Friday = \"Friday\"\n Saturday = \"Saturday\"\n Sunday = \"Sunday\" }\n AbbreviatedDays =\n { Monday = \"Mon\"\n Tuesday = \"Tue\"\n Wednesday = \"Wed\"\n Thursday = \"Thu\"\n Friday = \"Fri\"\n Saturday = \"Sat\"\n Sunday = \"Sun\" }\n DefaultFormat = \"M/d/yyyy\"\n FirstDayOfTheWeek = DayOfWeek.Sunday }\n Time =\n { AM = \"AM\"\n PM = \"PM\" } }\n\nlet french =\n { Date =\n { Months =\n { January = \"Janvier\"\n February = \"Février\"\n March = \"Mars\"\n April = \"Avril\"\n May = \"Mai\"\n June = \"Juin\"\n July = \"Juillet\"\n August = \"Août\"\n September = \"Septembre\"\n October = \"Octobre\"\n November = \"Novembre\"\n December = \"Décembre\" }\n AbbreviatedMonths =\n { January = \"Jan\"\n February = \"Fév\"\n March = \"Mars\"\n April = \"Avr\"\n May = \"Mai\"\n June = \"Jui\"\n July = \"Juil\"\n August = \"Août\"\n September = \"Sep\"\n October = \"Oct\"\n November = \"Nov\"\n December = \"Dec\" }\n Days =\n { Monday = \"Lundi\"\n Tuesday = \"Mardi\"\n Wednesday = \"Mercredi\"\n Thursday = \"Jeudi\"\n Friday = \"Vendredi\"\n Saturday = \"Samedi\"\n Sunday = \"Dimanche\" }\n AbbreviatedDays =\n { Monday = \"Lun\"\n Tuesday = \"Mar\"\n Wednesday = \"Mer\"\n Thursday = \"Jeu\"\n Friday = \"Ven\"\n Saturday = \"Sam\"\n Sunday = \"Dim\" }\n DefaultFormat = \"d/M/yyyy\"\n FirstDayOfTheWeek = DayOfWeek.Monday }\n Time =\n { AM = \"\"\n PM = \"\" } }\n\nlet russian =\n { Date =\n { Months =\n { January = \"Январь\"\n February = \"Февраль\"\n March = \"Март\"\n April = \"Апрель\"\n May = \"Май\"\n June = \"Июнь\"\n July = \"Июль\"\n August = \"Август\"\n September = \"Сентябрь\"\n October = \"Октябрь\"\n November = \"Ноябрь\"\n December = \"Декабрь\" }\n AbbreviatedMonths =\n { January = \"Янв\"\n February = \"Фев\"\n March = \"Мар\"\n April = \"Апр\"\n May = \"Май\"\n June = \"Июн\"\n July = \"Июл\"\n August = \"Авг\"\n September = \"Сен\"\n October = \"Окт\"\n November = \"Ноя\"\n December = \"Дек\" }\n Days =\n { Monday = \"Понедельник\"\n Tuesday = \"Вторник\"\n Wednesday = \"Среда\"\n Thursday = \"Четверг\"\n Friday = \"Пятница\"\n Saturday = \"Суббота\"\n Sunday = \"Воскресенье\" }\n AbbreviatedDays =\n { Monday = \"Пон\"\n Tuesday = \"Втр\"\n Wednesday = \"Срд\"\n Thursday = \"Чтв\"\n Friday = \"Птн\"\n Saturday = \"Сбт\"\n Sunday = \"Вск\" }\n DefaultFormat = \"d.M.yyyy\"\n FirstDayOfTheWeek = DayOfWeek.Monday }\n Time =\n { AM = \"\"\n PM = \"\" } }\n\nlet hungarian =\n { Date =\n { Months =\n { January = \"Január\"\n February = \"Február\"\n March = \"Március\"\n April = \"Április\"\n May = \"Május\"\n June = \"Június\"\n July = \"Július\"\n August = \"Augusztus\"\n September = \"Szeptember\"\n October = \"Október\"\n November = \"November\"\n December = \"December\" }\n AbbreviatedMonths =\n { January = \"Jan\"\n February = \"Feb\"\n March = \"Márc\"\n April = \"Ápr\"\n May = \"Máj\"\n June = \"Jún\"\n July = \"Júl\"\n August = \"Aug\"\n September = \"Szept\"\n October = \"Okt\"\n November = \"Nov\"\n December = \"Dec\" }\n Days =\n { Monday = \"Hétfő\"\n Tuesday = \"Kedd\"\n Wednesday = \"Szerda\"\n Thursday = \"Csütörtök\"\n Friday = \"Péntek\"\n Saturday = \"Szombat\"\n Sunday = \"Vasárnap\" }\n AbbreviatedDays =\n { Monday = \"Hét\"\n Tuesday = \"Kedd\"\n Wednesday = \"Sze\"\n Thursday = \"Csüt\"\n Friday = \"Pén\"\n Saturday = \"Szo\"\n Sunday = \"Vas\" }\n DefaultFormat = \"yyyy.MM.dd.\"\n FirstDayOfTheWeek = DayOfWeek.Monday }\n Time =\n { AM = \"de\"\n PM = \"du\" } }\n\n\nlet german =\n { Date =\n { Months =\n { January = \"Januar\"\n February = \"Februar\"\n March = \"März\"\n April = \"April\"\n May = \"Mai\"\n June = \"Juni\"\n July = \"Juli\"\n August = \"August\"\n September = \"September\"\n October = \"Oktober\"\n November = \"November\"\n December = \"Dezember\" }\n AbbreviatedMonths =\n { January = \"Jan\"\n February = \"Feb\"\n March = \"März\"\n April = \"Apr\"\n May = \"Mai\"\n June = \"Juni\"\n July = \"Juli\"\n August = \"Aug\"\n September = \"Sept\"\n October = \"Okt\"\n November = \"Nov\"\n December = \"Dez\" }\n Days =\n { Monday = \"Montag\"\n Tuesday = \"Dienstag\"\n Wednesday = \"Mittwoch\"\n Thursday = \"Donnerstag\"\n Friday = \"Freitag\"\n Saturday = \"Samstag\"\n Sunday = \"Sonntag\" }\n AbbreviatedDays =\n { Monday = \"Mo\"\n Tuesday = \"Di\"\n Wednesday = \"Mi\"\n Thursday = \"Do\"\n Friday = \"Fr\"\n Saturday = \"Sa\"\n Sunday = \"So\" }\n DefaultFormat = \"dd.MM.yyyy\"\n FirstDayOfTheWeek = DayOfWeek.Monday }\n Time =\n { AM = \"\"\n PM = \"\" } }\n","module Client.AdminShared\n\ntype ClickAction = \n | Edit\n | Delete\n\ntype LoadState<'a, 'b> =\n | Loading of 'a\n | Loaded of 'b\n\ntype SuccessMessageChange =\n | Unchanged\n | Show of message: string\n | Hide\n\nopen System\nopen SharedCode.Domain\nlet locationContainsSpaces location =\n let id = Slug.get location.Id\n id.Contains \" \"","module Thoth.Fetch\n\nopen Fetch\nopen Fable.Core\nopen Fable.Core.JsInterop\nopen Thoth.Json\n\ntype FetchError =\n | PreparingRequestFailed of exn\n | DecodingFailed of string\n | FetchFailed of Response\n | NetworkError of exn\n\nmodule Helper =\n\n []\n type GlobalFetch =\n []\n static member fetch (req: RequestInfo, ?init: RequestInit): JS.Promise = jsNative\n\n let fetch (url: string) (init: RequestProperties list): JS.Promise =\n GlobalFetch.fetch (RequestInfo.Url url, requestProps init)\n\n let withContentTypeJson data headers =\n match data with\n | Some _ -> ContentType \"application/json\" :: headers\n | _ -> headers\n\n let encode data caseStrategy extra dataResolver =\n let encoder =\n Encode.Auto.generateEncoderCached (?caseStrategy = caseStrategy, ?extra = extra, ?resolver = dataResolver)\n\n data\n |> encoder\n |> Encode.toString 0\n\n let withBody data caseStrategy extra dataResolver properties =\n data\n |> Option.map (fun data ->\n encode data caseStrategy extra dataResolver\n |> (!^)\n |> Body\n |> fun body -> body :: properties)\n |> Option.defaultValue properties\n\n let withProperties custom properties =\n custom\n |> Option.map ((@) properties)\n |> Option.defaultValue properties\n\n let eitherUnit (responseResolver: ITypeResolver<'Response>) cont =\n if responseResolver.ResolveType().FullName = typedefof.FullName then Ok(unbox())\n else cont()\n\n let resolve (response: Response) caseStrategy extra (decoder: Decoder<'Response> option)\n (responseResolver: ITypeResolver<'Response> option) =\n\n let decoder =\n decoder\n |> Option.defaultValue\n (Decode.Auto.generateDecoderCached\n (?caseStrategy = caseStrategy, ?extra = extra, ?resolver = responseResolver))\n\n let decode body = Decode.fromString decoder body\n\n let eitherUnitOr = eitherUnit responseResolver.Value\n\n promise {\n let! result =\n if response.Ok then\n promise {\n let! body = response.text()\n return eitherUnitOr <| fun () ->\n match decode body with\n | Ok value -> Ok value\n | Error msg -> DecodingFailed msg |> Error\n }\n else\n FetchFailed response |> Error\n |> Promise.lift\n return result\n }\n\n let message error =\n match error with\n | PreparingRequestFailed exn ->\n \"[Thoth.Fetch] Request preparation failed:\\n\\n\" + exn.Message\n | DecodingFailed msg ->\n \"[Thoth.Fetch] Error while decoding the response:\\n\\n\" + msg\n | FetchFailed response ->\n \"[Thoth.Fetch] Request failed:\\n\\n\" + string response.Status + \" \" + response.StatusText + \" for URL \" + response.Url\n | NetworkError exn ->\n \"[Thoth.Fetch] A network error occured:\\n\\n\" + exn.Message\n\nopen Helper\n\ntype Fetch =\n\n /// **Description**\n ///\n /// Send a request to the specified resource and decodes the response.\n ///\n /// If fetch and decoding succeed, we return `Ok 'Response`.\n ///\n /// If we fail, we return `Error (FetchError)` containing an better explanation.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `httpMethod` - optional parameter of type `HttpMethod` - HttpMethod used for Request, defaults to **GET**\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise>`\n ///\n /// **Exceptions**\n ///\n static member tryFetchAs<'Data, 'Response> (url: string, ?decoder: Decoder<'Response>, ?data: 'Data,\n ?httpMethod: HttpMethod, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy,\n ?extra: ExtraCoders,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n try\n let properties =\n [ Method <| defaultArg httpMethod HttpMethod.GET\n requestHeaders (defaultArg headers [] |> withContentTypeJson data) ]\n |> withBody data caseStrategy extra dataResolver\n |> withProperties properties\n\n promise {\n let! response = fetch url properties\n return! resolve response caseStrategy extra decoder responseResolver\n }\n |> Promise.catch (NetworkError >> Error)\n\n with exn -> promise { return PreparingRequestFailed exn |> Error }\n\n /// **Description**\n ///\n /// Send a request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"` if data is provided.\n ///\n //// An exception will be thrown if fetch fails.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `httpMethod` - optional parameter of type `HttpMethod` - HttpMethod used, defaults to **GET**\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise<'Response>`\n ///\n /// **Exceptions**\n /// * `System.Exception` - Contains information explaining why the request failed\n ///\n static member fetchAs<'Data, 'Response> (url: string, ?decoder: Decoder<'Response>, ?data: 'Data,\n ?httpMethod: HttpMethod, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy, ?extra: ExtraCoders,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n promise {\n let! result = Fetch.tryFetchAs<'Data, 'Response>\n (url, ?decoder = decoder, ?httpMethod = httpMethod, ?data = data, ?properties = properties,\n ?headers = headers, ?caseStrategy = caseStrategy, ?extra = extra,\n ?responseResolver = responseResolver, ?dataResolver = dataResolver)\n let response =\n match result with\n | Ok response -> response\n | Error error -> failwith (message error)\n return response\n }\n\n /// **Description**\n ///\n /// Send a **GET** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"` if data is provided.\n ///\n //// An exception will be thrown if the request fails.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise<'Response>`\n ///\n /// **Exceptions**\n /// * `System.Exception` - Contains information explaining why the request failed\n ///\n static member get<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy,\n ?extra: ExtraCoders, ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.fetchAs\n (url, ?data = data, ?properties = properties, ?headers = headers, ?caseStrategy = caseStrategy, ?extra = extra,\n ?decoder = decoder, ?responseResolver = responseResolver, ?dataResolver = dataResolver)\n\n /// **Description**\n ///\n /// Send a **GET** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"`.\n ///\n //// If we fail, we return `Error (FetchError)` containing an better explanation.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise>`\n ///\n /// **Exceptions**\n ///\n static member tryGet<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy, ?extra: ExtraCoders,\n ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.tryFetchAs\n (url, ?data = data, ?properties = properties, ?headers = headers, ?caseStrategy = caseStrategy, ?extra = extra,\n ?decoder = decoder, ?responseResolver = responseResolver, ?dataResolver = dataResolver)\n\n /// **Description**\n ///\n /// Send a **POST** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"` if data is provided.\n ///\n //// An exception will be thrown if the request fails.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise<'Response>`\n ///\n /// **Exceptions**\n /// * `System.Exception` - Contains information explaining why the request failed\n ///\n static member post<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy,\n ?extra: ExtraCoders, ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.fetchAs\n (url, httpMethod = HttpMethod.POST, ?data = data, ?properties = properties, ?headers = headers,\n ?caseStrategy = caseStrategy, ?extra = extra, ?decoder = decoder, ?responseResolver = responseResolver,\n ?dataResolver = dataResolver)\n\n /// **Description**\n ///\n /// Send a **POST** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"`.\n ///\n //// If we failed, we return `Error (FetchError)` containing an better explanation.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise>`\n ///\n /// **Exceptions**\n ///\n static member tryPost<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy, ?extra: ExtraCoders,\n ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.tryFetchAs\n (url, httpMethod = HttpMethod.POST, ?data = data, ?properties = properties, ?headers = headers,\n ?caseStrategy = caseStrategy, ?extra = extra, ?decoder = decoder, ?responseResolver = responseResolver,\n ?dataResolver = dataResolver)\n\n /// **Description**\n ///\n /// Send a **PUT** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"` if data is provided.\n ///\n //// An exception will be thrown if the request fails.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise<'Response>`\n ///\n /// **Exceptions**\n /// * `System.Exception` - Contains information explaining why the request failed\n ///\n static member put<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy,\n ?extra: ExtraCoders, ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.fetchAs\n (url, httpMethod = HttpMethod.PUT, ?data = data, ?properties = properties, ?headers = headers,\n ?caseStrategy = caseStrategy, ?extra = extra, ?decoder = decoder, ?responseResolver = responseResolver,\n ?dataResolver = dataResolver)\n\n /// **Description**\n ///\n /// Send a **PUT** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"`.\n ///\n //// If we failed, we return `Error (FetchError)` containing an better explanation.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise>`\n ///\n /// **Exceptions**\n ///\n static member tryPut<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy, ?extra: ExtraCoders,\n ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.tryFetchAs\n (url, httpMethod = HttpMethod.PUT, ?data = data, ?properties = properties, ?headers = headers,\n ?caseStrategy = caseStrategy, ?extra = extra, ?decoder = decoder, ?responseResolver = responseResolver,\n ?dataResolver = dataResolver)\n\n /// **Description**\n ///\n /// Send a **PATCH** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"` if data is provided.\n ///\n //// An exception will be thrown if the request fails.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise<'Response>`\n ///\n /// **Exceptions**\n /// * `System.Exception` - Contains information explaining why the request failed\n ///\n static member patch<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy,\n ?extra: ExtraCoders, ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.fetchAs\n (url, httpMethod = HttpMethod.PATCH, ?data = data, ?properties = properties, ?headers = headers,\n ?caseStrategy = caseStrategy, ?extra = extra, ?decoder = decoder, ?responseResolver = responseResolver,\n ?dataResolver = dataResolver)\n\n /// **Description**\n ///\n /// Send a **PATCH** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"`.\n ///\n //// If we failed, we return `Error (FetchError)` containing an better explanation.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise>`\n ///\n /// **Exceptions**\n ///\n static member tryPatch<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy, ?extra: ExtraCoders,\n ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.tryFetchAs\n (url, httpMethod = HttpMethod.PATCH, ?data = data, ?properties = properties, ?headers = headers,\n ?caseStrategy = caseStrategy, ?extra = extra, ?decoder = decoder, ?responseResolver = responseResolver,\n ?dataResolver = dataResolver)\n\n /// **Description**\n ///\n /// Send a **DELETE** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"` if data is provided.\n ///\n //// An exception will be thrown if the request fails.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise<'Response>`\n ///\n /// **Exceptions**\n /// * `System.Exception` - Contains information explaining why the request failed\n ///\n static member delete<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy, ?extra: ExtraCoders,\n ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.fetchAs\n (url, httpMethod = HttpMethod.DELETE, ?data = data, ?properties = properties, ?headers = headers,\n ?caseStrategy = caseStrategy, ?extra = extra, ?decoder = decoder, ?responseResolver = responseResolver,\n ?dataResolver = dataResolver)\n\n /// **Description**\n ///\n /// Send a **DELETE** request to the specified resource and decodes the response.\n ///\n /// This method set the `ContentType` header to `\"application/json\"`.\n ///\n //// If we failed, we return `Error (FetchError)` containing an better explanation.\n ///\n /// **Parameters**\n /// * `url` - parameter of type `string` - URL to request\n /// * `data` - optional parameter of type `'Data` - Data sent via the body, it will be converted to JSON before\n /// * `properties` - optional parameter of type `RequestProperties list` - Parameters passed to fetch\n /// * `headers` - optional parameter of type `HttpRequestHeaders list` - Parameters passed to fetch's properties\n /// * `caseStrategy` - optional parameter of type `CaseStrategy` - Options passed to Thoth.Json to control JSON keys representation\n /// * `extra` - optional parameter of type `ExtraCoders` - Options passed to Thoth.Json to extends the known coders\n /// * `decoder` - parameter of type `Decoder<'Response>` - Decoder applied to the server response\n /// * `responseResolver` - optional parameter of type `ITypeResolver<'Response>` - Used by Fable to provide generic type info\n /// * `dataResolver` - parameter of type `ITypeResolver<'Data> option` - Used by Fable to provide generic type info\n ///\n /// **Output Type**\n /// * `JS.Promise>`\n ///\n /// **Exceptions**\n ///\n static member tryDelete<'Data, 'Response> (url: string, ?data: 'Data, ?properties: RequestProperties list,\n ?headers: HttpRequestHeaders list, ?caseStrategy: CaseStrategy,\n ?extra: ExtraCoders, ?decoder: Decoder<'Response>,\n [] ?responseResolver: ITypeResolver<'Response>,\n [] ?dataResolver: ITypeResolver<'Data>) =\n Fetch.tryFetchAs\n (url, httpMethod = HttpMethod.DELETE, ?data = data, ?properties = properties, ?headers = headers,\n ?caseStrategy = caseStrategy, ?extra = extra, ?decoder = decoder, ?responseResolver = responseResolver,\n ?dataResolver = dataResolver)\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","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\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","(**\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","module rec Fable.React.Props\r\n\r\nopen System\r\nopen Fable.Core\r\nopen Fable.Core.JsInterop\r\nopen Browser.Types\r\n\r\n#if !FABLE_COMPILER\r\nopen FSharp.Reflection\r\n#endif\r\n\r\n/// Helper to convert Fable StringEnum to string, compatible with .NET\r\nlet stringEnum (case: obj): string =\r\n#if FABLE_COMPILER\r\n string case\r\n#else\r\n let (caseInfo, _args) = FSharpValue.GetUnionFields(case, case.GetType())\r\n caseInfo.GetCustomAttributes()\r\n |> Seq.tryPick (function\r\n | :? CompiledNameAttribute as att -> Some att.CompiledName\r\n | _ -> None)\r\n |> Option.defaultWith (fun () ->\r\n let name = caseInfo.Name\r\n Char.ToLower(name.[0]).ToString() + name.Substring(1))\r\n#endif\r\n\r\ntype IProp =\r\n interface end\r\n\r\ntype IHTMLProp =\r\n inherit IProp\r\n\r\ntype IFragmentProp =\r\n inherit IProp\r\n\r\ntype FragmentProp =\r\n | Key of string\r\n interface IFragmentProp\r\n\r\ntype Prop =\r\n | Key of string\r\n | Ref of (Element->unit)\r\n /// To be used in combination with `useRef` hook\r\n | [] [] RefHook of IRefHook\r\n | [] RefValue of IRefValue\r\n interface IHTMLProp\r\n\r\ntype DangerousHtml = {\r\n __html: string\r\n}\r\n\r\ntype DOMAttr =\r\n | DangerouslySetInnerHTML of DangerousHtml\r\n | OnCut of (ClipboardEvent -> unit)\r\n | OnPaste of (ClipboardEvent -> unit)\r\n | OnCompositionEnd of (CompositionEvent -> unit)\r\n | OnCompositionStart of (CompositionEvent -> unit)\r\n | OnCopy of (ClipboardEvent -> unit)\r\n | OnCompositionUpdate of (CompositionEvent -> unit)\r\n | OnFocus of (FocusEvent -> unit)\r\n | OnBlur of (FocusEvent -> unit)\r\n | OnChange of (Event -> unit)\r\n | OnInput of (Event -> unit)\r\n | OnSubmit of (Event -> unit)\r\n | OnReset of (Event -> unit)\r\n | OnLoad of (Event -> unit)\r\n | OnError of (Event -> unit)\r\n | OnKeyDown of (KeyboardEvent -> unit)\r\n | OnKeyPress of (KeyboardEvent -> unit)\r\n | OnKeyUp of (KeyboardEvent -> unit)\r\n | OnAbort of (Event -> unit)\r\n | OnCanPlay of (Event -> unit)\r\n | OnCanPlayThrough of (Event -> unit)\r\n | OnDurationChange of (Event -> unit)\r\n | OnEmptied of (Event -> unit)\r\n | OnEncrypted of (Event -> unit)\r\n | OnEnded of (Event -> unit)\r\n | OnLoadedData of (Event -> unit)\r\n | OnLoadedMetadata of (Event -> unit)\r\n | OnLoadStart of (Event -> unit)\r\n | OnPause of (Event -> unit)\r\n | OnPlay of (Event -> unit)\r\n | OnPlaying of (Event -> unit)\r\n | OnProgress of (Event -> unit)\r\n | OnRateChange of (Event -> unit)\r\n | OnSeeked of (Event -> unit)\r\n | OnSeeking of (Event -> unit)\r\n | OnStalled of (Event -> unit)\r\n | OnSuspend of (Event -> unit)\r\n | OnTimeUpdate of (Event -> unit)\r\n | OnVolumeChange of (Event -> unit)\r\n | OnWaiting of (Event -> unit)\r\n | OnClick of (MouseEvent -> unit)\r\n | OnContextMenu of (MouseEvent -> unit)\r\n | OnDoubleClick of (MouseEvent -> unit)\r\n | OnDrag of (DragEvent -> unit)\r\n | OnDragEnd of (DragEvent -> unit)\r\n | OnDragEnter of (DragEvent -> unit)\r\n | OnDragExit of (DragEvent -> unit)\r\n | OnDragLeave of (DragEvent -> unit)\r\n | OnDragOver of (DragEvent -> unit)\r\n | OnDragStart of (DragEvent -> unit)\r\n | OnDrop of (DragEvent -> unit)\r\n | OnMouseDown of (MouseEvent -> unit)\r\n | OnMouseEnter of (MouseEvent -> unit)\r\n | OnMouseLeave of (MouseEvent -> unit)\r\n | OnMouseMove of (MouseEvent -> unit)\r\n | OnMouseOut of (MouseEvent -> unit)\r\n | OnMouseOver of (MouseEvent -> unit)\r\n | OnMouseUp of (MouseEvent -> unit)\r\n | OnSelect of (Event -> unit)\r\n | OnTouchCancel of (TouchEvent -> unit)\r\n | OnTouchEnd of (TouchEvent -> unit)\r\n | OnTouchMove of (TouchEvent -> unit)\r\n | OnTouchStart of (TouchEvent -> unit)\r\n | OnScroll of (UIEvent -> unit)\r\n | OnWheel of (WheelEvent -> unit)\r\n | OnAnimationStart of (AnimationEvent -> unit)\r\n | OnAnimationEnd of (AnimationEvent -> unit)\r\n | OnAnimationIteration of (AnimationEvent -> unit)\r\n | OnTransitionEnd of (TransitionEvent -> unit)\r\n interface IHTMLProp\r\n\r\ntype SVGAttr =\r\n | ClipPath of string\r\n | Cx of obj\r\n | Cy of obj\r\n | D of string\r\n | Dx of obj\r\n | Dy of obj\r\n | Fill of string\r\n | FillOpacity of obj\r\n | FontFamily of string\r\n | FontSize of obj\r\n | Fx of obj\r\n | Fy of obj\r\n | GradientTransform of string\r\n | GradientUnits of string\r\n | Height of obj\r\n | MarkerEnd of string\r\n | MarkerMid of string\r\n | MarkerStart of string\r\n | Offset of obj\r\n | Opacity of obj\r\n | PatternContentUnits of string\r\n | PatternUnits of string\r\n | Points of string\r\n | PreserveAspectRatio of string\r\n | R of obj\r\n | Rx of obj\r\n | Ry of obj\r\n | SpreadMethod of string\r\n | StopColor of string\r\n | StopOpacity of obj\r\n | Stroke of string\r\n | StrokeDasharray of string\r\n | StrokeDashoffset of string\r\n | StrokeLinecap of string\r\n | StrokeMiterlimit of string\r\n | StrokeOpacity of obj\r\n | StrokeWidth of obj\r\n | TextAnchor of string\r\n | Transform of string\r\n | Version of string\r\n | ViewBox of string\r\n | Width of obj\r\n | X1 of obj\r\n | X2 of obj\r\n | X of obj\r\n | XlinkActuate of string\r\n | XlinkArcrole of string\r\n | XlinkHref of string\r\n | XlinkRole of string\r\n | XlinkShow of string\r\n | XlinkTitle of string\r\n | XlinkType of string\r\n | XmlBase of string\r\n | XmlLang of string\r\n | XmlSpace of string\r\n | Y1 of obj\r\n | Y2 of obj\r\n | Y of obj\r\n /// If you are searching for a way to provide a value not supported by this DSL then use something like: CSSProp.Custom (\"align-content\", \"center\")\r\n | [] Custom of string * obj\r\n interface IProp\r\n\r\ntype HTMLAttr =\r\n | DefaultChecked of bool\r\n | DefaultValue of obj\r\n | Accept of string\r\n | AcceptCharset of string\r\n | AccessKey of string\r\n | Action of string\r\n | AllowFullScreen of bool\r\n | AllowTransparency of bool\r\n | Alt of string\r\n | [] AriaAtomic of bool\r\n | [] AriaBusy of bool\r\n | [] AriaChecked of bool\r\n | [] AriaColcount of int\r\n | [] AriaColindex of int\r\n | [] AriaColspan of int\r\n | [] AriaControls of string\r\n | [] AriaCurrent of string\r\n | [] AriaDescribedBy of string\r\n | [] AriaDetails of string\r\n | [] AriaDisabled of bool\r\n | [] AriaErrormessage of string\r\n | [] AriaExpanded of bool\r\n | [] AriaFlowto of string\r\n | [] AriaHasPopup of bool\r\n | [] AriaHidden of bool\r\n | [] AriaInvalid of string\r\n | [] AriaKeyshortcuts of string\r\n | [] AriaLabel of string\r\n | [] AriaLabelledby of string\r\n | [] AriaLevel of int\r\n | [] AriaLive of string\r\n | [] AriaModal of bool\r\n | [] AriaMultiline of bool\r\n | [] AriaMultiselectable of bool\r\n | [] AriaOrientation of string\r\n | [] AriaOwns of string\r\n | [] AriaPlaceholder of string\r\n | [] AriaPosinset of int\r\n | [] AriaPressed of bool\r\n | [] AriaReadonly of bool\r\n | [] AriaRelevant of string\r\n | [] AriaRequired of bool\r\n | [] AriaRoledescription of string\r\n | [] AriaRowcount of int\r\n | [] AriaRowindex of int\r\n | [] AriaRowspan of int\r\n | [] AriaSelected of bool\r\n | [] AriaSetsize of int\r\n | [] AriaSort of string\r\n | [] AriaValuemax of float\r\n | [] AriaValuemin of float\r\n | [] AriaValuenow of float\r\n | [] AriaValuetext of string\r\n | Async of bool\r\n | AutoComplete of string\r\n | AutoFocus of bool\r\n | AutoPlay of bool\r\n | Capture of bool\r\n | CellPadding of obj\r\n | CellSpacing of obj\r\n | CharSet of string\r\n | Challenge of string\r\n | Checked of bool\r\n | ClassID of string\r\n | ClassName of string\r\n /// Alias of ClassName\r\n | [] Class of string\r\n | Cols of int\r\n | ColSpan of int\r\n | Content of string\r\n | ContentEditable of bool\r\n | ContextMenu of string\r\n | Controls of bool\r\n | Coords of string\r\n | CrossOrigin of string\r\n // | Data of string\r\n | [] DataToggle of string\r\n | DateTime of string\r\n | Default of bool\r\n | Defer of bool\r\n | Dir of string\r\n | Disabled of bool\r\n | Download of obj\r\n | Draggable of bool\r\n | EncType of string\r\n | Form of string\r\n | FormAction of string\r\n | FormEncType of string\r\n | FormMethod of string\r\n | FormNoValidate of bool\r\n | FormTarget of string\r\n | FrameBorder of obj\r\n | Headers of string\r\n | Height of obj\r\n | Hidden of bool\r\n | High of float\r\n | Href of string\r\n | HrefLang of string\r\n | HtmlFor of string\r\n | HttpEquiv of string\r\n | Icon of string\r\n | Id of string\r\n | InputMode of string\r\n | Integrity of string\r\n | Is of string\r\n | KeyParams of string\r\n | KeyType of string\r\n | Kind of string\r\n | Label of string\r\n | Lang of string\r\n | List of string\r\n | Loop of bool\r\n | Low of float\r\n | Manifest of string\r\n | MarginHeight of float\r\n | MarginWidth of float\r\n | Max of obj\r\n | MaxLength of float\r\n | Media of string\r\n | MediaGroup of string\r\n | Method of string\r\n | Min of obj\r\n | MinLength of float\r\n | Multiple of bool\r\n | Muted of bool\r\n | Name of string\r\n | NoValidate of bool\r\n | Open of bool\r\n | Optimum of float\r\n | Pattern of string\r\n | Placeholder of string\r\n | Poster of string\r\n | Preload of string\r\n | RadioGroup of string\r\n | ReadOnly of bool\r\n | Rel of string\r\n | Required of bool\r\n | Role of string\r\n | Rows of int\r\n | RowSpan of int\r\n | Sandbox of string\r\n | Scope of string\r\n | Scoped of bool\r\n | Scrolling of string\r\n | Seamless of bool\r\n | Selected of bool\r\n | Shape of string\r\n | Size of float\r\n | Sizes of string\r\n | Span of float\r\n | SpellCheck of bool\r\n | Src of string\r\n | SrcDoc of string\r\n | SrcLang of string\r\n | SrcSet of string\r\n | Start of float\r\n | Step of obj\r\n | Summary of string\r\n | TabIndex of int\r\n | Target of string\r\n | Title of string\r\n | Type of string\r\n | UseMap of string\r\n | Value of obj\r\n /// Compiles to same prop as `Value`. Intended for `select` elements\r\n /// with `Multiple` prop set to `true`.\r\n | [] ValueMultiple of string[]\r\n | Width of obj\r\n | Wmode of string\r\n | Wrap of string\r\n | About of string\r\n | Datatype of string\r\n | Inlist of obj\r\n | Prefix of string\r\n | Property of string\r\n | Resource of string\r\n | Typeof of string\r\n | Vocab of string\r\n | AutoCapitalize of string\r\n | AutoCorrect of string\r\n | AutoSave of string\r\n // | Color of string // Conflicts with CSSProp, shouldn't be used in HTML5\r\n | ItemProp of string\r\n | ItemScope of bool\r\n | ItemType of string\r\n | ItemID of string\r\n | ItemRef of string\r\n | Results of float\r\n | Security of string\r\n | Unselectable of bool\r\n | [] Custom of string * obj\r\n#if !FABLE_COMPILER\r\n | Style of CSSProp list\r\n | Data of string * obj\r\n#endif\r\n interface IHTMLProp\r\n\r\n#if FABLE_COMPILER\r\nlet inline Style (css: CSSProp list): HTMLAttr =\r\n !!(\"style\", keyValueList CaseRules.LowerFirst css)\r\n\r\nlet inline Data (key: string, value: obj): HTMLAttr =\r\n !!(\"data-\" + key, value)\r\n#endif\r\n\r\n[]\r\n/// Specifies the display behavior (the type of rendering box) of an element.\r\ntype DisplayOptions =\r\n /// The element is completely removed\r\n | None\r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// Displays an element as an inline element (like ``). Any height and width properties will have no effect.\r\n | Inline\r\n /// Displays an element as a block element (like `

`). It starts on a new line, and takes up the whole width.\r\n | Block\r\n /// Makes the container disappear, making the child elements children of the element the next level up in the DOM.\r\n | Contents\r\n /// Displays an element as a block-level flex container.\r\n | Flex\r\n /// Displays an element as a block-level grid container.\r\n | Grid\r\n /// Let the element behave like a `` element\r\n | Table\r\n /// Displays an element as an inline-level block container. The element itself is formatted as an inline element, but you can apply height and width values\r\n | [] InlineBlock\r\n /// Displays an element as an inline-level flex container.\r\n | [] InlineFlex\r\n /// Displays an element as an inline-level grid container.\r\n | [] InlineGrid\r\n /// The element is displayed as an inline-level table.\r\n | [] InlineTable\r\n /// Let the element behave like a `
  • ` element.\r\n | [] ListItem\r\n /// Let the element behave like a `
  • ` element.\r\n | [] TableColumnGroup\r\n /// Let the element behave like a `` element.\r\n | [] TableHeaderGroup\r\n /// Let the element behave like a `` element.\r\n | [] TableFooterGroup\r\n /// Let the element behave like a `` element.\r\n | [] TableRowGroup\r\n /// Let the element behave like a `` element.\r\n | [] TableColumn\r\n /// Let the element behave like a `` element.\r\n | [] TableRow\r\n\r\n[]\r\n/// Modifies the behavior of the [flex-wrap](https://www.w3schools.com/CSSref/css3_pr_flex-wrap.asp) property. It is similar to [align-items](https://www.w3schools.com/CSSref/css3_pr_align-items.asp), but instead of aligning flex items, it aligns flex lines.\r\ntype AlignContentOptions =\r\n /// Default value. Lines stretch to take up the remaining space.\r\n | Stretch\r\n /// Lines are packed toward the center of the flex container.\r\n | Center\r\n /// /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// Lines are packed toward the start of the flex container.\r\n | [] FlexStart\r\n /// Lines are packed toward the end of the flex container.\r\n | [] FlexEnd\r\n /// Lines are evenly distributed in the flex container.\r\n | [] SpaceBetween\r\n /// Lines are evenly distributed in the flex container, with half-size spaces on either end.\r\n | [] SpaceAround\r\n\r\n[]\r\n/// Specifies the default alignment for items inside the flexible container.\r\ntype AlignItemsOptions =\r\n /// The effect of this keyword is dependent of the layout mode we are in. [Read more](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items#Values)\r\n | Normal\r\n /// Items are positioned at the baseline of the container\r\n | Baseline\r\n /// Default. Items are stretched to fit the container.\r\n | Stretch\r\n /// Items are positioned at the center of the container.\r\n | Center\r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// Items are positioned at the beginning of the container.\r\n | [] FlexStart\r\n /// Items are positioned at the end of the container.\r\n | [] FlexEnd\r\n\r\n[]\r\n/// Specifies the default alignment for items inside the flexible container.\r\ntype AlignSelfOptions =\r\n /// Default. The element inherits its parent container's align-items property, or \"stretch\" if it has no parent container.\r\n | Auto\r\n /// The element is positioned at the baseline of the container.\r\n | Baseline\r\n /// The element is positioned to fit the container.\r\n | Stretch\r\n /// The element is positioned at the center of the container.\r\n | Center\r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// The element is positioned at the beginning of the container.\r\n | [] FlexStart\r\n /// The element is positioned at the end of the container.\r\n | [] FlexEnd\r\n\r\n[]\r\n/// Specifies the default alignment for items inside the grid container.\r\ntype JustifySelfOptions =\r\n /// Default. The element inherits its parent container's justify-items property, or \"stretch\" if it has no parent container.\r\n | Auto\r\n /// The element is positioned at the baseline of the cell.\r\n | Baseline\r\n /// The element is positioned to fit the cell.\r\n | Stretch\r\n /// The element is positioned at the center of the cell.\r\n | Center\r\n /// Sets this property to its default value. Read more about [CSS Initial](https://developer.mozilla.org/en-US/docs/Web/CSS/initial)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://developer.mozilla.org/en-US/docs/Web/CSS/inherit)\r\n | Inherit\r\n /// The element is positioned at the beginning of the cell.\r\n | Start\r\n /// The element is positioned at the end of the cell.\r\n | End\r\n /// The element is positioned at the beginning of the cell.\r\n | [] SelfStart\r\n /// The element is positioned at the end of the cell.\r\n | [] SelfEnd\r\n /// The element is positioned at the left of the cell.\r\n | Left\r\n /// The element is positioned at the right of the cell.\r\n | Right\r\n\r\n[]\r\ntype TextAlignOptions =\r\n /// Aligns the text to the left.\r\n | Left\r\n /// Aligns the text to the right.\r\n | Right\r\n /// Centers the text.\r\n | Center\r\n /// Stretches the lines so that each line has equal width (like in newspapers and magazines).\r\n | Justify\r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n\r\n[]\r\n/// Specifies the type of positioning method used for an element (static, relative, absolute, fixed, or sticky).\r\ntype PositionOptions =\r\n /// Default value. Elements render in order, as they appear in the document flow.\r\n | Static\r\n /// The element is positioned relative to its first positioned (not static) ancestor element.\r\n | Absolute\r\n /// The element is positioned relative to the browser window.\r\n | Fixed\r\n /// The element is positioned relative to its normal position, so \"left:20px\" adds 20 pixels to the element's LEFT position.\r\n | Relative\r\n /// The element is positioned based on the user's scroll position.\r\n ///\r\n /// A sticky element toggles between relative and fixed, depending on the scroll position. It is positioned relative until a given offset position is met in the viewport - then it \"sticks\" in place (like position:fixed).\r\n | Sticky\r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n\r\n[]\r\n/// https://drafts.csswg.org/css-overflow-3/#propdef-overflow\r\ntype OverflowOptions =\r\n /// There is no special handling of overflow, that is, the box’s content is rendered outside the box if positioned there. The box is not a scroll container.\r\n | Visible\r\n /// This value indicates that the box’s content is clipped to its padding box and that the UA must not provide any scrolling user interface to view the content outside the clipping region, nor allow scrolling by direct intervention of the user, such as dragging on a touch screen or using the scrolling wheel on a mouse. However, the content must still be scrollable programatically, for example using the mechanisms defined in [CSSOM-VIEW], and the box is therefore still a scroll container.\r\n | Hidden\r\n /// Like hidden, this value indicates that the box’s content is clipped to its padding box and that no scrolling user interface should be provided by the UA to view the content outside the clipping region. In addition, unlike overflow: hidden which still allows programmatic scrolling, overflow: clip forbids scrolling entirely, through any mechanism, and therefore the box is not a scroll container.\r\n | Clip\r\n /// This value indicates that the content is clipped to the padding box, but can be scrolled into view (and therefore the box is a scroll container). Furthermore, if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed whether or not any of its content is clipped. This avoids any problem with scrollbars appearing and disappearing in a dynamic environment. When the target medium is print, overflowing content may be printed; it is not defined where it may be printed.\r\n | Scroll\r\n /// Like scroll when the box has scrollable overflow; like hidden otherwise. Thus, if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism will only be displayed if there is overflow.\r\n | Auto\r\n\r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://drafts.csswg.org/css-text-3/#propdef-white-space\r\ntype WhiteSpaceOptions = \r\n /// This value directs user agents to collapse sequences of white space into a single character (or in some cases, no character). Lines may wrap at allowed soft wrap opportunities, as determined by the line-breaking rules in effect, in order to minimize inline-axis overflow.\r\n | Normal\r\n /// This value prevents user agents from collapsing sequences of white space. Segment breaks such as line feeds are preserved as forced line breaks. Lines only break at forced line breaks; content that does not fit within the block container overflows it.\r\n | Pre\r\n /// Like normal, this value collapses white space; but like pre, it does not allow wrapping.\r\n | Nowrap\r\n /// Like pre, this value preserves white space; but like normal, it allows wrapping.\r\n | [] PreWrap\r\n /// The behavior is identical to that of pre-wrap, except that: 1. Any sequence of preserved white space always takes up space, including at the end of the line. 2. A line breaking opportunity exists after every preserved white space character, including between white space characters.\r\n | BreakSpaces\r\n /// Like normal, this value collapses consecutive spaces and allows wrapping, but preserves segment breaks in the source as forced line breaks.\r\n | [] PreLine\r\n\r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://drafts.csswg.org/css-ui-3/#box-sizing\r\ntype BoxSizingOptions =\r\n /// This is the behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element. The padding and border of the element are laid out and drawn outside the specified width and height.\r\n | [] ContentBox\r\n /// Length and percentages values for width and height (and respective min/max properties) on this element determine the border box of the element. That is, any padding or border specified on the element is laid out and drawn inside this specified width and height. The content width and height are calculated by subtracting the border and padding widths of the respective sides from the specified width and height properties. As the content width and height cannot be negative ([CSS2], section 10.2), this computation is floored at 0. Used values, as exposed for instance through getComputedStyle(), also refer to the border box.\r\n | [] BorderBox\r\n\r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://drafts.csswg.org/css-images-3/#the-image-rendering\r\ntype ImageRenderingOptions =\r\n /// The scaling algorithm is UA dependent.\r\n | Auto\r\n /// The image should be scaled with an algorithm that maximizes the appearance of the image. In particular, scaling algorithms that \"smooth\" colors are acceptable, such as bilinear interpolation. This is intended for images such as photos.\r\n | Smooth\r\n /// Identical to smooth, but with a preference for higher-quality scaling. If system resources are constrained, images with high-quality should be prioritized over those with any other value, when considering which images to degrade the quality of and to what degree.\r\n | HighQuality\r\n /// The image must be scaled with an algorithm that preserves contrast and edges in the image, and which does not smooth colors or introduce blur to the image in the process. This is intended for images such as pixel art or line drawings.\r\n | CrispEdges\r\n /// The image must be scaled with the \"nearest neighbor\" or similar algorithm, to preserve a \"pixelated\" look as the image changes in size.\r\n | Pixelated\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://www.w3.org/TR/CSS2/visuren.html#float-position\r\ntype FloatOptions =\r\n /// The element generates a block box that is floated to the left. Content flows on the right side of the box, starting at the top (subject to the 'clear' property).\r\n | Left\r\n /// Similar to 'left', except the box is floated to the right, and content flows on the left side of the box, starting at the top.\r\n | Right\r\n /// The box is not floated.\r\n | None\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://www.w3.org/TR/css-inline-3/#propdef-alignment-baseline\r\ntype AlignmentBaselineOptions =\r\n /// Use the dominant baseline choice of the parent. Match the box’s corresponding baseline to that of its parent.\r\n | Baseline\r\n /// Match the bottom of the box to the bottom of the parent’s content area.\r\n | TextBottom\r\n /// Match the box’s alphabetic baseline to that of its parent.\r\n | Alphabetic\r\n /// Match the box’s ideographic character face under-side baseline to that of its parent.\r\n | Ideographic\r\n /// Align the vertical midpoint of the box with the baseline of the parent box plus half the x-height of the parent.\r\n | Middle\r\n /// Match the box’s central baseline to the central baseline of its parent.\r\n | Central\r\n /// Match the box’s mathematical baseline to that of its parent.\r\n | Mathematical\r\n /// Match the top of the box to the top of the parent’s content area.\r\n | TextTop\r\n /// Align the top of the aligned subtree with the top of the line box.\r\n | Top\r\n /// Align the center of the aligned subtree with the center of the line box.\r\n | Center\r\n /// Align the bottom of the aligned subtree with the bottom of the line box.\r\n | Bottom\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://www.w3.org/TR/css3-values/#common-keywords\r\ntype AllOptions =\r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n \r\n[]\r\n/// https://drafts.csswg.org/css-animations/#animation-direction\r\ntype SingleAnimationDirection =\r\n /// All iterations of the animation are played as specified.\r\n | Normal\r\n /// All iterations of the animation are played in the reverse direction from the way they were specified.\r\n | Reverse\r\n /// The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.\r\n | Alternate\r\n /// The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.\r\n | [] AlternateReverse\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://drafts.csswg.org/css-animations/#animation-fill-mode\r\ntype SingleAnimationFillMode =\r\n /// The animation has no effect when it is applied but not executing.\r\n | None\r\n /// After the animation ends (as determined by its animation-iteration-count), the animation will apply the property values for the time the animation ended. When animation-iteration-count is an integer greater than zero, the values applied will be those for the end of the last completed iteration of the animation (rather than the values for the start of the iteration that would be next). When animation-iteration-count is zero, the values applied will be those that would start the first iteration (just as when animation-fill-mode is backwards).\r\n | Forwards\r\n /// During the period defined by animation-delay, the animation will apply the property values defined in the keyframe that will start the first iteration of the animation. These are either the values of the from keyframe (when animation-direction is normal or alternate) or those of the to keyframe (when animation-direction is reverse or alternate-reverse).\r\n | Backwards\r\n /// The effects of both forwards and backwards fill apply.\r\n | Both\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n \r\n[]\r\n/// https://drafts.csswg.org/css-ui-4/#appearance-switching\r\ntype AppearanceOptions =\r\n /// The element is rendered following the usual rules of CSS. Replaced elements other than controls are not affected by this, and remain replaced elements. Controls are not made to look like native controls of the host operating system. See § 7.1.1 Effects of appearance on Decorative Aspects of Elements and § 7.1.2 Effects of appearance on Semantic Aspects of Elements for details.\r\n | None\r\n /// UAs may render controls using native controls of the host operating system or with a look and feel not otherwise expressible in CSS. Elements other than controls must be rendered as if none had been specified.\r\n | Auto\r\n /// The element is rendered with the look and feel of a push button, similar to the appearance: auto rendering of the [HTML] button element. UAs must treat this value as auto on input elements, textarea elements, list box select elements, meter elements, and progress elements.\r\n | Button\r\n /// For input elements where the type attribute is in the Search state, the element is rendered as a \"normal\" text entry widget, similar to an input element where the type attribute is in the Text state. For all other elements, this value has the same effect as auto.\r\n | Textfield\r\n /// For drop-down box select elements, the element is rendered as a drop-down box, including a \"drop-down button\", but not necessarily using a native control of the host operating system. For such elements, CSS properties such as color, background-color, and border (that can be disregarded for auto) should not be disregarded. For all other elements, this value has the same effect as auto.\r\n | [] MenulistButton\r\n /// These values exist for compatibility of content developed for earlier non standard versions of this property. They all have the same effect as auto.\r\n | [] CompatAuto\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n \r\n[]\r\n/// https://drafts.csswg.org/css-transforms-2/#propdef-backface-visibility\r\ntype BackfaceVisibilityOptions =\r\n | Visible\r\n | Hidden\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n \r\n[]\r\n/// https://developer.mozilla.org/en-US/docs/Web/CSS/box-align\r\ntype BoxAlignOptions =\r\n | Start\r\n | Center\r\n | End\r\n | Baseline\r\n | Stretch\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n \r\n[]\r\ntype BoxDecorationBreakOptions =\r\n /// Each box fragment is independently wrapped with the border, padding, and margin. The border-radius and border-image and box-shadow, if any, are applied to each fragment independently. The background is drawn independently in each fragment of the element. A no-repeat background image will thus be rendered once in each fragment of the element.\r\n | Clone\r\n /// The effect is as though the element were rendered with no breaks present, and then sliced by the breaks afterward: no border and no padding are inserted at a break; no box-shadow is drawn at a broken edge; and backgrounds, border-radius, and the border-image are applied to the geometry of the whole box as if it were unbroken.\r\n | Slice\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://developer.mozilla.org/en-US/docs/Web/CSS/box-direction\r\ntype BoxDirectionOptions =\r\n /// The box lays out its contents from the start (the left or top edge).\r\n | Normal\r\n /// The box lays out its contents from the end (the right or bottom edge).\r\n | Reverse\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://drafts.csswg.org/css-break-3/#break-between\r\ntype BreakOptions =\r\n /// Allows, but does not force, any break (page, column, or region) to be inserted right after the principal box.\r\n | Auto\r\n /// Avoids any break (page, column, or region) from being inserted right after the principal box.\r\n | Avoid\r\n /// Forces a page break right after the principal box. The type of this break is that of the immediately-containing fragmentation context. If we are inside a multicol container then it would force a column break, inside paged media (but not inside a multicol container) a page break.\r\n | Always\r\n /// Forces a page break right after the principal box. Breaking through all possible fragmentation contexts. So a break inside a multicol container, which was inside a page container would force a column and page break.\r\n | All\r\n /// Avoids any page break right after the principal box.\r\n | [] AvoidPage\r\n /// Forces a page break right after the principal box.\r\n | Page\r\n /// Forces one or two page breaks right after the principal box, whichever will make the next page into a left page.\r\n | Left\r\n /// Forces one or two page breaks right after the principal box, whichever will make the next page into a right page.\r\n | Right\r\n /// Forces one or two page breaks right after the principal box, whichever will make the next page into a recto page. (A recto page is a right page in a left-to-right spread or a left page in a right-to-left spread.)\r\n | Recto\r\n /// Forces one or two page breaks right after the principal box, whichever will make the next page into a verso page. (A verso page is a left page in a left-to-right spread or a left right in a right-to-left spread.)\r\n | Verso\r\n /// Avoids any column break right after the principal box.\r\n | [] AvoidColumn\r\n /// Forces a column break right after the principal box.\r\n | Column\r\n /// Avoids any region break right after the principal box.\r\n | [] AvoidRegion\r\n /// Forces a region break right after the principal box.\r\n | Region\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://drafts.csswg.org/css-break-3/#break-within\r\ntype BreakInsideOptions =\r\n /// Impose no additional breaking constraints within the box.\r\n | Auto\r\n /// Avoid breaks within the box.\r\n | Avoid\r\n /// Avoid a page break within the box.\r\n | [] AvoidPage\r\n /// Avoid a column break within the box.\r\n | [] AvoidColumn\r\n /// Avoid a region break within the box.\r\n | [] AvoidRegion\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://developer.mozilla.org/en-US/docs/Web/CSS/caption-side#Specifications\r\ntype CaptionSideOptions =\r\n | Top\r\n | Bottom\r\n | [] BlockStart\r\n | [] BlockEnd\r\n | [] InlineStart\r\n | [] InlineEnd\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n \r\n[]\r\n/// https://www.w3.org/TR/CSS2/visuren.html#flow-control\r\ntype ClearOptions =\r\n /// Requires that the top border edge of the box be below the bottom outer edge of any left-floating boxes that resulted from elements earlier in the source document.\r\n | Left\r\n /// Requires that the top border edge of the box be below the bottom outer edge of any right-floating boxes that resulted from elements earlier in the source document.\r\n | Right\r\n /// Requires that the top border edge of the box be below the bottom outer edge of any right-floating and left-floating boxes that resulted from elements earlier in the source document.\r\n | Both\r\n /// No constraint on the box's position with respect to floats.\r\n | None\r\n | [] InlineStart\r\n | [] InlineEnd\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://www.w3.org/TR/CSS2/visuren.html#direction\r\ntype DirectionOptions =\r\n /// Left-to-right direction.\r\n | Ltr\r\n /// Right-to-left direction.\r\n | Rtl\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\n[]\r\n/// https://developer.mozilla.org/en-US/docs/Web/CSS/user-select\r\ntype UserSelectOptions =\r\n /// The text of the element and its sub-elements is not selectable. Note that the Selection object can contain these elements.\r\n | None\r\n /// The computed value of auto is determined as follows:\r\n /// - On the ::before and ::after pseudo elements, the computed value is none\r\n /// - If the element is an editable element, the computed value is contain\r\n /// - Otherwise, if the computed value of user-select on the parent of this element is all, the computed value is all\r\n /// - Otherwise, if the computed value of user-select on the parent of this element is none, the computed value is none\r\n /// - Otherwise, the computed value is text\r\n | Auto\r\n /// The text can be selected by the user.\r\n | Text\r\n /// Enables selection to start within the element; however, the selection will be contained by the bounds of that element.\r\n | Contain\r\n /// In an HTML editor, if a double-click or context-click occurred in sub-elements, the highest ancestor with this value will be selected.\r\n | All\r\n \r\n /// Sets this property to its default value. Read more about [CSS Initial value](https://www.w3schools.com/CSSref/css_initial.asp)\r\n | Initial\r\n /// Inherits this property from its parent element. Read about [CSS Inherit](https://www.w3schools.com/CSSref/css_inherit.asp)\r\n | Inherit\r\n /// If the cascaded value of a property is the unset keyword, then if it is an inherited property, this is treated as inherit, and if it is not, this is treated as initial. This keyword effectively erases all declared values occurring earlier in the cascade, correctly inheriting or not as appropriate for the property (or all longhands of a shorthand).\r\n | Unset\r\n\r\ntype CSSProp =\r\n | AlignContent of AlignContentOptions\r\n | AlignItems of AlignItemsOptions\r\n | AlignSelf of AlignSelfOptions\r\n | AlignmentAdjust of obj\r\n | AlignmentBaseline of AlignmentBaselineOptions\r\n | All of AllOptions\r\n | Animation of obj\r\n | AnimationDelay of obj\r\n | AnimationDirection of SingleAnimationDirection\r\n | AnimationDuration of obj\r\n | AnimationFillMode of SingleAnimationFillMode\r\n | AnimationIterationCount of obj\r\n | AnimationName of obj\r\n | AnimationPlayState of obj\r\n | AnimationTimingFunction of obj\r\n | Appearance of AppearanceOptions\r\n | BackfaceVisibility of BackfaceVisibilityOptions\r\n | Background of obj\r\n | BackgroundAttachment of obj\r\n | BackgroundBlendMode of obj\r\n | BackgroundClip of obj\r\n | BackgroundColor of obj\r\n | BackgroundComposite of obj\r\n | BackgroundImage of obj\r\n | BackgroundOrigin of obj\r\n | BackgroundPosition of obj\r\n | BackgroundPositionX of obj\r\n | BackgroundPositionY of obj\r\n | BackgroundRepeat of obj\r\n | BackgroundSize of obj\r\n | BaselineShift of obj\r\n | Behavior of obj\r\n | BlockSize of obj\r\n | Border of obj\r\n | BorderBlockEnd of obj\r\n | BorderBlockEndColor of obj\r\n | BorderBlockEndStyle of obj\r\n | BorderBlockEndWidth of obj\r\n | BorderBlockStart of obj\r\n | BorderBlockStartColor of obj\r\n | BorderBlockStartStyle of obj\r\n | BorderBlockStartWidth of obj\r\n | BorderBottom of obj\r\n | BorderBottomColor of obj\r\n | BorderBottomLeftRadius of obj\r\n | BorderBottomRightRadius of obj\r\n | BorderBottomStyle of obj\r\n | BorderBottomWidth of obj\r\n | BorderCollapse of obj\r\n | BorderColor of obj\r\n | BorderCornerShape of obj\r\n | BorderImage of obj\r\n | BorderImageOutset of obj\r\n | BorderImageRepeat of obj\r\n | BorderImageSlice of obj\r\n | BorderImageSource of obj\r\n | BorderImageWidth of obj\r\n | BorderInlineEnd of obj\r\n | BorderInlineEndColor of obj\r\n | BorderInlineEndStyle of obj\r\n | BorderInlineEndWidth of obj\r\n | BorderInlineStart of obj\r\n | BorderInlineStartColor of obj\r\n | BorderInlineStartStyle of obj\r\n | BorderInlineStartWidth of obj\r\n | BorderLeft of obj\r\n | BorderLeftColor of obj\r\n | BorderLeftStyle of obj\r\n | BorderLeftWidth of obj\r\n | BorderRadius of obj\r\n | BorderRight of obj\r\n | BorderRightColor of obj\r\n | BorderRightStyle of obj\r\n | BorderRightWidth of obj\r\n | BorderSpacing of obj\r\n | BorderStyle of obj\r\n | BorderTop of obj\r\n | BorderTopColor of obj\r\n | BorderTopLeftRadius of obj\r\n | BorderTopRightRadius of obj\r\n | BorderTopStyle of obj\r\n | BorderTopWidth of obj\r\n | BorderWidth of obj\r\n | Bottom of obj\r\n | BoxAlign of BoxAlignOptions\r\n | BoxDecorationBreak of BoxDecorationBreakOptions\r\n | BoxDirection of BoxDirectionOptions\r\n | BoxFlex of obj\r\n | BoxFlexGroup of obj\r\n | BoxLineProgression of obj\r\n | BoxLines of obj\r\n | BoxOrdinalGroup of obj\r\n | BoxShadow of obj\r\n | BoxSizing of BoxSizingOptions\r\n | BreakAfter of BreakOptions\r\n | BreakBefore of BreakOptions\r\n | BreakInside of BreakInsideOptions\r\n | CaptionSide of CaptionSideOptions\r\n | CaretColor of obj\r\n | Clear of ClearOptions\r\n | Clip of obj\r\n | ClipPath of obj\r\n | ClipRule of obj\r\n | Color of obj\r\n | ColorInterpolation of obj\r\n | ColorInterpolationFilters of obj\r\n | ColorProfile of obj\r\n | ColorRendering of obj\r\n | ColumnCount of obj\r\n | ColumnFill of obj\r\n | ColumnGap of obj\r\n | ColumnRule of obj\r\n | ColumnRuleColor of obj\r\n | ColumnRuleStyle of obj\r\n | ColumnRuleWidth of obj\r\n | ColumnSpan of obj\r\n | ColumnWidth of obj\r\n | Columns of obj\r\n | Content of obj\r\n | CounterIncrement of obj\r\n | CounterReset of obj\r\n | Cue of obj\r\n | CueAfter of obj\r\n | Cursor of obj\r\n | Direction of DirectionOptions\r\n | Display of DisplayOptions\r\n | DominantBaseline of obj\r\n | EmptyCells of obj\r\n | EnableBackground of obj\r\n | Fill of obj\r\n | FillOpacity of obj\r\n | FillRule of obj\r\n | Filter of obj\r\n | Flex of obj\r\n | FlexAlign of obj\r\n | FlexBasis of obj\r\n | FlexDirection of obj\r\n | FlexFlow of obj\r\n | FlexGrow of obj\r\n | FlexItemAlign of obj\r\n | FlexLinePack of obj\r\n | FlexOrder of obj\r\n | FlexShrink of obj\r\n | FlexWrap of obj\r\n | Float of FloatOptions\r\n | FloodColor of obj\r\n | FloodOpacity of obj\r\n | FlowFrom of obj\r\n | Font of obj\r\n | FontFamily of obj\r\n | FontFeatureSettings of obj\r\n | FontKerning of obj\r\n | FontLanguageOverride of obj\r\n | FontSize of obj\r\n | FontSizeAdjust of obj\r\n | FontStretch of obj\r\n | FontStyle of obj\r\n | FontSynthesis of obj\r\n | FontVariant of obj\r\n | FontVariantAlternates of obj\r\n | FontVariantCaps of obj\r\n | FontVariantEastAsian of obj\r\n | FontVariantLigatures of obj\r\n | FontVariantNumeric of obj\r\n | FontVariantPosition of obj\r\n | FontWeight of obj\r\n | GlyphOrientationHorizontal of obj\r\n | GlyphOrientationVertical of obj\r\n | Grid of obj\r\n | GridArea of obj\r\n | GridAutoColumns of obj\r\n | GridAutoFlow of obj\r\n | GridAutoRows of obj\r\n | GridColumn of obj\r\n | GridColumnEnd of obj\r\n | GridColumnGap of obj\r\n | GridColumnStart of obj\r\n | GridGap of obj\r\n | GridRow of obj\r\n | GridRowEnd of obj\r\n | GridRowGap of obj\r\n | GridRowPosition of obj\r\n | GridRowSpan of obj\r\n | GridRowStart of obj\r\n | GridTemplate of obj\r\n | GridTemplateAreas of obj\r\n | GridTemplateColumns of obj\r\n | GridTemplateRows of obj\r\n | HangingPunctuation of obj\r\n | Height of obj\r\n | HyphenateLimitChars of obj\r\n | HyphenateLimitLines of obj\r\n | HyphenateLimitZone of obj\r\n | Hyphens of obj\r\n | ImageOrientation of obj // Likely to be deprecated in the near future\r\n | ImageRendering of ImageRenderingOptions\r\n | ImageResolution of obj\r\n | ImeMode of obj\r\n | InlineSize of obj\r\n | Isolation of obj\r\n | JustifyContent of obj\r\n | JustifySelf of JustifySelfOptions\r\n | Kerning of obj\r\n | LayoutGrid of obj\r\n | LayoutGridChar of obj\r\n | LayoutGridLine of obj\r\n | LayoutGridMode of obj\r\n | LayoutGridType of obj\r\n | Left of obj\r\n | LetterSpacing of obj\r\n | LightingColor of obj\r\n | LineBreak of obj\r\n | LineClamp of obj\r\n | LineHeight of obj\r\n | ListStyle of obj\r\n | ListStyleImage of obj\r\n | ListStylePosition of obj\r\n | ListStyleType of obj\r\n | Margin of obj\r\n | MarginBlockEnd of obj\r\n | MarginBlockStart of obj\r\n | MarginBottom of obj\r\n | MarginInlineEnd of obj\r\n | MarginInlineStart of obj\r\n | MarginLeft of obj\r\n | MarginRight of obj\r\n | MarginTop of obj\r\n | MarkerEnd of obj\r\n | MarkerMid of obj\r\n | MarkerStart of obj\r\n | MarqueeDirection of obj\r\n | MarqueeStyle of obj\r\n | Mask of obj\r\n | MaskBorder of obj\r\n | MaskBorderRepeat of obj\r\n | MaskBorderSlice of obj\r\n | MaskBorderSource of obj\r\n | MaskBorderWidth of obj\r\n | MaskClip of obj\r\n | MaskComposite of obj\r\n | MaskImage of obj\r\n | MaskMode of obj\r\n | MaskOrigin of obj\r\n | MaskPosition of obj\r\n | MaskRepeat of obj\r\n | MaskSize of obj\r\n | MaskType of obj\r\n | MaxFontSize of obj\r\n | MaxHeight of obj\r\n | MaxWidth of obj\r\n | MinBlockSize of obj\r\n | MinHeight of obj\r\n | MinInlineSize of obj\r\n | MinWidth of obj\r\n | MixBlendMode of obj\r\n | ObjectFit of obj\r\n | ObjectPosition of obj\r\n | OffsetBlockEnd of obj\r\n | OffsetBlockStart of obj\r\n | OffsetInlineEnd of obj\r\n | OffsetInlineStart of obj\r\n | Opacity of obj\r\n | Order of obj\r\n | Orphans of obj\r\n | Outline of obj\r\n | OutlineColor of obj\r\n | OutlineOffset of obj\r\n | OutlineStyle of obj\r\n | OutlineWidth of obj\r\n | OverflowStyle of obj\r\n | OverflowWrap of obj\r\n | OverflowX of OverflowOptions\r\n | OverflowY of OverflowOptions\r\n | Padding of obj\r\n | PaddingBlockEnd of obj\r\n | PaddingBlockStart of obj\r\n | PaddingBottom of obj\r\n | PaddingInlineEnd of obj\r\n | PaddingInlineStart of obj\r\n | PaddingLeft of obj\r\n | PaddingRight of obj\r\n | PaddingTop of obj\r\n | PageBreakAfter of obj\r\n | PageBreakBefore of obj\r\n | PageBreakInside of obj\r\n | Pause of obj\r\n | PauseAfter of obj\r\n | PauseBefore of obj\r\n | Perspective of obj\r\n | PerspectiveOrigin of obj\r\n | PointerEvents of obj\r\n | Position of PositionOptions\r\n | PunctuationTrim of obj\r\n | Quotes of obj\r\n | RegionFragment of obj\r\n | Resize of obj\r\n | RestAfter of obj\r\n | RestBefore of obj\r\n | Right of obj\r\n | RubyAlign of obj\r\n | RubyMerge of obj\r\n | RubyPosition of obj\r\n | ScrollBehavior of obj\r\n | ScrollSnapCoordinate of obj\r\n | ScrollSnapDestination of obj\r\n | ScrollSnapType of obj\r\n | ShapeImageThreshold of obj\r\n | ShapeInside of obj\r\n | ShapeMargin of obj\r\n | ShapeOutside of obj\r\n | ShapeRendering of obj\r\n | Speak of obj\r\n | SpeakAs of obj\r\n | StopColor of obj\r\n | StopOpacity of obj\r\n | Stroke of obj\r\n | StrokeDasharray of obj\r\n | StrokeDashoffset of obj\r\n | StrokeLinecap of obj\r\n | StrokeLinejoin of obj\r\n | StrokeMiterlimit of obj\r\n | StrokeOpacity of obj\r\n | StrokeWidth of obj\r\n | TabSize of obj\r\n | TableLayout of obj\r\n | TextAlign of TextAlignOptions\r\n | TextAlignLast of obj\r\n | TextAnchor of obj\r\n | TextCombineUpright of obj\r\n | TextDecoration of obj\r\n | TextDecorationColor of obj\r\n | TextDecorationLine of obj\r\n | TextDecorationLineThrough of obj\r\n | TextDecorationNone of obj\r\n | TextDecorationOverline of obj\r\n | TextDecorationSkip of obj\r\n | TextDecorationStyle of obj\r\n | TextDecorationUnderline of obj\r\n | TextEmphasis of obj\r\n | TextEmphasisColor of obj\r\n | TextEmphasisPosition of obj\r\n | TextEmphasisStyle of obj\r\n | TextHeight of obj\r\n | TextIndent of obj\r\n | TextJustify of obj\r\n | TextJustifyTrim of obj\r\n | TextKashidaSpace of obj\r\n | TextLineThrough of obj\r\n | TextLineThroughColor of obj\r\n | TextLineThroughMode of obj\r\n | TextLineThroughStyle of obj\r\n | TextLineThroughWidth of obj\r\n | TextOrientation of obj\r\n | TextOverflow of obj\r\n | TextOverline of obj\r\n | TextOverlineColor of obj\r\n | TextOverlineMode of obj\r\n | TextOverlineStyle of obj\r\n | TextOverlineWidth of obj\r\n | TextRendering of obj\r\n | TextScript of obj\r\n | TextShadow of obj\r\n | TextTransform of obj\r\n | TextUnderlinePosition of obj\r\n | TextUnderlineStyle of obj\r\n | Top of obj\r\n | TouchAction of obj\r\n | Transform of obj\r\n | TransformBox of obj\r\n | TransformOrigin of obj\r\n | TransformOriginZ of obj\r\n | TransformStyle of obj\r\n | Transition of obj\r\n | TransitionDelay of obj\r\n | TransitionDuration of obj\r\n | TransitionProperty of obj\r\n | TransitionTimingFunction of obj\r\n | UnicodeBidi of obj\r\n | UnicodeRange of obj\r\n | UserFocus of obj\r\n | UserInput of obj\r\n | UserSelect of UserSelectOptions\r\n | VerticalAlign of obj\r\n | Visibility of obj\r\n | VoiceBalance of obj\r\n | VoiceDuration of obj\r\n | VoiceFamily of obj\r\n | VoicePitch of obj\r\n | VoiceRange of obj\r\n | VoiceRate of obj\r\n | VoiceStress of obj\r\n | VoiceVolume of obj\r\n | WhiteSpace of WhiteSpaceOptions\r\n | WhiteSpaceTreatment of obj\r\n | Widows of obj\r\n | Width of obj\r\n | WillChange of obj\r\n | WordBreak of obj\r\n | WordSpacing of obj\r\n | WordWrap of obj\r\n | WrapFlow of obj\r\n | WrapMargin of obj\r\n | WrapOption of obj\r\n | WritingMode of obj\r\n | ZIndex of obj\r\n | Zoom of obj\r\n /// If you are searching for a way to provide a value not supported by this DSL then use something like: CSSProp.Custom (\"align-content\", \"center\")\r\n | [] Custom of string * obj\r\n static member Overflow (overflow: OverflowOptions, ?overflowY: OverflowOptions) =\r\n match overflowY with\r\n | Some value -> CSSProp.Custom (\"overflow\", stringEnum overflow + \" \" + stringEnum value)\r\n | None -> CSSProp.Custom (\"overflow\", stringEnum overflow)\r\n","module Client.Home\n\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Fetch\nopen SharedCode\n\nlet mutable TenantCache: TenantDisplay[] option = None\n\ntype Model =\n {\n Tenants: TenantDisplay[]\n ErrorMessage: string\n }\n\ntype Msg =\n | TenantsLoaded of TenantDisplay[]\n | FetchError of exn\n\nlet getTenantInfoCmd() =\n FetchRequest.get Urls.Tenants TenantsLoaded FetchError\n\nlet init() =\n match TenantCache with\n | None ->\n { Tenants = [||]; ErrorMessage = \"\"; }, getTenantInfoCmd()\n | Some t ->\n { Tenants = t; ErrorMessage = \"\"; }, []\n\nlet update msg model : Model * Cmd =\n match msg with\n | TenantsLoaded tenants -> \n Browser.Dom.console.log(\"tenants loaded: \", tenants)\n TenantCache <- Some tenants\n { model with Tenants = tenants }, []\n | FetchError exn ->\n { model with ErrorMessage = exn.Message }, []\n\nlet view model dispatch =\n [\n yield div [ ClassName \"homeBanner\" ] [\n div [ ClassName \"center\" ] [\n h1 [] [ str \"Change your tomorrow\" ] \n ]\n ]\n if model.ErrorMessage <> \"\" then\n yield div [ ClassName \"alert alert-danger\" ] [ str model.ErrorMessage ]\n yield div [ ClassName \"sub\" ] [\n h2 [ ClassName \"title\" ] [ str \"Whatever your issue, it's possible to change your tomorrow to a brighter one!\" ]\n p [ Style [MarginTop \"40px\"] ] [\n str \"Wherever you are in the UK, we want to put you in touch with one of our partners. They provide help and information that could turn your life around. Don't wait - click the link below that best corresponds to your location and get started.\" \n ]\n div [ ClassName \"tiles\"] [\n for tenant in model.Tenants do\n let url = \n match tenant.LandingPage with\n | None -> sprintf \"#areas/%s\" tenant.Area\n | Some x -> sprintf \"#areas/%s/pages/%s\" tenant.Area x\n yield div [ ClassName \"tile\" ] [\n yield a [ Href <| url ] [\n div [ ClassName \"serviceImage\" ] [\n img [ Src (sprintf \"images/%s.png\" (tenant.Area)); Alt \"No Image\"; ] \n ]\n footer [] [\n str <| sprintf \"%s (%s)\" tenant.Name tenant.Location\n ]\n ]\n ]\n ]\n ]\n ]","module Client.Scaffold\n\nopen System\nopen Fable.React.Props\nopen Fable.React\nopen SharedCode.Domain\n\ntype Unescaped =\n { __html: string }\n\nlet stackTheme (theme:Theme) : CSSProp list =\n [\n for entry in theme do\n match entry with\n | Background colour -> yield BackgroundColor colour\n | Colour colour -> yield Color colour \n | Font font -> yield FontFamily font\n | FontSize size -> yield CSSProp.FontSize size \n ]\n\nlet castList (input:HTMLAttr list) : IHTMLProp list =\n input |> List.map (fun x -> x :> IHTMLProp)\n\nlet appendTheme (existing: CSSProp list) (inheritedTheme: CSSProp list) =\n Style (existing@inheritedTheme) :> IHTMLProp\n\nlet setText text (element:IHTMLProp list -> ReactElement list -> ReactElement) props contents =\n match text with\n | RawText (Utils.NOTEMPTY txt) -> \n element props (str txt::contents)\n | Markdown (Utils.NOTEMPTY txt) -> \n element ((DangerouslySetInnerHTML ({ __html = txt }) :> IHTMLProp)::props) contents\n | PageNavigation -> failwith \"Implement server-side\"\n | YouTubeEmbed (link, h, w, full) -> \n let vid = \n iframe [ \n ClassName \"youtube-player\" \n HTMLAttr.Type \"text/html\"\n HTMLAttr.Width w\n HTMLAttr.Height h\n Src link\n FrameBorder \"0\"\n HTMLAttr.AllowFullScreen full\n ] []\n element props (vid::contents)\n | _ -> element props contents\n\n\nlet renderBlock (inheritedTheme: CSSProp list) (block: Block) =\n div [ClassName (\"block\" + if block.Justification = Justification.Centered then \" text-center\" else \"\"); appendTheme inheritedTheme (stackTheme block.Theme)] [\n match block.Header with\n | None -> ()\n | Some (accent, h) -> \n let propList =\n match accent with\n | Inherited -> []\n | Dark -> [ClassName \"dark\"]\n | Light -> [ClassName \"light\"]\n | Blue -> [ClassName \"blue\"]\n | Grey -> [ClassName \"grey\"]\n | DarkRed -> [ClassName \"red\"]\n | Turquoise -> [ClassName \"turquoise\"]\n yield setText h h2 (castList propList) [] \n yield setText (block.Content) div [ClassName \"paragraph\"] [] \n ]\n\nlet renderHeader (inheritedTheme: CSSProp list) (block: Block) =\n let accent, hVal = block.Header.Value\n \n let accentClass =\n match accent with\n | Inherited -> \"\"\n | Dark -> \" dark\"\n | Light -> \" light\"\n | Blue -> \" blue\"\n | Grey -> \" grey\"\n | DarkRed -> \" red\"\n | Turquoise -> \" turquoise\"\n\n setText hVal div ([ClassName (\"header\" + accentClass); appendTheme inheritedTheme (stackTheme block.Theme)]) []\n\nlet renderColumn (inheritedTheme: CSSProp list) (blocks: Block list) =\n blocks |> List.map (renderBlock inheritedTheme)\n\nlet renderBreadcrumbs (page: GenericPage) (hierarchy: Hierarchy) =\n [\n nav [ ClassName \"breadcrumb\" ] [\n ol [ ClassName \"breadcrumb\" ] [\n for node in hierarchy.Breadcrumbs do\n yield li [ ClassName \"breadcrumb-item\" ] [ a [ Href (match node.Id with Slug s -> s) ] [ str node.Name ] ]\n \n yield li [ ClassName \"breadcrumb-item-active\" ] [ str page.Location.Name ]\n ]\n ]\n ]\n\nlet renderPage (page: Page) (hierarchy: Hierarchy option) =\n match page with\n | Generic p ->\n let pageTheme = stackTheme p.Theme\n \n let container =\n match p.PageWidth with\n | WholePage -> \"generic\"\n | Centered -> \"generic container\"\n [\n div [ ClassName container ] [\n match hierarchy with\n | None -> ()\n | Some hier -> yield! renderBreadcrumbs p hier\n \n match p.Header with\n | Some header when header.Header.IsSome -> \n yield renderHeader pageTheme header\n | _ -> ()\n\n for block in p.TextBlocks do\n yield div [ ClassName \"block\" ] [\n match block with\n | SingleColumn (_, col) -> yield! renderColumn pageTheme col\n | TwoColumn (_,l,r) ->\n yield div [ ClassName \"row\" ] [\n div [ ClassName \"col-sm-6\" ] [\n yield! renderColumn pageTheme l\n ]\n div [ ClassName \"col-sm-6\" ] [\n yield! renderColumn pageTheme r\n ]\n ] \n | MainAndSideBar (_,l,r) ->\n yield div [ ClassName \"row\" ] [\n div [ ClassName \"col-sm-9\" ] [\n yield! renderColumn pageTheme l\n ]\n div [ ClassName \"col-sm-3\" ] [\n yield! renderColumn pageTheme r\n ]\n ]\n | CardList (_, shape, cards) ->\n yield div [ ClassName \"row\" ] [\n for (img', card) in cards do\n yield div [ ClassName \"col-sm-6\" ] [\n div [ ClassName \"col-sm-4 col-xs-12\" ] [\n img [ \n Alt img'.Alt\n Src img'.Url\n Title img'.HoverText\n ClassName (\n match shape with\n | Rectangle -> \"img-responsive\"\n | RoundedRectangle -> \"img-rounded\"\n | Circle -> \"img-circle\"\n | Thumbnail -> \"img-thumbnail\")\n ]\n ]\n div [ ClassName \"col-xs-8 col-sm-12\" ] [\n yield! renderColumn pageTheme [card]\n ] \n ]\n ] \n ]\n ]\n ]\n","module Client.Tenant\n\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen System\nopen Fetch\nopen SharedCode\n\ntype Msg =\n | Rendered of PageResult\n | FetchError of exn\n\ntype Model = \n { \n Tenant: string option;\n OutputTest: PageResult option\n }\n\nlet renderPage token target =\n FetchRequest.postPromise \n Urls.GetPage\n (Some \n [\n RequestProperties.Cache RequestCache.Default\n Fetch.requestHeaders [\n yield HttpRequestHeaders.ContentType \"application/json\"\n yield HttpRequestHeaders.CacheControl \"max-age=600\" \n match token with\n | None -> ()\n | Some t -> yield HttpRequestHeaders.Authorization (\"Bearer \" + t.Token)\n ]\n ] \n ) \n target\n\nlet postRenderPageCmd tenantName slug (jwt: JWT option) = \n Cmd.OfPromise.either (renderPage jwt) { Tenant = TenantRef tenantName; Slug = Slug slug } Rendered FetchError\n\nlet init tenantName slug = \n let jwt =\n match BrowserLocalStorage.load \"user\" with\n | Result.Ok t -> Some t\n | Result.Error _ -> None\n\n {\n Tenant = Some tenantName \n OutputTest = None\n }, Cmd.batch [ \n postRenderPageCmd \n tenantName \n (if String.IsNullOrWhiteSpace slug then \"home\" else slug)\n jwt\n ]\n\nlet update (msg:Msg) model : Model*Cmd* string option = \n match msg with\n | Rendered output ->\n { model with OutputTest = Some output },[], None\n | FetchError exn ->\n model,[],None\n\nlet view model dispatch =\n [\n match model.OutputTest with\n | None -> yield str \"Loading...\"\n | Some o -> \n yield div ([ClassName \"expanding-child\"; Scaffold.appendTheme [] (Scaffold.stackTheme o.Page.Theme)]) (Scaffold.renderPage (Generic o.Page) (Some o.Hierarchy))\n ]\n","module Client.Keyboard\n\nopen Fable.Core\nopen Fable.Core.JsInterop\n\nopen Fable.Import\nopen Fable.React\nopen Fable.React.Props\nopen Browser.Types\n\nlet [] ENTER_KEY = 13.\nlet [] ESCAPE_KEY = 27.\n\nlet a = \n div [\n OnKeyDown \n (fun ev -> \n () |> ignore\n ) \n ] [\n \n ]\n\nlet private keyPress conditional key msg dispatch =\n function \n | (ev: KeyboardEvent) when ev.keyCode = key && conditional ->\n ev.preventDefault() \n dispatch msg\n | _ -> ()\n |> OnKeyDown\n\n\nlet onEnter msg dispatch = keyPress true ENTER_KEY msg dispatch\nlet onEnterConditional cond msg dispatch = keyPress cond ENTER_KEY msg dispatch\nlet onEscape msg dispatch = keyPress true ESCAPE_KEY msg dispatch\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 Client.Pages\n\nopen System\nopen SharedCode.Domain\nopen Elmish.UrlParser\n\n/// The different pages of the application. If you add a new page, then add an entry here.\n[]\ntype Page = \n | Home \n | Tenant of string\n | Admin of string * string\n | InfoPage of string * string\n | PasswordReset of Guid\n | AlcoholAudit of string\n | SelfReferral of string\n | ConfirmReferral of string * Guid\n | Training of string * string\n\nlet toHash =\n function\n | Page.Home -> \"#home\"\n | Page.Admin (tenant,action) -> sprintf \"#areas/%s/admin/%s\" tenant action\n | Page.InfoPage (tenant,slug) -> sprintf \"#areas/%s/pages/%s\" tenant slug\n | Page.PasswordReset guid -> sprintf \"#password-reset/%O\" guid\n | Page.ConfirmReferral (tenant,guid) -> sprintf \"#areas/%s/confirm-referral/%O\" tenant guid\n | Page.Tenant tenant -> sprintf \"#areas/%s\" tenant\n | Page.AlcoholAudit tenant -> sprintf \"#areas/%s/alcohol-audit\" tenant\n | Page.SelfReferral tenant -> sprintf \"#areas/%s/referral\" tenant\n | Page.Training (tenant,slug) -> sprintf \"#training/%s/%s\" tenant slug\n\nlet pGuid state =\n custom \"pGuid\" (Guid.TryParse >> function true, value -> Ok value | _ -> Error \"Can't parse guid\" ) state\n\n\n/// The URL is turned into a Result.\nlet pageParser : ParserPage,_> = \n oneOf [ \n map Page.Home (s \"home\")\n map (fun area page -> Page.Admin(area,page)) (s \"areas\" str s \"admin\" str) \n map (fun area page -> Page.InfoPage(area,page)) (s \"areas\" str s \"pages\" str)\n map Page.Tenant (s \"areas\" str) \n map Page.PasswordReset (s \"password-reset\" pGuid)\n map (fun area id -> Page.ConfirmReferral(area,id)) (s \"areas\" str s \"confirm-referral\" pGuid)\n map Page.AlcoholAudit (s \"areas\" str s \"alcohol-audit\")\n map Page.SelfReferral (s \"areas\" str s \"referral\")\n map (fun area page -> Page.Training(area,page)) (s \"training\" str str)\n ]\n\nlet urlParser location = parse pageParser location\n","module Client.Style\n\nopen System\nopen Fable.React.Props\nopen Fable.Core\nopen Fable.Core.JsInterop\nopen Fable.React\nopen Pages\nopen Fable.React\nopen Elmish.React\n\nlet fa str = i [ ClassName (\"fa fa-\" + str) ] []\nlet glyph str = i [ ClassName (\"glyphicon glyphicon-\" + str) ] []\nlet jsVoid = Href \"javascript:void(0)\"\n\nlet panelWithTitleContent panelClass title content =\n div [ ClassName (\"panel panel-\" + panelClass) ] [\n div [ ClassName \"panel-heading\" ] [\n h3 [ ClassName \"panel-title\" ] title\n ]\n div [ ClassName \"panel-body\" ] content\n ]\n\nlet panel panelClass title content =\n panelWithTitleContent panelClass [ str title ] content\n\nlet modal title dispatch closeAction contents buttons =\n [\n div [\n ClassName \"modal-backdrop in\"\n Keyboard.onEscape closeAction dispatch\n ] []\n div [ \n ClassName \"modal in\" \n TabIndex -1\n Role \"dialog\"\n Style [\n Display DisplayOptions.Block\n ]\n Keyboard.onEscape closeAction dispatch\n ] [\n div [ \n ClassName \"modal-dialog\" \n Role \"document\"\n ] [ \n div [ ClassName \"modal-content\" ] [\n yield div [ ClassName \"modal-header\" ] [\n button [ \n Type \"button\"\n ClassName \"close\"\n Data (\"dismiss\",\"modal\")\n OnClick (fun e -> dispatch closeAction) \n ] [\n span [] [ str \"x\" ]\n ]\n h4 [ ClassName \"modal-title\" ] [ str title ]\n ]\n yield div [ ClassName \"modal-body\" ] contents\n if buttons |> List.isEmpty = false then\n yield div [ ClassName \"modal-footer\" ] buttons\n ]\n ]\n ]\n ]\n \nlet inlineForm elements =\n div [\n ClassName \"form-inline\"\n Role \"form\"\n ] elements\n\nlet col_md_6 elements =\n div [ ClassName \"col-md-6\" ] elements\n\nlet formGroup elements =\n div [\n ClassName \"form-group\"\n ] elements\n\nlet formGroupWithErrors hasError elements =\n div [\n ClassName (\"form-group\" + if hasError then \" has-error\" else \"\")\n ] elements\n\nlet container elements =\n div [\n ClassName \"container\"\n ] elements\n\nlet fluidContainer elements =\n div [\n ClassName \"container-fluid\"\n ] elements\n\nlet defaultButton text =\n button [\n Type \"button\"\n ClassName \"btn btn-default\"\n ] [ str text ]\n\nlet viewLink page description =\n a [ \n Style [ Padding \"0 20px\" ]\n Href (toHash page) \n ] [ \n str description\n ]\n\nlet centerStyle direction =\n Style [ \n Display DisplayOptions.Flex\n FlexDirection direction\n AlignItems AlignItemsOptions.Center\n JustifyContent \"center\"\n Padding \"20px 0\"\n ]\nopen Fable.Import\nopen Fable.React.Props\n\nlet textInput id placeholder onChangeMsg dispatch (value: string) maxLength = \n input [ \n Type \"text\"\n ClassName \"form-control\"\n Id id\n Placeholder placeholder\n OnChange (fun ev -> dispatch (onChangeMsg !!ev.target?value) )\n Helpers.valueOrDefault value\n MaxLength (match maxLength with Some x -> x | _ -> 0.)\n ]\n\nlet dateInput id placeholder dispatch (value: string) = \n input [ \n Type \"date\"\n ClassName \"form-control\"\n Id id\n OnChange dispatch\n DefaultValue value \n ]\n\nlet buttonLink cssClass onClick elements = \n a [ \n ClassName cssClass\n OnClick (fun _ -> onClick())\n OnTouchStart (fun _ -> onClick())\n Style [ \n Cursor \"pointer\"\n ] \n ] elements\n\nlet renderAttribution dispatch hider =\n modal \"Licenses and Attribution\" dispatch hider [\n p [] [ str \"As with most companies, we make extensive use of open-source libraries to speed up development. Some libraries require you to\n credit them, and in some cases we want to show our appreciation by promoting awareness of them.\" ]\n ul [ ClassName \"list-group\" ] [\n li [ ClassName \"list-group-item\" ] [ \n a [ Href \"https://www.flickcom/photos/jerrylai0208/7985623795\" ] [ str \"Background image\" ]\n str \" licensed under \"\n a [ Href \"https://creativecommons.org/licenses/by-sa/2.0/\" ] [ str \"CC BY-SA 2.0\" ]\n str \". The image was cropped to focus on the sky.\"\n ] \n li [ ClassName \"list-group-item\" ] [ \n a [ Href \"https://getbootstrap.com/docs/3.3/\" ] [ str \"Bootstrap\" ]\n str \" is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web. It is licensed under \"\n a [ Href \"https://opensource.org/licenses/MIT\" ] [ str \"The MIT License\" ]\n ] \n li [ ClassName \"list-group-item\" ] [ \n str \"We proudly use the \"\n a [ Href \"https://safe-stack.github.io/\" ] [ str \"Safe Stack\" ]\n str \", an open-source functional programming stack for web development.\"\n ] \n ]\n ] []\n\nlet siteFooter loginClick licenseClick =\n footer [ ClassName \"footer\" ] [\n div [ ClassName \"container\" ] [\n section [] [\n div [ ClassName \"col-md-6 centerflex between\" ] [\n img [ Src \"images/logo-home.png\" ]\n span [] [ str \"(C) ILLY Systems 2018-2019\" ]\n ]\n div [ ClassName \"col-md-6 centerflex between\" ] [\n span [] [ str \"Web: \"; a [ Href \"https://www.illycorp.com\" ] [ str \"www.illycorp.com\" ]]\n span [] [ str \"Tweet: \"; a [ Href \"https://twittecom/ILLYSystems\" ] [ str \"@ILLYSystems\" ]]\n ]\n ]\n section [] [\n div [ ClassName \"col-md-6 centerflex between\" ] [\n a [ Href \"public/privacy-policy.pdf\" ] [ str \"Privacy Policy\" ]\n ]\n div [ ClassName \"col-md-6 centerflex between\" ] [\n yield a [ jsVoid; OnClick licenseClick ] [ str \"Licences and attribution\" ] \n match loginClick with\n | None -> ()\n | Some click ->\n yield a [\n Href \"#home\"\n OnClick click\n ] [ str \"Admin Login\" ] \n ]\n ]\n ]\n ]\n\n\n","module Client.AdminEditPage\n\nopen Fable.Core\nopen Fable.Import\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Style\nopen System\nopen Fable.Core.JsInterop\nopen Fetch\nopen Fable\nopen SharedCode\nopen Utils\nopen AdminShared\nopen PageLogic\nopen Client.Pages\nopen SharedCode.Domain\n\ntype TargetPanel =\n | Panel1\n | Panel2\n\ntype LinkEmbed =\n | InsideBlock\n | CardImage\n\ntype EditPageState =\n {\n Page: GenericPage;\n IdentifierWhenLoaded: string;\n WarnIdentifier: bool;\n Preview: GenericPage option;\n ShowingFilePicker: bool\n Files: (string * FileMeta list) list\n SelectedFile: FileMeta option\n LinkTarget: (Guid * Guid * LinkEmbed) option\n }\n\ntype BlockValue<'a> = Guid * Guid * 'a\n\ntype Msg =\n | FetchError of exn\n | LoadedPageList of PageMeta list\n | ReturnToPageList\n | PreviewPage\n | ClosePreview\n | PagePreviewRendered of GenericPage\n | LoadedPage of GenericPage\n | PageClicked of Slug * ClickAction\n | MainTitleChanged of string\n | MainIdentifierChanged of Slug\n | BlockTypeChanged of TextBlock\n | BlockContentTypeChanged of BlockContent BlockValue\n | AddToTextBlock of scopeId: Guid * TargetPanel\n | AddToPage\n | AddNewPage\n | SavePage\n | PageSaved\n | ConfirmDeletePage\n | ConfirmedPageDeletion\n | CancelDeletion\n | PageDeleted\n | IdentifierUniquenessChecked of bool\n | PageBackgroundColourChanged of string\n | BlockBackgroundColourChanged of string BlockValue\n | DefaultTextColourChanged of string\n | BlockTextColourChanged of string BlockValue\n | YouTubeLinkChanged of string BlockValue\n | YouTubeHeightChanged of string BlockValue\n | YouTubeWidthChanged of string BlockValue\n | YouTubeFullScreenChanged of bool BlockValue\n | DefaultFontSizeChanged of string\n | BlockFontSizeChanged of string BlockValue\n | BlockHeaderColourChanged of ColourAccent BlockValue\n | HideBlockHeader of scopeId: Guid * blockId: Guid\n | ShowBlockHeader of scopeId: Guid * blockId: Guid\n | BlockHeaderTextChanged of string BlockValue\n | DeleteBlock of scopeId: Guid * blockId: Guid\n | DeleteTextBlock of id: Guid\n | MoveTextBlock of id: Guid * Direction\n | MoveBlock of Direction BlockValue\n | BlockAlignmentChanged of Justification BlockValue\n | ChangeCardShape of scopeId: Guid * ImageShape\n | ShowFilePicker of scopeId: Guid * blockId: Guid * target: LinkEmbed\n | HideFilePicker\n | InsertFileLink of scopeId: Guid * blockId: Guid * image: bool * link: string\n | LoadedFiles of FileMeta list\n | SelectFile of FileMeta\n | InsertButtonClicked\n | CardUrlChanged of string BlockValue\n | CardAltChanged of string BlockValue\n | CardHoverTextChanged of string BlockValue\n | ToggleLandingPage\n | SetClaims of string\n\n\ntype AdminPageAction =\n | Listing of LoadState\n | Editing of LoadState\n\ntype Model = \n { \n User: JWT;\n Action: AdminPageAction;\n ShowConfirmDelete: bool;\n }\n\nlet getFilesCmd (jwt: JWT) imagesOnly =\n let tenant = TenantRef.get jwt.Account.Tenant\n let url = if imagesOnly then Urls.Images tenant else Urls.Files tenant\n FetchRequest.getWithToken url jwt.Token LoadedFiles FetchError\n\nlet previewPageCmd token (page: GenericPage) =\n let url = Urls.GetPreview\n FetchRequest.postWithToken url page token PagePreviewRendered FetchError\n\nlet deletePageCmd (jwt: JWT) id = \n let url = Urls.PageById (TenantRef.get jwt.Account.Tenant) (Slug.get id)\n FetchRequest.deleteWithToken url () jwt.Token (fun _ -> PageDeleted) FetchError\n\nlet postSavePageCmd (jwt: JWT) (page: GenericPage) oldId = \n let url = Urls.Pages (TenantRef.get jwt.Account.Tenant)\n FetchRequest.postWithToken \n url\n { Content = page; IdentifierWhenLoaded = oldId }\n jwt.Token\n (fun _ -> PageSaved) \n FetchError\n\nlet getAllPagesCmd (jwt: JWT) = \n let url = Urls.Pages (TenantRef.get jwt.Account.Tenant)\n FetchRequest.getWithToken url jwt.Token LoadedPageList FetchError\n\nlet getPageCmd (jwt: JWT) id = \n let url = Urls.PageById (TenantRef.get jwt.Account.Tenant) (Slug.get id)\n FetchRequest.getWithToken url jwt.Token LoadedPage FetchError\n\nlet getPageUniquenessCmd (jwt: JWT) id = \n let url = Urls.PageExistsById (TenantRef.get jwt.Account.Tenant) (Slug.get id)\n FetchRequest.getWithToken url jwt.Token IdentifierUniquenessChecked FetchError\n\nlet init user = \n {\n User = user \n Action = Listing (Loading())\n ShowConfirmDelete = false\n }, getAllPagesCmd user\n\nlet renderContent scopeId blockId lbl dispatch =\n function\n | Markdown txt -> \n formGroup [\n textarea [\n Id lbl\n Placeholder \"Enter the markdown content.\"\n HTMLAttr.Rows 10\n Key (sprintf \"%O\" blockId)\n ClassName \"form-control content-area\"\n DefaultValue txt\n OnChange (fun ev -> \n dispatch (BlockContentTypeChanged(scopeId, blockId, (Markdown !!ev.target?value))))\n ] []\n ]\n | RawText txt -> \n formGroup [\n textarea [\n Id lbl\n Placeholder \"Enter the unformatted text content.\"\n HTMLAttr.Rows 10\n Key (sprintf \"%O\" blockId)\n ClassName \"form-control content-area\"\n DefaultValue txt\n OnChange (fun ev -> dispatch (BlockContentTypeChanged(scopeId, blockId, (RawText !!ev.target?value))))\n ] []\n ]\n | PageNavigation -> p [ ClassName \"form-control-static\" ] [ str \"This section is auto-generated. It will link to all siblings of the page.\" ]\n | YouTubeEmbed (link, height, width, full) ->\n panel \"success\" \"YouTube embed\" [\n label [ HtmlFor (lbl+\"-embed\") ] [ str \"Youtube Embed Link\" ] \n textInput (lbl+\"-embed\") \"Enter the embed link.\" (fun str -> YouTubeLinkChanged(scopeId, blockId, str)) dispatch link (Some 200.)\n label [ HtmlFor (lbl+\"-h\") ] [ str \"Height\" ] \n textInput (lbl+\"-h\") \"Enter the height.\" (fun str -> YouTubeHeightChanged(scopeId, blockId, str)) dispatch height (Some 8.)\n label [ HtmlFor (lbl+\"-w\") ] [ str \"Width\" ] \n textInput (lbl+\"-w\") \"Enter the width.\" (fun str -> YouTubeWidthChanged(scopeId, blockId, str)) dispatch width (Some 8.) \n label [ HtmlFor (lbl+\"-fs\") ] [ str \"Allow Full Screen?\" ] \n input[\n HTMLAttr.Type \"checkbox\";\n HTMLAttr.Id (lbl+\"-fs\");\n OnChange (fun ev -> dispatch (YouTubeFullScreenChanged(scopeId, blockId, !!ev.target?``checked``)))\n Checked full;\n ] \n ]\n\n\nlet renderBlock dispatch allowDeleteFirst max (scopeId: Guid) i (block: Block) =\n let labeller lbl = sprintf \"%s-%O\" lbl block.Id\n [\n yield div [ ClassName \"valign\" ] [ \n yield h4 [] [ str \"Block\" ]\n if i > 0 || allowDeleteFirst then\n yield button [ \n ClassName \"btn btn-danger\"; \n OnClick (fun _ -> dispatch (DeleteBlock(scopeId, block.Id)))\n HTMLAttr.Type \"button\"\n ] [ str \"Delete\" ]\n if i > 0 then\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (MoveBlock (scopeId, block.Id, Up)))\n ] [ str \"Move Up\" ] \n if max >= 0 && i < max then\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (MoveBlock (scopeId, block.Id, Down)))\n ] [ str \"Move Down\" ] \n ]\n yield hr []\n match block.Header with\n | None ->\n yield div [ ClassName \"toggle\" ] [\n yield div [ ClassName \"alert alert-info lr\" ] [ \n str \"This block does not have a header. \" \n button [ \n ClassName \"btn btn-info\"; \n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (ShowBlockHeader(scopeId, block.Id))) \n ] [ str \"Add header\" ]\n ]\n ]\n | Some (accent, content) ->\n let lbl = labeller \"header_colour\"\n yield label [ HtmlFor lbl ] [ str \"Header Colour\" ]\n yield select [\n ClassName \"form-control\"\n Id lbl\n Placeholder \"Select the header colour.\" \n HTMLAttr.Value (formatAccent accent) \n OnChange (fun ev -> dispatch (BlockHeaderColourChanged(scopeId, block.Id, (parseAccent !!ev.target?value))))\n ] ([Inherited; Light; Dark; Turquoise; DarkRed; Blue; Grey] |> List.map (fun acc ->\n option [] [ str (formatAccent acc) ]))\n \n match content with\n | RawText text ->\n let lbl = labeller \"header_text\"\n yield label [ HtmlFor lbl ] [ str \"Header Text\" ]\n yield textInput lbl \"Enter the header text.\" (fun str -> BlockHeaderTextChanged(scopeId, block.Id, str)) dispatch text (Some 100.)\n | _ -> yield str \"Unsupported header\"\n\n yield hr []\n\n yield div [ ClassName \"toggle\" ] [\n yield button [ \n ClassName \"btn btn-warning\"; \n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (HideBlockHeader(scopeId, block.Id))) \n ] [ str \"Remove header\" ]\n ]\n\n let lbl = labeller \"block_justification\"\n yield formGroup [\n label [ HtmlFor lbl ] [ str \"Justification\" ]\n select [\n ClassName \"form-control\"\n Id lbl\n Placeholder \"Select the justification.\" \n HTMLAttr.Value (formatJustification block.Justification) \n OnChange (fun ev -> dispatch (BlockAlignmentChanged (scopeId, block.Id, parseJustification !!ev.target?value)))\n ] ([LeftAligned; Justification.Centered] |> List.map (fun j -> option [] [ str (formatJustification j) ]))\n ]\n\n let lbl = labeller \"block_bg\"\n yield formGroup [\n label [ HtmlFor lbl ] [ str \"Block Background Colour\" ]\n textInput lbl \"Enter the block background.\" (fun str -> BlockBackgroundColourChanged (scopeId, block.Id, str)) dispatch (getFromTheme (Background \"\") block.Theme) (Some 50.)\n ] \n\n let lbl = labeller \"block_colour\"\n yield formGroup [\n label [ HtmlFor lbl ] [ str \"Block Text Colour\" ]\n textInput lbl \"Enter the text colour.\" (fun str -> BlockTextColourChanged (scopeId, block.Id, str)) dispatch (getFromTheme (IThemeItem.Colour \"\") block.Theme) (Some 50.)\n ] \n\n let lbl = labeller \"block_fontsize\"\n yield formGroup [\n label [ HtmlFor lbl ] [ str \"Block Font Size\" ]\n textInput lbl \"Enter the font size.\" (fun str -> BlockFontSizeChanged (scopeId, block.Id, str)) dispatch (getFromTheme (IThemeItem.FontSize \"\") block.Theme) (Some 10.)\n ]\n\n let lbl = labeller \"block_content_type\"\n yield formGroup [\n yield label [ HtmlFor lbl ] [ str \"Block Content Type\" ]\n yield select [\n ClassName \"form-control\"\n Id lbl\n Placeholder \"Select the block content type.\" \n HTMLAttr.Value (formatContent block.Content) \n OnChange (fun ev -> dispatch (BlockContentTypeChanged(scopeId, block.Id, (parseFormatContent !!ev.target?value))))\n ] ([RawText \"\"; Markdown \"\"; PageNavigation; YouTubeEmbed(\"\", \"\", \"\",false)] |> List.map (fun acc ->\n option [] [ str (formatContent acc) ])) \n ]\n\n let lbl = labeller \"block_content\"\n yield formGroup [\n yield label [ HtmlFor lbl ] [ str \"Block Content \" ]\n yield renderContent scopeId (block.Id) lbl dispatch (block.Content)\n match block.Content with\n | Markdown _ -> \n yield button [\n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (ShowFilePicker(scopeId, block.Id, LinkEmbed.InsideBlock)))\n ] [ str \"Insert Uploaded File Link\" ]\n | _ -> ()\n ] \n ]\n\nlet private renderTextBlockButtons (id: Guid) dispatch targetPanel =\n footer [] [\n button [ \n ClassName \"btn btn-info\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (AddToTextBlock (id, targetPanel)))\n ] [ str \"Add block\" ]\n ]\n\nlet private renderTextBlockNoButtons (dispatch: Msg->unit) allowDeleteFirst (id: Guid) (blocks: Block list) =\n (blocks |> List.mapi (renderBlock dispatch allowDeleteFirst (blocks.Length - 1) id) |> List.concat) \n\nlet private renderTextBlock (dispatch: Msg->unit) (id: Guid) (blocks: Block list) panel =\n renderTextBlockNoButtons dispatch true id blocks @ [renderTextBlockButtons id dispatch panel]\n\nlet private renderShape scopeId thisShape currentShape (dispatch: Msg -> unit) =\n let selected = thisShape = currentShape\n let label, className =\n match thisShape with\n | Rectangle -> \"Rectangle\", \"img\"\n | Circle -> \"Circle\", \"img-circle\"\n | Thumbnail -> \"Thumbnail\", \"img-thumbnail\"\n | RoundedRectangle -> \"Rounded\", \"img-rounded\"\n \n div [\n OnClick (fun _ -> dispatch (ChangeCardShape (scopeId, thisShape)))\n Style [\n Cursor \"pointer\"\n ]\n ] [\n h4 [ Style [ TextDecoration (if selected then \"underline\" else \"none\") ] ] [ str label ]\n img [ \n Src \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTQwIiBoZWlnaHQ9IjE0MCIgdmlld0JveD0iMCAwIDE0MCAxNDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjwhLS0KU291cmNlIFVSTDogaG9sZGVyLmpzLzE0MHgxNDAKQ3JlYXRlZCB3aXRoIEhvbGRlci5qcyAyLjYuMC4KTGVhcm4gbW9yZSBhdCBodHRwOi8vaG9sZGVyanMuY29tCihjKSAyMDEyLTIwMTUgSXZhbiBNYWxvcGluc2t5IC0gaHR0cDovL2ltc2t5LmNvCi0tPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbI2hvbGRlcl8xNjQ1YmQyMGMxMyB0ZXh0IHsgZmlsbDojQUFBQUFBO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1mYW1pbHk6QXJpYWwsIEhlbHZldGljYSwgT3BlbiBTYW5zLCBzYW5zLXNlcmlmLCBtb25vc3BhY2U7Zm9udC1zaXplOjEwcHQgfSBdXT48L3N0eWxlPjwvZGVmcz48ZyBpZD0iaG9sZGVyXzE2NDViZDIwYzEzIj48cmVjdCB3aWR0aD0iMTQwIiBoZWlnaHQ9IjE0MCIgZmlsbD0iI0VFRUVFRSIvPjxnPjx0ZXh0IHg9IjQzLjUiIHk9Ijc0LjgiPjE0MHgxNDA8L3RleHQ+PC9nPjwvZz48L3N2Zz4=\"\n Style [\n Height \"140px\"\n Width \"140px\"\n Border (if selected then \"solid 2px #4c6085\" else \"none\")\n ]\n ClassName className\n ]\n ]\n\nlet filePicker dispatch show closer (files: (string * FileMeta list) list) (selectedFile: FileMeta option) =\n let genOption file = option [ Value file.Name ] [ str <| sprintf \"%s - %d KB - uploaded on %s\" file.Name (file.Size / 1000) (file.DateUploaded.ToString(\"dd/MMM/yyyy\")) ]\n let allFiles = files |> List.collect snd\n if show then\n modal \"Choose an uploaded file\" dispatch closer [\n div [ ClassName \"centerflex\" ] [\n yield select [\n OnChange (fun ev -> dispatch (SelectFile (allFiles |> List.find (fun x -> x.Name = !!ev.target?value))))\n Style [\n Height \"34px\"\n MarginRight \"10px\"\n Width \"100%\"\n ]\n ] (files |> List.map (fun (band, items) -> optgroup [ Label band ] (items |> List.map genOption)))\n if selectedFile.IsNone || selectedFile.Value.Thumbnail = \"\" then\n ()\n else\n yield img [ \n HTMLAttr.Height \"32px\"\n HTMLAttr.Width \"32px\"\n Alt \"thumbnail\"\n Src (sprintf \"data:image/png;base64,%s\" selectedFile.Value.Thumbnail)\n ]\n yield button [\n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n Style [\n MarginLeft \"10px\"\n ]\n Disabled (selectedFile.IsNone)\n OnClick (fun _ -> dispatch InsertButtonClicked)\n ] [\n str \"Insert Link\"\n ]\n ] \n ] []\n else\n []\n\nlet private viewEditPage user pageState dispatch = \n let page = pageState.Page\n [ \n yield! filePicker dispatch pageState.ShowingFilePicker HideFilePicker pageState.Files pageState.SelectedFile\n yield form [] [\n formGroup [\n label [ HtmlFor \"title\"; ClassName \"mandatory\" ] [ str \"Page Title\" ]\n textInput \"title\" \"Enter the page title.\" MainTitleChanged dispatch page.Location.Name (Some 50.)\n ]\n formGroup [\n input[\n HTMLAttr.Type \"checkbox\";\n HTMLAttr.Id \"landingPage\";\n OnChange (fun _ -> dispatch ToggleLandingPage);\n Checked page.IsLandingPage;\n Style[MarginRight \"0.5em\"];\n ]\n label [ HtmlFor \"landingPage\"] [ str \"Is Landing Page\"]\n ]\n formGroup [\n yield label [ HtmlFor \"id\"; ClassName \"mandatory\" ] [ str \"Page Identifier\" ]\n yield textInput \"id\" \"Enter the page id.\" (Slug >> MainIdentifierChanged) dispatch (Slug.get page.Location.Id) (Some 500.)\n\n if (Slug.get page.Location.Id) <> pageState.IdentifierWhenLoaded && not (String.IsNullOrWhiteSpace(pageState.IdentifierWhenLoaded)) then\n yield div [ ClassName \"alert alert-warning\"; Role \"alert\" ] [ str \"The identifier has been changed. This may cause this item to appear in different menus and navigation controls.\" ]\n\n if pageState.WarnIdentifier then\n yield div [ ClassName \"alert alert-warning\"; Role \"alert\" ] [ str \"This page already exists and will be replaced after saving.\" ]\n \n if locationContainsSpaces page.Location then \n yield div [ ClassName \"alert alert-danger\"; Role \"alert\" ] [ str \"The identifier cannot contain spaces\" ] \n ]\n panel \"default\" \"Default Theme\" [\n formGroup [\n label [ HtmlFor \"theme_background\" ] [ str \"Page Background Colour\" ]\n textInput \"theme_background\" \"Enter the page background.\" PageBackgroundColourChanged dispatch (getFromTheme (Background \"\") page.Theme) (Some 50.)\n ] \n formGroup [\n label [ HtmlFor \"theme_colour\" ] [ str \"Default Text Colour\" ]\n textInput \"theme_colour\" \"Enter the text colour.\" DefaultTextColourChanged dispatch (getFromTheme (IThemeItem.Colour \"\") page.Theme) (Some 50.)\n ] \n formGroup [\n label [ HtmlFor \"theme_fontSize\" ] [ str \"Default Font Size\" ]\n textInput \"theme_fontSize\" \"Enter the font size.\" DefaultFontSizeChanged dispatch (getFromTheme (IThemeItem.FontSize \"\") page.Theme) (Some 50.)\n ] \n ]\n div [] [\n let max = page.TextBlocks.Length - 1\n for (i,block) in page.TextBlocks |> List.indexed do\n let labeller lbl = sprintf \"%s-%O\" lbl (TextBlock.Id block)\n yield panelWithTitleContent \"primary\" [ \n yield str \"Container\"; \n yield button [ \n ClassName \"btn btn-danger\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (DeleteTextBlock <| TextBlock.Id block))\n ] [ str \"Delete\" ] \n \n if i > 0 then\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (MoveTextBlock (TextBlock.Id block, Up)))\n ] [ str \"Move Up\" ] \n if max >= 0 && i < max then\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (MoveTextBlock (TextBlock.Id block, Down)))\n ] [ str \"Move Down\" ] \n ] [ \n formGroup [\n label [ HtmlFor (labeller \"block_type\") ] [ str \"Container Type\" ]\n select [\n ClassName \"form-control\"\n Id (labeller \"block_type\") \n Placeholder \"Select the container type.\" \n HTMLAttr.Value (blockType block) \n OnChange (fun ev -> dispatch (BlockTypeChanged(parseBlockType (TextBlock.Id block) (!!ev.target?value))))\n ] [\n option [] [ str <| blockType (SingleColumn (Guid.Empty,[]))]\n option [] [ str <| blockType (TwoColumn (Guid.Empty,[],[]))]\n option [] [ str <| blockType (MainAndSideBar (Guid.Empty,[],[]))]\n option [] [ str <| blockType (CardList (Guid.Empty,ImageShape.Rectangle,[]))]\n ]\n div [ ClassName \"inner-block clearfix\" ] [\n match block with\n | MainAndSideBar (id, main, sidebar) ->\n yield div [ ClassName \"col-sm-8\" ] [\n panel \"info\" \"Main Content\" (renderTextBlock dispatch id main Panel1) \n ]\n yield div [ ClassName \"col-sm-4\" ] [\n panel \"default\" \"Sidebar\" (renderTextBlock dispatch id sidebar Panel2) \n ]\n | SingleColumn (id, main) -> \n yield div [ ClassName \"col-sm-12\" ] [\n panel \"info\" \"Main Content\" (renderTextBlock dispatch id main Panel1) \n ]\n | TwoColumn (id, left, right) ->\n yield div [ ClassName \"col-sm-6\" ] [\n panel \"info\" \"Left Content\" (renderTextBlock dispatch id left Panel1) \n ]\n yield div [ ClassName \"col-sm-6\" ] [\n panel \"default\" \"Right Content\" (renderTextBlock dispatch id right Panel2) \n ]\n | CardList (id, shape, cards) ->\n yield div [ \n ClassName \"centerflex\"\n Style [\n TextAlign TextAlignOptions.Center\n Padding \"10px\"\n ]\n ] [ \n renderShape id Rectangle shape dispatch\n renderShape id RoundedRectangle shape dispatch\n renderShape id Circle shape dispatch\n renderShape id Thumbnail shape dispatch\n ]\n for (img, cardContent) in cards do\n yield div [ ClassName \"col-sm-3\" ] [\n panelWithTitleContent \"primary\" [ \n str \"Image\"; \n ] [\n yield formGroup [\n label [ HtmlFor <| sprintf \"imageUrl-%O\" cardContent.Id ] [ str \"Image Link\" ]\n textInput (sprintf \"imageUrl-%O\" cardContent.Id) \"Enter the image link.\" (fun str -> CardUrlChanged (id, cardContent.Id, str)) dispatch (img.Url) (Some 500.)\n ]\n yield button [\n ClassName \"btn btn-primary btn-block\"\n HTMLAttr.Type \"button\"\n Style [\n Width \"100%\"\n ]\n OnClick (fun _ -> dispatch (ShowFilePicker(id, cardContent.Id, LinkEmbed.CardImage)))\n ] [ str \"Insert Uploaded Image Link\" ]\n yield formGroup [\n label [ HtmlFor <| sprintf \"imageAlt-%O\" cardContent.Id ] [ str \"Image Alt Text\" ]\n textInput (sprintf \"imageAlt-%O\" cardContent.Id) \"Enter the alt image text.\" (fun str -> CardAltChanged (id, cardContent.Id, str)) dispatch (img.Alt) (Some 200.)\n ] \n yield formGroup [\n label [ HtmlFor <| sprintf \"imageHover-%O\" cardContent.Id ] [ str \"Image Hover Text\" ]\n textInput (sprintf \"imageHover-%O\" cardContent.Id) \"Enter the hover text.\" (fun str -> CardHoverTextChanged (id, cardContent.Id, str)) dispatch (img.HoverText) (Some 500.)\n ] \n ]\n ]\n yield div [ ClassName \"col-sm-9\" ] [\n panel \"info\" \"Main Content\" (renderTextBlockNoButtons dispatch false id [cardContent]) \n ]\n\n // footer for cards\n yield footer [] [\n button [ \n ClassName \"btn btn-info\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (AddToTextBlock (id, Panel1)))\n ] [ str \"Add card\" ]\n ]\n ]\n ]\n ]\n ]\n ]\n yield footer [] [\n button [ \n ClassName \"btn btn-primary\"\n OnClick (fun _ -> dispatch ReturnToPageList)\n HTMLAttr.Type \"button\"\n ] [ str \"Go Back\" ]\n button [ \n ClassName \"btn btn-default\"\n OnClick (fun _ -> dispatch PreviewPage)\n HTMLAttr.Type \"button\"\n ] [ str \"Preview this Page\" ]\n button [ \n ClassName \"btn btn-success\"\n OnClick (fun _ -> dispatch SavePage)\n HTMLAttr.Type \"button\"\n Disabled (String.IsNullOrWhiteSpace <| Slug.get page.Location.Id || String.IsNullOrWhiteSpace page.Location.Name || locationContainsSpaces page.Location)\n ] [ str \"Save the Page\" ] \n button [ \n ClassName \"btn btn-info\"\n OnClick (fun _ -> dispatch AddToPage)\n HTMLAttr.Type \"button\"\n ] [ str \"Add container\" ]\n button [ \n ClassName \"btn btn-danger\"\n OnClick (fun _ -> dispatch ConfirmDeletePage)\n HTMLAttr.Type \"button\"\n ] [ str \"Delete this page\" ]\n ]\n\n match pageState.Preview with\n | None -> ()\n | Some prev -> \n yield! modal \"Preview\" dispatch ClosePreview (Scaffold.renderPage (Generic prev) None) []\n \n ]\n\nlet private viewListPages (user: JWT) (pages: PageMeta list) dispatch =\n [\n yield div [ ClassName \"valign\" ] [\n yield h2 [ Style [ MarginRight \"10px\" ] ] [ str \"Pages\" ] \n yield button [ \n ClassName \"btn btn-default\" \n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch AddNewPage)\n ] [ str \"Add new Page\" ]\n ]\n match pages.Length with\n | 0 -> \n yield p [ ClassName \"bg-info\" ] [ str \"You have not yet added any pages. Click the 'Add New' button to add your first.\" ]\n | n ->\n yield div [] [ str <| sprintf \"There %s %d maintained pag%s.\" (be n) n (plural \"e\" n) ]\n yield table [ ClassName \"table\" ] [\n thead [] [\n tr [] [\n th [] [ str \"Page Name\" ]\n th [] []\n ]\n ]\n tbody [] [\n yield! pages |> List.map (fun meta -> \n tr [] [ \n td [] [ \n yield str meta.Location.Name \n \n if meta.IsLandingPage then\n yield span [\n ClassName \"label label-info\";\n Style[MarginLeft \"1em\"]\n ] [str \"Landing Page\"]\n ]\n td [] [ \n a [ Href (sprintf \"#areas/%s/pages/%s\" (TenantRef.get user.Account.Tenant) (Slug.get meta.Location.Id)); Target \"_blank\" ] [ str \"Go to\" ]\n a [ jsVoid; OnClick (fun _ -> dispatch (PageClicked(meta.Location.Id, Edit))) ] [ str \"Edit\" ]\n a [ jsVoid; OnClick (fun _ -> dispatch (PageClicked(meta.Location.Id, Delete))) ] [ str \"Delete\" ]\n ] \n ])\n ]\n ]\n \n ] \n\n\n\nlet view (model: Model) dispatch =\n let toggle renderer =\n function\n | Loading _ -> [ str \"Loading...\" ]\n | Loaded x -> renderer model.User x dispatch\n \n let ret =\n match model.Action with\n | Editing state -> toggle viewEditPage state \n | Listing state -> toggle viewListPages state\n \n match model.ShowConfirmDelete with\n | false -> ret\n | true -> \n let m = \n modal \"Confirm Deletion\" dispatch CancelDeletion [\n p [] [ str \"Are you sure you wish to delete this page?\" ]\n ] [\n button [ \n ClassName \"btn btn-danger\"; \n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ConfirmedPageDeletion) \n ] [ str \"Confirm Deletion\" ]\n button [ \n ClassName \"btn btn-default\"; \n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch CancelDeletion); Keyboard.onEscape CancelDeletion dispatch\n ] [ str \"Cancel\" ]\n ]\n m@ret\n\nlet replaceTextBlock (page: GenericPage) replaceWith =\n { page with \n TextBlocks = \n [\n for block in page.TextBlocks do\n if TextBlock.Id block <> TextBlock.Id replaceWith then \n yield block\n else\n yield replaceWith\n ]\n }\n\nlet swapTextBlock (page: GenericPage) block direction =\n { page with TextBlocks = Elements.swapById (TextBlock.Id) direction block (page.TextBlocks) }\n\nlet swapBlock id direction blocks =\n Elements.swapId (Block.GetId) direction id blocks\n\nlet removeTextBlock (page: GenericPage) id =\n { page with \n TextBlocks = \n page.TextBlocks |> List.filter (TextBlock.Id >> ((<>) id))\n }\n\nlet replaceBlock repl id (blocks: Block list) =\n [\n for block in blocks do\n if block.Id <> id then\n yield block\n else\n yield repl block\n ]\n\nlet removeBlock id (blocks: Block list) =\n blocks |> List.filter (Block.GetId >> ((<>) id))\n\nlet replaceContentBlock replacementBlock = replaceBlock (fun block -> { block with Content = replacementBlock })\n\nlet findTextBlock (page: GenericPage) id =\n page.TextBlocks |> List.find (fun x -> TextBlock.Id x = id)\n\nlet findContentBlock (blocks: Block list) id =\n blocks |> List.find (fun x -> x.Id = id)\n\nlet replaceStyle (repl: IThemeItem) (theme: Theme) =\n let matcher = getThemeMatcher repl\n List.Cons(repl, theme |> List.filter(matcher >> FSharp.Core.Option.isNone))\n\nlet newBlock() =\n {\n Id = Guid.NewGuid()\n Header = None\n Content = RawText \"\"\n Theme = []\n Justification = Justification.LeftAligned\n }\n\nlet newImageBlock() =\n {\n Url = \"\";\n HoverText = \"\"\n Alt = \"\";\n }\n\nlet appendBlock list = list @ [ newBlock() ]\n\n/// Reusable sugar method to make a perform a change to the edit page\nlet private editing model modifier cmd success =\n match model.Action with\n | Editing (Loaded pageState) -> \n modifier model pageState, (cmd model pageState), (success pageState)\n | _ -> failwith \"Invalid action\"\n\n/// Reusable sugar method to make a perform a change to the edit page that does not stop editing\nlet private editingAction model modifier cmd success =\n editing model (fun m pageState -> { m with Action = Editing (Loaded(modifier pageState)) }) cmd success\n\n/// Reusable sugar method to make a perform a change to the edit page without a change of success message\nlet private editingActionU model modifier cmd = editingAction model modifier cmd (fun _ -> Unchanged)\n\n/// Reusable sugar method to make a change to a list of blocks within a container\nlet modifyBlockList model scope id replacer =\n editingActionU model (fun ps ->\n let newBlock = \n findTextBlock ps.Page scope \n |> TextBlock.MapList (replacer id)\n { ps with Page = replaceTextBlock ps.Page newBlock }\n ) (fun _ _ -> [])\n\n/// Reusable sugar method to make a change to a specific block within a container\nlet private modifyBlock model scope id replacer =\n modifyBlockList model scope id (replaceBlock replacer)\n\nlet update (msg:Msg) model : Model*Cmd* SuccessMessageChange = \n match msg with\n | CancelDeletion -> { model with ShowConfirmDelete = false }, [], Unchanged\n | ConfirmedPageDeletion -> editingActionU model id (fun _ x -> deletePageCmd model.User x.Page.Location.Id)\n | PageDeleted ->\n editingAction model id (fun _ _ -> Cmd.ofMsg ReturnToPageList) (fun x -> Show (sprintf \"The page '%s' was deleted.\" x.Page.Location.Name))\n | ConfirmDeletePage -> editing model (fun m _ -> { m with ShowConfirmDelete = true }) (fun _ _ -> []) (fun _ -> Unchanged)\n | AddNewPage ->\n match model.Action with\n | Listing (Loaded _) -> \n let newPage = \n { \n IdentifierWhenLoaded = \"\"\n WarnIdentifier = false\n Page = \n {\n Location = { Id = Slug \"\"; Name = \"New Page\"; }\n Tenant = model.User.Account.Tenant\n Header = None\n BannerImage = None\n TextBlocks = []\n Theme = [ Background \"white\"]\n PageWidth = PageWidth.Centered\n IsLandingPage = false\n } \n Preview = None\n ShowingFilePicker = false\n Files = []\n SelectedFile = None\n LinkTarget = None\n }\n { model with Action = Editing (Loaded newPage) }, [], Unchanged\n | _ -> failwith \"Invalid action\"\n | LoadedFiles files ->\n let grouped =\n let today = System.DateTime.Today\n files |> List.groupBy (fun x -> \n match x.DateUploaded.Date with \n | d when d = today -> \"Uploaded today\"\n | d when d >= today.AddDays(-7.) -> \"Uploaded this week\"\n | d when d >= today.AddDays(-31.) -> \"Uploaded within a month\"\n | _ -> \"Older\"\n )\n let selected = if files.Length > 0 then Some files.[0] else None\n editingActionU model (fun ps -> { ps with ShowingFilePicker = true; Files = grouped; SelectedFile = selected }) (fun _ _ -> [])\n | SelectFile file ->\n editingActionU model (fun ps -> { ps with SelectedFile = Some file }) (fun _ _ -> [])\n | ShowFilePicker (scopeId, id, target) ->\n editingActionU model (fun ps -> { ps with LinkTarget = Some (scopeId, id, target) }) (fun _ _ -> getFilesCmd model.User (match target with LinkEmbed.CardImage -> true | _ -> false))\n | HideFilePicker ->\n editingActionU model (fun ps -> { ps with ShowingFilePicker = false }) (fun _ _ -> [])\n | InsertButtonClicked ->\n editingActionU model (fun ps -> { ps with SelectedFile = None }) (fun m ps -> \n match ps.LinkTarget with\n | None -> []\n | Some (scopeId, id, embed) ->\n let encoded = ps.SelectedFile.Value.Name |> Fable.Core.JS.encodeURI\n let link = Urls.GetFile (TenantRef.get m.User.Account.Tenant) encoded\n \n // are we in a card or a markdown block?\n match findTextBlock ps.Page scopeId, embed with\n | CardList _, LinkEmbed.CardImage ->\n Cmd.batch [Cmd.ofMsg (CardUrlChanged(scopeId, id, link)); Cmd.ofMsg HideFilePicker ]\n | _ ->\n Cmd.batch [Cmd.ofMsg (InsertFileLink(scopeId, id, ps.SelectedFile.Value.Image, link)); Cmd.ofMsg HideFilePicker ])\n | InsertFileLink (scopeId, id, isImage, link) ->\n modifyBlock model scopeId id (fun block -> \n let linkText = \n if isImage then\n sprintf @\"![img](%s \"\"img\"\")\" link\n else\n sprintf @\"[link](%s)\" link\n let replacement =\n match block.Content with\n | Markdown str -> Markdown (str + linkText)\n | x -> x\n { block with Content = replacement })\n | SavePage -> editingActionU model id (fun m ps -> postSavePageCmd m.User ps.Page (Slug ps.IdentifierWhenLoaded))\n | PageSaved ->\n editingAction model id (fun _ _ -> Cmd.ofMsg ReturnToPageList) (fun x -> Show (sprintf \"Your changes to the page '%s' have been saved.\" x.Page.Location.Name))\n | AddToPage ->\n editingActionU model (fun ps -> { ps with Page = { ps.Page with TextBlocks = ps.Page.TextBlocks @ [SingleColumn (Guid.NewGuid(), [])] } }) (fun _ _ -> [])\n | AddToTextBlock (scope, target) ->\n editingActionU model (fun ps ->\n let newBlock = \n match findTextBlock ps.Page scope with\n | SingleColumn (id, blocks) -> SingleColumn (id, appendBlock blocks)\n | TwoColumn (id, l, r) when target = Panel1 -> TwoColumn (id, appendBlock l, r)\n | TwoColumn (id, l, r) when target = Panel2 -> TwoColumn (id, l, appendBlock r)\n | MainAndSideBar (id, l, r) when target = Panel1 -> MainAndSideBar (id, appendBlock l, r)\n | MainAndSideBar (id, l, r) when target = Panel2 -> MainAndSideBar (id, l, appendBlock r)\n | CardList (id, shape, cards) -> CardList (id, shape, (cards @ [ newImageBlock(), newBlock()]))\n | x -> x \n { ps with Page = replaceTextBlock ps.Page newBlock }) (fun _ _ -> [])\n | ChangeCardShape (scope, newShape) ->\n editingActionU model (fun ps ->\n let newBlock =\n match findTextBlock ps.Page scope with\n | CardList (id, _, cards) -> CardList(id, newShape, cards)\n | _ -> failwith \"Expected card list\"\n { ps with Page = replaceTextBlock ps.Page newBlock }) (fun _ _ -> [])\n | CardUrlChanged (scope, cardId, url) ->\n editingActionU model (fun ps ->\n let newBlock =\n match findTextBlock ps.Page scope with\n | CardList (id, shape, cards) -> \n let newCards =\n [\n for (img, content) as c in cards do\n if content.Id = cardId then\n yield { img with Url = url }, content\n else\n yield c\n ]\n CardList(id, shape, newCards)\n | _ -> failwith \"Expected card list\"\n { ps with Page = replaceTextBlock ps.Page newBlock }) (fun _ _ -> [])\n | CardAltChanged (scope, cardId, alt) ->\n editingActionU model (fun ps ->\n let newBlock =\n match findTextBlock ps.Page scope with\n | CardList (id, shape, cards) -> \n let newCards =\n [\n for (img, content) as c in cards do\n if content.Id = cardId then\n yield { img with Alt = alt }, content\n else\n yield c\n ]\n CardList(id, shape, newCards)\n | _ -> failwith \"Expected card list\"\n { ps with Page = replaceTextBlock ps.Page newBlock }) (fun _ _ -> [])\n | CardHoverTextChanged (scope, cardId, text) ->\n editingActionU model (fun ps ->\n let newBlock =\n match findTextBlock ps.Page scope with\n | CardList (id, shape, cards) -> \n let newCards =\n [\n for (img, content) as c in cards do\n if content.Id = cardId then\n yield { img with HoverText = text }, content\n else\n yield c\n ]\n CardList(id, shape, newCards)\n | _ -> failwith \"Expected card list\"\n { ps with Page = replaceTextBlock ps.Page newBlock }) (fun _ _ -> [])\n | BlockTypeChanged block -> editingActionU model (fun ps -> { ps with Page = replaceTextBlock ps.Page block }) (fun _ _ -> [])\n | BlockContentTypeChanged (scope, id, replacementBlock) -> modifyBlockList model scope id (replaceContentBlock replacementBlock)\n | HideBlockHeader (scope, id) -> modifyBlock model scope id (fun block -> { block with Header = None })\n | DeleteBlock (scope, id) -> modifyBlockList model scope id removeBlock\n | DeleteTextBlock id ->\n editingActionU model (fun ps ->\n { ps with Page = removeTextBlock ps.Page id }\n ) (fun _ _ -> [])\n | MoveTextBlock (id, direction) ->\n editingActionU model (fun ps ->\n let block = findTextBlock ps.Page id\n { ps with Page = swapTextBlock ps.Page block direction }\n ) (fun _ _ -> [])\n | MoveBlock (scope, id, direction) ->\n modifyBlockList model scope id (fun i -> swapBlock i direction)\n | BlockBackgroundColourChanged (scope, id, colour) ->\n modifyBlock model scope id (fun block -> { block with Theme = replaceStyle (Background colour) block.Theme })\n | BlockTextColourChanged (scope, id, colour) ->\n modifyBlock model scope id (fun block -> { block with Theme = replaceStyle (Colour colour) block.Theme })\n | BlockFontSizeChanged (scope, id, size) ->\n modifyBlock model scope id (fun block -> { block with Theme = replaceStyle (FontSize size) block.Theme })\n | ShowBlockHeader (scope, id) ->\n modifyBlock model scope id (fun block -> { block with Header = Some (ColourAccent.Inherited, RawText \"\") })\n | BlockHeaderColourChanged (scope, id, newColour) ->\n modifyBlock model scope id (fun block -> \n match block.Header with\n | None -> failwith \"Invalid header state\"\n | Some (_,header) ->\n { block with Header = Some (newColour, header) })\n | BlockHeaderTextChanged (scope, id, text) ->\n modifyBlock model scope id (fun block -> \n match block.Header with\n | None -> failwith \"Invalid header state\"\n | Some (colour,_) ->\n { block with Header = Some (colour, RawText text) })\n | YouTubeLinkChanged (scope, id, text) ->\n modifyBlock model scope id (fun block -> \n let newContent =\n match block.Content with\n | YouTubeEmbed (_,h,w,fs) -> YouTubeEmbed (text, h, w,fs)\n | _ -> failwith \"Invalid youtube field state\"\n { block with Content = newContent })\n | YouTubeHeightChanged (scope, id, text) ->\n modifyBlock model scope id (fun block -> \n let newContent =\n match block.Content with\n | YouTubeEmbed (link,_,w,fs) -> YouTubeEmbed (link, text, w,fs)\n | _ -> failwith \"Invalid youtube field state\"\n { block with Content = newContent })\n | YouTubeWidthChanged (scope, id, text) ->\n modifyBlock model scope id (fun block -> \n let newContent =\n match block.Content with\n | YouTubeEmbed (link,h,_,fs) -> YouTubeEmbed (link, h, text,fs)\n | _ -> failwith \"Invalid youtube field state\"\n { block with Content = newContent })\n | YouTubeFullScreenChanged (scope, id, fs) ->\n modifyBlock model scope id (fun block -> \n let newContent =\n match block.Content with\n | YouTubeEmbed (link,h,w,_) -> YouTubeEmbed (link, h,w,fs)\n | _ -> failwith \"Invalid youtube field state\"\n { block with Content = newContent })\n | BlockAlignmentChanged (scope, id, justification) ->\n modifyBlock model scope id (fun block -> { block with Justification = justification })\n | MainTitleChanged title ->\n editingActionU model (fun ps -> { ps with Page = { ps.Page with Location = { ps.Page.Location with Name = title }}}) (fun _ _ -> [])\n | MainIdentifierChanged identifier ->\n editingActionU model (fun ps -> { ps with Page = { ps.Page with Location = { ps.Page.Location with Id = identifier }}}) (fun m _ -> getPageUniquenessCmd (m.User) identifier)\n | IdentifierUniquenessChecked unique ->\n editingActionU model (fun ps -> { ps with WarnIdentifier = unique}) (fun _ _ -> [])\n | PageBackgroundColourChanged colour ->\n editingActionU model (fun ps -> { ps with Page = { ps.Page with Theme = replaceStyle (Background colour) ps.Page.Theme } }) (fun _ _ -> [])\n | DefaultTextColourChanged colour ->\n editingActionU model (fun ps -> { ps with Page = { ps.Page with Theme = replaceStyle (Colour colour) ps.Page.Theme } }) (fun _ _ -> [])\n | DefaultFontSizeChanged fs ->\n editingActionU model (fun ps -> { ps with Page = { ps.Page with Theme = replaceStyle (FontSize fs) ps.Page.Theme } }) (fun _ _ -> [])\n | ReturnToPageList ->\n { model with Action = Listing (Loading()); ShowConfirmDelete = false },getAllPagesCmd (model.User),Unchanged\n | LoadedPageList pages -> \n { model with Action = Listing (Loaded(pages)) },[],Unchanged\n | LoadedPage page ->\n let state = \n { \n Page = page; \n IdentifierWhenLoaded = (Slug.get page.Location.Id); \n WarnIdentifier = false; \n Preview = None; \n ShowingFilePicker = false; \n Files = []\n SelectedFile = None\n LinkTarget = None\n }\n { model with Action = Editing (Loaded state) }, [], Unchanged\n | PreviewPage ->\n editingActionU model id (fun _ ps -> previewPageCmd model.User.Token ps.Page)\n | PagePreviewRendered preview ->\n editingActionU model (fun ps -> { ps with Preview = Some preview }) (fun _ _ -> [])\n | ClosePreview ->\n editingActionU model (fun ps -> { ps with Preview = None }) (fun _ _ -> [])\n | PageClicked (slug, action) ->\n match action with\n | Edit ->\n { model with Action = Editing (Loading slug) }, (getPageCmd (model.User) slug), Unchanged\n | Delete ->\n { model with Action = Editing (Loading slug); ShowConfirmDelete = true }, (getPageCmd (model.User) slug), Unchanged\n | FetchError exn ->\n model,[],Unchanged\n | ToggleLandingPage ->\n editingActionU model (fun ps -> { ps with Page = {ps.Page with IsLandingPage = not ps.Page.IsLandingPage}}) (fun _ _ -> [])","module Client.AdminEditCategory\n\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Style\nopen Fable.Core.JsInterop\nopen Fetch\nopen Fable\nopen SharedCode\nopen Utils\nopen AdminShared\n\ntype Msg =\n | FetchError of exn\n | PageClicked of Domain.Location * ClickAction\n | AddNewCategory\n | SaveCategory\n | LoadedCategoryList of Domain.Location list\n | ConfirmDeleteCategory\n | ConfirmedCategoryDeletion\n | CancelDeletion\n | CategoryDeleted\n | CategorySaved\n | ReturnToCategoryList\n | IdChanged of Slug\n | NameChanged of string\n\ntype EditCategoryState =\n {\n Location: Domain.Location\n IsNew: bool\n }\n\ntype AdminCategoryAction =\n | Listing of LoadState\n | Editing of LoadState\n\ntype Model = \n { \n User: JWT;\n Action: AdminCategoryAction;\n ShowConfirmDelete: bool;\n }\n\nlet getAllCategoriesCmd (jwt: JWT) =\n let url = Urls.Categories (TenantRef.get jwt.Account.Tenant) \n FetchRequest.getWithToken url jwt.Token LoadedCategoryList FetchError\n\nlet postSaveCategoryCmd (jwt: JWT) (location: Domain.Location) = \n let url = Urls.Categories (TenantRef.get jwt.Account.Tenant)\n FetchRequest.postWithToken url location jwt.Token (fun _ -> CategorySaved) FetchError\n\nlet deletePageCmd (jwt: JWT) id = \n let url = Urls.CategoryById (TenantRef.get jwt.Account.Tenant) (Slug.get id)\n FetchRequest.deleteWithToken url () jwt.Token (fun _ -> CategoryDeleted) FetchError\n\nlet init user = \n {\n User = user\n ShowConfirmDelete = false\n Action = Listing (Loading ())\n }, getAllCategoriesCmd user\n\nlet private editing model modifier cmd success =\n match model.Action with\n | Editing (Loaded pageState) -> \n modifier model pageState, (cmd model pageState), (success pageState)\n | _ -> failwith \"Invalid action\"\n\nlet private editingAction model modifier cmd success =\n editing model (fun m pageState -> { m with Action = Editing (Loaded(modifier pageState)) }) cmd success\n\nlet private editingActionU model modifier cmd = editingAction model modifier cmd (fun _ -> Unchanged)\n\nlet update (msg:Msg) model : Model*Cmd* SuccessMessageChange = \n match msg with\n | SaveCategory -> editingActionU model id (fun m ps -> postSaveCategoryCmd model.User ps.Location)\n | AddNewCategory ->\n match model.Action with\n | Listing (Loaded _) -> \n let newCategory = \n { \n Location = \n {\n Id = Slug \"\"\n Name = \"\"\n }\n IsNew = true\n }\n { model with Action = Editing (Loaded newCategory) }, [], Unchanged\n | _ -> failwith \"Invalid action\"\n | PageClicked (slug, action) ->\n match action with\n | Edit ->\n { model with Action = Editing (Loaded { Location = slug; IsNew = false }) }, [], Unchanged\n | Delete ->\n { model with Action = Editing (Loaded { Location = slug; IsNew = false }); ShowConfirmDelete = true }, [], Unchanged\n | LoadedCategoryList categories ->\n { model with Action = Listing (Loaded categories) }, [], Unchanged\n | IdChanged slug ->\n editingActionU model (fun ps -> { ps with Location = { ps.Location with Id = slug }}) (fun _ _ -> [])\n | NameChanged name ->\n editingActionU model (fun ps -> { ps with Location = { ps.Location with Name = name }}) (fun _ _ -> [])\n | CancelDeletion -> { model with ShowConfirmDelete = false }, [], Unchanged\n | ConfirmedCategoryDeletion -> \n editingActionU model id (fun _ x -> deletePageCmd model.User x.Location.Id)\n | CategoryDeleted ->\n editingAction model id (fun _ _ -> Cmd.ofMsg ReturnToCategoryList) (fun x -> Show (sprintf \"The page '%s' was deleted.\" x.Location.Name))\n | ConfirmDeleteCategory -> editing model (fun m _ -> { m with ShowConfirmDelete = true }) (fun _ _ -> []) (fun _ -> Unchanged)\n | CategorySaved ->\n editingAction model id (fun _ _ -> Cmd.ofMsg ReturnToCategoryList) (fun x -> Show (sprintf \"Your changes to the category '%s' have been saved.\" x.Location.Name))\n | ReturnToCategoryList ->\n { model with Action = Listing (Loading()); ShowConfirmDelete = false },getAllCategoriesCmd (model.User),Unchanged\n | FetchError exn ->\n model,[],Unchanged\n\nlet view model dispatch =\n match model.Action with\n | Listing loadstate ->\n match loadstate with\n | Loading () -> \n [\n yield div [ ClassName \"valign\" ] [\n yield h2 [ Style [ MarginRight \"10px\" ] ] [ str \"Categories\" ] \n yield button [ \n ClassName \"btn animated-background\" \n HTMLAttr.Type \"button\"\n ] [ str \"Add new category\" ]\n ]\n yield div [] [ str \"There are ? maintained categories\" ]\n yield table [ ClassName \"table animated-background\" ] [\n thead [] [\n tr [ ClassName \"mask\" ] [\n th [ClassName \"mask\"] [ str \"Category Id\" ]\n th [ClassName \"mask\"] [ str \"Category Display Name\" ]\n th [ClassName \"mask\"] []\n ]\n ]\n tbody [] [\n tr [] [ \n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [\n a [ jsVoid ] [ str \"Go to\" ]\n a [ jsVoid ] [ str \"Edit\" ]\n a [ jsVoid ] [ str \"Delete\" ]\n ] \n ]\n tr [] [ \n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [\n a [ jsVoid ] [ str \"Go to\" ]\n a [ jsVoid ] [ str \"Edit\" ]\n a [ jsVoid ] [ str \"Delete\" ]\n ] \n ]\n tr [] [ \n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [\n a [ jsVoid ] [ str \"Go to\" ]\n a [ jsVoid ] [ str \"Edit\" ]\n a [ jsVoid ] [ str \"Delete\" ]\n ] \n ]\n ]\n ]\n ]\n | Loaded categories ->\n [\n yield div [ ClassName \"valign\" ] [\n yield h2 [ Style [ MarginRight \"10px\" ] ] [ str \"Categories\" ] \n yield button [ \n ClassName \"btn btn-default\" \n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch AddNewCategory)\n ] [ str \"Add new category\" ]\n ]\n match categories.Length with\n | 0 -> \n yield p [ ClassName \"alert alert-info\" ] [ str \"You have not yet added any categories. Click the 'Add New' button to add your first.\" ]\n | n ->\n yield div [] [ str <| sprintf \"There %s %d maintained categor%s.\" (be n) n (plural \"y\" n) ]\n yield table [ ClassName \"table\" ] [\n thead [] [\n tr [] [\n th [] [ str \"Category Id\" ]\n th [] [ str \"Category Display Name\" ]\n th [] []\n ]\n ]\n tbody [] [\n yield! categories |> List.map (fun cat -> \n tr [] [ \n td [] [ str <| Slug.get cat.Id ]\n td [] [ str cat.Name ]\n td [] [ \n a [ Href (sprintf \"#areas/%s/pages/%s\" (TenantRef.get model.User.Account.Tenant) (Slug.get cat.Id)); Target \"_blank\" ] [ str \"Go to\" ]\n a [ jsVoid; OnClick (fun _ -> dispatch (PageClicked(cat, Edit))) ] [ str \"Edit\" ]\n a [ jsVoid; OnClick (fun _ -> dispatch (PageClicked(cat, Delete))) ] [ str \"Delete\" ]\n ] \n ])\n ]\n ]\n \n ]\n | Editing loadstate -> \n [ \n match loadstate with\n | Loaded state ->\n let location = state.Location\n\n yield form [] [\n formGroup [\n yield label [ HtmlFor \"categoryId\"; ClassName \"mandatory\" ] [ str \"Category Id\" ]\n if state.IsNew then\n yield textInput \"categoryId\" \"Enter the category id / reference.\" (Slug >> IdChanged) dispatch (Slug.get location.Id) (Some 200.)\n if locationContainsSpaces location then\n yield div [ ClassName \"alert alert-danger\"; Role \"alert\" ] [ str \"The category id cannot contain spaces\" ] \n else\n yield p [ ClassName \"form-control-static\" ] [ str <| Slug.get location.Id ]\n ]\n formGroup [\n label [ HtmlFor \"name\"; ClassName \"mandatory\" ] [ str \"Display Name\" ]\n textInput \"name\" \"Enter the display name.\" NameChanged dispatch (location.Name) (Some 500.)\n ]\n ]\n yield footer [] [\n button [ \n ClassName \"btn btn-primary\"\n OnClick (fun _ -> dispatch ReturnToCategoryList)\n ] [ str \"Go Back\" ]\n button [ \n ClassName \"btn btn-success\"\n OnClick (fun _ -> dispatch SaveCategory)\n Disabled (System.String.IsNullOrWhiteSpace <| Slug.get location.Id || System.String.IsNullOrWhiteSpace location.Name || locationContainsSpaces location )\n ] [ str \"Save the Category\" ] \n button [ \n ClassName \"btn btn-danger\"\n OnClick (fun _ -> dispatch ConfirmDeleteCategory)\n ] [ str \"Delete this category\" ]\n ]\n match model.ShowConfirmDelete with\n | false -> ()\n | true -> \n yield! modal \"Confirm Deletion\" dispatch CancelDeletion [\n p [] [ str \"Are you sure you wish to delete this category? No pages will be modified, but the menu items will no longer be formatted.\" ]\n ] [\n button [ ClassName \"btn btn-danger\"; OnClick (fun _ -> dispatch ConfirmedCategoryDeletion) ] [ str \"Confirm Deletion\" ]\n button [ ClassName \"btn btn-default\"; OnClick (fun _ -> dispatch CancelDeletion); Keyboard.onEscape CancelDeletion dispatch] [ str \"Cancel\" ]\n ]\n | Loading location -> yield str \"Loading...\"\n ]\n","module Client.AdminEditUsers\n\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Style\nopen Fable.Core.JsInterop\nopen Fetch\nopen Fable\nopen SharedCode\nopen Utils\nopen AdminShared\nopen Fable.Import\n\ntype Msg =\n | FetchError of exn\n | DeleteError of exn\n | PageClicked of User * ClickAction\n | AddNewUser\n | SaveUser\n | EditPassword\n | SaveNewPassword\n | EditEmail\n | StopEditingEmail\n | SaveNewEmail\n | LoadedUserList of Domain.User list\n | ConfirmDelete\n | ConfirmedDeletion\n | CancelDeletion\n | UserDeleted\n | UserCreationResponse of Validated\n | UserDeletionResponse of Validated\n | UserEmailResponse of Validated\n | UserAdded\n | PasswordUpdated\n | EmailUpdated\n | ReturnToUserList\n | UsernameChanged of string\n | EmailChanged of string\n\ntype EditUserState =\n {\n User: Domain.User\n NewPassword: string\n NewEmail: string\n EditingEmail: bool\n Username: string\n IsNew: bool\n SaveErrors: string list\n DeleteError: string\n EmailError: string\n }\n\ntype AdminUserAction =\n | Listing of LoadState\n | Editing of LoadState \n\ntype Model =\n {\n User: JWT\n Action: AdminUserAction\n ShowConfirmDelete: bool\n }\n\nlet getAllUsersCmd (jwt: JWT) =\n let url = Urls.Users (TenantRef.get jwt.Account.Tenant)\n FetchRequest.getWithToken url jwt.Token LoadedUserList FetchError\n\nlet postSaveUserCmd (jwt: JWT) username email = \n let tenant = TenantRef.get jwt.Account.Tenant\n let user = { Id = 0; Email = email; EmailHash = \"\"; Username = username; Tenant = TenantRef tenant }\n let url = Urls.Users tenant\n FetchRequest.postWithToken url user jwt.Token UserCreationResponse FetchError\n\nlet postSaveEmailCmd (jwt: JWT) username (email: string) = \n let url = Urls.UserEmail (TenantRef.get jwt.Account.Tenant) username\n FetchRequest.postWithToken url email jwt.Token UserEmailResponse FetchError\n\nlet deleteUserCmd (jwt: JWT) username = \n let url = Urls.UserByName (TenantRef.get jwt.Account.Tenant) username\n FetchRequest.deleteWithToken url username jwt.Token UserDeletionResponse DeleteError\n\nlet init user = \n {\n User = user\n ShowConfirmDelete = false\n Action = Listing (Loading ())\n }, getAllUsersCmd user\n\nlet private editing model modifier (cmd: Model -> EditUserState -> Cmd) success =\n match model.Action with\n | Editing (Loaded pageState) -> \n modifier model pageState, cmd model pageState, (success pageState)\n | _ -> failwith \"Invalid action\"\n\nlet private editingAction model modifier cmd success =\n editing model (fun m pageState -> { m with Action = Editing (Loaded(modifier pageState)) }) cmd success\n\nlet private editingActionU model modifier cmd = editingAction model modifier cmd (fun _ -> Unchanged)\n\nlet dispatchSuccess result msg _ _ =\n match result with \n | Success -> Cmd.ofMsg msg \n | _ -> []\n\nlet update (msg:Msg) model : Model*Cmd* SuccessMessageChange = \n match msg with\n | LoadedUserList users ->\n { model with Action = Listing (Loaded users) }, [], Unchanged \n | ReturnToUserList ->\n { model with Action = Listing (Loading()); ShowConfirmDelete = false },getAllUsersCmd (model.User),Unchanged\n | AddNewUser ->\n match model.Action with\n | Listing (Loaded _) -> \n let newUser =\n { \n Id = 0\n Username = \"\"\n Tenant = model.User.Account.Tenant\n Email = \"\"\n EmailHash = \"\"\n }\n { model with Action = Editing (Loaded { User = newUser; NewPassword = \"\"; NewEmail = \"\"; Username = \"\"; EditingEmail = false; IsNew = true; EmailError = \"\"; DeleteError = \"\"; SaveErrors = [] }) }, [], Unchanged\n | _ -> failwith \"Invalid action\"\n | SaveUser -> \n editingActionU model id (fun m ps -> postSaveUserCmd m.User ps.Username ps.NewEmail)\n | SaveNewEmail -> \n editingActionU model id (fun m ps -> postSaveEmailCmd m.User ps.User.Username ps.NewEmail)\n | UserCreationResponse result -> \n editingActionU model (fun m -> { m with SaveErrors = match result with Success -> [] | Failure msgs -> msgs }) (dispatchSuccess result UserAdded)\n | UserDeletionResponse result -> \n editingActionU model (fun m -> { m with DeleteError = match result with Success -> \"\" | Failure msgs -> msgs.[0] }) (dispatchSuccess result UserDeleted)\n | UserEmailResponse result -> \n editingActionU model (fun m -> { m with EmailError = match result with Success -> \"\" | Failure msgs -> msgs.[0] }) (dispatchSuccess result EmailUpdated)\n | EmailChanged email -> editingActionU model (fun m -> { m with NewEmail = email }) (fun _ _ -> [])\n | UsernameChanged username -> editingActionU model (fun m -> { m with Username = username }) (fun _ _ -> [])\n | ConfirmDelete -> editingActionU { model with ShowConfirmDelete = true } (fun m -> { m with DeleteError = \"\" }) (fun _ _ -> [])\n | CancelDeletion -> { model with ShowConfirmDelete = false }, [], Unchanged\n | EditEmail -> editingActionU model (fun m -> { m with EmailError = \"\"; EditingEmail = true; NewEmail = m.User.Email }) (fun _ _ -> [])\n | StopEditingEmail -> editingActionU model (fun state -> { state with EmailError = \"\"; EditingEmail = false }) (fun _ _ -> [])\n | ConfirmedDeletion -> \n editingActionU model id (fun _ x -> deleteUserCmd model.User x.User.Username)\n | UserAdded ->\n editingAction model id (fun _ _ -> Cmd.ofMsg ReturnToUserList) (fun x -> Show (sprintf \"The user '%s' was added.\" x.Username))\n | EmailUpdated ->\n editingAction model (fun ps -> { ps with EditingEmail = false; User = { ps.User with Email = ps.NewEmail } }) (fun _ _ -> []) (fun _ -> Show (\"The email address was updated.\"))\n | UserDeleted ->\n editingAction model id (fun _ _ -> Cmd.ofMsg ReturnToUserList) (fun x -> Show (sprintf \"The user '%s' was deleted.\" x.User.Username))\n | PageClicked (user, action) ->\n match action with\n | Edit ->\n { model with Action = Editing (Loaded { User = user; NewPassword = \"\"; NewEmail = \"\"; Username = \"\"; EditingEmail = false; IsNew = false; EmailError = \"\"; DeleteError = \"\"; SaveErrors = [] }) }, [], Unchanged\n | Delete ->\n { model with Action = Editing (Loaded { User = user; NewPassword = \"\"; NewEmail = \"\"; Username = \"\"; EditingEmail = false; IsNew = false; EmailError = \"\"; DeleteError = \"\"; SaveErrors = [] }); ShowConfirmDelete = true}, [], Unchanged\n | FetchError exn ->\n model,[],Unchanged\n | DeleteError exn ->\n editingActionU model (fun m -> { m with DeleteError = exn.Message; }) (fun _ _ -> [])\n\n\nlet isEmpty = System.String.IsNullOrWhiteSpace\nlet notEmpty = System.String.IsNullOrWhiteSpace >> not\n\nlet view model dispatch =\n match model.Action with\n | Listing loadstate ->\n match loadstate with\n | Loading () -> \n [\n yield div [ ClassName \"valign\" ] [\n yield h2 [ Style [ MarginRight \"10px\" ] ] [ str \"Users\" ] \n yield button [ \n ClassName \"btn animated-background\" \n HTMLAttr.Type \"button\"\n ] [ str \"Add new user\" ]\n ]\n yield div [] [ str \"There are ? maintained users\" ]\n yield table [ ClassName \"table animated-background\" ] [\n thead [] [\n tr [ ClassName \"mask\" ] [\n th [ClassName \"mask\"] [ str \"Username\" ]\n th [ClassName \"mask\"] [ str \"Email\" ]\n th [ClassName \"mask\"] []\n ]\n ]\n tbody [] [\n tr [] [ \n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [\n a [ jsVoid ] [ str \"Edit\" ]\n a [ jsVoid ] [ str \"Delete\" ]\n ] \n ]\n tr [] [ \n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [\n a [ jsVoid ] [ str \"Edit\" ]\n a [ jsVoid ] [ str \"Delete\" ]\n ] \n ]\n tr [] [ \n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [\n a [ jsVoid ] [ str \"Edit\" ]\n a [ jsVoid ] [ str \"Delete\" ]\n ] \n ]\n ]\n ]\n ]\n | Loaded users ->\n [\n yield div [ ClassName \"valign\" ] [\n yield h2 [ Style [ MarginRight \"10px\" ] ] [ str \"Users\" ] \n yield button [ \n ClassName \"btn btn-default\" \n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch AddNewUser)\n ] [ str \"Add new user\" ]\n ]\n match users.Length with\n | 0 -> \n yield p [ ClassName \"bg-info\" ] [ str \"You have not yet added any users. This is most unexpected.\" ]\n | n ->\n yield div [] [ str <| sprintf \"There %s %d maintained use%s.\" (be n) n (plural \"r\" n) ]\n yield table [ ClassName \"table\" ] [\n thead [] [\n tr [] [\n th [] [ str \"Username\" ]\n th [] [ str \"Email\" ]\n th [] []\n ]\n ]\n tbody [] [\n yield! users |> List.map (fun user -> \n tr [] [ \n td [] [ str user.Username ]\n td [] [ str user.Email ]\n td [] [ \n a [ jsVoid; OnClick (fun _ -> dispatch (PageClicked(user, Edit))) ] [ str \"Edit\" ]\n a [ jsVoid; OnClick (fun _ -> dispatch (PageClicked(user, Delete))) ] [ str \"Delete\" ]\n ] \n ])\n ]\n ]\n \n ]\n | Editing loadstate -> \n [ \n match loadstate with\n | Loaded state ->\n yield form [] [\n formGroup [\n yield label [ HtmlFor \"username\" ] [ str \"Username\" ]\n if state.IsNew then\n yield textInput \"username\" \"Enter the username.\" UsernameChanged dispatch state.Username (Some 200.)\n else\n yield p [ ClassName \"form-control-static\" ] [ str state.User.Username ]\n ]\n formGroup [\n label [ HtmlFor \"email\" ] [ str \"Email\" ]\n div [ ClassName \"input-group\" ] [\n if state.IsNew || state.EditingEmail then\n yield textInput \"email\" \"Enter the email address.\" EmailChanged dispatch state.NewEmail (Some 500.)\n if not state.IsNew then\n if notEmpty state.NewEmail then yield a [ ClassName \"input-group-addon\"; jsVoid; OnClick (fun _ -> dispatch SaveNewEmail) ] [ str \"save\" ]\n yield a [ ClassName \"input-group-addon\"; jsVoid; OnClick (fun _ -> dispatch StopEditingEmail) ] [ str \"cancel\" ] \n else\n yield p [ ClassName \"form-control-static\" ] [ str state.User.Email ]\n yield a [ ClassName \"input-group-addon\"; jsVoid; OnClick (fun _ -> dispatch EditEmail) ] [ str \"change\" ]\n ]\n ] \n ]\n if notEmpty state.EmailError then\n yield p [ ClassName \"alert alert-danger\" ] [ str state.EmailError ]\n if state.SaveErrors.Length > 0 then\n yield p [ ClassName \"alert alert-danger\" ] (state.SaveErrors |> List.map (fun err -> div [] [ str err ]))\n\n yield footer [] [\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ReturnToUserList)\n ] [ str \"Go Back\" ]\n if state.IsNew then\n yield button [ \n ClassName \"btn btn-success\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch SaveUser)\n Disabled (isEmpty state.NewEmail || isEmpty state.Username)\n ] [ str \"Save the User\" ] \n else\n yield button [ \n ClassName \"btn btn-danger\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ConfirmDelete)\n ] [ str \"Delete this user\" ]\n ]\n match model.ShowConfirmDelete with\n | false -> ()\n | true -> \n yield! modal \"Confirm Deletion\" dispatch CancelDeletion [\n yield p [] [ str \"Are you sure you wish to delete this user?\" ]\n if state.DeleteError |> notEmpty then\n yield p [ ClassName \"alert alert-danger\" ] [ str state.DeleteError ]\n ] [\n button [ ClassName \"btn btn-danger\"; HTMLAttr.Type \"button\";OnClick (fun _ -> dispatch ConfirmedDeletion) ] [ str \"Confirm Deletion\" ]\n button [ ClassName \"btn btn-default\"; HTMLAttr.Type \"button\";OnClick (fun _ -> dispatch CancelDeletion); Keyboard.onEscape CancelDeletion dispatch] [ str \"Cancel\" ]\n ]\n | Loading _ -> yield str \"Loading...\"\n ]","module Client.AdminEditFiles\n\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Style\nopen Fable.Core\nopen Fable.Core.JsInterop\nopen Fetch\nopen Fable\nopen SharedCode\nopen Utils\nopen AdminShared\nopen System\nopen Fable.Import\nopen Browser.Types\nopen Browser.Dom\nopen Fable.SimpleHttp\n\ntype Msg =\n | FetchError of exn \n | ShowUploadFileDialog\n | HideUploadFileDialog\n | FileClicked of id: Domain.FileMeta * ClickAction\n | FileSelected of Filename: string\n | UploadFile of Domain.FileMeta * Browser.Types.Blob\n | LoadedFileList of Domain.FileMeta list\n | ConfirmedFileDeletion\n | CancelDeletion\n | FileDeleted\n | FileUploaded\n | FileUploadResponse of Validated\n | FileUploadError of string\n | ReturnToFileList\n\ntype FileState =\n {\n File: Domain.FileMeta\n IsNew: bool\n }\n\ntype AdminFileAction =\n | Listing of LoadState\n | Editing of LoadState\n\ntype Model = \n { \n User: JWT;\n Action: AdminFileAction;\n ShowConfirmDelete: bool;\n ShowAddNew: bool\n Filename: string option\n Processing: bool\n FileBeingDeleted: FileMeta option\n ErrorMessages: string list\n }\n\n[]\nlet private getFile (ele:HTMLElement) : Blob = jsNative\n\nlet postUploadFile (tenant: string, token, file: Blob): JS.Promise =\n promise {\n let url = Urls.Files tenant\n let formData = FormData.create()\n formData.append(\"file\", file)\n let props = \n [\n RequestProperties.Method Fetch.Types.HttpMethod.POST\n RequestProperties.Credentials RequestCredentials.Sameorigin\n RequestProperties.Body !!formData\n Fetch.requestHeaders [\n HttpRequestHeaders.Authorization (\"Bearer \" + token)\n ]\n ]\n return! Thoth.Fetch.Fetch.post(url, properties=props)\n }\n\nlet getAllFilesCmd (jwt: JWT) =\n let url = Urls.Files (TenantRef.get jwt.Account.Tenant)\n FetchRequest.getWithToken url jwt.Token LoadedFileList FetchError\n\nlet uploadFileCmd (jwt: JWT) file = \n Cmd.OfPromise.either postUploadFile (TenantRef.get jwt.Account.Tenant, jwt.Token, file) FileUploadResponse FetchError\n\nlet deleteFileCmd (jwt: JWT) (filename: string) = \n let url = Urls.Files (TenantRef.get jwt.Account.Tenant)\n FetchRequest.deleteWithToken url filename jwt.Token (fun _ -> FileDeleted) FetchError\n\nlet init user = \n {\n User = user\n ShowConfirmDelete = false\n ShowAddNew = false\n Action = Listing (Loading ())\n Filename = None\n Processing = false\n FileBeingDeleted = None\n ErrorMessages = []\n }, getAllFilesCmd user\n\nlet private editing model modifier cmd success =\n match model.Action with\n | Editing (Loaded pageState) -> \n modifier model pageState, (cmd model pageState), (success pageState)\n | _ -> failwith \"Invalid action\"\n\nlet private editingAction model modifier cmd success =\n editing model (fun m pageState -> { m with Action = Editing (Loaded(modifier pageState)) }) cmd success\n\nlet private editingActionU model modifier cmd = editingAction model modifier cmd (fun _ -> Unchanged)\n\nlet update (msg:Msg) model : Model*Cmd* SuccessMessageChange = \n match msg with\n | UploadFile(meta, blob) -> \n if blob.size >= 10_000_000 then\n { model with ErrorMessages = [\"The maximum file size is 10 mb.\"] }, [], Unchanged\n else\n model, uploadFileCmd model.User blob, Unchanged\n | FileUploadError err ->\n { model with ErrorMessages = [err] }, [], Unchanged\n | FileClicked (file, action) ->\n match action with\n | Edit ->\n { model with ErrorMessages = []; Action = Editing (Loaded { File = file; IsNew = false }) }, [], Unchanged\n | Delete ->\n { model with ErrorMessages = []; ShowConfirmDelete = true; FileBeingDeleted = Some file }, [], Unchanged \n | LoadedFileList files ->\n { model with Action = Listing (Loaded files) }, [], Unchanged \n | CancelDeletion -> \n { model with ShowConfirmDelete = false; FileBeingDeleted = None; }, [], Unchanged\n | ConfirmedFileDeletion -> \n let filename = match model.FileBeingDeleted with Some f -> f.Name | None -> failwithf \"Invalid state\"\n model, deleteFileCmd model.User filename, Unchanged\n | FileDeleted ->\n let filename = match model.FileBeingDeleted with Some m -> m.Name | None -> failwith \"Invalid state\"\n { model with FileBeingDeleted = None; ShowConfirmDelete = false }, Cmd.ofMsg ReturnToFileList, Show (sprintf \"The file '%s' was deleted.\" filename)\n | FileUploaded ->\n let filename = match model.Filename with Some m -> m | None -> \"???\"\n { model with ShowAddNew = false; Filename = None }, Cmd.ofMsg ReturnToFileList, Show (sprintf \"The file '%s' has been uploaded.\" filename)\n | ReturnToFileList ->\n { model with Action = Listing (Loading()); ShowConfirmDelete = false },getAllFilesCmd (model.User),Unchanged\n | FetchError exn ->\n { model with ErrorMessages = [ exn.Message ] },[],Unchanged\n | ShowUploadFileDialog -> \n { model with ShowAddNew = true; Filename = None; ErrorMessages = [] }, [], Unchanged\n | HideUploadFileDialog -> \n { model with ShowAddNew = false; Filename = None }, [], Unchanged\n | FileSelected name ->\n { model with Filename = Some name; }, [], Unchanged\n | FileUploadResponse result ->\n match result with\n | Success -> model, Cmd.ofMsg FileUploaded, Unchanged\n | Failure msgs -> { model with ErrorMessages = msgs }, [], Unchanged\n\n\nlet private spinner() = i [ ClassName \"glyphicon glyphicon-cog\" ] []\n\nlet view model (dispatch: Msg -> unit) =\n match model.Action with\n | Listing loadstate ->\n match loadstate with\n | Loading () -> \n [\n yield div [ ClassName \"valign\" ] [\n yield h2 [ Style [ MarginRight \"10px\" ] ] [ str \"Uploaded Files\" ] \n yield button [ \n ClassName \"btn animated-background\" \n HTMLAttr.Type \"button\"\n ] [ str \"Upload a file\" ]\n ]\n yield div [] [ str \"There are ? uploaded files\" ]\n yield table [ ClassName \"table animated-background\" ] [\n thead [] [\n tr [ ClassName \"mask\" ] [\n th [ClassName \"mask\"] []\n th [ClassName \"mask\"] [ str \"Filename\" ]\n th [ClassName \"mask\"] [ str \"Size\" ]\n th [ClassName \"mask\"] [ str \"Uploaded\" ]\n th [ClassName \"mask\"] []\n ]\n ]\n tbody [] [\n tr [] [ \n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [ str \" \"]\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\n a [ jsVoid ] [ str \"Go to\" ]\n a [ jsVoid ] [ str \"Edit\" ]\n a [ jsVoid ] [ str \"Delete\" ]\n ] \n ]\n tr [] [ \n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [ str \" \"]\n td [] [ str \" \"]\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\n a [ jsVoid ] [ str \"Go to\" ]\n a [ jsVoid ] [ str \"Edit\" ]\n a [ jsVoid ] [ str \"Delete\" ]\n ] \n ]\n tr [] [ \n td [] [ str \" \"]\n td [] [ str \" \"]\n td [ Style [ TextAlign TextAlignOptions.Right ] ] [\n a [ jsVoid ] [ str \"Go to\" ] \n a [ jsVoid ] [ str \"Edit\" ]\n a [ jsVoid ] [ str \"Delete\" ]\n ] \n ]\n ]\n ]\n ]\n | Loaded files ->\n [\n yield div [ ClassName \"valign\" ] [\n yield h2 [ Style [ MarginRight \"10px\" ] ] [ str \"Uploaded Files\" ] \n yield button [ \n ClassName \"btn btn-default\" \n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ShowUploadFileDialog)\n ] [ str \"Upload a file\" ]\n ]\n match files.Length with\n | 0 -> \n yield p [ ClassName \"bg-info\" ] [ str \"You have not yet uploaded any files. Click the 'Upload a file' button to add your first.\" ]\n | n ->\n yield div [] [ str <| sprintf \"There %s %d uploaded fil%s.\" (be n) n (plural \"e\" n) ]\n yield table [ ClassName \"table thumbs\" ] [\n thead [] [\n tr [] [\n th [] []\n th [] [ str \"Filename\" ]\n th [] [ str \"Size\" ]\n th [] [ str \"Uploaded\" ]\n th [] []\n ]\n ]\n tbody [] [\n yield! files |> List.map (fun file -> \n tr [] [ \n td[] [ \n if file.Thumbnail = \"\" then\n ()\n else\n yield img [ \n HTMLAttr.Height \"32px\"\n HTMLAttr.Width \"32px\"\n Alt \"thumbnail\"\n Src (sprintf \"data:image/png;base64,%s\" file.Thumbnail)\n ] \n ]\n td [] [ str file.Name ]\n td [] [ str <| sprintf \"%d KB\" (file.Size / 1000) ]\n td [] [ str <| file.DateUploaded.ToString(\"dd/MMM/yyyy\") ]\n td [] [ \n a [ jsVoid; OnClick (fun _ -> dispatch (FileClicked(file, Delete))) ] [ str \"Delete\" ]\n ] \n ])\n ]\n ]\n\n if model.ShowAddNew then\n yield! modal \"Upload a file\" dispatch HideUploadFileDialog [\n yield div [ ClassName \"centerflex\" ] [\n button [\n Style [\n Width \"150px\"\n ]\n OnClick (fun _ -> \n let upload = document.getElementById \"csvUpload\"\n upload.click()\n )\n ClassName \"btn btn-info\"\n HTMLAttr.Type \"button\"\n ] [ str \"Browse\" ]\n input [ \n HTMLAttr.Type \"text\" \n HTMLAttr.Value (match model.Filename with None -> \"No file selected\" | Some name -> name)\n Disabled true\n Style [\n Width \"100%\"\n MarginLeft \"10px\"\n MarginRight \"10px\"\n Height \"34px\"\n LineHeight \"34px\"\n ]\n ]\n input [ \n Id \"csvUpload\"\n HTMLAttr.Type \"file\"\n Placeholder \"Import a csv file\"\n OnChange (fun ev -> \n let file = getFile !!ev.target\n dispatch (FileSelected !!file?name)\n )\n Style [\n Display DisplayOptions.None\n ]\n ]\n button [\n Style [\n Width \"150px\"\n ]\n OnClick (fun _ ->\n let upload = document.getElementById \"csvUpload\"\n let file = getFile upload\n dispatch (UploadFile ({ Name = !!file?name; Size = !!file?size; DateUploaded = System.DateTime.UtcNow; Thumbnail = \"\"; Image = false }, file)))\n Disabled (model.Filename.IsNone)\n ClassName \"btn btn-default\"\n HTMLAttr.Type \"button\"\n\n ] [ \n if model.Processing then yield spinner()\n else yield str \"Upload file\"; \n ] \n ]\n if model.ErrorMessages.Length > 0 then\n yield ul [ ClassName \"alert alert-danger\" ] (model.ErrorMessages |> List.map (fun x -> li [] [ str x ]))\n ] []\n match model.ShowConfirmDelete with\n | false -> ()\n | true -> \n yield! modal \"Confirm Deletion\" dispatch CancelDeletion [\n yield p [] [ str \"Are you sure you wish to delete this file upload? No pages will be modified - anything that links to this file will now have a broken link.\" ]\n\n if model.ErrorMessages.Length > 0 then\n yield ul [ ClassName \"alert alert-danger\" ] (model.ErrorMessages |> List.map (fun x -> li [] [ str x ]))\n\n ] [\n button [ ClassName \"btn btn-danger\";HTMLAttr.Type \"button\"; OnClick (fun _ -> dispatch ConfirmedFileDeletion) ] [ str \"Confirm Deletion\" ]\n button [ ClassName \"btn btn-default\"; HTMLAttr.Type \"button\";OnClick (fun _ -> dispatch CancelDeletion); Keyboard.onEscape CancelDeletion dispatch] [ str \"Cancel\" ]\n ]\n ]\n","module Client.AdminHelpPacks\n\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Style\nopen Fable.Core.JsInterop\nopen Fetch\nopen Fable\nopen SharedCode\nopen Utils\nopen AdminShared\n\ntype Target =\n | Alcohol\n | Amphetamine\n | Cocaine\n | Ecstasy\n | Ketamine\n | Cannabis\n | Opiates\n | Crack\n | PrescribedOrOverTheCounter\n | Spice\n | OtherDrug\n\ntype Msg =\n | FetchError of exn\n | SetAlcohol of string*string\n | SetAmphetamines of string*string\n | SetCocaine of string*string\n | SetEcstasy of string*string\n | SetKetamine of string*string\n | SetCannabis of string*string\n | SetOpiates of string*string\n | SetCrack of string*string\n | SetPrescribedOrOverTheCounter of string*string\n | SetSpice of string*string\n | SetOtherDrug of string*string\n | Loaded of HelpPacks.PackDownloads\n | LoadedFiles of FileMeta list\n | SelectFile of FileMeta\n | InsertButtonClicked\n | ShowFilePicker of Target\n | ClearPack of Target\n | HideFilePicker\n | SavePacks\n | PacksSaved\n\ntype Model = \n { \n User: JWT;\n Loaded: bool\n Packs: HelpPacks.PackDownloads\n ShowingFilePicker: bool\n Files: (string * FileMeta list) list\n SelectedFile: FileMeta option\n Target: Target option\n }\n\nlet getFilesCmd (jwt: JWT) =\n let url = Urls.Files (TenantRef.get jwt.Account.Tenant)\n FetchRequest.getWithToken url jwt.Token LoadedFiles FetchError\n\nlet getPacksCmd (jwt: JWT) =\n let url = Urls.HelpPacks (TenantRef.get jwt.Account.Tenant)\n FetchRequest.getWithToken url jwt.Token Loaded FetchError\n\nlet postSavePacksCmd (jwt: JWT) (packs: HelpPacks.PackDownloads) = \n let url = Urls.HelpPacks (TenantRef.get jwt.Account.Tenant)\n FetchRequest.postWithToken url packs jwt.Token (fun _ -> PacksSaved) FetchError\n\nlet init user = \n {\n User = user\n Loaded = false\n Packs = \n { \n Alcohol = (\"\",\"\"); \n Amphetamines = (\"\",\"\"); \n Cocaine = (\"\",\"\"); \n Ecstasy = (\"\",\"\"); \n Ketamine = (\"\",\"\"); \n Cannabis = (\"\",\"\"); \n Opiates = (\"\",\"\"); \n Crack = (\"\",\"\"); \n PrescribedOrOverTheCounter = (\"\",\"\"); \n Spice = (\"\",\"\"); \n OtherDrug = (\"\",\"\"); \n }\n ShowingFilePicker = false\n Files = []\n SelectedFile = None\n Target = None\n }, getPacksCmd user\n\nlet private targetToMsg target =\n match target with \n | Alcohol -> SetAlcohol\n | Amphetamine -> SetAmphetamines\n | Cocaine -> SetCocaine\n | Ecstasy -> SetEcstasy\n | Ketamine -> SetKetamine\n | Cannabis -> SetCannabis \n | Opiates -> SetOpiates\n | Crack -> SetCrack\n | PrescribedOrOverTheCounter -> SetPrescribedOrOverTheCounter\n | Spice -> SetSpice\n | OtherDrug -> SetOtherDrug\n\n\nlet update (msg:Msg) model : Model*Cmd* SuccessMessageChange = \n match msg with\n | SetAlcohol (name,loc) -> { model with Packs = { model.Packs with Alcohol = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetAmphetamines (name,loc) -> { model with Packs = { model.Packs with Amphetamines = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetCocaine (name,loc) -> { model with Packs = { model.Packs with Cocaine = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetEcstasy (name,loc) -> { model with Packs = { model.Packs with Ecstasy = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetKetamine (name,loc) -> { model with Packs = { model.Packs with Ketamine = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetCannabis (name,loc) -> { model with Packs = { model.Packs with Cannabis = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetOpiates (name,loc) -> { model with Packs = { model.Packs with Opiates = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetCrack (name,loc) -> { model with Packs = { model.Packs with Crack = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetPrescribedOrOverTheCounter (name,loc) -> { model with Packs = { model.Packs with PrescribedOrOverTheCounter = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetSpice (name,loc) -> { model with Packs = { model.Packs with Spice = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | SetOtherDrug (name,loc) -> { model with Packs = { model.Packs with OtherDrug = (name, loc) } }, Cmd.ofMsg SavePacks, Unchanged\n | Loaded packs -> { model with Packs = packs; Loaded = true }, [], Unchanged\n | SavePacks -> model, postSavePacksCmd model.User model.Packs, Unchanged\n | PacksSaved -> model, [], SuccessMessageChange.Show \"Your help pack settings have been updated.\"\n | FetchError exn ->model,[],Unchanged\n | ShowFilePicker target -> { model with Target = Some target; }, getFilesCmd model.User, Unchanged\n | HideFilePicker -> { model with Target = None; ShowingFilePicker = false }, [], Unchanged\n | LoadedFiles files ->\n let grouped =\n let today = System.DateTime.Today\n files |> List.groupBy (fun x -> \n match x.DateUploaded.Date with \n | d when d = today -> \"Uploaded today\"\n | d when d >= today.AddDays(-7.) -> \"Uploaded this week\"\n | d when d >= today.AddDays(-31.) -> \"Uploaded within a month\"\n | _ -> \"Older\"\n )\n let selected = if files.Length > 0 then Some files.[0] else None\n { model with ShowingFilePicker = true; Files = grouped; SelectedFile = selected }, [], Unchanged\n | SelectFile file ->\n { model with SelectedFile = Some file }, [], Unchanged\n | InsertButtonClicked ->\n let file = match model.SelectedFile with None -> \"\" | Some x -> x.Name\n let link = Urls.GetFile (TenantRef.get model.User.Account.Tenant) (Fable.Core.JS.encodeURI file)\n match model.Target with\n | None -> failwith \"Unexpected action\"\n | Some target ->\n let setter = targetToMsg target \n model, Cmd.batch [ Cmd.ofMsg (setter (file, link)); Cmd.ofMsg HideFilePicker; ], Unchanged\n | ClearPack target -> \n let setter = targetToMsg target \n model, Cmd.ofMsg (setter (\"\", \"\")), Unchanged\n\nlet filePicker dispatch show closer (files: (string * FileMeta list) list) (selectedFile: FileMeta option) =\n let genOption file = option [ Value file.Name ] [ str <| sprintf \"%s - %d KB - uploaded on %s\" file.Name (file.Size / 1000) (file.DateUploaded.ToString(\"dd/MMM/yyyy\")) ]\n let allFiles = files |> List.collect snd\n if show then\n modal \"Choose an uploaded file\" dispatch closer [\n div [ ClassName \"centerflex\" ] [\n yield select [\n OnChange (fun ev -> dispatch (SelectFile (allFiles |> List.find (fun x -> x.Name = !!ev.target?value))))\n Style [\n Height \"34px\"\n MarginRight \"10px\"\n Width \"100%\"\n ]\n ] (files |> List.map (fun (band, items) -> optgroup [ Label band ] (items |> List.map genOption)))\n if selectedFile.IsNone || selectedFile.Value.Thumbnail = \"\" then\n ()\n else\n yield img [ \n HTMLAttr.Height \"32px\"\n HTMLAttr.Width \"32px\"\n Alt \"thumbnail\"\n Src (sprintf \"data:image/png;base64,%s\" selectedFile.Value.Thumbnail)\n ]\n yield button [\n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n Style [\n MarginLeft \"10px\"\n ]\n Disabled (selectedFile.IsNone)\n OnClick (fun _ -> dispatch InsertButtonClicked)\n ] [\n str \"Insert Link\"\n ]\n ] \n ] []\n else\n []\n\nlet view (model: Model) dispatch = [\n yield! filePicker dispatch model.ShowingFilePicker HideFilePicker model.Files model.SelectedFile \n yield form [] [\n yield div [ ClassName \"valign\" ] [\n h2 [] [ str \"Help Packs\" ]\n ] \n yield p [ ClassName \"alert alert-info\" ] [ \n str \"When a client self-refers themselves, there is the \n opportunity to provide a link to a downloadable file. This is often used to provide\n access to an initial help pack whilst the referral is considered. \"\n br []\n br []\n str \"You can choose from any file that you have already uploaded in the Files admin section. \n The file offered to the user is based upon which substances they have indicated they need help with.\"\n ]\n \n if model.Loaded = false then\n yield table [ ClassName \"table animated-background\" ] [\n thead [] [\n tr [ ClassName \"mask\" ] [\n th [ClassName \"mask\"] [ str \"If they need help with...\" ]\n th [ClassName \"mask\"] [ str \"Offer them this download...\" ]\n ]\n ]\n tbody [] [\n tr [] [\n td [] [ str \" \" ]\n td [] [ str \" \" ]\n ]\n ]\n ]\n else\n let renderTarget label prop trig =\n tr [] [\n td [] [ str label ]\n td [] [ \n yield a [ Href <| snd prop ] [ \n yield str (fst prop); \n ]\n yield button [ \n ClassName \"btn btn-primary\"; \n HTMLAttr.Type \"button\"\n Style [ MarginLeft \"10px\"]; \n OnClick (fun _ -> dispatch <| ShowFilePicker trig) \n ] [ str \"Choose\" ]\n if (fst prop).Length > 0 then\n yield button [ \n ClassName \"btn btn-danger\"; \n HTMLAttr.Type \"button\"\n Style [ MarginLeft \"10px\"]; \n OnClick (fun _ -> dispatch <| ClearPack trig) \n ] [ str \"Remove\" ]\n ]\n ] \n yield table [ ClassName \"table\" ] [\n thead [] [\n tr [] [\n th [] [ str \"If they need help with...\" ]\n th [] [ str \"Offer them this download...\" ]\n ]\n ]\n tbody [] [\n renderTarget \"Alcohol\" model.Packs.Alcohol Alcohol\n renderTarget \"Amphetamines\" model.Packs.Amphetamines Amphetamine\n renderTarget \"Cocaine\" model.Packs.Cocaine Cocaine\n renderTarget \"Ecstasy\" model.Packs.Ecstasy Ecstasy\n renderTarget \"Ketamine\" model.Packs.Ketamine Ketamine\n renderTarget \"Cannabis\" model.Packs.Cannabis Cannabis \n renderTarget \"Opiates\" model.Packs.Opiates Opiates\n renderTarget \"Crack Cocaine\" model.Packs.Crack Crack\n renderTarget \"Prescribed/Over-the-Counter Medicine\" model.Packs.PrescribedOrOverTheCounter PrescribedOrOverTheCounter\n renderTarget \"Novel Psychoactive Substances/Spice\" model.Packs.Spice Spice\n renderTarget \"Other Drug\" model.Packs.OtherDrug OtherDrug\n ]\n ]\n ] \n]","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)","(**\nProgram\n---------\nCore abstractions for creating and running the dispatch loop.\n\n*)\n\nnamespace Elmish\n\n\n/// Program type captures various aspects of program behavior\ntype Program<'arg, 'model, 'msg, 'view> = private {\n init : 'arg -> 'model * Cmd<'msg>\n update : 'msg -> 'model -> 'model * Cmd<'msg>\n subscribe : 'model -> Cmd<'msg>\n view : 'model -> Dispatch<'msg> -> 'view\n setState : 'model -> Dispatch<'msg> -> unit\n onError : (string*exn) -> unit\n syncDispatch: Dispatch<'msg> -> Dispatch<'msg>\n}\n\n/// Program module - functions to manipulate program instances\n[]\n[]\nmodule Program =\n /// Typical program, new commands are produced by `init` and `update` along with the new state.\n let mkProgram \n (init : 'arg -> 'model * Cmd<'msg>) \n (update : 'msg -> 'model -> 'model * Cmd<'msg>)\n (view : 'model -> Dispatch<'msg> -> 'view) =\n { init = init\n update = update\n view = view\n setState = fun model -> view model >> ignore\n subscribe = fun _ -> Cmd.none\n onError = Log.onError\n syncDispatch = id }\n\n /// Simple program that produces only new state with `init` and `update`.\n let mkSimple \n (init : 'arg -> 'model) \n (update : 'msg -> 'model -> 'model)\n (view : 'model -> Dispatch<'msg> -> 'view) =\n { init = init >> fun state -> state,Cmd.none\n update = fun msg -> update msg >> fun state -> state,Cmd.none\n view = view\n setState = fun model -> view model >> ignore\n subscribe = fun _ -> Cmd.none\n onError = Log.onError\n syncDispatch = id }\n\n /// Subscribe to external source of events.\n /// The subscription is called once - with the initial model, but can dispatch new messages at any time.\n let withSubscription (subscribe : 'model -> Cmd<'msg>) (program: Program<'arg, 'model, 'msg, 'view>) =\n let sub model =\n Cmd.batch [ program.subscribe model\n subscribe model ]\n { program with subscribe = sub }\n\n /// Trace all the updates to the console\n let withConsoleTrace (program: Program<'arg, 'model, 'msg, 'view>) =\n let traceInit (arg:'arg) =\n let initModel,cmd = program.init arg\n Log.toConsole (\"Initial state:\", initModel)\n initModel,cmd\n\n let traceUpdate msg model =\n Log.toConsole (\"New message:\", msg)\n let newModel,cmd = program.update msg model\n Log.toConsole (\"Updated state:\", newModel)\n newModel,cmd\n\n { program with\n init = traceInit \n update = traceUpdate }\n\n /// Trace all the messages as they update the model\n let withTrace trace (program: Program<'arg, 'model, 'msg, 'view>) =\n let update msg model =\n let state,cmd = program.update msg model\n trace msg state\n state,cmd\n { program\n with update = update }\n\n /// Handle dispatch loop exceptions\n let withErrorHandler onError (program: Program<'arg, 'model, 'msg, 'view>) =\n { program\n with onError = onError }\n\n /// For library authors only: map existing error handler and return new `Program` \n let mapErrorHandler map (program: Program<'arg, 'model, 'msg, 'view>) =\n { program\n with onError = map program.onError }\n\n /// For library authors only: get the current error handler \n let onError (program: Program<'arg, 'model, 'msg, 'view>) =\n program.onError\n\n /// For library authors only: function to render the view with the latest state \n let withSetState (setState:'model -> Dispatch<'msg> -> unit)\n (program: Program<'arg, 'model, 'msg, 'view>) = \n { program\n with setState = setState }\n\n /// For library authors only: return the function to render the state \n let setState (program: Program<'arg, 'model, 'msg, 'view>) = \n program.setState\n\n /// For library authors only: return the view function \n let view (program: Program<'arg, 'model, 'msg, 'view>) = \n program.view\n\n /// For library authors only: function to synchronize the dispatch function\n let withSyncDispatch (syncDispatch:Dispatch<'msg> -> Dispatch<'msg>)\n (program: Program<'arg, 'model, 'msg, 'view>) = \n { program\n with syncDispatch = syncDispatch }\n\n /// For library authors only: map the program type\n let map mapInit mapUpdate mapView mapSetState mapSubscribe\n (program: Program<'arg, 'model, 'msg, 'view>) =\n { init = mapInit program.init\n update = mapUpdate program.update\n view = mapView program.view\n setState = mapSetState program.setState\n subscribe = mapSubscribe program.subscribe\n onError = program.onError\n syncDispatch = id }\n\n /// Start the program loop.\n /// arg: argument to pass to the init() function.\n /// program: program created with 'mkSimple' or 'mkProgram'.\n let runWith (arg: 'arg) (program: Program<'arg, 'model, 'msg, 'view>) =\n let (model,cmd) = program.init arg\n let rb = RingBuffer 10\n let mutable reentered = false\n let mutable state = model \n let rec dispatch msg = \n if reentered then\n rb.Push msg\n else\n reentered <- true\n let mutable nextMsg = Some msg\n while Option.isSome nextMsg do\n let msg = nextMsg.Value\n try\n let (model',cmd') = program.update msg state\n program.setState model' syncDispatch\n cmd' |> Cmd.exec (fun ex -> program.onError (sprintf \"Error in command while handling: %A\" msg, ex)) syncDispatch\n state <- model'\n with ex ->\n program.onError (sprintf \"Unable to process the message: %A\" msg, ex)\n nextMsg <- rb.Pop()\n reentered <- false\n and syncDispatch = program.syncDispatch dispatch \n\n program.setState model syncDispatch\n let sub = \n try \n program.subscribe model \n with ex ->\n program.onError (\"Unable to subscribe:\", ex)\n Cmd.none\n Cmd.batch [sub; cmd]\n |> Cmd.exec (fun ex -> program.onError (\"Error intitializing:\", ex)) syncDispatch\n\n /// Start the dispatch loop with `unit` for the init() function.\n let run (program: Program) = runWith () program\n","(** 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 : Event -> unit =\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\n onChangeRef <- onChange\n\n window.addEventListener(\"popstate\", onChangeRef)\n window.addEventListener(\"hashchange\", onChangeRef)\n window.addEventListener(Navigation.NavigatedEvent, onChangeRef)\n\n let unsubscribe () =\n window.removeEventListener(\"popstate\", onChangeRef)\n window.removeEventListener(\"hashchange\", onChangeRef)\n window.removeEventListener(Navigation.NavigatedEvent, 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 Client.Admin\n\nopen Fable.Core\nopen Fable.Import\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Style\nopen System\nopen Fetch\nopen Pages\nopen Fable\nopen SharedCode\nopen Utils\nopen AdminShared\n\ntype Msg =\n | FetchError of exn\n | DismissSuccess\n | EditPageMsg of AdminEditPage.Msg\n | EditCategoryMsg of AdminEditCategory.Msg\n | EditUserMsg of AdminEditUsers.Msg\n | EditFileMsg of AdminEditFiles.Msg\n | HelpPacksMsg of AdminHelpPacks.Msg\n | ShowLicenses\n | HideLicenses\n | LogOut\n\ntype AdminAction =\n | NoAction\n | EditPageModel of AdminEditPage.Model\n | EditCategoryModel of AdminEditCategory.Model\n | EditUserModel of AdminEditUsers.Model\n | EditFilesModel of AdminEditFiles.Model\n | HelpPacksModel of AdminHelpPacks.Model\n\ntype Model = \n { \n User: JWT;\n Action: AdminAction;\n SuccessMessage: string option;\n ShowingLicenses: bool\n }\n\nlet init (user: JWT) actionName = \n printfn \"ACTION: %s\" actionName\n let action, cmds = \n match actionName with\n | \"pages\" -> \n let m,cmd = AdminEditPage.init user\n EditPageModel m, Cmd.map EditPageMsg cmd\n | \"categories\" -> \n let m,cmd = AdminEditCategory.init user\n EditCategoryModel m, Cmd.map EditCategoryMsg cmd\n | \"files\" -> \n let m,cmd = AdminEditFiles.init user\n EditFilesModel m, Cmd.map EditFileMsg cmd\n | \"users\" -> \n let m,cmd = AdminEditUsers.init user\n EditUserModel m, Cmd.map EditUserMsg cmd\n | \"helppacks\" -> \n let m,cmd = AdminHelpPacks.init user\n HelpPacksModel m, Cmd.map HelpPacksMsg cmd\n | \"\" -> NoAction, []\n | _ -> failwithf \"Failed to parse admin action %s\" actionName\n {\n User = user \n Action = action\n SuccessMessage = None\n ShowingLicenses = false\n }, cmds\n\nlet dispatchContent action dispatch =\n match action with\n | NoAction -> \n [\n div [ ClassName \"jumbotron\" ] [\n h1 [] [ str \"Administration\" ]\n p [] [ str \"Please choose an administrative option from the sidebar.\" ]\n ]\n ]\n | EditPageModel state -> AdminEditPage.view state (EditPageMsg >> dispatch) \n | EditUserModel state -> AdminEditUsers.view state (EditUserMsg >> dispatch) \n | EditCategoryModel state -> AdminEditCategory.view state (EditCategoryMsg >> dispatch) \n | EditFilesModel state -> AdminEditFiles.view state (EditFileMsg >> dispatch) \n | HelpPacksModel state -> AdminHelpPacks.view state (HelpPacksMsg >> dispatch) \n\nlet private mapSuccessMessage current =\n function\n | Show message -> Some message\n | Hide -> None\n | Unchanged -> current\n\nlet update (msg:Msg) (model: Model) : Model*Cmd = \n match msg, model.Action with\n | DismissSuccess, _ ->\n { model with SuccessMessage = None }, []\n | EditPageMsg msg, EditPageModel m ->\n let m,cmd,success = AdminEditPage.update msg m\n let cmd = Cmd.map EditPageMsg cmd\n { model with Action = EditPageModel m; SuccessMessage = mapSuccessMessage model.SuccessMessage success }, cmd\n | EditCategoryMsg msg, EditCategoryModel m ->\n let m,cmd,success = AdminEditCategory.update msg m\n let cmd = Cmd.map EditCategoryMsg cmd\n { model with Action = EditCategoryModel m; SuccessMessage = mapSuccessMessage model.SuccessMessage success }, cmd\n | EditUserMsg msg, EditUserModel m ->\n let m,cmd,success = AdminEditUsers.update msg m\n let cmd = Cmd.map EditUserMsg cmd\n { model with Action = EditUserModel m; SuccessMessage = mapSuccessMessage model.SuccessMessage success }, cmd\n | EditFileMsg msg, EditFilesModel m ->\n let m,cmd,success = AdminEditFiles.update msg m\n let cmd = Cmd.map EditFileMsg cmd\n { model with Action = EditFilesModel m; SuccessMessage = mapSuccessMessage model.SuccessMessage success }, cmd\n | HelpPacksMsg msg, HelpPacksModel m ->\n let m,cmd,success = AdminHelpPacks.update msg m\n let cmd = Cmd.map HelpPacksMsg cmd\n { model with Action = HelpPacksModel m; SuccessMessage = mapSuccessMessage model.SuccessMessage success }, cmd\n | ShowLicenses, _ ->\n { model with ShowingLicenses = true }, []\n | HideLicenses, _ ->\n { model with ShowingLicenses = false }, []\n | LogOut, _ -> \n Browser.Dom.console.log \"going home\"\n BrowserLocalStorage.delete \"user\"\n model, Cmd.batch [ Elmish.Navigation.Navigation.newUrl (toHash Page.Home) ]\n | FetchError exn, _ ->\n model,[]\n | _ -> failwith \"unexpected combo\"\n\nlet private linkTo (user: User) action icon path name =\n let cn =\n match action with \n | EditPageModel _ when path = \"pages\" -> \"selected\"\n | EditCategoryModel _ when path = \"categories\" -> \"selected\"\n | EditUserModel _ when path = \"users\" -> \"selected\"\n | EditFilesModel _ when path = \"files\" -> \"selected\"\n | HelpPacksModel _ when path = \"helppacks\" -> \"selected\"\n | _ -> \"\"\n li [ClassName cn] [ a [ Href (toHash (Page.Admin (TenantRef.get user.Tenant, path)))] [ \n span [ ClassName (\"hidden-xs glyphicon glyphicon-\" + icon)] []; \n str (\" \" + name) \n ] \n]\n\nlet private sidebar dispatch (user: User) action =\n div [ Id \"adminActionPanel\"; ClassName \"col-sm-2 no-pad-lr\" ] [\n ul [ ClassName \"admin-list\" ] [\n linkTo user action \"list-alt\" \"pages\" \"Pages\"\n linkTo user action \"tags\" \"categories\" \"Categories\"\n linkTo user action \"user\" \"users\" \"Users\"\n linkTo user action \"upload\" \"files\" \"File Uploads\"\n linkTo user action \"asterisk\" \"helppacks\" \"Help Packs\"\n li [ OnClick (fun _ -> dispatch LogOut)] [ \n a [ jsVoid ] [ \n span [ \n ClassName (\"hidden-xs glyphicon glyphicon-off\")\n ] []\n str \"Log out from admin section\"\n ]\n ] \n ] \n ]\n\nlet private navbar (user: User) =\n nav [ \n ClassName \"navbar navbar-default\"\n Role \"navigation\"\n ] [\n fluidContainer [\n yield div [ ClassName \"navbar-header\" ] [\n a [ \n ClassName \"navbar-brand\" \n Href <| toHash (Page.Admin(TenantRef.get user.Tenant, \"\"))\n ] [\n fa \"user\"\n str (\"Change Your Tomorrow Administration - \" + TenantRef.get user.Tenant)\n ]\n ]\n ] \n ]\n\nlet view model (dispatch: Msg -> unit) =\n let { User = user; Action = action } = model\n let ret =\n [\n navbar user.Account\n div [ \n Id \"main\"\n ClassName \"container-fluid admin expanding-child expanding-parent no-pad-lr\"\n ] [ \n div [ ClassName \"row expanding-child no-margin-lr\" ] [\n sidebar dispatch user.Account action\n div [ \n Id \"adminContentPanel\"; \n ClassName \"col-sm-10 no-pad-lr\" \n ] [\n div [ClassName \"content\"] (dispatchContent action dispatch)\n ]\n ] \n ]\n div [] [\n if model.ShowingLicenses then\n yield! Client.Style.renderAttribution dispatch HideLicenses\n ]\n siteFooter None (fun _ -> dispatch ShowLicenses)\n ] \n match model.SuccessMessage with\n | None -> ret\n | Some message ->\n modal \"Success\" dispatch DismissSuccess \n [\n p [] [\n str message\n ]\n ] [ \n button [ \n ClassName \"btn btn-success\" \n OnClick (fun _ -> dispatch DismissSuccess)\n ] [ str \"Dismiss\" ]\n ]@ret\n","module Client.PasswordReset\n\nopen Fable.Core\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Pages\nopen System\nopen Fable.Core.JsInterop\nopen Fetch\nopen SharedCode\nopen Elmish.Navigation\n\ntype IZxcvbnFeedback =\n abstract suggestions: string []\n abstract warning: string\n\ntype IZxcvbn =\n abstract score: int\n abstract feedback: IZxcvbnFeedback\n\n[]\nlet zxcvbn (str:string, banned:string array): IZxcvbn = jsNative\nlet banned = [|\n \"ILLY\"\n \"mycarepath\"\n \"Systems\"\n|]\n\ntype Model = \n { \n Id: Guid\n Email: EmailEntry option \n ErrorMsg: string\n Password: string\n Failed: bool\n PasswordScore: int\n PasswordWarning: string\n PasswordSuggestion: string[]\n }\n\n/// The messages processed during managing the name \ntype Msg =\n | ClickUpdatePassword\n | SetPassword of string\n | UpdateError of exn\n | PasswordUpdatedOnServer\n | UserUpdatedOnClient\n | PasswordResetFailed\n | FoundPasswordReset of UserEmail\n\nlet getPasswordResetCmd id = \n let url = Urls.PerformResetPassword id\n FetchRequest.get url FoundPasswordReset UpdateError\n\nlet updatePasswordCmd id password = \n let url = Urls.RequestResetEmail\n let ob = { Id = id; Password = password }\n FetchRequest.put url ob (fun _ -> PasswordUpdatedOnServer) UpdateError\n\nlet init id =\n {\n Id = id\n Email = None\n ErrorMsg = \"\"\n Password = \"\"\n Failed = false\n PasswordScore = -1\n PasswordWarning = \"\"\n PasswordSuggestion = [||]\n }, getPasswordResetCmd id\n\nlet setUserInLocalStorageCmd (newUser: JWT) = \n Cmd.OfFunc.either (BrowserLocalStorage.save \"user\") newUser (fun () -> UserUpdatedOnClient) UpdateError\n\nlet update (msg:Msg) model : Model*Cmd*Option = \n match msg with\n | SetPassword password ->\n let pwInfo = zxcvbn (password,banned)\n { model with Password = password; PasswordScore = pwInfo.score; PasswordWarning = pwInfo.feedback.warning; PasswordSuggestion = pwInfo.feedback.suggestions }, [], None\n | FoundPasswordReset emailEntry ->\n { model with Email = Some (Email emailEntry.Email) }, [], None\n | ClickUpdatePassword ->\n model, updatePasswordCmd (model.Id) (model.Password), None\n | UpdateError e ->\n { model with ErrorMsg = e.Message },Cmd.none, None\n | PasswordUpdatedOnServer ->\n model, Navigation.newUrl (toHash Page.Home), Some \"Your password has been reset.\"\n | PasswordResetFailed ->\n { model with Failed = true }, [], None\n | UserUpdatedOnClient -> model, Cmd.none, None\n\nlet renderNoRecord model (dispatch: Msg -> unit) =\n [\n nav [ ClassName \"navbar navbar-default navbar-fixed-top navbar-inverse\" ] []\n div [ ClassName \"container-fluid\" ] [\n div [ ClassName \"homeBanner\" ] [\n div [ ClassName \"center\" ] [\n h1 [] [ str \"Change Your Password\" ]\n ]\n ] \n div [ ClassName \"alert alert-danger text-left\"; Style [ MarginTop \"20px\" ] ] [\n p [] [\n str \"Your password could not be reset at this time.\"\n ]\n ul [] [\n li [] [ str \"Did you take more than one hour to activate the reset?\" ]\n li [] [ str \"Have already reset your password?\" ]\n li [] [ str \"Did you mis-type the URL in the browser?\" ]\n ]\n p [] [\n str \"If you still need to reset your password then try again.\"\n ]\n ]\n a [ Href (toHash Page.Home) ] [ str \"Go back to the home page\" ]\n ]\n ]\n\nlet bar amt cls =\n div [ \n ClassName (\"progress-bar progress-bar-striped progress-bar-\" + cls)\n Role \"progressbar\"\n Style [\n Width (amt.ToString() + \"%\")\n ]\n ] [\n span [ ClassName \"sr-only\" ] []\n ]\nlet renderEntry model (dispatch: Msg -> unit) = \n [\n nav [ ClassName \"navbar navbar-default navbar-fixed-top navbar-inverse\" ] []\n div [ ClassName \"container-fluid\" ] [\n div [ ClassName \"homeBanner\" ] [\n div [ ClassName \"center\" ] [\n h1 [] [ str \"Change Your Password\" ]\n ]\n ] \n div [ Id \"performPasswordReset\" ] [ \n p [] [\n str \"Remember - don't share this password with anybody else or reuse one from another website.\"\n ] \n form [\n Role \"form\"\n Id \"newPassword\"\n ] [\n div [ ClassName \"form-group\" ] [\n input [ \n Id \"newPasswordEntry\"\n HTMLAttr.Type \"password\"\n ClassName \"form-control input-lg\"\n Placeholder \"Enter new password\"\n AutoFocus true\n OnChange (fun ev -> dispatch (SetPassword !!ev.target?value))\n Keyboard.onEnter ClickUpdatePassword dispatch\n MaxLength 255.\n ]\n ]\n div [] [\n if String.IsNullOrWhiteSpace model.ErrorMsg then\n ()\n else\n yield div [ \n ClassName \"alert alert-danger\"\n Style [\n MarginTop \"10px\"\n ]\n ] [ str model.ErrorMsg ] \n ]\n div [ ClassName \"progress\"; Style [ MarginTop \"20px\" ] ] [\n if String.IsNullOrWhiteSpace model.Password then\n ()\n else\n yield bar (match model.PasswordScore with 0 -> 20 | _ -> 40) \"danger\"\n yield bar (match model.PasswordScore with 0 | 1 -> 0 | 2 -> 20 | _ -> 40) \"warning\"\n yield bar (if model.PasswordScore = 4 then 20 else 0) \"success\"\n ]\n div [] [\n if String.IsNullOrWhiteSpace (model.PasswordWarning) then\n ()\n else\n yield div [ ClassName \"alert alert-warning\" ] [ str (model.PasswordWarning) ]\n ]\n div [] [\n if model.PasswordSuggestion.Length = 0 then\n ()\n else\n yield div [ ClassName \"alert alert-info\" ] [\n yield strong [] [ str \"Suggestions for a better password:\" ]\n for sug in model.PasswordSuggestion do\n yield li [] [ str sug ] \n ]\n ]\n button [\n HTMLAttr.Type \"button\"\n HTMLAttr.Disabled (String.IsNullOrWhiteSpace (model.Password) || model.PasswordScore < 3)\n ClassName \"btn btn-lg btn-block btn-primary\"\n Keyboard.onEnter ClickUpdatePassword dispatch\n OnClick (fun _ -> dispatch ClickUpdatePassword)\n ] [ str \"Update Password\" ]\n ]\n ]\n ]\n ]\n\n\nlet view model (dispatch: Msg -> unit) = \n if model.Email.IsSome then\n renderEntry model dispatch\n else\n renderNoRecord model dispatch","module Client.AlcoholAudit\n\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen SharedCode.Domain.AlcoholAuditDomain\nopen Fable.Core.JsInterop\nopen Fetch\nopen Fable.Core\nopen Fable.Import\n\ntype Progress =\n | NotStarted\n | QueryGender\n | QueryDrinkFrequency\n | QueryHowManyInDay\n | QueryBingeFrequency\n | QueryUnableToStop\n | QueryFailedToDo\n | QueryNeededADrink\n | QueryRemorse\n | QueryUnableToRemember\n | QueryInjured\n | QueryFriendConcerned\n | Result\n\ntype Msg =\n | SetGender of Gender\n | SetDrinkFrequency of DrinkFrequency\n | SetHowManyInDay of int\n | SetBingeFrequency of Frequency\n | SetUnableToStop of Frequency\n | SetFailedToDo of Frequency\n | SetNeededADrink of Frequency\n | SetRemorse of Frequency\n | SetUnableToRemember of Frequency\n | SetInjured of Occurance\n | SetFriendConcerned of Occurance\n | FetchError of exn\n | NextStep\n | PrevStep\n | ContinueToReferral of AlcoholAuditAnswers * tenant: string\n | AlcoholTextLoaded of AlcoholWording\n\ntype Model = \n { \n Audit: AlcoholAuditAnswers\n Stage: Progress\n Score: int\n EnteredGender: Gender option\n Tenant: string\n AlcoholText: AlcoholWording\n }\n\nlet getAlcoholText tenant =\n let url = SharedCode.Urls.AlcoholText tenant\n FetchRequest.get url AlcoholTextLoaded FetchError\n\nlet stage =\n function\n | NotStarted -> 0\n | QueryGender -> 1\n | QueryDrinkFrequency -> 2\n | QueryHowManyInDay -> 3\n | QueryBingeFrequency -> 4\n | QueryUnableToStop -> 5\n | QueryFailedToDo -> 6\n | QueryNeededADrink -> 7\n | QueryRemorse -> 8\n | QueryUnableToRemember -> 9\n | QueryInjured -> 10\n | QueryFriendConcerned -> 11\n | Result -> 12\n\nlet nextStage score =\n function\n | Result -> None\n | NotStarted -> Some QueryGender\n | QueryGender -> Some QueryDrinkFrequency\n | QueryDrinkFrequency -> Some QueryHowManyInDay\n | QueryHowManyInDay -> Some QueryBingeFrequency\n | QueryBingeFrequency ->\n if score >= 5 then\n Some QueryUnableToStop\n else\n Some Result\n | QueryUnableToStop -> Some QueryFailedToDo\n | QueryFailedToDo -> Some QueryNeededADrink\n | QueryNeededADrink -> Some QueryRemorse\n | QueryRemorse -> Some QueryUnableToRemember\n | QueryUnableToRemember -> Some QueryInjured\n | QueryInjured -> Some QueryFriendConcerned\n | QueryFriendConcerned -> Some Result\n\nlet prevStage score =\n function\n | Result ->\n if score >= 5 then\n Some QueryFriendConcerned\n else\n Some QueryBingeFrequency\n | NotStarted -> None\n | QueryGender -> Some NotStarted\n | QueryDrinkFrequency -> Some QueryGender\n | QueryHowManyInDay -> Some QueryDrinkFrequency\n | QueryBingeFrequency -> Some QueryHowManyInDay\n | QueryUnableToStop -> Some QueryBingeFrequency\n | QueryFailedToDo -> Some QueryUnableToStop\n | QueryNeededADrink -> Some QueryFailedToDo\n | QueryRemorse -> Some QueryNeededADrink\n | QueryUnableToRemember -> Some QueryRemorse\n | QueryInjured -> Some QueryUnableToRemember\n | QueryFriendConcerned -> Some QueryInjured\n\nlet init tenant = \n {\n Audit =\n {\n Gender = Male\n DrinkFrequency = DrinkFrequency.Never\n HowManyInDay = 0\n BingeFrequency = Never\n UnableToStop = Never\n FailedToDo = Never\n NeededADrink = Never\n Remorse = Never\n UnableToRemember = Never\n Injured = No\n FriendConcerned = No\n }\n Score = 0\n Stage = NotStarted\n EnteredGender = None\n Tenant = tenant\n AlcoholText =\n {\n LowRiskText = [||]\n ConditionText = [||]\n DependenceText = [||]\n ReferOnLow = false\n ReferOnIncreasing = false\n ReferOnHigh = false\n ReferOnDependence = false\n }\n }, getAlcoholText tenant\n\nlet update (msg:Msg) model : Model*Cmd* string option = \n match msg with\n | SetGender gender -> { model with EnteredGender = Some gender; Audit = { model.Audit with Gender = gender }; }, [], None\n | SetDrinkFrequency drinkFrequency -> { model with Audit = { model.Audit with DrinkFrequency = drinkFrequency }; }, [], None\n | SetHowManyInDay frequency -> { model with Audit = { model.Audit with HowManyInDay = frequency }; }, [], None\n | SetBingeFrequency frequency -> { model with Audit = { model.Audit with BingeFrequency = frequency }; }, [], None\n | SetUnableToStop frequency -> { model with Audit = { model.Audit with UnableToStop = frequency }; }, [], None\n | SetFailedToDo frequency -> { model with Audit = { model.Audit with FailedToDo = frequency }; }, [], None\n | SetNeededADrink frequency -> { model with Audit = { model.Audit with NeededADrink = frequency }; }, [], None\n | SetRemorse frequency -> { model with Audit = { model.Audit with Remorse = frequency }; }, [], None\n | SetUnableToRemember frequency -> { model with Audit = { model.Audit with UnableToRemember = frequency }; }, [], None\n | SetInjured occur -> { model with Audit = { model.Audit with Injured = occur }; }, [], None\n | SetFriendConcerned occur -> { model with Audit = { model.Audit with FriendConcerned = occur }; }, [], None\n | FetchError exn -> \n Browser.Dom.console.error exn\n model, [], None\n | NextStep -> \n let score = calculateAuditScore model.Audit\n let next =\n match nextStage score model.Stage with\n | None -> failwith \"Invalid next stage\"\n | Some stage -> stage\n { model with Score = score; Stage = next }, [], None\n | PrevStep ->\n let score = calculateAuditScore model.Audit\n let prev =\n match prevStage score model.Stage with\n | None -> failwith \"Invalid prev stage\"\n | Some stage -> stage\n { model with Stage = prev }, [], None\n | AlcoholTextLoaded num ->\n { model with AlcoholText = num }, [], None\n | ContinueToReferral _ -> model, Cmd.none, None\n\nlet nextButton hasNext disable first dispatch =\n [\n hr []\n div [ ClassName \"centerflex col-sm-12\" ] [ \n if hasNext then\n yield button [ \n ClassName \"btn btn-lg btn-primary\"\n OnClick (fun _ -> dispatch NextStep)\n Disabled disable\n HTMLAttr.Type \"button\"\n Style [ \n FlexGrow 2\n ]\n ] [ str <| if first then \"Begin\" else \"Continue\" ]\n if not first then \n yield button [ \n ClassName \"btn btn-lg btn-default\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch PrevStep)\n Style [\n FlexGrow 1 \n ]\n ] [ str \"Back\" ]\n ]\n ]\n\nlet opt prop event dispatch v text =\n div [ ClassName \"col-sm-12 blockoption\" ] [\n button [\n ClassName (\"btn btn-lg btn-block wrap \" + (if prop = v then \"btn-success\" else \"btn-default\")) \n OnClick (fun _ -> dispatch (event v))\n ] [\n str text\n ]\n ]\n\nlet renderNotStarted model dispatch =\n [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"Alcohol Audit\"] \n ]\n yield p [ ClassName \"alert alert-info\" ] [\n str \"This wizard is going to take you through the process of answering some questions about your use of alcoholic drinks during this past year.\"\n ]\n yield div [ ClassName \"clearfix\" ] [\n div [ \n ClassName \"col-sm-12\" \n Style [ \n BackgroundColor \"white\" \n ] \n ] [\n div [ ClassName \"centerflex strip wrap\" ] [\n img [\n Alt \"beer bottle\"\n Src \"images/beer bottle.png\"\n ]\n img [\n Alt \"pint\"\n Src \"images/pint.png\"\n ]\n img [\n Alt \"spirits\"\n Src \"images/spirits.png\"\n ]\n img [\n Alt \"can\"\n Src \"images/can.png\"\n ]\n img [\n Alt \"cocktail\"\n Src \"images/cocktail.png\"\n ]\n ]\n ]\n div [ \n ClassName \"col-sm-6 alcohol\" \n ] [\n p [] [\n str \"Alcoholic drinks contain alcohol (ethanol). They are available in various strengths, from beer, lager and alcopops (which are weakest), through to wine and eventually to spirits such as vodka and whisky.\"\n ] \n ]\n div [ \n ClassName \"col-sm-6 alcohol\" \n ] [\n p [] [\n str \"Non-alcoholic (standard or soft) drinks do not contain alcohol.\"\n ] \n ]\n ]\n yield! nextButton true false true dispatch\n ]\n\nlet renderGender model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"Gender\"] \n ]\n yield p [ ClassName \"alert alert-info\" ] [\n str \"Please choose which gender you identify as.\"\n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n yield div [ ClassName \"col-sm-6\" ] [\n button [\n ClassName (\"btn btn-lg btn-block \" + match model.EnteredGender with Some Male -> \"btn-success\" | _ -> \"btn-default\") \n OnClick (fun _ -> dispatch <| SetGender Male)\n ] [\n str \"Male\"\n ]\n ]\n yield div [ ClassName \"col-sm-6\" ] [\n button [\n ClassName (\"btn btn-lg btn-block \" + match model.EnteredGender with Some Female -> \"btn-success\" | _ -> \"btn-default\") \n OnClick (fun _ -> dispatch <| SetGender Female)\n ] [\n str \"Female\"\n ]\n ]\n ]\n yield! nextButton true (model.EnteredGender.IsNone) false dispatch\n ]\n ]\n\nlet renderDrinkFrequency model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"How often do you have a drink containing alcohol?\"] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.DrinkFrequency) SetDrinkFrequency dispatch \n\n yield fopt DrinkFrequency.Never \"Never\" \n yield fopt DrinkFrequency.Monthly \"Monthly or less\" \n yield fopt DrinkFrequency.MultiplePerMonth \"2-4 times a month\"\n yield fopt DrinkFrequency.FewTimesAWeek \"2-3 times a week\"\n yield fopt DrinkFrequency.MostDays \"4 or more times a week\"\n \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet renderHowManyInDay model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"How many units of alcohol do you drink on a typical day when you are drinking?\" ] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.HowManyInDay) SetHowManyInDay dispatch \n\n yield fopt -1 \"N/A\" \n yield fopt 0 \"1 to 2\" \n yield fopt 3 \"3 to 4\" \n yield fopt 5 \"5 to 6\"\n yield fopt 7 \"7 to 9\"\n yield fopt 10 \"10 or more\"\n \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet renderBingeFrequency model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str <| sprintf \"How often have you had %d units on a single occasion in the last year?\" (match model.EnteredGender with Some Male -> 8 | Some Female -> 6 | _ -> 0) ] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.BingeFrequency) SetBingeFrequency dispatch \n\n yield fopt Frequency.Never \"Never\" \n yield fopt Frequency.LessThanMonthly \"Less than monthly\" \n yield fopt Frequency.Monthly \"Monthly\"\n yield fopt Frequency.Weekly \"Weekly\"\n yield fopt Frequency.AlmostDaily \"Daily or almost daily\"\n \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet renderUnableToStop model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"How often during the last year have you found that you were not able to stop drinking once you had started?\" ] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.UnableToStop) SetUnableToStop dispatch \n\n yield fopt Frequency.Never \"Never\" \n yield fopt Frequency.LessThanMonthly \"Less than monthly\" \n yield fopt Frequency.Monthly \"Monthly\"\n yield fopt Frequency.Weekly \"Weekly\"\n yield fopt Frequency.AlmostDaily \"Daily or almost daily\"\n \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet renderFailedToDo model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"How often during the last year have you failed to do what was normally expected from you because of your drinking?\" ] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.FailedToDo) SetFailedToDo dispatch \n\n yield fopt Frequency.Never \"Never\" \n yield fopt Frequency.LessThanMonthly \"Less than monthly\" \n yield fopt Frequency.Monthly \"Monthly\"\n yield fopt Frequency.Weekly \"Weekly\"\n yield fopt Frequency.AlmostDaily \"Daily or almost daily\"\n \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet renderNeededADrink model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"How often during the last year have you needed an alcoholic drink in the morning to get yourself going after a heavy drinking session?\" ] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.NeededADrink) SetNeededADrink dispatch \n\n yield fopt Frequency.Never \"Never\" \n yield fopt Frequency.LessThanMonthly \"Less than monthly\" \n yield fopt Frequency.Monthly \"Monthly\"\n yield fopt Frequency.Weekly \"Weekly\"\n yield fopt Frequency.AlmostDaily \"Daily or almost daily\"\n \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet renderRemorse model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"How often during the last year have you had a feeling of guilt or remorse after drinking?\" ] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.Remorse) SetRemorse dispatch \n\n yield fopt Frequency.Never \"Never\" \n yield fopt Frequency.LessThanMonthly \"Less than monthly\" \n yield fopt Frequency.Monthly \"Monthly\"\n yield fopt Frequency.Weekly \"Weekly\"\n yield fopt Frequency.AlmostDaily \"Daily or almost daily\"\n \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet renderUnableToRemember model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"How often during the last year have you been unable to remember what happened the night before because you had been drinking?\" ] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.UnableToRemember) SetUnableToRemember dispatch \n\n yield fopt Frequency.Never \"Never\" \n yield fopt Frequency.LessThanMonthly \"Less than monthly\" \n yield fopt Frequency.Monthly \"Monthly\"\n yield fopt Frequency.Weekly \"Weekly\"\n yield fopt Frequency.AlmostDaily \"Daily or almost daily\"\n \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet renderInjured model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"Have you or somebody else been injured as a result of your drinking?\" ] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.Injured) SetInjured dispatch \n\n yield fopt Occurance.No \"No\" \n yield fopt Occurance.NotInLastYear \"Yes, but not in the last year\" \n yield fopt Occurance.InLastYear \"Yes, during the last year\" \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet renderFriendConcerned model dispatch =\n [\n div [ ClassName \"formstyle\" ] [\n yield div [ ClassName \"title\" ] [\n h2 [] [ str \"Has a relative or friend, doctor or other health worker been concerned about your drinking or suggested that you cut down?\" ] \n ]\n yield div [ ClassName \"col-sm-12 strip\" ] [\n let fopt = opt (model.Audit.FriendConcerned) SetFriendConcerned dispatch \n\n yield fopt Occurance.No \"No\" \n yield fopt Occurance.NotInLastYear \"Yes, but not in the last year\" \n yield fopt Occurance.InLastYear \"Yes, during the last year\" \n ]\n yield! nextButton true false false dispatch\n ]\n ]\n\nlet referButton model dispatch =\n button [ \n ClassName \"btn btn-lg btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch (ContinueToReferral (model.Audit, model.Tenant)))\n ] [ str \"Continue to self referral\" ]\n\nlet renderBlock lines =\n p [] [\n for line in lines do\n yield str line\n yield br []\n ]\n\nlet renderLowRisk model dispatch =\n [\n yield renderBlock model.AlcoholText.LowRiskText\n\n yield ul [ ClassName \"list-group\" ] [\n li [ ClassName \"list-group-item\" ] [ str \"When bored or stressed have a workout instead of drinking\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Avoid going to the pub after work\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Plan activities and tasks at those times you would usually drink\" ]\n li [ ClassName \"list-group-item\" ] [ str \"When you do drink, set yourself a limit and stick to it\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Have your first drink after starting to eat\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Quench your thirst with alcohol-free drinks before and inbetween alcoholic drinks\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Avoid drinking in rounds or in large groups\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Switch to low alcohol beer/lager\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Avoid or limit the time spent with \\\"heavy\\\" drinking friends\" ]\n ]\n\n yield p [] [ str \"If you want to refer yourself to our service for any help or advice then click the button below:\" ]\n yield referButton model dispatch\n ]\n\nlet conditions conText = \n [\n ul [ ClassName \"list-group\" ] [\n li [ ClassName \"list-group-item\" ] [ str \"High blood pressure\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Heart disease\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Stroke\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Liver disease\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Cancer\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Learning and memory problems\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Mental health problems, including depression and anxiety\" ]\n li [ ClassName \"list-group-item\" ] [ str \"Social problems\" ]\n ]\n renderBlock conText\n ] \n\nlet renderIncreasingRisk model dispatch =\n [\n yield p [] [ str \"Your alcohol audit suggests that you are drinking at increasing risk. Over time, excessive alcohol use can lead to the development of chronic diseases and other serious problems including:\" ]\n yield! conditions model.AlcoholText.ConditionText\n yield p [] [ str \"If you want to refer yourself to our service for any help or advice then click the button below:\" ]\n yield referButton model dispatch\n ]\n\nlet renderHighRisk model dispatch =\n [\n yield p [] [\n str \"Your alcohol audit score suggests that you are drinking at higher risk and could be dependent on alcohol. You may need help reducing or stopping your alcohol use.\"\n br []\n str \"Drinking at this level can result in chronic diseases and other serious problems including:\"\n ]\n yield! conditions model.AlcoholText.ConditionText\n yield p [] [ str \"Please consider referring yourself to our service for some help by clicking the button below. Once you complete the form someone from the service will contact you to offer you an appointment.\" ]\n yield referButton model dispatch\n ]\n\nlet renderDependence model dispatch =\n [\n yield p [] [\n str \"Your alcohol audit score suggests that you might be dependent on alcohol. You may need a medical alcohol detox or help reducing or stopping your alcohol use.\"\n br []\n str \"Drinking at this level can result in chronic diseases and other serious problems including:\"\n ]\n yield! conditions model.AlcoholText.ConditionText\n yield renderBlock model.AlcoholText.DependenceText \n if model.AlcoholText.ReferOnDependence then\n yield referButton model dispatch\n ]\n\nlet renderResult model dispatch =\n [\n let alcBox imgs title opacity =\n div [\n ClassName \"alcohol-result\"\n Style [\n Opacity (if opacity then 1.0 else 0.4)\n ] \n ] [\n img [\n Alt title\n Src imgs\n \n ]\n h3 [] [ str title ]\n ]\n\n yield div [ ClassName \"formstyle alcohol-results\" ] [\n h1 [] [ str <| sprintf \"You scored %d\" model.Score ]\n div [ ClassName \"centerflex wrap strip result\"; Style [ BackgroundColor \"white\" ] ] [\n alcBox \"images/spirits.png\" \"Lower Risk\" (model.Score <= 7)\n alcBox \"images/cocktail.png\" \"Increasing Risk\" (model.Score >= 8 && model.Score <= 15)\n alcBox \"images/beer bottle.png\" \"Higher Risk\" (model.Score >= 16 && model.Score <= 19)\n alcBox \"images/pint.png\" \"Possible Dependence\" (model.Score >= 20) \n ]\n div [] [\n match model.Score with\n | x when x <= 7 -> yield! renderLowRisk model dispatch \n | x when x <= 15 -> yield! renderIncreasingRisk model dispatch \n | x when x <= 19 -> yield! renderHighRisk model dispatch \n | _ -> yield! renderDependence model dispatch \n ]\n ]\n yield! nextButton false false false dispatch\n ]\n\nlet view model dispatch =\n [\n div [ ClassName \"container\" ] [\n yield div [ \n ClassName \"centerflex\" \n Id \"alcoholAudit\"\n ] [\n yield div [ \n ClassName \"formstyle\"\n Keyboard.onEnterConditional (model.EnteredGender.IsSome) NextStep dispatch\n ] [\n match model.Stage with\n | NotStarted | Result -> ()\n | x ->\n yield div [ ClassName \"progress\" ] [\n let perStage = 100. / float (stage Result)\n let width = perStage * float (stage x)\n let swidth = sprintf \"%f%%\" width\n yield div [ \n ClassName \"progress-bar\"\n Role \"progressbar\"\n Style [\n Width swidth\n ]\n ] [\n span [ ClassName \"hidden-xs hidden-sm\" ] [\n str <| sprintf \"Step %d of %d.\" (stage x) (stage Result)\n ]\n ]\n ]\n match model.Stage with\n | NotStarted -> yield! renderNotStarted model dispatch \n | QueryGender -> yield! renderGender model dispatch\n | QueryDrinkFrequency -> yield! renderDrinkFrequency model dispatch\n | QueryHowManyInDay -> yield! renderHowManyInDay model dispatch \n | QueryBingeFrequency -> yield! renderBingeFrequency model dispatch \n | QueryUnableToStop -> yield! renderUnableToStop model dispatch \n | QueryFailedToDo -> yield! renderFailedToDo model dispatch \n | QueryNeededADrink -> yield! renderNeededADrink model dispatch\n | QueryRemorse -> yield! renderRemorse model dispatch\n | QueryUnableToRemember -> yield! renderUnableToRemember model dispatch\n | QueryInjured -> yield! renderInjured model dispatch\n | QueryFriendConcerned -> yield! renderFriendConcerned model dispatch\n | Result -> yield! renderResult model dispatch\n ]\n ]\n ]\n ]\n","module Client.Referral\n\nopen Fable.Core\nopen Fable.Import\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen SharedCode.Domain.ReferralForms\nopen Style\nopen System\nopen Fable.Core.JsInterop\nopen Fetch\nopen SharedCode\n\ntype ReferralState =\n | NotStarted\n | CoreDetails\n | Demographics\n | Scores\n | SubstanceUse\n | Summary\n | ConfirmationEmailSent\n\ntype Msg =\n | SetPostcodeTest of string\n | SetForename of string\n | SetSurname of string\n | SetGender of Gender\n | SetDateOfBirth of string\n | SetEmailAddress of string\n | SetAddress of string\n | SetTelephoneNumber of string\n | ToggleOkayToLeaveMessage\n | ReferralInfoLoaded of ReferralInfo\n | DrugToggled of DrugName\n | ProceedToDemographics\n | ProceedToCoreDetails\n | ProceedToScores\n | ProceedToSubstanceUse\n | ProceedToSummary\n | RestartWizard\n | FetchError of exn\n | SetSexuality of char option\n | SetNationality of string option\n | SetEthnicity of string option\n | SetDisability of string option\n | SetParental of int option\n | SetEmployment of int option\n | SetPsychologicalHealth of int\n | SetPhysicalHealth of int\n | SetOverallHealth of int\n | SetAgeFirstUsedAlcohol of int option\n | SetSmoking of string\n | SetSubstanceUse of string\n | SetConcerns of string\n | SetHabits of string\n | SetHowOftenDrink of int option\n | SetHowMuchDrink of int option\n | SetBingeFrequency of int option\n | SubmitReferral\n | ReferralResultReceived of Validated\n | GoToHome\n | GetTenantDisplayName\n | RetrievedTenantDisplayName of string\n\ntype Model = \n { \n Referral: SelfReferralForm\n State: ReferralState\n AllowedPostcodes: string array\n ServicePhoneNumber: string\n PolicyUrl: string option\n Pathways: DrugConfig array\n PostcodeAllowed: bool\n PostcodeErrors: string list\n DateOfBirthErrors: string list\n EmailErrors: string list\n Audit: AlcoholAuditDomain.AlcoholAuditAnswers option\n Waiting: bool\n SubmissionErrors: string list\n Tenant: string\n TenantDisplayName: string\n }\n\nlet getReferralInfoCmd tenant =\n let url = Urls.Referral tenant\n FetchRequest.get url ReferralInfoLoaded FetchError\n\nlet submitReferralCmd (tenant: string, referral: ReferralFormSet) = \n let url = Urls.Referral tenant\n FetchRequest.post url referral ReferralResultReceived FetchError\n\nlet getTenantDisplayName tenant =\n promise {\n let url = Urls.TenantName tenant\n let props = [ Method HttpMethod.GET ]\n\n let! response = Fetch.fetch url props\n return! response.text()\n }\n\nlet getTenantDisplayNameCmd tenant = Cmd.OfPromise.either getTenantDisplayName tenant RetrievedTenantDisplayName FetchError\n\n\nlet init tenant (audit: Domain.AlcoholAuditDomain.AlcoholAuditAnswers option) = \n {\n Referral = ReferralForms.zero DateTime.Now\n State = NotStarted\n PostcodeAllowed = true\n ServicePhoneNumber = \"\"\n AllowedPostcodes = [||]\n Pathways = [||]\n DateOfBirthErrors = []\n PostcodeErrors = []\n EmailErrors = []\n SubmissionErrors = []\n Audit = audit\n Waiting = false\n Tenant = tenant\n TenantDisplayName = tenant\n PolicyUrl = None\n }, Cmd.batch [ getReferralInfoCmd tenant; getTenantDisplayNameCmd tenant ]\n\nopen Utils\nopen Elmish.Navigation\n\nlet unwrapValidations =\n function\n | Success -> []\n | Failure f -> f\n\nlet inline private findPostcode allowed (code: string) : bool =\n let lcode = code.ToLower()\n Array.exists (fun (x: string) -> \n lcode.StartsWith(x.ToLower())) allowed\n\nlet update (msg:Msg) (model: Model) : Model*Cmd* string option = \n Browser.Dom.console.log(\"New Referral Msg: \", msg)\n let inline checkPostcode code =\n model.AllowedPostcodes.Length = 0 \n || emptyString code \n || findPostcode (model.AllowedPostcodes) code\n \n match msg with\n | GoToHome -> model, Navigation.newUrl (Pages.toHash Pages.Page.Home), None\n | SetPostcodeTest code -> \n Browser.Dom.console.log(\"SetPostcodeTest: value is \", code)\n { model with \n Referral = \n { model.Referral with Postcode = code }\n PostcodeAllowed = checkPostcode code\n PostcodeErrors = \n code \n |> SharedValidations.postcodeValidations \n |> unwrapValidations \n }, [], None\n | SetForename name -> { model with Referral = { model.Referral with Forename = name }; }, [], None\n | SetSurname name -> { model with Referral = { model.Referral with Surname = name }; }, [], None\n | SetGender gender -> { model with Referral = { model.Referral with Gender = gender }; }, [], None\n | SetNationality nat -> { model with Referral = { model.Referral with Nationality = nat }; }, [], None\n | SetSexuality sex -> { model with Referral = { model.Referral with Sexuality = Option.map (sprintf \"%c\") sex }; }, [], None\n | SetSmoking smoke -> { model with Referral = { model.Referral with Smoking = smoke }; }, [], None\n | SetSubstanceUse sub -> { model with Referral = { model.Referral with SubstanceUseDescription = sub }; }, [], None\n | SetDisability dis -> { model with Referral = { model.Referral with Disability = dis }; }, [], None\n | SetEthnicity nat -> { model with Referral = { model.Referral with Ethnicity = nat }; }, [], None\n | SetParental p -> { model with Referral = { model.Referral with Parental = p }; }, [], None\n | SetEmployment emp -> { model with Referral = { model.Referral with Employment = emp }; }, [], None\n | SetTelephoneNumber number -> { model with Referral = { model.Referral with TelephoneNumber = number }; }, [], None\n | SetAddress address -> { model with Referral = { model.Referral with Address = address }; }, [], None\n | SetPsychologicalHealth health -> { model with Referral = { model.Referral with PsychologicalHealth = health }; }, [], None\n | SetPhysicalHealth health -> { model with Referral = { model.Referral with PhysicalHealth = health }; }, [], None\n | SetOverallHealth health -> { model with Referral = { model.Referral with OverallHealth = health }; }, [], None\n | SetAgeFirstUsedAlcohol age -> { model with Referral = { model.Referral with AgeFirstUsedAlcohol = age }; }, [], None\n | SetConcerns conc -> { model with Referral = { model.Referral with ConcernedAboutUsage = conc }; }, [], None\n | SetHabits habits -> { model with Referral = { model.Referral with PersonalHabitsAndChanges = habits }; }, [], None\n | ToggleOkayToLeaveMessage -> { model with Referral = { model.Referral with OkayToLeaveAMessage = not model.Referral.OkayToLeaveAMessage }; }, [], None\n | SetEmailAddress email -> { model with Referral = { model.Referral with EmailAddress = email; }; EmailErrors = email |> SharedValidations.emailValidations |> unwrapValidations }, [], None\n | SetDateOfBirth str -> \n match DateTime.TryParse str with\n | true, dob ->\n { model with Referral = { model.Referral with DateOfBirth = dob }; DateOfBirthErrors = dob |> ReferralForms.dateOfBirthValidations |> unwrapValidations }, [], None\n | false, _ ->\n { model with DateOfBirthErrors = [sprintf \"Couldn't recognise '%s' as a date.\" str] }, [], None\n | ReferralInfoLoaded info -> \n { model with \n AllowedPostcodes = info.AllowedPostcodes; \n PostcodeAllowed = checkPostcode model.Referral.Postcode; \n Pathways = info.DrugPathways; \n ServicePhoneNumber = info.ContactNumber\n PolicyUrl = if info.PolicyUrl = \"\" then None else Some info.PolicyUrl\n }, [], None\n | DrugToggled drug -> \n let uses = \n match drug with\n | DrugName.Alcohol -> { model.Referral with UsesAlcohol = not model.Referral.UsesAlcohol }\n | DrugName.Amphetamines -> { model.Referral with UsesAmphetamines = not model.Referral.UsesAmphetamines }\n | DrugName.Cocaine -> { model.Referral with UsesCocaine = not model.Referral.UsesCocaine }\n | DrugName.Ecstasy -> { model.Referral with UsesEcstasy = not model.Referral.UsesEcstasy }\n | DrugName.Ketamine -> { model.Referral with UsesKetamine = not model.Referral.UsesKetamine }\n | DrugName.Cannabis -> { model.Referral with UsesCannabis = not model.Referral.UsesCannabis }\n | DrugName.CrackCocaine -> { model.Referral with UsesCrackCocaine = not model.Referral.UsesCrackCocaine }\n | DrugName.PrescribedOrOverTheCounter -> { model.Referral with UsesPrescribedOrOverTheCounter = not model.Referral.UsesPrescribedOrOverTheCounter }\n | DrugName.Spice -> { model.Referral with UsesSpice = not model.Referral.UsesSpice }\n | DrugName.OtherDrug -> { model.Referral with UsesOtherDrug = not model.Referral.UsesOtherDrug }\n | DrugName.Opiates -> { model.Referral with UsesOpiates = not model.Referral.UsesOpiates }\n | _ -> failwith \"Not coded\"\n { model with Referral = uses }, [], None\n | ProceedToCoreDetails ->\n { model with State = CoreDetails }, [], None\n | ProceedToDemographics ->\n { model with State = Demographics }, [], None\n | RestartWizard ->\n { model with State = NotStarted }, [], None\n | ProceedToScores ->\n { model with State = Scores }, [], None\n | ProceedToSubstanceUse ->\n { model with State = SubstanceUse }, [], None\n | ProceedToSummary ->\n { model with State = Summary; SubmissionErrors = [] }, [], None\n | SetBingeFrequency freq ->\n { model with Referral = { model.Referral with AlcoholBingeFrequency = freq } }, [], None\n | SetHowMuchDrink amt ->\n { model with Referral = { model.Referral with DrinkingDayUnits = amt } }, [], None\n | SetHowOftenDrink oft ->\n { model with Referral = { model.Referral with HowOftenDrink = oft } }, [], None\n | FetchError exn -> model, [], None\n | SubmitReferral ->\n { model with Waiting = true; }, submitReferralCmd (model.Tenant, { SelfReferral = model.Referral; AlcoholAudit = model.Audit }), None\n | ReferralResultReceived result ->\n match result with\n | Success ->\n { model with State = ConfirmationEmailSent; Waiting = false }, [], Some \"Please check for your confirmation email.\"\n | Failure errors ->\n { model with SubmissionErrors = errors; }, [], None\n | GetTenantDisplayName ->\n model, getTenantDisplayNameCmd model.Tenant, None\n | RetrievedTenantDisplayName name ->\n { model with TenantDisplayName = name }, [], None\n\nlet renderSubstance drug name display dispatch bind (model: Model) =\n let warn = model.Pathways |> Array.exists ((=){ Name = drug; Behaviour = Behaviour.NoRefer })\n div [\n ClassName (\"form-group\" + (if warn then \" has-warning\" else \"\")); \n Style [\n Display DisplayOptions.Flex\n AlignItems AlignItemsOptions.Center\n FlexWrap \"wrap\"\n ]\n ] [\n label [ HtmlFor name; ClassName \"control-label col-sm-5 col-xs-6\" ] [ str display ]\n div [ ClassName \"col-sm-1\" ] [\n yield input [ \n HTMLAttr.Type \"checkbox\"; \n ClassName \"form-control\"; \n Id name; \n OnChange (fun ev -> drug |> DrugToggled |> dispatch);\n Checked bind\n Disabled warn\n ]\n ]\n div [ ClassName \"col-sm-6 col-xs-12\" ] [\n if warn then\n yield span [ ClassName \"help-block\" ] [ str <| sprintf \"Please call the service on %s.\" model.ServicePhoneNumber ]\n ]\n ]\n\nlet formLabel id mandatory lbl = \n label [\n HtmlFor id\n ClassName (\"control-label\" + if mandatory then \" mandatory\" else \"\")\n ] [\n str lbl\n ]\n\nlet renderValidations (errs: string list) = seq {\n if errs.Length > 0 then\n yield span [ ClassName \"help-block\" ] [\n for error in errs do\n yield str error\n yield br []\n ]\n}\n\nlet toChar = FSharp.Core.Option.map (fun (s: string) -> s.[0])\nlet toInt (s: string option) = FSharp.Core.Option.map int s\n\nlet demoList id lbl setter dispatch items v =\n formGroup [\n formLabel id false lbl\n select [\n Id id\n ClassName \"form-control\"\n OnChange(fun ev -> (match !!ev.target?value with \"\" -> None | x -> Some x ) |> setter |> dispatch)\n DefaultValue v\n ] [\n for item in items do\n yield option [ \n HTMLAttr.Value (fst item)\n ] [ \n str <| snd item \n ] \n ]\n ]\n\nlet renderDemographics (model: Model) (dispatch: Msg -> unit) = seq {\n yield h2 [] [ str \"Demographics\" ]\n yield p [ ClassName \"alert alert-info\" ] [\n str \"Everything in this section is optional, though anything you enter will be used to improve how we work with you.\"\n ]\n yield form [ ClassName \"form\" ] [\n demoList \"sexuality\" \"Sexuality\" (toChar>>SetSexuality) dispatch sexualities (optString model.Referral.Sexuality)\n demoList \"ethnicity\" \"Ethnicity\" SetEthnicity dispatch ethnicities (optString model.Referral.Ethnicity)\n demoList \"nationality\" \"Nationality\" SetNationality dispatch nationalities (optString model.Referral.Nationality)\n demoList \"disability\" \"Disability\" SetDisability dispatch disabilities (optString model.Referral.Disability)\n demoList \"parental\" \"Parental\" (toInt>>SetParental) dispatch parentalStatuses (optString model.Referral.Parental)\n demoList \"employment\" \"Employment\" (toInt>>SetEmployment) dispatch employmentStatuses (optString model.Referral.Employment)\n ]\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ProceedToScores)\n ] [\n str \"Proceed\"\n ] \n yield button [ \n ClassName \"btn btn-default\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ProceedToCoreDetails)\n ] [\n str \"Back\"\n ]\n}\n\nlet renderScoreBar id (score: int) setter dispatch =\n div [ ClassName \"input-group\" ] [ \n span [ ClassName \"input-group-addon\" ] [ str <| score.ToString() ]\n input [\n ClassName \"form-control\"\n HTMLAttr.Type \"range\"\n Min \"0\"\n Max \"10\"\n Id id\n Elmish.React.Helpers.valueOrDefault (score.ToString())\n OnChange (fun ev -> !!ev.target?valueAsNumber |> setter |> dispatch)\n ]\n ]\n\nlet renderSummary (model: Model) (dispatch: Msg -> unit) = seq {\n if model.Waiting then\n yield h2 [ ClassName \"animated-background centerflex\" ] [ str \"Please wait...\" ]\n else\n yield h2 [] [ str \"Referral Summary\" ]\n yield p [] [\n str \"You are about to submit your details to \"\n str model.TenantDisplayName\n str \" via this online referral tool. After choosing to proceed, \n you will be sent an email that contains a link you must click on to confirm the referral. \"\n br []\n str \"Your email address is \"\n strong [] [ str model.Referral.EmailAddress ]\n str \". Please ensure this is correct as that is where we will send the confirmation email.\"\n ]\n match model.PolicyUrl with\n | None -> ()\n | Some url ->\n yield p [ ClassName \"alert alert-info\" ] [\n str \"We keep your personal information safe and secure, and maintain your privacy rights in line with the Data Protection Act 2018. For more information about how we manage your data, please see our \"\n a [ Href url; Alt \"Privacy Policy\" ] [ str \"Privacy Policy\" ]\n ]\n\n if model.SubmissionErrors.Length > 0 then\n yield p [ ClassName \"alert alert-danger\" ] (model.SubmissionErrors |> List.map (fun x -> div [] [ str x ]))\n \n yield button [ \n ClassName \"btn btn-success\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch SubmitReferral)\n ] [\n str \"Submit Referral\"\n ]\n yield button [ \n ClassName \"btn btn-default\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ProceedToSubstanceUse)\n ] [\n str \"Back\"\n ] \n}\n\nlet renderConfirmationSent (model: Model) (dispatch: Msg -> unit) = seq {\n yield h2 [] [ str \"Referral Sent\" ]\n yield p [] [\n str \"The email has been sent to \"\n strong [] [ str model.Referral.EmailAddress ]\n str \". Once you have clicked the link in the email, the referral will be sent.\"\n ]\n yield p [ ClassName \"alert alert-info\" ] [\n str \"By confirming your referral you are consenting to the processing of your data in order to fulfil your request.\"\n ]\n \n yield button [ \n ClassName \"btn btn-default\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch GoToHome)\n ] [\n str \"Back to Home\"\n ] \n}\n\nlet renderScores (model: Model) (dispatch: Msg -> unit) = seq {\n yield h2 [] [ str \"How's Life?\" ]\n yield p [ ClassName \"alert alert-info\" ] [\n str \"Rate yourself on the following between 0 and 10 (0 = terrible, 10 = fabulous).\"\n ]\n yield form [ ClassName \"form\" ] [\n formGroup [\n formLabel \"psychological\" false \"Psychological\"\n renderScoreBar \"psychological\" (model.Referral.PsychologicalHealth) SetPsychologicalHealth dispatch\n span [ ClassName \"help-block\" ] [ str \"Emotions, feelings\" ]\n ]\n formGroup [\n formLabel \"health\" false \"Physical\"\n renderScoreBar \"health\" (model.Referral.PhysicalHealth) SetPhysicalHealth dispatch\n span [ ClassName \"help-block\" ] [ str \"How well are you?\" ]\n ]\n formGroup [\n formLabel \"overall\" false \"Overall\"\n renderScoreBar \"overall\" (model.Referral.OverallHealth) SetOverallHealth dispatch\n span [ ClassName \"help-block\" ] [ str \"Can you enjoy your life?\" ]\n ]\n ]\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ProceedToSubstanceUse)\n ] [\n str \"Proceed\"\n ]\n yield button [ \n ClassName \"btn btn-default\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ProceedToDemographics)\n ] [\n str \"Back\"\n ] \n}\n\nlet renderSubstanceUse (model: Model) (dispatch: Msg -> unit) = seq {\n yield h2 [] [ str \"Alcohol and Drug Use\" ]\n match model.Audit with\n | None ->\n yield form [ ClassName \"form\" ] [\n formGroup [\n formLabel \"howoften\" false \"How often do you have a drink containing alcohol?\"\n select [\n ClassName \"form-control\"\n Id \"howoften\"\n OnChange (fun ev -> (match !!ev.target?value with \"\" -> SetHowOftenDrink None | v -> v |> System.Int32.Parse |> Some |> SetHowOftenDrink) |> dispatch);\n HTMLAttr.Value (optString model.Referral.HowOftenDrink)\n ] [\n option [ HTMLAttr.Value \"\" ] [ str \"Please select an option\" ]\n option [ HTMLAttr.Value \"0\" ] [ str \"Never\" ]\n option [ HTMLAttr.Value \"1\" ] [ str \"Monthly or less\" ]\n option [ HTMLAttr.Value \"2\" ] [ str \"2-4 times a month\" ]\n option [ HTMLAttr.Value \"3\" ] [ str \"2-3 times a week\" ]\n option [ HTMLAttr.Value \"4\" ] [ str \"4+ times a week\" ]\n ]\n ]\n formGroup [\n formLabel \"bingeAmount\" false \"How many units of alcohol do you drink on a typical day when you are drinking?\"\n select [\n ClassName \"form-control\"\n Id \"bingeAmount\"\n OnChange (fun ev -> (match !!ev.target?value with \"\" -> SetHowMuchDrink None | v -> v |> System.Int32.Parse |> Some |> SetHowMuchDrink) |> dispatch);\n HTMLAttr.Value (optString model.Referral.DrinkingDayUnits)\n ] [\n option [ HTMLAttr.Value \"\" ] [ str \"Please select an option\" ]\n option [ HTMLAttr.Value \"0\" ] [ str \"1-2\" ]\n option [ HTMLAttr.Value \"1\" ] [ str \"3-4\" ]\n option [ HTMLAttr.Value \"2\" ] [ str \"5-6\" ]\n option [ HTMLAttr.Value \"3\" ] [ str \"7-9\" ]\n option [ HTMLAttr.Value \"4\" ] [ str \"10+\" ]\n ]\n ]\n formGroup [\n formLabel \"bingeFreq\" false \"How often have you had 6 or more units on a single occasion in the last year?\"\n select [\n ClassName \"form-control\"\n Id \"bingeFreq\"\n OnChange (fun ev -> (match !!ev.target?value with \"\" -> SetBingeFrequency None | v -> v |> System.Int32.Parse |> Some |> SetBingeFrequency) |> dispatch);\n HTMLAttr.Value (optString model.Referral.AlcoholBingeFrequency)\n ] [\n option [ HTMLAttr.Value \"\" ] [ str \"Please select an option\" ]\n option [ HTMLAttr.Value \"0\" ] [ str \"Never\" ]\n option [ HTMLAttr.Value \"1\" ] [ str \"Less than monthly\" ]\n option [ HTMLAttr.Value \"2\" ] [ str \"Monthly\" ]\n option [ HTMLAttr.Value \"3\" ] [ str \"Weekly\" ]\n option [ HTMLAttr.Value \"4\" ] [ str \"Daily\" ]\n ]\n ]\n ] \n | Some audit ->\n yield p [ ClassName \"alert alert-success\" ] [ str \"You have already completed an alcohol audit.\" ]\n yield form [ ClassName \"form\" ] [\n formGroup [\n formLabel \"smoke\" false \"Do you smoke? Daily or socially?\"\n textarea [\n ClassName \"form-control\"\n Id \"smoke\"\n Placeholder \"Enter your smoking behaviour\"; \n OnChange (fun ev -> !!ev.target?value |> SetSmoking |> dispatch);\n DefaultValue model.Referral.Smoking\n MaxLength 500.\n Rows 3\n ] []\n ]\n formGroup [\n formLabel \"substanceUse\" false \"Have you ever used other substances? How often? How old when you first tried them?\"\n textarea [\n ClassName \"form-control\"\n Id \"substanceUse\"\n Placeholder \"Enter your substance usage behaviour\"; \n OnChange (fun ev -> !!ev.target?value |> SetSubstanceUse |> dispatch);\n DefaultValue model.Referral.SubstanceUseDescription\n MaxLength 500.\n Rows 4\n ] []\n ]\n formGroup [\n formLabel \"concerns\" false \"Have you ever been concerned about someone else’s drink or substance use? What concerned you?\"\n textarea [\n ClassName \"form-control\"\n Id \"concerns\"\n Placeholder \"Enter your concerns about someones substance usage\"; \n OnChange (fun ev -> !!ev.target?value |> SetConcerns |> dispatch);\n DefaultValue model.Referral.ConcernedAboutUsage\n MaxLength 500.\n Rows 4\n ] []\n ]\n formGroup [\n formLabel \"habits\" false \"Have you ever recognised those same habits in your own use? What changes would you consider to\nyour use? (e.g. days off, cut down units, swap for non-alcohol drinks, etc.)\"\n textarea [\n ClassName \"form-control\"\n Id \"habits\"\n Placeholder \"Enter your own usage habit\"; \n OnChange (fun ev -> !!ev.target?value |> SetHabits |> dispatch);\n DefaultValue model.Referral.PersonalHabitsAndChanges\n MaxLength 1000.\n Rows 6\n ] []\n ]\n ]\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ProceedToSummary)\n ] [\n str \"Proceed\"\n ]\n yield button [ \n ClassName \"btn btn-default\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ProceedToScores)\n ] [\n str \"Back\"\n ]\n}\n\nlet renderCoreDetails (model: Model) (dispatch: Msg -> unit) = seq {\n yield h2 [] [ str \"Details\" ]\n yield p [ ClassName \"alert alert-info\" ] [\n str \"First, we need to capture some of your core information. We'll use this to identify, assess and contact you as part of your referral.\"\n ]\n yield form [ ClassName \"form\" ] [\n formGroup [\n formLabel \"forename\" true \"Forename\"\n textInput \"forename\" \"Enter your forename\" SetForename dispatch model.Referral.Forename (Some 50.)\n ]\n formGroup [\n formLabel \"surname\" true \"Surname\"\n textInput \"surname\" \"Enter your surname\" SetSurname dispatch model.Referral.Surname (Some 50.)\n ]\n formGroupWithErrors (model.DateOfBirthErrors.Length > 0) [\n yield formLabel \"dob\" true \"Date of Birth\"\n yield dateInput \"dob\" \"Enter your date of birth\" (fun ev -> !!ev.target?value |> SetDateOfBirth |> dispatch) (if model.Referral.DateOfBirth = DateTime.MinValue then \"\" else formatDate \"yyyy-MM-dd\" model.Referral.DateOfBirth)\n yield! renderValidations model.DateOfBirthErrors\n ]\n formGroup [\n let getGenderValue =\n function\n | \"Male\" -> Gender.Male\n | \"Female\" -> Gender.Female\n | \"I'm not sure\" -> Gender.NotKnown\n | \"I don't want to say\" -> Gender.NotSpecified\n | _ -> failwith \"not a valid gender\"\n\n yield formLabel \"gender\" true \"Gender\"\n yield select [\n Id \"gender\"\n ClassName \"form-control mandatory\"\n Placeholder \"Enter your gender\"\n OnChange(fun ev -> !!ev.target?value |> getGenderValue |> SetGender |> dispatch)\n ] [\n option [] [ str \"Male\" ]\n option [] [ str \"Female\" ]\n option [] [ str \"I'm not sure\" ]\n option [] [ str \"I don't want to say\" ]\n ]\n ]\n formGroupWithErrors (model.EmailErrors.Length > 0) [\n yield formLabel \"email\" true \"Email Address\"\n yield textInput \"email\" \"Enter your email address\" SetEmailAddress dispatch model.Referral.EmailAddress (Some 254.)\n yield! renderValidations model.EmailErrors\n ]\n formGroup [\n formLabel \"address\" false \"Address\"\n textarea [\n ClassName \"form-control\"\n Id \"address\"\n Placeholder \"Enter your address\"; \n OnChange (fun ev -> !!ev.target?value |> SetAddress |> dispatch);\n DefaultValue model.Referral.Address\n MaxLength 140.\n Rows 4\n ] []\n ]\n formGroup [\n formLabel \"telephone\" false \"Telephone Number\"\n textInput \"telephone\" \"Enter your telephone number\" SetTelephoneNumber dispatch model.Referral.TelephoneNumber (Some 20.)\n ]\n formGroup [\n formLabel \"leaveMessage\" false \"Okay to leave a message?\"\n input [ \n HTMLAttr.Type \"checkbox\"; \n ClassName \"form-control\"; \n Id \"leaveMessage\"; \n OnChange (fun ev -> ToggleOkayToLeaveMessage |> dispatch);\n Checked model.Referral.OkayToLeaveAMessage\n ]\n span [ ClassName \"help-block\" ] [ str \"If checked we may also leave you voicemail messages and text messages as well as phone calls and emails.\" ]\n ]\n \n ]\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch ProceedToDemographics)\n Disabled (model.Referral.Forename.Length = 0 \n || model.Referral.Surname.Length = 0 \n || model.DateOfBirthErrors.Length > 0 \n || model.Referral.DateOfBirth = DateTime.MinValue\n || model.EmailErrors.Length > 0\n || model.Referral.EmailAddress.Length = 0)\n ] [\n str \"Proceed\"\n ]\n yield button [ \n ClassName \"btn btn-default\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch RestartWizard)\n ] [\n str \"Back\"\n ]\n}\n\nlet renderSplash (model: Model) dispatch = seq {\n yield h2 [] [ str \"Prerequisites\" ]\n yield p [ ClassName \"alert alert-info\" ] [\n str \"Before we start, we need to collect some information from you to see if we can help. All fields \"\n span [ ClassName \"mandatory\" ] [ str \"marked\" ]\n str \" are required. Information provided here will only be viewed and processed in line with GDPR. \n By submitting data here you give consent to the service to retain this information.\"\n ]\n\n match model.Audit with\n | None -> ()\n | Some audit ->\n yield p [ ClassName \"alert alert-success\" ] [\n str <| sprintf \"Your alcohol audit information is already included in this submission. You scored %d points.\" (AlcoholAuditDomain.calculateAuditScore audit)\n ]\n \n if model.AllowedPostcodes.Length > 0 then\n yield div [] [\n form [ ClassName \"form\" ] [\n formGroup [\n formGroupWithErrors (model.PostcodeErrors.Length > 0) [\n yield formLabel \"postcode\" true \"Postcode\"\n yield textInput \n \"postcode\" \n \"Enter your postcode.\" \n SetPostcodeTest\n dispatch \n (model.Referral.Postcode) \n (Some 8.)\n yield! renderValidations model.PostcodeErrors\n ]\n span [ ClassName \"help-block\" ] [\n yield str \"This service has a limited catchment area. Please provide your postcode (including the space) to determine if we can help.\"\n if model.PostcodeAllowed = false then\n yield strong [] [\n str <| sprintf \"This postcode is outside of the catchment area. If you need help, call the service on %s.\" model.ServicePhoneNumber\n ]\n ]\n ]\n ]\n ]\n\n if model.Pathways.Length > 0 then\n\n match model.Audit with\n | Some audit -> ()\n | None -> \n if model.Pathways |> Array.exists ((=){ Name = DrugName.Alcohol; Behaviour = Behaviour.Audit }) then\n yield h3 [] [ str \"Alcohol Audit\" ]\n yield div [] [\n p [ ClassName \"\" ] [ \n str \"If you would like to receive some help with your drinking, please go to \"\n a [ Href <| Pages.toHash (Pages.Page.AlcoholAudit model.Tenant) ] [ str \"this page\" ]\n str \" to record your drinking habits.\"\n ]\n ]\n\n yield div [] [\n h3 [ ClassName \"mandatory\" ] [ str \"Which substances do you want help with?\" ]\n form [ ClassName \"form-horizontal\" ] [\n renderSubstance DrugName.Alcohol \"alcohol\" \"Alcohol\" dispatch model.Referral.UsesAlcohol model\n renderSubstance DrugName.Amphetamines \"amphetamines\" \"Amphetamines\" dispatch model.Referral.UsesAmphetamines model\n renderSubstance DrugName.Cocaine \"cocaine\" \"Cocaine\" dispatch model.Referral.UsesCocaine model\n renderSubstance DrugName.Ecstasy \"ecstasy\" \"Ecstasy/MDMA\" dispatch model.Referral.UsesEcstasy model\n renderSubstance DrugName.Ketamine \"ketamine\" \"Ketamine\" dispatch model.Referral.UsesKetamine model\n renderSubstance DrugName.Cannabis \"cannabis\" \"Cannabis\" dispatch model.Referral.UsesCannabis model\n renderSubstance DrugName.CrackCocaine \"crack\" \"Crack Cocaine\" dispatch model.Referral.UsesCrackCocaine model\n renderSubstance DrugName.PrescribedOrOverTheCounter \"prescribed\" \"Prescribed/Over-the-Counter Medicine\" dispatch model.Referral.UsesPrescribedOrOverTheCounter model\n renderSubstance DrugName.Spice \"spice\" \"Novel Psychoactive Substances/Spice\" dispatch model.Referral.UsesSpice model\n renderSubstance DrugName.OtherDrug \"other\" \"Other Drug\" dispatch model.Referral.UsesOtherDrug model\n renderSubstance DrugName.Opiates \"opiates\" \"Opiates\" dispatch model.Referral.UsesOpiates model\n ] \n ]\n\n yield button [ \n ClassName \"btn btn-primary\"\n HTMLAttr.Type \"button\"\n Disabled (model.Referral.Postcode.Length = 0\n || not model.PostcodeAllowed\n || model.PostcodeErrors.Length > 0\n || (model.Pathways.Length > 0 && not <| ReferralForms.usesAny model.Referral)) \n OnClick (fun _ -> dispatch ProceedToCoreDetails)\n ] [\n str \"Proceed\"\n ]\n}\n\nlet view (model: Model) (dispatch: Msg -> unit) =\n [\n div [ ClassName \"container\" ] [\n yield div [ \n ClassName \"centerflex\" \n Id \"alcoholAudit\"\n ] [\n div [ \n ClassName \"formstyle\"\n ] [\n match model.State with\n | NotStarted -> yield! renderSplash model dispatch\n | CoreDetails -> yield! renderCoreDetails model dispatch\n | Demographics -> yield! renderDemographics model dispatch\n | Scores -> yield! renderScores model dispatch\n | SubstanceUse -> yield! renderSubstanceUse model dispatch\n | Summary -> yield! renderSummary model dispatch\n | ConfirmationEmailSent -> yield! renderConfirmationSent model dispatch\n ]\n ]\n ]\n ]\n","module Client.ConfirmReferral\n\nopen Fable.Core\nopen Fable.Import\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Style\nopen System\nopen Fable.Core.JsInterop\nopen Fetch\nopen SharedCode\nopen Elmish.Navigation\n\ntype Msg =\n | ReferralSent of SelfHelpPack: (string*string) list\n | GoToHome\n | FetchError of exn\n\ntype Model = \n { \n Id: Guid\n Waiting: bool\n SubmissionErrors: string list\n SelfHelpPack: (string*string) list\n }\n\nlet postReferralInfoCmd (tenant, id: Guid) = \n let url = Urls.ConfirmReferral tenant\n FetchRequest.post url (id.ToString()) ReferralSent FetchError\n\nlet init tenant id = \n {\n Id = id;\n Waiting = true;\n SubmissionErrors = []\n SelfHelpPack = []\n }, postReferralInfoCmd (tenant, id)\n\nlet update (msg:Msg) (model: Model) : Model*Cmd* string option = \n match msg with\n | GoToHome -> model, Navigation.newUrl (Pages.toHash Pages.Page.Home), None\n | ReferralSent pack ->\n { model with SelfHelpPack = pack; SubmissionErrors = []; Waiting = false }, [], Some \"Your referral has been sent!\" \n | FetchError exn -> { model with SubmissionErrors = [exn.Message]; Waiting = false }, [], None \n\nlet view (model: Model) (dispatch: Msg -> unit) =\n [\n div [ ClassName \"container\" ] [\n yield div [ \n ClassName \"centerflex\" \n Id \"referral\"\n ] [\n div [ \n ClassName \"formstyle\"\n ] [\n if model.Waiting then\n yield h2 [ ClassName \"animated-background centerflex\" ] [ str \"Please wait...\" ]\n yield p [] [ str \"We're checking your details now - please hold on...\" ]\n else\n if model.SubmissionErrors.Length > 0 then\n yield p [ ClassName \"alert alert-danger\" ] [\n yield str \"Unfortunately, we've had a problem sending your referral for the following reasons:\"\n for err in model.SubmissionErrors do\n yield str err\n yield br []\n ]\n else\n yield h2 [] [ str \"Referral Sent\" ]\n yield p [] [\n str \"Great, we've sent your referral. Someone should be in touch with you soon to guide you through the process. Of course, at busy times it may take a little longer than normal.\"\n ]\n if model.SelfHelpPack.Length > 0 then\n yield strong [] [ str \"Whilst you're waiting for a reply, please check out one of these initial help packs so you can familiarise yourself with the approach we will be taking together.\" ]\n yield ul [ ClassName \"list-group\" ] [\n for item in model.SelfHelpPack do\n yield li [ ClassName \"list-group-item\" ] [ \n a [ Href (snd item); Download (fst item) ] [ str (fst item) ]\n ]\n ]\n \n yield button [ \n ClassName \"btn btn-default\"\n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch GoToHome)\n ] [\n str \"Back to Home\"\n ] \n ]\n ]\n ]\n ]\n","module Client.Menu\n\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen Style\nopen System\nopen Fable.Core.JsInterop\nopen Fable\nopen Fetch\nopen SharedCode\nopen Client.Pages\nopen Fable.Core\nopen Elmish.React\n\ntype Model = {\n SectionTitle: string;\n SuccessMessage: string;\n Menu: TreeNodeDTO option;\n OpenMenu: TreeNodeDTO option\n Tenant: string option\n Username: string\n Password: string\n ShowLogin: bool\n User: User option\n LoginError: string;\n ResetEmail: string\n ResetError: string\n ResetSent: bool\n ShowResetBar: bool\n MenuCollapse: bool\n ShowingLicenses: bool\n}\n\ntype Msg =\n | Logout\n | DismissSuccess\n | LoadedMenuData of string * TreeNodeDTO\n | Toggle of TreeNodeDTO\n | HideMenu\n | FetchError of exn\n | SwitchedTenant of string\n | ShowLoginOverlay\n | HideLoginOverlay\n | SetPassword of string\n | SetUsername of string\n | SetResetEmail of string\n | DoLogin\n | LoginResult of LoginResponse\n | LoginSuccessOnServer of JWT\n | StoreLoginOnClient of JWT\n | LoginFailure of exn\n | StorageFailure of exn\n | ResetFailure of exn\n | ClickReset\n | ResetEmailSent\n | ShowReset\n | HideReset\n | ToggleMenuBurger\n | ShowLicenses\n | HideLicenses\n\nlet authUser login =\n promise {\n if String.IsNullOrEmpty login.UserName then return! failwithf \"You need to fill in a username.\" else ()\n if String.IsNullOrEmpty login.Password then return! failwithf \"You need to fill in a password.\" else ()\n\n return! FetchRequest.postPromise Urls.Login None login\n }\n\nlet authUserCmd login = \n Cmd.OfPromise.either authUser login LoginResult LoginFailure\n\nlet storeLoggedInUserCmd (newUser: JWT) = Cmd.OfFunc.either (BrowserLocalStorage.save \"user\") newUser (fun _ -> StoreLoginOnClient newUser) StorageFailure\n\nlet getPageHierarchy tenant =\n FetchRequest.postPromise \n Urls.GetPageHierarchy\n (Some \n [\n RequestProperties.Cache RequestCache.Default\n Fetch.requestHeaders [\n HttpRequestHeaders.ContentType \"application/json\"\n HttpRequestHeaders.CacheControl \"max-age=1800\"\n ]\n ])\n tenant\n\nlet postGetPageHierarchyCmd tenant = \n Cmd.OfPromise.either getPageHierarchy tenant (fun x -> LoadedMenuData(tenant, x)) FetchError\n\nlet resetEmail email =\n promise {\n if String.IsNullOrEmpty email then return! failwithf \"You need to fill in your email address.\" else ()\n let props = \n [ \n Method HttpMethod.POST\n Fetch.requestHeaders [\n ContentType \"application/json\" \n ]\n Body !^email\n ] \n\n try\n let! response = Fetch.fetch Urls.RequestResetEmail props\n \n if not response.Ok then\n return! failwithf \"Error: %d\" response.Status\n else \n return true\n with\n | _ -> return! failwithf \"Could not reset email.\"\n }\n\n\nlet dismissSuccessCmd() =\n Cmd.OfAsync.either (fun _ -> \n async {\n do! Async.Sleep 10000 \n return 1 \n }) 0 (fun _ -> DismissSuccess) (fun _ -> DismissSuccess)\n\nlet init tenant withPages : Model * Cmd = \n { \n SectionTitle = \"\"\n SuccessMessage = \"\"\n Menu = None\n OpenMenu = None\n Tenant = tenant\n ShowLogin = false\n Password = \"\"\n Username = \"\"\n User = None\n LoginError = \"\"\n ResetEmail = \"\"\n ResetError = \"\"\n ResetSent = false\n ShowResetBar = false\n MenuCollapse = true\n ShowingLicenses = false\n }, match tenant with None -> [] | Some tenant -> if withPages then postGetPageHierarchyCmd tenant else []\n\nlet shouldSwitchTenant model tenantName =\n if (Some tenantName) <> model.Tenant then\n postGetPageHierarchyCmd tenantName\n else\n Cmd.none \n\nlet update (msg:Msg) model : Model*Cmd = \n match msg with\n | Logout -> model, Cmd.none\n | DismissSuccess -> { model with SuccessMessage = \"\" }, (dismissSuccessCmd())\n | LoadedMenuData (tenant, menu) -> { model with Menu = Some menu; Tenant = Some tenant }, []\n | HideMenu ->\n { model with OpenMenu = None; MenuCollapse = true }, []\n | Toggle menu ->\n let opened =\n match model.OpenMenu, menu with\n | Some m1, m2 when m1 = m2 -> None\n | _,m -> Some m\n { model with OpenMenu = opened },[]\n | ToggleMenuBurger ->\n { model with MenuCollapse = not model.MenuCollapse}, []\n | SwitchedTenant newTenant -> model, postGetPageHierarchyCmd newTenant\n | FetchError err -> { model with SectionTitle = \"Error fetching menu: \" + err.ToString() },[]\n | ShowLoginOverlay -> { model with ShowLogin = true }, []\n | HideLoginOverlay -> { model with ShowLogin = false }, []\n | DoLogin -> { model with LoginError = \"\" }, authUserCmd { UserName = model.Username; Password = model.Password; PasswordId = Guid.Empty; ResetEmail = \"\" } \n | LoginResult result ->\n match result with\n | SignIn token ->\n model, Cmd.ofMsg (LoginSuccessOnServer token)\n | LoginResponse.LoginFailure msg ->\n { model with LoginError = msg; }, []\n | LoginFailure exn -> { model with LoginError = exn.Message }, [] \n | LoginSuccessOnServer jwt -> model, storeLoggedInUserCmd jwt\n | SetUsername username -> { model with Username = username }, [] \n | SetPassword pw -> { model with Password = pw }, [] \n | SetResetEmail email -> { model with ResetEmail = email }, [] \n | ShowReset -> { model with ShowResetBar = true; ResetError = \"\"; ResetSent = false }, []\n | HideReset -> { model with ShowResetBar = false }, []\n | ClickReset -> { model with ResetSent = false; ResetError = \"\" }, (Cmd.OfPromise.either resetEmail (model.ResetEmail) (fun _ -> ResetEmailSent) ResetFailure)\n | ResetEmailSent -> { model with ResetSent = true; ResetEmail = \"\" }, Cmd.none\n | ResetFailure exn -> { model with ResetSent = true; ResetError = string (exn.Message) }, []\n | StoreLoginOnClient jwt -> \n let adminPage = Page.Admin (TenantRef.get jwt.Account.Tenant, \"\")\n Browser.Dom.console.log(\"admin\", adminPage)\n { model with ShowLogin = false },Elmish.Navigation.Navigation.newUrl (toHash adminPage)\n | StorageFailure exn -> { model with LoginError = \"Error logging in: \" + exn.Message }, [] \n | ShowLicenses ->\n { model with ShowingLicenses = true }, []\n | HideLicenses ->\n { model with ShowingLicenses = false }, []\n\nlet renderInteractive tenant (openMenu: TreeNodeDTO option) dispatch = \n let loc = {Id=Slug \"self-referral\"; Name=\"Self Referral\"}\n let node = TreeNodeDTO.Node (loc, [||])\n\n ul [ ClassName \"nav navbar-nav navbar-right\" ] [\n li [ ClassName (\"dropdown\" + match openMenu with Some menu when menu = node -> \" open\" | _ -> \"\") ] [\n if tenant <> \"training\" then\n yield a [ \n jsVoid\n ClassName \"dropdown-toggle\"; \n Role \"button\" \n OnClick (fun _ -> dispatch (Toggle node))\n ] [\n str (loc.Name)\n span [ ClassName \"carat\" ] []\n ]\n match openMenu with\n | Some menu when menu = node && tenant <> \"training\" ->\n yield ul [ ClassName \"dropdown-menu\" ] [\n yield li [] [ a [ Href (Pages.toHash (Pages.Page.AlcoholAudit tenant)) ] [ str \"Alcohol Audit\" ] ]\n yield li [] [ a [ Href (Pages.toHash (Pages.Page.SelfReferral tenant)) ] [ str \"Self-Referral Form\" ] ]\n ]\n | _ -> ()\n ]\n ]\n\nlet renderMenu (model: Model) (root: TreeNodeDTO) (openMenu: TreeNodeDTO option) (dispatch: Msg -> unit) =\n div [ ClassName (\"navbar-collapse collapse\" + if model.MenuCollapse = false then \" in\" else \"\") ] [\n match model.Tenant with\n | None -> ()\n | Some tenant -> \n for child in root.Children do\n yield ul [ ClassName \"nav navbar-nav navbar-right\" ] [\n li [ ClassName (\"dropdown\" + match openMenu with Some menu when menu = child -> \" open\" | _ -> \"\") ] [\n yield a [ \n jsVoid\n ClassName \"dropdown-toggle\"; \n Data (\"toggle\", \"dropdown\"); \n Role \"button\" \n OnClick (fun _ -> dispatch (Toggle child))\n ] [\n str (child.Key.Name)\n span [ ClassName \"carat\" ] []\n ]\n match openMenu with\n | Some menu when menu = child ->\n yield ul [ ClassName \"dropdown-menu\" ] [\n yield li [] [ a [ Href (sprintf \"#/areas/%s/pages/%s\" (tenant) (Domain.Location.getId menu.Key)) ] [ str menu.Key.Name ] ]\n yield li [ Role \"separator\"; ClassName \"divider\" ] []\n for sub in child.Children do\n yield li [] [ a [ Href (sprintf \"#/areas/%s/pages/%s.%s\" (tenant) (Domain.Location.getId menu.Key) (Domain.Location.getId sub.Key)) ] [ str sub.Key.Name ] ]\n ]\n | _ -> ()\n ]\n ]\n match model.Tenant with\n | None -> ()\n | Some tenant -> yield renderInteractive tenant openMenu dispatch \n ]\n\nlet view (model:Model) dispatch contents =\n [\n yield nav [ \n ClassName \"navbar navbar-default navbar-inverse clearfix\"\n Role \"navigation\"\n ] [\n fluidContainer [\n yield div [ ClassName \"navbar-header\" ] [\n // creates the collapsed display spans\n button [ \n ClassName (\"navbar-toggle\" + if model.MenuCollapse then \" collapsed\" else \"\")\n OnClick (fun ev -> dispatch ToggleMenuBurger)\n ] [\n match model.Menu with\n | None -> ()\n | Some menu -> \n yield span [ ClassName \"sr-only\" ] [ str \"Show Menu\"]\n match model.Tenant with\n | None -> ()\n | Some _ -> \n for _ in menu.Children do yield span [ ClassName \"icon-bar\" ] []\n \n ]\n a [ \n ClassName \"navbar-brand\" \n Style [\n WhiteSpace WhiteSpaceOptions.Nowrap\n MaxWidth \"85vw\"\n TextOverflow \"ellipsis\"\n CSSProp.Overflow OverflowOptions.Hidden\n ]\n Href <| toHash Page.Home\n ] [\n img [ Src \"images/logo.png\"; Alt \"Change Your Tomorrow\" ]\n str (sprintf \"%s%s\" (match model.Tenant with None -> \"\" | Some t -> t) (match model.SectionTitle with \"\" -> \"\" | t -> \" - \" + t))\n ]\n ]\n match model.Menu with\n | None -> ()\n | Some menu -> yield renderMenu model menu model.OpenMenu dispatch\n ] \n ]\n if String.IsNullOrEmpty model.SuccessMessage = false then\n yield div [\n ClassName \"alert alert-success\"\n Role \"alert\"\n OnClick (fun _ -> dispatch DismissSuccess)\n Style [\n MarginBottom \"0\"\n ]\n ] [\n str model.SuccessMessage\n ]\n yield div [ \n Id \"main\"\n ClassName \"container-fluid expanding-child expanding-parent no-pad-lr\"\n ] contents\n yield siteFooter (Some (fun _ -> dispatch ShowLoginOverlay)) (fun _ -> dispatch ShowLicenses)\n if model.ShowLogin then\n yield! modal \"Log in to your admin account\" dispatch HideLoginOverlay [\n form [ Role \"form\" ] [\n div [ ClassName \"form-group username\" ] [\n label [ HtmlFor \"usernameMC\" ] [ str \"Username\" ]\n input [ \n Id \"usernameMC\"\n HTMLAttr.Type \"text\"\n ClassName \"form-control input-lg\"\n Placeholder \"Enter your username.\"\n AutoFocus true\n OnChange (fun ev -> dispatch (SetUsername !!ev.target?value))\n ]\n label [ HtmlFor \"passwordMC\" ] [ str \"Password\" ]\n input [ \n Id \"passwordMC\"\n HTMLAttr.Type \"password\"\n ClassName \"form-control input-lg\"\n Placeholder \"Enter your password.\"\n Keyboard.onEnter DoLogin dispatch\n OnChange (fun ev -> dispatch (SetPassword !!ev.target?value))\n ]\n div [ \n ClassName \"alert alert-danger\"\n Style [\n MarginTop \"10px\"\n Display (if String.IsNullOrEmpty model.LoginError then DisplayOptions.None else DisplayOptions.Block)\n ]\n ] [ str model.LoginError ]\n \n a [ \n Href \"javascript:void(0)\" \n OnClick (fun _ -> dispatch (if model.ShowResetBar then HideReset else ShowReset))\n ] [ str \"I've forgotten my password\" ]\n div [\n Id \"passwordReset\"\n Style [\n Visibility (if model.ShowResetBar then \"visible\" else \"hidden\")\n CSSProp.Position (if model.ShowResetBar then PositionOptions.Relative else PositionOptions.Absolute)\n ]\n ClassName (if model.ShowResetBar then \"fade in\" else \"fade\")\n ] [\n inlineForm [\n yield formGroup [\n label [\n ClassName \"sr-only\"\n HtmlFor \"resetEmail\"\n ] [ str \"Enter email\" ]\n input [ \n Id \"resetEmail\"\n HTMLAttr.Type \"text\"\n ClassName \"form-control\"\n Placeholder \"Enter your email address.\"\n Style [\n Width \"300px\"\n ]\n OnChange (fun ev -> dispatch (SetResetEmail !!ev.target?value))\n Helpers.valueOrDefault model.ResetEmail\n\n ]\n button [ \n HTMLAttr.Type \"button\"\n HTMLAttr.Disabled (String.IsNullOrEmpty model.ResetEmail)\n HTMLAttr.Value model.ResetEmail\n ClassName \"btn btn-default\"\n Keyboard.onEnter ClickReset dispatch\n OnClick (fun _ -> dispatch ClickReset)\n ] [ str \"Request reset\" ]\n ]\n if String.IsNullOrWhiteSpace model.ResetError = false || model.ResetSent then\n yield p [ ClassName \"alert alert-success\" ] [ str (if model.ResetSent then \"Your reset request has been sent\" else model.ResetError) ]\n ]\n ]\n ]\n ]\n ] [\n button [\n HTMLAttr.Type \"button\"\n HTMLAttr.Disabled (model.Username.Length = 0 || model.Password.Length = 0)\n ClassName \"btn btn-primary\"\n Keyboard.onEnter DoLogin dispatch\n OnClick (fun _ -> dispatch DoLogin)\n ] [ str \"Log In\" ]\n button [ \n ClassName \"btn btn-default\" \n HTMLAttr.Type \"button\"\n OnClick (fun _ -> dispatch HideLoginOverlay)\n ] [ str \"Close\" ]\n ]\n if model.ShowingLicenses then\n yield! Client.Style.renderAttribution dispatch HideLicenses\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","module Client.App\n\nopen Fable.Core\nopen Fable.Core.JsInterop\n\nopen Fable.Core\nopen Fable.Import\nopen Elmish\nopen Elmish.React\nopen Elmish.Navigation\nopen Client.Pages\nopen Elmish.UrlParser\nopen Elmish.HMR\nopen Elmish.Navigation\nopen SharedCode.Domain\n\nJsInterop.importSideEffects \"whatwg-fetch\"\nJsInterop.importSideEffects \"@babel/polyfill\"\n\n// Model\ntype PageModel =\n | HomeModel of Home.Model\n | TenantModel of Tenant.Model\n | AdminModel of Admin.Model\n | PasswordResetModel of PasswordReset.Model\n | AlcoholAuditModel of AlcoholAudit.Model\n | ReferralModel of Referral.Model\n | ConfirmReferralModel of ConfirmReferral.Model\n | TrainingModel of Training.Model\n\n\ntype Model =\n { \n Menu : Menu.Model\n PageModel : PageModel\n }\n\n/// Application level messages\ntype Msg = \n | HomeMsg of Home.Msg\n | MenuMsg of Menu.Msg\n | TenantMsg of Tenant.Msg\n | AdminMsg of Admin.Msg\n | PasswordResetMsg of PasswordReset.Msg\n | AlcoholAuditMsg of AlcoholAudit.Msg\n | ReferralMsg of Referral.Msg\n | ConfirmReferralMsg of ConfirmReferral.Msg\n | TrainingMsg of Training.Msg\n \nlet checkMenu tenant (menu: Menu.Model) title : Menu.Model * Cmd =\n match menu.Menu with\n | Some _ -> \n { menu with SectionTitle = title; OpenMenu = None },[]\n | None ->\n let m,cmd = Menu.init (Some tenant) true\n { m with SectionTitle = title; OpenMenu = None }, cmd\n\n\n/// Parse the url and update internal state\nlet urlUpdate (result: Client.Pages.Page option) model = \n match result with\n | None ->\n Browser.Dom.console.error(\"Error parsing url: \" + Browser.Dom.window.location.href)\n let m,cmd = Home.init()\n { model with PageModel = HomeModel m; Menu = { model.Menu with SectionTitle = \"\"; Menu = None }}, Cmd.map HomeMsg (Cmd.batch [cmd; Navigation.modifyUrl (toHash Page.Home)])\n | Some Page.Home -> \n let m,cmd = Home.init()\n { model with PageModel = HomeModel m; Menu = { model.Menu with SectionTitle = \"\"; Menu = None; Tenant = None }}, Cmd.map HomeMsg cmd\n | Some (Page.InfoPage (tenant, slug)) ->\n let m,cmd = Tenant.init tenant slug\n let mm,mcmd = checkMenu tenant model.Menu \"\"\n { model with PageModel = TenantModel m; Menu = mm}, Cmd.batch [Cmd.map MenuMsg mcmd; Cmd.map TenantMsg cmd]\n | Some (Page.Tenant tenant) ->\n let m,cmd = Tenant.init tenant \"\"\n let mm,mcmd = checkMenu tenant model.Menu \"\"\n { model with PageModel = TenantModel m; Menu = mm}, Cmd.batch [Cmd.map MenuMsg mcmd; Cmd.map TenantMsg cmd]\n | Some (Page.AlcoholAudit tenant) ->\n let m,cmd = AlcoholAudit.init tenant\n let mm,mcmd = checkMenu tenant model.Menu \"Alcohol Audit\"\n { model with PageModel = AlcoholAuditModel m; Menu = mm}, Cmd.batch [Cmd.map MenuMsg mcmd; Cmd.map AlcoholAuditMsg cmd]\n | Some (Page.SelfReferral tenant) ->\n // if we already have an alcohol audit then leave it in place\n let m,cmd = \n match model.PageModel with\n | ReferralModel m -> Referral.init tenant (m.Audit)\n | _ -> Referral.init tenant None\n let mm,mcmd = checkMenu tenant model.Menu \"Referral\"\n { model with PageModel = ReferralModel m; Menu = mm}, Cmd.batch [Cmd.map MenuMsg mcmd; Cmd.map ReferralMsg cmd]\n | Some (Page.ConfirmReferral (tenant, guid)) ->\n let m,cmd = ConfirmReferral.init tenant guid\n let mm,mcmd = checkMenu tenant model.Menu \"Confirm Referral\"\n { model with PageModel = ConfirmReferralModel m; Menu = mm}, Cmd.batch [Cmd.map MenuMsg mcmd; Cmd.map ConfirmReferralMsg cmd]\n | Some (Page.PasswordReset guid) ->\n let m,cmd = PasswordReset.init guid\n { model with PageModel = PasswordResetModel m; }, Cmd.map PasswordResetMsg cmd\n | Some (Page.Admin (tenant, action)) ->\n match BrowserLocalStorage.load \"user\" with\n | Result.Ok user when TenantRef.get user.Account.Tenant = tenant ->\n let m,cmd = Admin.init user action\n { model with PageModel = AdminModel m; Menu = { model.Menu with SectionTitle = \"Admin\" }}, Cmd.map AdminMsg cmd\n | _ -> \n let m,cmd = Home.init()\n let batch = Cmd.batch [ Cmd.map HomeMsg cmd; Navigation.modifyUrl (toHash Page.Home) ]\n { model with PageModel = HomeModel m; Menu = { model.Menu with SectionTitle = \"\"; Menu = None }}, batch \n | Some (Page.Training (tenant, slug)) ->\n let m,cmd = Training.init tenant slug\n { model with PageModel = TrainingModel m }, Cmd.map TrainingMsg cmd\n \n/// Sets up the default state for the app\nlet init result =\n // sub-init from the menu\n \n let tenant, loadMenu = \n match result with\n | Some (Page.InfoPage (tenant, _)) \n | Some (Page.AlcoholAudit tenant)\n | Some (Page.SelfReferral tenant)\n | Some (Page.ConfirmReferral (tenant,_))\n | Some (Page.Tenant tenant) -> Some tenant, true\n | Some (Page.Admin (tenant,_)) -> Some tenant, false\n | _ ->\n None, false\n\n // Ignore command so it's never double fired by urlUpdate\n let homeModel, _ = Home.init()\n let menu,menuCmd = Menu.init tenant loadMenu\n let m =\n { \n Menu = menu\n PageModel = HomeModel homeModel\n }\n\n // parse the url and re-configure state\n let m,cmd = urlUpdate result m\n let menuCmd = Cmd.map MenuMsg menuCmd\n m,Cmd.batch[cmd; menuCmd]\n\nlet menuActions (msg: string option) model = \n {\n model.Menu with \n SuccessMessage = (if msg.IsSome then msg.Value else \"\");\n OpenMenu = None\n MenuCollapse = true\n }\n\n/// Updates the state of the application given a message and model\nlet update msg model =\n match msg, model.PageModel with\n | TenantMsg m, TenantModel h ->\n let m,cmd, success = Tenant.update m h\n let cmd = Cmd.map TenantMsg cmd\n let menuUpdate = Menu.shouldSwitchTenant model.Menu m.Tenant.Value\n { model with PageModel = TenantModel m; Menu = (menuActions success model) }, Cmd.batch [cmd; Cmd.map MenuMsg menuUpdate]\n | MenuMsg m, _ -> \n let m,cmd = Menu.update m (model.Menu)\n let cmd = Cmd.map MenuMsg cmd\n { model with Menu = m },cmd\n | AdminMsg m, AdminModel am ->\n let m,cmd = Admin.update m am\n let cmd = Cmd.map AdminMsg cmd\n { model with PageModel = AdminModel m }, cmd\n | AlcoholAuditMsg (AlcoholAudit.ContinueToReferral (audit, tenant)), _ ->\n let m,cmd = Referral.init tenant (Some audit)\n { model with PageModel = ReferralModel m; Menu = { model.Menu with SectionTitle = \"Referral\" }}, Cmd.map ReferralMsg cmd\n | AlcoholAuditMsg m, AlcoholAuditModel am ->\n let m,cmd,success = AlcoholAudit.update m am\n let cmd = Cmd.map AlcoholAuditMsg cmd\n { model with PageModel = AlcoholAuditModel m; Menu = (menuActions success model) }, cmd\n | ReferralMsg m, ReferralModel am ->\n let m,cmd,success = Referral.update m am\n let cmd = Cmd.map ReferralMsg cmd\n { model with PageModel = ReferralModel m; Menu = (menuActions success model) }, cmd\n | PasswordResetMsg msg, PasswordResetModel m ->\n let m,cmd,success = PasswordReset.update msg m\n let cmd = Cmd.map PasswordResetMsg cmd\n { model with PageModel = PasswordResetModel m; Menu = (menuActions success model) }, cmd\n | ConfirmReferralMsg msg, ConfirmReferralModel m ->\n let m,cmd,success = ConfirmReferral.update msg m\n let cmd = Cmd.map ConfirmReferralMsg cmd\n { model with PageModel = ConfirmReferralModel m; Menu = (menuActions success model) }, cmd\n | HomeMsg m, HomeModel am ->\n let m,cmd = Home.update m am\n let cmd = Cmd.map HomeMsg cmd\n { model with PageModel = HomeModel m; }, cmd\n | TrainingMsg msg, TrainingModel m ->\n let m',cmd' = Training.update msg m\n { model with PageModel = TrainingModel m' }, Cmd.map TrainingMsg cmd'\n\n// VIEW\n\nopen Fable.React\nopen Fable.React.Props\nopen Client.Style\n\n/// Constructs the view for a page given the model and dispatcher.\nlet viewPage model dispatch =\n match model.PageModel with \n | HomeModel m -> Menu.view model.Menu (MenuMsg >> dispatch) (Home.view m (HomeMsg >> dispatch))\n | TenantModel m -> Menu.view model.Menu (MenuMsg >> dispatch) (Tenant.view m (TenantMsg >> dispatch))\n | AdminModel m -> Admin.view m (AdminMsg >> dispatch)\n | AlcoholAuditModel m -> Menu.view model.Menu (MenuMsg >> dispatch) (AlcoholAudit.view m (AlcoholAuditMsg >> dispatch))\n | ReferralModel m -> Menu.view model.Menu (MenuMsg >> dispatch) (Referral.view m (ReferralMsg >> dispatch))\n | ConfirmReferralModel m -> Menu.view model.Menu (MenuMsg >> dispatch) (ConfirmReferral.view m (ConfirmReferralMsg >> dispatch))\n | PasswordResetModel m -> PasswordReset.view m (PasswordResetMsg >> dispatch) \n | TrainingModel m -> Training.view m (TrainingMsg >> dispatch) \n\nopen Elmish.React\nopen Elmish.Debug\n\nlet view model dispatch =\n div []\n [ \n div [\n ClassName \"expanding-parent\"\n Style [ MinHeight \"100vh\" ]\n ] (viewPage model dispatch)\n ]\n\nlet handleExn (msg,exn) =\n Browser.Dom.console.error exn\n Browser.Dom.console.error msg\n\n\n// App\nProgram.mkProgram init update view\n|> Program.toNavigable (parseHash pageParser) urlUpdate\n#if DEBUG\n|> Program.withConsoleTrace\n#endif\n|> Program.withReactBatched \"elmish-app\"\n#if DEBUG\n|> Program.withDebugger\n|> Program.withErrorHandler handleExn\n#endif\n|> Program.run\n","module Client.Training\n\nopen Elmish\nopen Fable.React\nopen Fable.React.Props\nopen SharedCode.Domain\nopen System\nopen Fetch\nopen SharedCode\n\ntype Workflow =\n | Checking\n | Error of string\n | Redirecting\n\ntype Model =\n {\n Step: Workflow\n Destination: string\n EnvironmentKey: string\n EnvironmentRoot: string option\n }\n\ntype Msg =\n | EndpointResult of RemoteAuthEndpoint\n | AuthError of exn\n | RemoteLoginResponse of LINKSAuthResponse\n | LoginResponseOnServer of LoginResponse\n | LoginFailure of exn\n | StoredLoginOnClient of JWT\n\nmodule Commands =\n let getEndpoint env =\n let url = sprintf \"%s?env=%s\" Urls.LoginEndpoint env\n FetchRequest.postNoDTO url EndpointResult AuthError\n\n let remoteAuth (details: RemoteAuthEndpoint) =\n let url = sprintf \"%s?otc=%d\" details.Url details.OTC\n FetchRequest.postNoDTOWithCredentials url RemoteLoginResponse AuthError\n\n let login (msg: LINKSAuthResponse) =\n let url = Urls.LINKSLogin\n FetchRequest.post url msg LoginResponseOnServer AuthError\n\n let storeLoggedInUserCmd (newUser: JWT) = \n Cmd.OfFunc.either \n (BrowserLocalStorage.save \"user\") \n newUser \n (fun _ -> StoredLoginOnClient newUser) \n AuthError\n\nlet init envKey url =\n {\n Step = Checking\n Destination = url\n EnvironmentKey = envKey\n EnvironmentRoot = None\n }, Commands.getEndpoint envKey\n\nlet update msg model =\n match msg with\n | AuthError exn | LoginFailure exn ->\n { model with Step = Error exn.Message }, []\n | EndpointResult endpoint ->\n { model with EnvironmentRoot = Some endpoint.Area }, Commands.remoteAuth endpoint\n | RemoteLoginResponse response ->\n model, Commands.login response\n | LoginResponseOnServer response ->\n match response with\n | SignIn jwt ->\n model, Commands.storeLoggedInUserCmd jwt\n | LoginResponse.LoginFailure rsn ->\n printfn \"Failed to log in: %s\" rsn\n { model with Step = Error rsn }, []\n | StoredLoginOnClient _ -> \n match model.EnvironmentRoot with\n | None -> failwith \"Expected root\"\n | Some root ->\n let page = Pages.Page.InfoPage (\"training\", model.Destination)\n model,Elmish.Navigation.Navigation.newUrl (Pages.toHash page)\n\nlet view model dispatch =\n [\n nav [ ClassName \"navbar navbar-default navbar-fixed-top navbar-inverse\" ] []\n div [ ClassName \"container\" ] [\n div [ ClassName \"homeBanner\" ] [\n div [ ClassName \"center\" ] [\n yield h1 [] [ str \"Training Login\" ]\n match model.Step with\n | Checking ->\n yield p [ Style [ Color \"white\" ] ] [ str \"Checking that you are logged in to LINKS CarePath... \" ]\n | Error err ->\n yield div [ ClassName \"alert alert-warning\" ] [\n str \"We could not detect your login to LINKS CarePath. Please log into it and try again: \"\n str err\n ]\n | Redirecting ->\n yield p [ Style [ Color \"white\" ] ] [ str \"Moving you on to your page...\" ]\n ]\n ] \n ]\n ]"],"sourceRoot":""}
    ` element\r\n | [] TableCaption\r\n /// Let the element behave like a `
    ` element.\r\n | [] TableCell\r\n /// Let the element behave like a `