Caml1999I037 {.Stdlib__Option!t;!a@W@A$None@@*option.mliXX@@A@$Some@@ X X@@ B@@@A&optionL @@@XY@@@@@X@@@@-@@A@$none!a@Y@@@Z@*[<<+[<P@@?C@@$some@!a@\@@[+@@@]@@^@@^kkA^k@@UD@@%value@=!a@b@@@_@@`'default @@a @@c@@d@\a]a@@qE@@#get@Y!a@g@@@e@@f@@h@rdsd5@@F@@$bind@o!a@k@@@i@@j@@ @@l!b@p@@@m@@n@@o @@@q@@r@@s@ii@@G@@$join@!a@w@@@t@@@u@@v @@@x@@y@l''l'O@@H@@#map@@!a@}@@z!b@@@{@@|@ˠ@@@~@@Р@@@@@@@@oo@@I@@'product@!a@@@@@@@!b@@@@@@@@@@@@@@@@@@r  r X@@(J@@$fold$none!a@@@$some@!b@@@@@@@@( @@@@@@@@@@@@=x>x @@RK@@$iter@@!a@@@$unitF@@@@@@@@L@@@@@@@@@@@@@e| o of| o @@zL@@%blend@@!a@@@@@@@@@@@@@r@@@@@@{@@@@@@@@@@@@@@@    "@@M@@'for_all@@!a@@@$boolE@@@@@@@@@@@@@@@@@@@@@E  E  @@N@@&exists@@!a@@@(@@@@@@@@ʠ@@@@@5@@@@@@@@N  N  @@O@@'is_none@!a@@@@@@O@@@@@@Y  Y  @@P@@'is_some@!a@@@@@@i@@@@@@\  \  +@@,Q@@%equal@@!a@@@@@@@@@@@@@@@@(@@@@@@1@@@@@@@@@@@@@@@J_ j jK_ j @@_R@@'compare@@!a@@@@@@#intA@@@@@@@@@@]@@@@@@f@@@@@@@@@@@@@@@c@@c@@@S@@)to_result$none!e@@@@!a@@@@@@&Stdlib&result @@@@@@@@i77i7n@@T@@'to_list@!a@@@@@@$listK @@@@@@mm@@U@@&to_seq@à!a@@@@@@>#Seq!t @@@@@@p66p6X@@V@@Ӡ&Syntax@$let*@!a@0@@@.@@/@@ @@1!b@5@@@2@@3@@4 @@@6@@7@@8@{Y[{Y@@+W@@$and*@!a@>@@@9@@:@ !b@=@@@;@@<)@@@@?@@@@@@A@@B@D~E~@@YX@@$let+@A!a@E@@@C@@D@@ @@F!b@I@@G@@HV@@@J@@K@@L@k%'l%Z@@Y@@$and+@h!a@R@@@M@@N@u!b@Q@@@O@@P~@@@@S@@@T@@U@@V@@@Z@@@@yDD@[@@@@_L.Stdlib__Option0i]3މr+Stdlib__Seq0?72#[O.Stdlib__Either0HD ?|>&Stdlib0t0VoS%{<F:8CamlinternalFormatBasics0|.e1R$|o@@@Caml1999T037bwA =C.Stdlib__Option*ocaml.text&_none_@@A l Option values. Option values explicitly indicate the presence or absence of a value. @since 4.08 *option.mliP77T@@@@@@3@@@@@@#intA;@@#intA@@@@@;@A@$charB;@@$charA@@@@@A@A@&stringQ;@@&stringA@@@@@G@@@%bytesC;@@%bytesA@@@@@M@@@%floatD;@@%floatA@@@@@S@@@$boolE;@@%falsec@@]@$trued@@c@@@A@@@@@d@A@$unitF;@@"()e@@n@@@A@@@@@o@A@ #exnG;@@@A@@@@@s@@@#effH;@@O@A@A@@@@@@|@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@@@@%arrayJ;@@R@A%arrayA@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@ @@@ .Assert_failure`#@@@@@J@@@@@@@@[@@A!=ocaml.warn_on_literal_pattern%@&@0Division_by_zero]#@@@A+ . .@+End_of_file\#$@@@A366@'FailureY#,@'@@A<??@0Invalid_argumentX#5@0@@AE$H#H@-Match_failureV#>@@=@9@;@@a@@AV5Y4Y@)Not_foundZ#O@@@A^=a<a@-Out_of_memoryW#W@@@AfEiDi@.Stack_overflow^#_@@@AnMqLq@.Sys_blocked_io_#g@@@AvUyTy@)Sys_error[#o@j@@A^]@:Undefined_recursive_modulea#x@@w@s@u@@h@@Aon@:Continuation_already_takenb#@@@Awv@&Stdlib@A5 {1:options Options} VV@@@@@@A+!tAXX@А!a@}3@;@@|@A@A@@@@@@{G@B@@@XX@)ocaml.docݐ @ The type for option values. Either [None] or a value [Some v]. YY:@@@@@@@@@@@@AXX@@BA@;0@A$None@@XX@@A@$SomeBB@~@@X,@@B@@@ATLB@@@@Y@@@@@96@@&@#@@@@@# X X@@А!a ]XJ@@@@ @@Aг&optionXX@А!a%l#X$X@@@,o @@]Z6YX@XX@@@X@X@@.hg@$none:[<@;[<D@г&optionC[<JD[<P@А!a@B@3KJJKKKKK@Jo@AQ[<GR[<I@@@ @@@ @@@Z[<<@3 [none] is [None]. g\QQh\Qi@@@@@@@C@@'@{@@@@@@($some~^ko^ks@б@А!a@B@3@=V4@A^kv^kx@@гꠐ&option^k^k@А!a^k|^k~@@@@@@ @@@#@@ @@@@@^kk@7 [some v] is [Some v]. __@@@@@@@D@@%@̐@@@@@@=%valueaa@б@г.&optionaa@А!a@B@3@\m>@Aaa@@@ @@@ @@б'defaultА!aaa@@А!aaa@@#@@#@@a@@@@@ @@$" @@@ a@A G [value o ~default] is [v] if [o] is [Some v] and [default] otherwise. bb@@@@@@@2E@@@Q-@@@@@@C#get0d 1d#@б@г&option;d)@AId&Jd(@@@ @@@ @@А!a Td3Ud5@@@@@@@@@@]d @ g [get o] is [v] if [o] is [Some v] and raise otherwise. @raise Invalid_argument if [o] is [None]. je66kgr@@@@@@@F@@@~@@@@@@3$bindii@б@гࠐ&optionii@А!a@B@3@Rm>@Aii@@@ @@@ @@б@б@А!aii@@г&optionii@А!b@B@&ii@@@ @@@-@@@7@@ @@2!@@г%&optionii@А!b@ii@@@%@@@G @@@@@ @@Li@@@M@@ @@RP@@@i@! E [bind o f] is [f v] if [o] is [Some v] and [None] if [o] is [None]. jj%@@@@@@@G@@+@1 @@@@@@q$joinl'+l'/@б@гo&optionl'<l'B@гy&option%l'5&l';@А!a@B@3-,,-----@H@A3l'24l'4@@@ @@@ @@@&@@@ #@@г&optionFl'IGl'O@А!a!Ml'FNl'H@@@'@@@# @@@@@ @@(&@@@[l''@ H [join oo] is [Some v] if [oo] is [Some (Some v)] and [None] otherwise. hmPPimP@@@@@@@H@@%@|@@@@@@G#mapoo@б@б@А!a@B@3@^6@Aoo@@А!b@B@ oo@@@@@ @@@@б@г&optionoo@А!a)$oo@@@/@@@+ @@г&optionoo@А!b19oo@@@7@@@@ @@@@@ @@E!@@@:@@ @@Jo@@@o@ K [map f o] is [None] if [o] is [None] and [Some (f v)] if [o] is [Some v]. pp@@@@@@@I@@+@ @@@@@@j'productr $r +@б@г^&option r 1 r 7@А!a@B@3@>@Ar .r 0@@@ @@@ @@б@г|&option(r >)r D@А!b@B@4r ;5r =@@@ @@@%@@г&optionBr RCr X@В@А!a<7Mr INr K@@@А!b&?Ur NVr P@@@@K@/@@H@@@# @@@Mcr H!@@@2@@ @@S5&@@@S@@ @@XV+@@@pr  .@ y [product o0 o1] is [Some (v0, v1)] if [o0] is [Some v0] and [o1] is [Some v1] and [None] otherwise. @since 5.5 }sYY~v@@@@@@@J@@>@@@@@@@w$foldxx@б$noneА!a@B@3@6@Axx@@б$someб@А!b@B@xx@@А!axx@@@@@%@@  @@б@г &optionx x @А!b"0x x @@@(@@@7 @@А!a@;x x @@@@@G@@B@@>+@@ @@Gx @@UR@@ @@Mx@@@x@( V [fold ~none ~some o] is [none] if [o] is [None] and [some v] if [o] is [Some v]. y  z ] m@@@@@@@K@@%@8@@@@@@m$iter| o s| o w@б@б@А!a@B@3"!!"""""@6@A(| o {)| o }@@гՠ$unit1| o 2| o @@ @@@@@@@@ @@  @@б@г&optionE| o F| o @А!a+&L| o M| o @@@1@@@ - @@г$unitZ| o [| o @@ @@@ :@@@@@@@? @@@2@@ @@Dj| o z@@@m| o o@ < [iter f o] is [f v] if [o] is [Some v] and [()] otherwise. z}  {}  @@@@@@@L@@#@@@@@@@d%blend    @б@б@А!a@&B@3@{6@A    @@б@А!a     @@А!a    @@@@@@@ @@@!@@ @@ @@б@г&option    @А!a1,    @@@7@@@3 @@б@г0&option    @А!aHC    @@@N@@@J @@гE&option    "@А!a]X    @@@c@@@_ @@@@@ @@ d!@@@:@@! @@"i=@@@V@@# @@$n  @@@   @F [blend f o1 o2] is [o1] if [o2] is [None], [o2] if [o1] is [None], and [Some (f v1 v2)] if [o1] is [Some v1] and [o2] is [Some v2]. @since 5.5 @ # #C  @@@@@@@7M@@0@V2@@@@@@'for_all 5E  6E  @б@б@А!a@3B@'3@??@@@@@@6@AFE  GE  @@г$boolOE  PE  @@ @@@(@@@@@)@@* @@б@г&optioncE  dE  @А!a+&jE  kE  @@@1@@@,- @@г-$boolxE  yE  @@ @@@-:@@@@@.@@/? @@@2@@0 @@1DE  @@@E  @ [for_all p] behaves like {!List.for_all} [p] on a list of zero or one element: - [for_all p None] is [true], - [for_all p (Some v)] is [p v]. @since 5.5 F  L  @@@@@@@N@@#@@@@@@@d&exists!N  N  @б@б@А!a@@B@43@{6@AN  N  @@г~$boolN  N  @@ @@@5@@@@@6@@7 @@б@г1&optionN  N  @А!a+&N  N  @@@1@@@9- @@г$boolN  N  @@ @@@::@@@@@;@@<? @@@2@@= @@>DN  @@@N  @: [exists p] behaves like {!List.exists} [p] on a list of zero or one element: - [exists p None] is [false], - [exists p (Some v)] is [p v]. @since 5.5 O  U  @@@@@@@+O@@#@J&@@@@@@d43 & {1:preds Predicates and comparisons} 0W  1W  @@@@@@3/../////@v1@A'is_none"<Y  =Y  @б@г&optionGY  HY  @А!a@HB@A SY  TY  @@@ @@@C'@@г$boolaY  bY  @@ @@@D4@@@@@E@@F9 @@@nY   @ 5 [is_none o] is [true] if and only if [o] is [None]. {Z  |Z  @@@@@@@P@@@@@@@@@X'is_some#\  \  @б@г&option\  \  #@А!a@PB@I3@wr>@A\  \  @@@ @@@K @@гn$bool\  '\  +@@ @@@L@@@@@M@@N @@@\   @ 7 [is_some o] is [true] if and only if [o] is [Some o]. ] , ,] , h@@@@@@@Q@@@ 琠@@@@@@:%equal$_ j n_ j s@б@б@А!a@cB@Q3@Ql6@A_ j w_ j y@@б@А!a  _ j } _ j @@г$bool _ j  _ j @@ @@@R@@@#@@S@@T @@@(@@U @@V#!@@б@гy&option %_ j  &_ j @А!a83 ,_ j  -_ j @@@>@@@X: @@б@г&option <_ j  =_ j @А!aOJ C_ j  D_ j @@@U@@@ZQ @@г $bool Q_ j  R_ j @@ @@@[^@@@@@\@@]c @@@2@@^ @@_h5@@@N@@` @@am f_ j v@@@ i_ j j@ [equal eq o0 o1] is [true] if and only if [o0] and [o1] are both [None] or if they are [Some v0] and [Some v1] and [eq v0 v1] is [true].  v`   wa >@@@@@@@ R@@(@ @@@@@@'compare% c@D c@K@б@б@А!a@vB@d3        @6@A c@O c@Q@@б@А!a  c@U c@W@@г #int c@[ c@^@@ @@@e@@@#@@f@@g @@@(@@h @@i#!@@б@г &option c@f c@l@А!a83 c@c c@e@@@>@@@k: @@б@г 3&option c@s c@y@А!aOJ c@p c@r@@@U@@@mQ @@г Ǡ#int c@} c@@@ @@@n^@@@@@o@@pc @@@2@@q @@rh5@@@N@@s @@tm c@N@@@ c@@@A [compare cmp o0 o1] is a total order on options using [cmp] to compare values wrapped by [Some _]. [None] is smaller than [Some _] values.  d e@@@@@@@ 2S@@(@Q -@@@@@@ ; :8 {1:convert Converting}  7g 8g5@@@@@@3 6 5 5 6 6 6 6 6@1@A)to_result& Ci7; Di7D@б$noneА!e@B@w Ri7L Si7N@@б@г &option ]i7U ^i7[@А!a@B@x/ ii7R ji7T@@@ @@@z6@@г&result wi7h xi7n@А!aD ~i7` i7b@@А!e8K i7d i7f@@@'?@@@}S i7_@@@'@@~ @@Y*@@NK@@ @@^ i7G!@@@ i77$@А R [to_result ~none o] is [Ok v] if [o] is [Some v] and [Error none] otherwise.  joo k@@@@@@@ T@@4@ @@@@@@~'to_list' m m@б@г &option m m@А!a@B@3        @>@A m m@@@ @@@ @@г W$list m m@А!a m m@@@"@@@ @@@@@ @@#!@@@ m@ 0 D [to_list o] is [[]] if [o] is [None] and [[v]] if [o] is [Some v].  n n4@@@@@@@ !U@@%@ @ @@@@@@B&to_seqg p6: p6@@б@г ~&option *p6F +p6L@А!a@ B@3 2 1 1 2 2 2 2 2@a|>@A 8p6C 9p6E@@@ @@@ @@г #Seq!t Jp6S Kp6V@  Np6W Op6X@@А!a%  Vp6P Wp6R@@@+@@@ '@@@'@@  @@ ,*@@@ dp66@ z [to_seq o] is [o] as a sequence. [None] is the empty sequence and [Some v] is the singleton sequence containing [v].  qqYY rr@@@@@@@ V@@&@  @@@@@@K  3 {1:syntax Syntax}  t t@@@@@@3        @]x1@A&SyntaxlB yDK yDQ@ [@@Б$let*h {Y_ {Yg@б@г &option {Ym {Ys@А!a@ "C@ 3        @0@A {Yj {Yl@@@ @@@ @@б@б@А!a {Yx {Yz@@г /&option {Y {Y@А!b@ $C@ % {Y~ {Y@@@ @@@ ,@@@6@@  @@ 1!@@г N&option {Y {Y@А!b? {Y {Y@@@%@@@ F @@@@@  @@ K {Yw@@@M@@  @@ QP@@@ {Y[@ J? [( let* )] is {!Option.bind}.  "| #|@@@@@@@ ;W@@+@ Z 6@@@@@@p$and*i 9~ :~@б@г &option D~ E~@А!a@ 3C@ %3 L K K L L L L L@>@A R~ S~@@@ @@@ ' @@б@г &option b~ c~@А!b@ 5C@ ( n~ o~@@@ @@@ *%@@г Р&option |~ }~@В@А!a<7 ~ ~@@@А!b&? ~ ~@@@@K@/@@ +H@@@# @@@ -M ~!@@@2@@ . @@ /S5&@@@S@@ 0 @@ 1XV+@@@ ~.@ ߐ " [( and* )] is {!Option.product}.   #@@@@@@@ X@@>@  ː@@@@@@w$let+j %+ %3@б@г -&option %9 %?@А!a@ CC@ 63        @>@A %6 %8@@@ @@@ 8 @@б@б@А!a %D %F@@А!b@ EC@ 9 %J %L@@@(@@ : @@ ;#@@г c&option %T %Z@А!b1 %Q %S@@@ @@@ =8 @@@@@ > @@ ?= "%C@@@>@@ @ @@ ACA@@@ *%'@ _> [( let+ )] is {!Option.map}.  7[] 8[@@@@@@@ PY@@+@ o K@@@@@@b$and+k N O@б@г &option Y Z@А!a@ TC@ F3 a ` ` a a a a a@>@A g h@@@ @@@ H @@б@г ˠ&option w x@А!b@ VC@ I  @@@ @@@ K%@@г 堐&option  @В@А!a<7  @@@А!b&?  @@@@K@/@@ LH@@@# @@@ NM !@@@2@@ O @@ PS5&@@@S@@ Q @@ RXV+@@@ .@ " [( and+ )] is {!Option.product}.   @@@@@@@ Z@@>@  @@@@@@w@6@7@@&@@3        @(@A U yDT @@  J Binding operators. See manual section 12.23 for details. @since 5.5  v x2C@@@@@@@ yDD@i@@ U A@  @  X@ 8 @  @  @  @  2@ @@@@@l@@W@7@@@h*@ @@C \>=@==@@@=@=@:@@@3/../////@@%@@r@@@F@A@ H************************************************************************BA@@CA@L@ H HBMMIBM@ H OCaml NCOC@ H TDUD3@ H The OCaml programmers ZE44[E4@ H `FaF@ H Copyright 2018 Institut National de Recherche en Informatique et fGgG@ H en Automatique. lHmHg@ H rIhhsIh@ H All rights reserved. This file is distributed under the terms of xJyJ@ H the GNU Lesser General Public License version 2.1, with the ~KKN@ H special exception on linking described in the file LICENSE. LOOLO@ H MM@ H************************************************************************NN5@ m* Option values. Option values explicitly indicate the presence or absence of a value. @since 4.08 6* {1:options Options}  !*XX@ A* The type for option values. Either [None] or a value [Some v].  Ƞ4* [none] is [None].  >8* [some v] is [Some v].  H* [value o ~default] is [v] if [o] is [Some v] and [default] otherwise.  h* [get o] is [v] if [o] is [Some v] and raise otherwise. @raise Invalid_argument if [o] is [None].  D F* [bind o f] is [f v] if [o] is [Some v] and [None] if [o] is [None].  I* [join oo] is [Some v] if [oo] is [Some (Some v)] and [None] otherwise.  L L* [map f o] is [None] if [o] is [None] and [Some (f v)] if [o] is [Some v].  Ϡ z* [product o0 o1] is [Some (v0, v1)] if [o0] is [Some v0] and [o1] is [Some v1] and [None] otherwise. @since 5.5  = W* [fold ~none ~some o] is [none] if [o] is [None] and [some v] if [o] is [Some v].  =* [iter f o] is [f v] if [o] is [Some v] and [()] otherwise. F * [blend f o1 o2] is [o1] if [o2] is [None], [o2] if [o1] is [None], and [Some (f v1 v2)] if [o1] is [Some v1] and [o2] is [Some v2]. @since 5.5  * [for_all p] behaves like {!List.for_all} [p] on a list of zero or one element: - [for_all p None] is [true], - [for_all p (Some v)] is [p v]. @since 5.5 . * [exists p] behaves like {!List.exists} [p] on a list of zero or one element: - [exists p None] is [false], - [exists p (Some v)] is [p v]. @since 5.5  '* {1:preds Predicates and comparisons}  6* [is_none o] is [true] if and only if [o] is [None]. T 8* [is_some o] is [true] if and only if [o] is [Some o].  * [equal eq o0 o1] is [true] if and only if [o0] and [o1] are both [None] or if they are [Some v0] and [Some v1] and [eq v0 v1] is [true]. _ * [compare cmp o0 o1] is a total order on options using [cmp] to compare values wrapped by [Some _]. [None] is smaller than [Some _] values. 9* {1:convert Converting}  S* [to_result ~none o] is [Ok v] if [o] is [Some v] and [Error none] otherwise. 6 E* [to_list o] is [[]] if [o] is [None] and [[v]] if [o] is [Some v]. ٠ {* [to_seq o] is [o] as a sequence. [None] is the empty sequence and [Some v] is the singleton sequence containing [v]. s4* {1:syntax Syntax} X K* Binding operators. See manual section 12.23 for details. @since 5.5  * [( let* )] is {!Option.bind}. ˠ #* [( and* )] is {!Option.product}. 9?* [( let+ )] is {!Option.map}.  #* [( and+ )] is {!Option.product}. *@?)../ocamlc0-strict-sequence(-absname"-w5+a-4-9-41-42-44-45-48"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal"-o2stdlib__Option.cmi"-c Z/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores/stdlib @@0*'e^7x#]3@@@8CamlinternalFormatBasics0|.e1R$|o&Stdlib0t0VoS%{<F:.Stdlib__Either0HD ?|>30i]3މr+Stdlib__Seq0?72#[O@0i]3މrA\CE 6 %@@v@^ ː +@ 5 @k ϐ @ $ v@y/ Y B@ )@ o @  @@@4ȰՐ @@ ֐ \ m ް ^ ް  @SŐ0@@P@@