Caml1999I037? //*Format_docӠ#Doc@(box_type;@@!H@@4utils/format_doc.mlid<@d<C@@A@!V@@ eDH eDK@@ B@"HV@@fLPfLT@@)C@#HoV@@gUYgU^@@2D@!B@@%h_c&h_f@@;E@@@A@@@@@)c*,@@A@>@@A@$stag;@@@A&Stdlib&Format$stag@@@@@@@=jhj>jh@@@@SF@A@'element;@@$Textd&stringQ@@@@@SnTn@@iH@)With_sizee#intA@@@@@codo@@yI@(Open_boxf$kindg@@|@@@tpup!@@J@&indenth@@@@@p"p,@@K@@@pp.@@L@)Close_boxi@@q/3q/>@@M@(Open_tagjd&Format$stag@@@ @@r?Cr?\@@N@)Close_tagk@@s]as]l@@O@)Open_tboxl@@tmqtm|@@P@)Tab_breakm%widthn@@`@@@ u}u}@@Q@&offseto@@l@@@ u}u}@@R@@@u}u}@@S@'Set_tabp@@vv@@T@*Close_tboxq@@ww@@U@,Simple_breakr&spacess@@@@@ xx@@ V@&indentt@@@@@ xx@@W@@@xx @@X@%Breaku$fitsv@@@@@@@@@@@@@@@@%y  &y  6@@;Y@&breaksw@@@@@@@@@@@@@@@@>y  7?y  B@@TZ@@@By  Cy  D@@X[@%Flushx'newliney@@$boolE@@@Uz E VVz E b@@k\@@@Yz E IZz E d@@o]@'Newlinez@@b{ e ic{ e r@@x^@*If_newline{@@k| s wl| s @@_@*Deprecated|@D&Format)formatter@@@$unitF@@@@@@@~  ~  @@`@@@A@@@@@m@@@@G@A@!t;@@@A@@@@@D  D  @@@@z@A@#fmt;!a@!b@@B@Ar'format4"@@@@@@@@@O@@@@@@F  F  @@@@{@A@(printer0;@@@A@@@@@@@@@@@@@H  H  @@@@|@A@'printer;!a@@A@A@"@@@@@n@@@@@I  I  @@@@}@A@%emptyB@@@@M  M  +@@~@@&format@&Format)formatter@@@@Y@@@@@@ @@!@@"@ Q   Q  @@"@@$fold@@#acc@'@@@@# @@$@@%@ @{@@@&@@(@@)@@*@*T  +T  7@@@@@@#msg@!a@-@@@+@@@, @@.@BX  CX  @@XA@@$kmsg@@@@@/!b@1@@0@#!a@3@@@2@@4@@5@aY  bY  @@wB@@&printf@7!a@8@@@6@@@7 @@9@x] ; =y] ; a@@C@@'kprintf@@@@@:!b@=@@;@Y!a@@@@@@<@@>@@@? @@A@@B@^ b d^ b @@D@@(open_box@7@@@C@O@@@D@@@E@@F@@G@bb1@@E@@)close_box@@@H@c24c2K@@F@@$text@@@I@@@J@eMOeMg@@G@@&string@@@K@@@L@fhjfh@@H@@%bytes#%bytesC@@@M@@@N@gg@@ I@@)with_size6@@@O@@@P@hh@@J@@#intG@@@Q@@@R@jj@@-K@@%floatX%floatD@@@S@@@T@*k+k@@@L@@$chark$charB@@@U@@@V@=l>l@@SM@@$bool~@@@W@@@X@Nm  Om !@@dN@@%spacex@@@Y@Zo#%[o#8@@pO@@#cut@@@Z@fp9;gp9L@@|P@@%break&spaces@@@[&indent@@@\@@@]@@^@@_@qMOqM~@@Q@@,custom_break$fits@F@@@b@<@@@a@R@@@`@@c&breaks@@@@f@@@@e@@@@d@@g@@@h@@i@@j@st@@R@@-force_newline@@@k@uu@@S@@*if_newline@@@l@vv @@T@@%flush@@@m@xx#@@U@@*force_stop @@@n@y$&y$>@@V@@)open_tbox@@@o@{@B{@Y@@ W@@'set_tab!@@@p@|Z\|Zq@@X@@#tab-@@@q@}rt}r@@%Y@@)tab_break%width@@@r&offset@@@sI@@@t@@u@@v@+~,~@@AZ@@*close_tboxU@@@w@78@@M[@@(open_tagx@@@x@@@y@HI@@^\@@)close_tagr@@@z@TU @@j]@@$list#sep&optionL@@@{@@@|@!a@~@@@}$listK@@@@@@@@@@@I@@^@@$iter#sep,@@@@@@$iter@@!a@"@@@@@@!b@,@@@@@@@@@@@@@@@@@@@@@JL@@_@@%array#sepd@@@@@@@!a@@@@%arrayJ@@@@@@@@@@@@@`@@#seq #sep@@@@@@@/!a@@@@7#Seq!t@@@@@@@@@@@  #@@!a@@&option $none<@@@@@@@Y!a@@@@aˠ @@@@@@@@@@@2%'3%d@@Hb@@&result "okw!a@@@@%error!e@@@@"&result@@@@@@@@@@@^eg_e@@tc@@&either $left!a@@@@%right!b@@@@O&Either!t@@@@@@@@@@@@@d@@,align_prefix @@@@@@G@@@@@@@@1@@@@@@@@@@@e@@-align_prefix2@@@@@@h@@@@@@@#@@@Ġ@w@@@@@@0@@@Ǡ@5@@@@@@@@@@C@@f@@@@^EH@g@@@#doc;@@@A!t@@@@@@@@@@@h@A@!t;@@@A@@@@@@@ @@@@n@A@)formatter;@@@A@@@@@@@@@(o@A@'printer;!a@@A@A@@@@@@@@@@@@Ѡn@@@@@01@@@@Fp@A@)formatter@#ref<@@@@@@ @@@@@@GH@@]q@@.format_printer;!a@@A@A@&&Format)formatter@@@@@@@@@@@ڠn@@@@@hi@@@@~r@A@&compat@^!a@@@@2 @@@@@@@@s@@'compat1@@"p1@!a@@@@@@@  @@@@@@@@N@@t@@'compat2@@"p1@@"p2@D!a@@@@@@@@@@G @@@@@@@@@@OOO@@u@@2deprecated_printer@@&Format)formatter@@@]@@@@@@@@@f@@@@@@@@111x@@v@@*deprecated@w!a@@@@@@@@@@yyy@@w@@+deprecated1@@"p1@!a@@@@@@@ @@@@@@@@@@4x@@'fprintf@@@@@&format!a@@@@@@@@@@@@@@@ABQ@@Wy@@(kfprintf@@*@@@ !a@ @@ @3@@@ @('format4!b@B@@@@@@ @@@@@@@@@@pRRq@@z@@(asprintf@G'format4!a@a@@@ @@@A@@@@@@@@@@@{@@)kasprintf@@S@@@!a@@@@v'format4!b@ @@@:@@@@@@@@!@@"@4@@|@@'dprintf@'format4!a@)@@@'Y@@@&@@@@#c@@@$@@%@@@(@@*@777{@@}@@(kdprintf@@@@@@+z@@@,@@-!a@/@@.@'format4!b@3@@@1@@@0@@@2@@4@@5@||@@,~@@*doc_printf@'format4!a@:@@@8@@@70@@@6@@@9@@;@89R@@N@@+kdoc_printf@@A@@@@@=@'format4!a@B4@@@@@@@?@@@A@@C@@D@bSScS@@x@@+doc_printer@!a@F@@@E'printer @@@G@@H@{|@@@@&pp_doc@@@I@@@J@@@@@/pp_print_string!J@@@K@@@L@RRRu@@@@2pp_print_substring#posL@@@M#lenT@@@NBk@@@O@@@P@@Q@@R@vvv@@@@-pp_print_textS|@@@S@@@T@@@@@.pp_print_bytesd@@@U@@@V@@@@@+pp_print_as@@@@W@@@@X@@@@Y{@@@Z@@[@@\@@]@+@@ @@5pp_print_substring_as#pos@@@^#len@@@_@@@@`@@@@a@@@@b@@@c@@d@@e@@f@@g@@h@ +,, ,G@@ A@@-pp_print_char@@@i@@@j@ < =@@ R@@,pp_print_intҠ@@@k@@@l@ M N@@ c@@.pp_print_float6@@@m@@@n@ ^ _@@ t@@-pp_print_bool@@@o@@@p@ o p&@@ @@0pp_print_nothing@@@q@@@r@ '' 'I@@ @@-pp_print_iter&pp_sep,@@@s@@@t@@@u@@@!a@{%@@@v@@w@!b@}/@@@x@@y@@z@@@@@|D@@@~@@@@@@@ kk @@ @@-pp_print_list&pp_sepgXP@@@@@@@@@@c!a@@@@ki @@@@@@@@@@@  @@ @@.pp_print_array&pp_sep|@@@@@@@@@@!a@@@@4 @@@@@@@@@@@  g@@ )@@,pp_print_seq&pp_sep@@@@@@@@@@!a@@@@à #Seq!t@@@@@@@@@@@ Bhh Ch@@ X@@/pp_print_option$noneߠ@@@@@@@@@@!a@@@@ @@@@@@@@@@@ n o@@ @@/pp_print_result"ok!a@@@@%error!e@@@@ ^&result@@@@@@@@@@@   M@@ @@/pp_print_either$left4!a@@@@%right@!b@@@@H &Either!t@@@@@@@@@@@  N N  c @@ @@,pp_open_stag^ &Format$stag@@@@@@@      @@ @@-pp_close_stagr j@@@@@@@     !@@ @@+pp_open_box @@@@@@@ ! !  ! !%@@ @@,pp_close_box @@@@@@@ !&!& !&!D@@ %@@.pp_print_space @@@@@@@ !^!^ !!^!~@@ 6@@,pp_print_cut @@@@@@@ 1!! 2!!@@ G@@.pp_print_break@@@@@ @@@@ @@@ @@@@@@@@@@ O!! P!!@@ e@@5pp_print_custom_break@6@@@$fits@ @@@̠@ @@@ˠ@ $@@@@@&breaks@@@@Р@@@@Ϡ@@@@@@ @@@@@@@@@@ !! !"3@@ @@,pp_open_tbox$ @@@@@@@ "M"M "M"k@@ @@-pp_close_tbox5 -@@@@@@@ "l"l "l"@@ @@*pp_set_tabF >@@@@@@@ "" ""@@ @@,pp_print_tabW O@@@@@@@  ""  ""@@ @@/pp_print_tbreak@@@@@ @@@@ @@@ n@@@@@@@@@@  ""  ""@@ @@3pp_print_if_newline ~@@@@@@@ # #  # #E@@ @@0pp_force_newline @@@@@@@ #F#F #F#h@@ (@@.pp_print_flush @@@@@@@ ##i#i $#i#@@ 9@@0pp_print_newline @@@@@@@ 4## 5##@@ J@@%commaʠ @@@@@@@ E## F#$@@ [@@)semicolon۠ @@@@@@@ V$$ W$$ @@ l@@.pp_two_columns#sep @@@@@@)max_lines @@@@@@@U@@@@@ 9@@@@ ?@@@@@@@@ @@@@@@@@@@@@ $>$> $v$@@ @@@6-*Format_doc0]mWϓ:Mݠ-Stdlib__Uchar056uf4[_+Stdlib__Seq0nwzG&amg.Stdlib__Format0ܚ#G7m|.Stdlib__Either0Vy`u~c à.Stdlib__Domain0:M;׉<O$Ġ.Stdlib__Buffer08APF< t.&Stdlib0Lku]8_٠8CamlinternalFormatBasics0%FU(Q/Tu@@@Caml1999T037y*xC*Format_doc*ocaml.text&_none_@@A : Composable document for the {!Format} formatting engine. 4utils/format_doc.mliP77P7v@@@@@@3@@@@@@#intA;@@@A@@@@@:@A@$charB;@@A@@@@@>@A@&stringQ;@@ A@@@@@B@@@%bytesC;@@ A@@@@@F@@@%floatD;@@A@@@@@J@@@$boolE;@@%falsec@@T@$trued@@Z@@@A@@@@@[@A@$unitF;@@"()e@@e@@@A@@@@@f@A@ #exnG;@@@A@@@@@j@@@#effH;@@O@A@A@@@@@@s@@@,continuationI;@@Q@@P@B@A@nY@@@@@@@@@%arrayJ;@@R@A@A@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@A=ocaml.warn_on_literal_pattern @ @0Division_by_zero]#@@@A  @+End_of_file\#$@@@A@'FailureY#,@'@@A!$$@0Invalid_argumentX#5@0@@A*$-#-@-Match_failureV#>@@=@9@;@@a@@A;5>4>@)Not_foundZ#O@@@AC=F<F@-Out_of_memoryW#W@@@AKENDN@.Stack_overflow^#_@@@ASMVLV@.Sys_blocked_io_#g@@@A[U^T^@)Sys_error[#o@j@@Ad^g]g@:Undefined_recursive_modulea#x@@w@s@u@@h@@Auoxnx@:Continuation_already_takenb#@@@A}wv@&Stdlib@Ax  This module introduces a pure and immutable document type which represents a sequence of formatting instructions to be printed by a formatting engine at later point. At the same time, it also provides format string interpreter which produces this document type from format string and their associated printers. The module is designed to be source compatible with code defining format printers: replacing `Format` by `Format_doc` in your code will convert `Format` printers to `Format_doc` printers. Rxx[@@@@@@#DocA^^@g@@Б ) {2 Type definitions and core functions }``@@@@@@3@@AA+(box_typeBc*1c*9@@;@@!H@@d<@d<C@@A@!V@@eDHeDK@@B@"HV@@fLPfLT@@C@#HoV@@gUYgU^@@D@!B@@h_ch_f@@E@@@A@@@@@c*,@)ocaml.doc2 Format box types bb)@@@@@@@A@ @@@#AAd<B?@>@@@B@#>>eDJ<@;@@@?@#;;fLR9@8@@@<@#88gU[6@5@@@9@#55h_e3@2@@@6@@A@20&/.@..@@@.@.@@x=@@A+$stagC+jho,jhs@@;@@@A&Format$stag@@@ @@@@8jhj9jh@@@@QF@@@Aг CjhvDjh|@Gjh}@@@3FEEFFFFF@F%;@@@A-@@@@@@@@@@@@A@@@@3SRRSSSSS@ @A @A+'elementcDambm@@;@@$Textd<@@@@@pnqn@@H@)With_sizeeS@@@@@~oo@@I@(Open_boxf$kindg@@@@@ٰpp!@@J@&indenth@@p@@@ܰp"p,@@K@@@pp.@@L@)Close_boxi@@q/3q/>@@M@(Open_tagjA&Format$stag@@@@@r?Cr?\@@N@)Close_tagk@@s]as]l@@O@)Open_tboxl@@tmqtm|@@P@)Tab_breakm%widthn@@@@@u}u}@@Q@&offseto@@@@@u}u}@@R@@@u}u}@@S@'Set_tabp@@vv@@T@*Close_tboxq@@ww@@U@,Simple_breakr&spacess@@@@@xx@@(V@&indentt@@@@@xx@@4W@@@x x @@8X@%Breaku$fitsv@@@@@@@@@@@ @@@@@@y  Ay  6@@YY@&breaksw@@@@@@@@@@@@@@@@E@[y  7\y  B@@tZ@@@_y  `y  D@@x[@%Flushx'newliney@@0@@@pz E Vqz E b@@\@@@tz E Iuz E d@@]@'Newlinez@@}{ e i~{ e r@@^@*If_newline{@@| s w| s @@_@*Deprecated|@!&Format)formatter@@@L@@@@@@@~  ~  @ Escape hatch: a {!Format} printer used to provide backward-compatibility for user-defined printer (from the [#install_printer] toplevel directive for instance).   A V o@@@@@@@`@@@A@@@@@m@ʐ 5 Base formatting instruction recognized by {!Format} ll@@@@@@@@@G@@#[[nn@T@г]&stringn^@@d3@u;@@@A@@@@@&$@@@Ad@@@@f@#bboo@[@гd#intoe@@kf@@@@h@#ddpp @J@#ffap@`@@Ш@гi(box_typepp@@q,@@t@@/@p@#llgp(@f@@Ш@гo#int p)p@@v=q@@y@@@@u@@@q@#mmq/5k@j@@@n@#jjr?Er?M@`@гln$r?Q%r?W@q(r?Xo@p@@y[q@@@@s@#oo/s]cm@l@@@p@#ll5tmsj@i@@@m@#ii;u}I  ?I  @А!a@ 3EDDEEEEE@,OI;@@ @A@A@@'@@@(@ G@B@@@]I  ^I  @@@@v}@@AaI  bI  @@@; @A7A@%I@q@@@@@n@@@@@@@@@@Aб@А!a.wI  xI  @@г(printer0I  "@@8#@@9 $@@&@@3~~@9@A'&@%emptyM  #M  (@гL!tM  *M  +@@ @@@*3@Rb9@A@@@M   @0 Empty document L  L  @@@@@@@~@@@@@@@@@!&formatQ  Q  @б@гW&Format)formatterQ  Q  @ Q  Q  @@@@@@+3@CVA@A @@б@г!tQ  Q  @@ @@@,@@г$unitQ  Q  @@ @@@-@@@@@.!@@@'@@/$/ @@@Q  @ _ [format ppf doc] sends the format instruction of [doc] to the Format's formatter [doc]. O - /P z @@@@@@@)@@@.$@@@@@@C$fold'T  (T  @б@б@А#acc@9I@0321122222@Zx6@A8T  9T  @@б@г⠐'elementCT  DT  @@ @@@1@@А#accMT  NT  !@@@ !@@2@@@$@@3@@б@А#acc*%[T  &\T  *@@б@г!tfT  .gT  /@@ @@@46@@А#acc?:pT  3qT  7@@@ D@@5?@@@G@@6B@@@(@@7E{T   @@@~T  @ 4 Fold over a document as a sequence of instructions S  S  @@@@@@@@@@@@@@@@@e#msgX  X  @б@г9#fmtX  X  @А!a@AI@:3@>@AX  X  @@г|!tX  X  @@ @@@;@@@%@@@>X  $@@А!a"X  X  @@@'@@?" @@@X  @ S {!msg} and {!kmsg} produce a document from a format string and its argument V 9 ;W  @@@@@@@A@@@@@@@@@A$kmsgY  Y  @б@б@гŠ!tY  Y  @@ @@@B3@\w:@A@@А!b@NI@C Y   Y  @@@ @@D@@б@г#fmt-Y  .Y  @А!a@LI@E%9Y  :Y  @@А!b&,@Y  AY  @@@-@@@H4HY  @@А!a9MY  NY  @@@@@I> @@@3@@JAUY  @@@XY   @@pB@@ @@H&printfc] ; Ad] ; G@б@г#fmtn] ; Xo] ; [@А!a@VI@O3vuuvvvvv@g~%@A|] ; J}] ; L@@г(printer0] ; N] ; V@@ @@@P@@@%@@@S] ; I$@@А!a"] ; _] ; a@@@'@@T" @@@] ; =@ W {!printf} and {!kprintf} produce a printer from a format string and its argument[  \ * :@@@@@@@C@@@@@@@@@A'kprintf^ b h^ b o@б@б@г!t^ b r^ b s@@ @@@W3@\w:@A@@А!b@eI@X ^ b w^ b y@@@ @@Y@@б@гz#fmt^ b ^ b @А!a@cI@Z%^ b ^ b @@б@г!t ^ b  ^ b @@ @@@[7@@А!b5; ^ b  ^ b @@@ :@@\@@@@.$@@@_F ^ b ~-@@А!a+K ^ b  !^ b @@@0@@`P @@@E@@aS (^ b q@@@ +^ b d @@ CD@@ @@Z(open_box 6b  7b@б@г(box_type Ab Bb@@ @@@f3 C B B C C C C C@s@A@@б@г %#int Rb" Sb%@@ @@@g@@г_(printer0 _b) `b1@@ @@@h@@@@@i!@@@'@@j$* @@@ mb@ g The functions below mirror {!Format} printers, without the [pp_print_] prefix naming convention  z`   {a @@@@@@@ E@@@ @@@@@@C)close_box c28 c2A@г(printer0 c2C c2K@@ @@@k3        @Zo6@A@@@ c24 @@ F@@ @@$text eMS eMW@гz'printer eM` eMg@г &string eMY eM_@@ @@@l3        @)<'@A@@@ @@@n @@@ eMO@@ G@@@@ &string fhn fht@г'printer fh} fh@г &string fhv fh|@@ @@@o3        @.K'@A@@@ @@@q @@@ fhj@@ H@@@@ %bytes g g@гԠ'printer g g@г ⠐%bytes g g@@ @@@r3        @.K'@A@@@ @@@t @@@ +g@@ CI@@@@ )with_size 6h 7h@г'printer ?h @h@г #int Ih Jh@@ @@@u3 K J J K K K K K@.K'@A@@@ @@@w @@@ Xh@@ pJ@@@@ #int cj dj@г.'printer lj mj@г I#int vj wj@@ @@@x3 x w w x x x x x@.K'@A@@@ @@@z @@@ j@@ K@@@@ %float k k@г['printer k k@г e%float k k@@ @@@{3        @.K'@A@@@ @@@} @@@ k@@ L@@@@ $char l l@г'printer l l@г $char l l@@ @@@~3        @.K'@A@@@ @@@ @@@ l@@ M@@@@ $bool m  m @г'printer m  m !@г $bool m  m @@ @@@3        @.K'@A@@@ @@@ @@@ m  @@ $N@@@@ %space o#) o#.@г (printer0 o#0 !o#8@@ @@@3 " ! ! " " " " "@$A@A@@@ *o#% @@ BO@@ @@#cut 5p9? 6p9B@г>(printer0 >p9D ?p9L@@ @@@3 @ ? ? @ @ @ @ @@2@A@@@ Hp9; @@ `P@@ @@%break SqMS TqMX@б&spacesг 3#int `qMa aqMd@@ @@@3 b a a b b b b b@#6!@A@@б&indentг F#int sqMo tqMr@@ @@@@@г(printer0 qMv qM~@@ @@@ @@@@# qMh @@5*@@' qMZ @@@ qMO@@ Q@@@@.,custom_break s s@б$fitsЦВ@г x&string t t@@ @@@3        @Of'@A@@@г #int t t@@ @@@@@@г &string t t@@ @@@ @@@@1@@@@%@@@@@@@@@28@@!a t t@8>@@б&breaksА!a@P@@@@D@@@@:@@@@@Q t t@@г(printer0 t t@@ @@@`@@(#@@c t @@{F@@g t @@@ s@@ 6R@@@@n-force_newline )u *u@г2(printer0 2u 3u@@ @@@3 4 3 3 4 4 4 4 4@@A@@@ <u @@ TS@@ @@*if_newline Gv Hv@гP(printer0 Pv Qv @@ @@@3 R Q Q R R R R R@2@A@@@ Zv @@ rT@@ @@%flush ex fx@гn(printer0 nx ox#@@ @@@3 p o o p p p p p@2@A@@@ xx @@ U@@ @@*force_stop y$* y$4@г(printer0 y$6 y$>@@ @@@3        @2@A@@@ y$& @@ V@@ @@)open_tbox {@F {@O@г(printer0 {@Q {@Y@@ @@@3        @2@A@@@ {@B @@ W@@ @@'set_tab |Z` |Zg@гȠ(printer0 |Zi |Zq@@ @@@3        @2@A@@@ |Z\ @@ X@@ @@#tab }rx }r{@г栐(printer0 }r} }r@@ @@@3        @2@A@@@ }rt @@ Y@@ @@)tab_break ~ ~@б%widthг ۠#int ~ ~@@ @@@3        @#6!@A@@б&offsetг #int ~ ~@@ @@@@@г((printer0 (~ )~@@ @@@ @@@@# 1~ @@5*@@' 5~ @@@ 8~@@ PZ@@@@.*close_tbox C D@гL(printer0 L M@@ @@@3 N M M N N N N N@E\@A@@@ V @@ n[@@ @@(open_tag a b@г,'printer j k@г I$stag t u@@ @@@3 v u u v v v v v@)<'@A@@@ @@@ @@@ @@ \@@@@ )close_tag  @г(printer0   @@ @@@3        @$A@A@@@  @@ ]@@ @@$list  @б#sepг(printer0   (@@ @@@3        @#6!@A@@б@г'printer / 6@А!a@I@ , .@@@ @@@@@г'printer B I@г j$list = A@А!a$6 : <@@@*@@@= @@@@@@B @@@+@@E.@@V lO@@@ @@M (@@ @+@@'^@@-@@T$iterJPJT@б#sepг'(printer0'V_(Vg@@ @@@3)(()))))@o!@A@@б$iterб@б@А!a@I@@VrAVt@@г $unitIVxJV|@@ @@@"@@@@@%@@б@А!b@I@0]V^V@@г$unitfVgV@@ @@@?@@@@@B@@@"@@ErVq @@б@г>'printer|V}V@А!aHVVV@@@N@@@] @@гS'printer@А!b@k@@@F@@@r @@@@@u@@s5@@xVk@@@@@ @@VZ@@ @JL@@_@@!@@%array@б#sepгȠ(printer0@@ @@@3@!@A@@б@г'printer@А!a@I@@@@ @@@@@г'printer@г%array@А!a$6@@@*@@@= @@@@@@B @@@+@@E.@@VN@@@ @@L'@@ @*@@5`@@,@@S#seq()@б#sepг 5(printer056@@ @@@376677777@n!@A@@б@г 'printerFG@А!a@ I@RS@@@ @@@@@г "'printer`a#@г #Seq!tno@ rs@@А!a-?z{@@@3@@@F@@@(@@@K %@@@4@@N7(@@_W@@@ @@ U0@@ @3@@a@@5@@\&option%+%1@б$noneг (printer0%9%A@@ @@@ 3@w!@A@@б@г ~'printer%H%O@А!a@I@ %E%G@@@ @@@@@г 'printer%]%d@г?&option%V%\@А!a$6%S%U@@@*@@@= @@@@@@B @@@+@@E.@@VN@@@ @@L%3'@@ @%'*@@b@@,@@S&result ek eq@б"okг ڠ'printereye@А!a@'I@3      @t'@A&ev'ex@@@ @@@ @@б%errorг 'printer8e9e@А!e@)I@ DeEe@@@ @@@'@@г 'printerReSe@г&result\e]e@А!aD?cede@@А!e+Fjeke@@@Q2@@@!Nre@@@( @@@#T%@@K4@@$W{e)@@oV@@%[es-@@@eg0@@c@@2@@b&either@б$leftг \'printer@А!a@I@*3@'@A@@@ @@@, @@б%rightг |'printer@А!b@I@- @@@ @@@/'@@г 'printer@гg&Either!t@ @@А!aMH@@А!b4O@@@ Z;@@@W@@@1 @@@].@@T=@@`2@@x_@@d 6@@@ 9@@%d@@;@@k#": {1 Alignment functions }  @@@@@@3@}@A,align_prefix+,@б@г$list67@В@г !tDE@@ @@@(@@@г&#intST@@ @@@7@@@@@ @@> @@@1 @@@Ce/@@г預$listm n@г .!twx @@ @@@[@@@@@@` @@@$@@ c @@@@ Align the right side of one ["@{...@}"] tag box by inserting spaces at the beginning of boxes. Those function do nothing if the tag box appears after a break hint. !#@@@@@@@e@@*@@@@@@@-align_prefix2"@б@В@г q!t%&@@ @@@!3@<@A@@@г#int),@@ @@@"@@@@@ @@# @@б@В@г !t23@@ @@@$+@@@гǠ#int69@@ @@@%:@@@@@ @@&A @@В@г à!t > ?@@ @@@'R@@@г Ҡ!tBC@@ @@@(a@@@@@ @@)h @@@0 @@*k+1@@@]@@+o/$@@@2@@Jf@@@@v@A@ A@A@  A@  A@ E ?A@  A@  @  F@ & @  p@ P @  @  (@ !@@@]@V2@+@@@@[@T?@8#@@Q@J5@.@@@@@@G@@+@$@@x@q@n@g@@@@l@e@@3@g@Ac^EH@@ 7 Definitions and immutable API for composing documents ]]@@@@@@@^@@7 {1 Compatibility API} JJJf@@@@@@3@3@A@A@keA@  A@ \ A@  A@  mA@ J 5@  @  Z@ : @  @ } @@  @  u@ U @@ 9 @ @@@i@b>@7@ @@@j@c@@@@n@gR@K6@/@@@@q@j@f@_@@@@@@{@@<@@@@@@@Aq?> 2 The functions and types below provides source compatibility with format printers and conversion function from {!Format_doc} printers to {!Format} printers. The reverse direction is implemented using an escape hatch in the formatting instruction and should only be used to preserve backward compatibility. ;hh<@@@@@@A+#docIFG@@;@@A!t@@@@@@@QR@@@@jh@@@Aг #Doc]^@a@@@3`__`````@#;@@@A+@@@@,@@@@@@@@A@@@@@A+!tJyz@@;@@NA>@@@@@@@@@@@n@@@Aг #doc @@3@NH;@@@A#@@@ @@@@@@@@@A@@@@3@ @A@A+)formatterK@@;@@zA@@@@@@@@@o@@@A@@@3@82@A@A+'printerL@А!a@ 3@#;@@ @A@A@@ #@@@ $@ G@B@@@@@@@p@@A@@;@; @AA@C@@@ @+M@ @@@ @@ @@ n@@@@@@@@@@Aб@г)formatter@@9@@б@А!a?@@г$unit 3@@!I4@@&J 5@@-K6@@8@@3        @K@A98@)formatter@б@г#ref" #@г栐#doc,- @@ @@@ '3.--.....@pW@A@@@ @@@ ) @@г)formatter@A@@ @@@ *@@@@@ +@@@K @f K [formatter rdoc] creates a {!formatter} that updates the [rdoc] reference XYm@@@@@@@qq@@@vl@@@@@@6A+.format_printerMpq@А!a@ .3wvvwwwww@Kj4;@@ -@A@A@@ L@@@ M@ ,G@B@@@@ 7 Translate a {!Format_doc} printer to a {!Format} one. ooo@@@@@@@@@r@@A@@@;.@AwA@8&Format)formatter@@@ /@Y@AHI!@@г'printerQ(R/@А!a@ bN@ Y]%^'@@@ @@@ [@@@&@@ \!@@б@А"p1,'m5n8@@г.format_printerv?wM@А!a%7}<~>@@@+@@@ ^> @@@F@@ _A@@@%@@ `DN@@@@@t@@@@L'compat2OSOZ@б@б@А"p1@ tN@ e3@cv@AO]O`@@б@А"p2@ vN@ fOdOg@@г 'printerOnOu@А!a@ rN@ g$OkOm@@@ @@@ i+@@@$@@ j.@@@6@@ k1/@@б@А"p1<7O{O~@@б@А"p25?OO@@г.format_printerOO@А!a0OOO@@@6@@@ mV @@@O@@ nY@@@a@@ o\%@@@0@@ p_O\O@@@ OO@@#u@@@@g2deprecated_printer151G@б@б@г&Format)formatter'1J(1P@ +1Q,1Z@@@@@@ w3.--.....@*@A @@г蠐$unit;1^<1b@@ @@@ x@@@@@ y@@б@г)formatterM1gN1p@@ @@@ z!@@г$unitZ1t[1x@@ @@@ {.@@@@@ |1@@@$@@ }4f1I @@@i11@ If necessary, embbed a {!Format} printer inside a formatting instruction stream. This breaks every guarantees provided by {!Format_doc}. vw0@@@@@@@v@@@@@@@@@T*deprecatedy}y@б@г(.format_printeryy@А!a@ N@ ~3@s>@Ayy@@@ @@@  @@г'printeryy@А!ayy@@@"@@@  @@@@@ !@@@yy@@w@@@@'+deprecated1 @б@б@А"p1@ N@ 3@>Y@A@@г|.format_printer@А!a@ N@ @@@ @@@ @@@&@@ !@@б@А"p1,' @@гZ'printer@А!a%7@@@+@@@ > @@@F@@ A@@@%@@ D%&@@@)@@Ax@@@@L?> {2 Format string interpreters };<@@@@@@3:99:::::@^q@A'fprintf!GH @б@г)formatterR#S,@@ @@@ @@б@г&formataEbK@А!a@ N@ /m1n3@@гҠ)formatterw5x>@@ @@@ ?@@г2$unit?C@@ @@@ M@@@1' @@@ T01@@А!a/YOQ@@@4@@ ^ @@@J@@ aM@@@ @@y@@ @@g(kfprintf"RVR^@б@б@г)formatter`c`l@@ @@@ 3@}!@A@@А!a@ N@  `p`r@@@ @@ @@б@г3)formatter`w`@@ @@@ @@б@гo'format4@А!b@ N@ 4@@гX)formatter@@ @@@ D@@г$unit  @@ @@@ R@@А!aQW@@@8.Z@@@ a 9@@А!b7f%&@@@<@@ k @@@R@@ nU@@@c@@ q0`b @@@3RR@@Kz@@@@x(asprintf#>?@б@г'format4IJ@А!a@ N@ 3QPPQQQQQ@%@AWX@@г)formatterab@@ @@@ @@г$unitop@@ @@@  @@гG&string}~@@ @@@ .@@@A7$ @@@ 6B@@А!a@;@@@E@@ @ @@@@@{@@ @@F)kasprintf$@б@б@гy&string@@ @@@ 3@a|!@A@@А!a@ N@  @@@ @@ @@б@гV'format4'.@А!b@ N@ %@@г?)formatter@@ @@@ 5@@г$unit!@@ @@@ C@@А!aBH#%@@@8.K@@@ R 9@@А!b7W 2 4@@@<@@ \ @@@Q@@ _@@@ @@/|@@ @@f'dprintf%"7;#7B@б@г'format4-7n.7u@А!a@ N@ 354455555@%@A;7F<7H@@г)formatterE7JF7S@@ @@@ @@г$unitS7UT7Y@@ @@@  @@б@г)formatterc7[d7d@@ @@@ 0@@г$unitp7hq7l@@ @@@ =@@@@@ @@@@SI6) @@@ H7ET@@А!aRM7y7{@@@W@@ R @@@77@@}@@ @@X(kdprintf&||@б@б@б@г)formatter@@ @@@ 3@u#@A@@гc$unit@@ @@@ @@@@@ @@А!a@ N@ @@@ @@  @@б@г_'format4@А!b@ N@ 6@@гH)formatter@@ @@@ F@@г$unit@@ @@@ T@@А!aCY@@@8.L@@@ c9@@А!b7h@@@<@@ m @@@R@@ p@@@ || @@8~@@ @@w*doc_printf'+,(@б@г'format46E7L@А!a@ N@ 3>==>>>>>@%@AD+E-@@г)formatterN/O8@@ @@@ @@г $unit\:]>@@ @@@  @@г$#docj@kC@@ @@@ .@@@A7$ @@@ 6x*B@@А!a@;}P~R@@@E@@ @ @@@@ > {!doc_printf} and {!kdoc_printf} creates a document directly @@@@@@@@@@@@@@@@_+kdoc_printf(SWSb@б@б@гo#docSeSh@@ @@@ 3@z:@A@@А!r@! N@  SlSn@@@ @@ @@б@г\'format4SS@А!a@! N@ %StSv@@гE)formatterSxS@@ @@@!5@@г$unitSS@@ @@@!C@@А!rBHSS@@@8.K@@@!R Ss9@@А!a7WSS@@@<@@!\ @@@Q@@!_Sd@@@SS @@5@@ @@f32? {2 Compatibility with {!Doc} }/0@@@@@@3.--.....@x@A+doc_printer);<@б@г'printerFG@А!a@!N@!  RS@@@ @@@!'@@г'printer#Docde@ hi@@А!a#>pq@@@)@@@!E@@@%@@!H(@@@|@@@@@@N&pp_doc*@г٠'printer@гT#doc@@ @@@!3@oj'@A@@@ @@@! @@@@@@@@@  % {2 Source compatibility with Format}   3@@@@@@3@<@Aѐ6 {3 String printers } 555P@@@@@@/pp_print_string+RVRe@г*'printerRnRu@г&stringRgRm@@ @@@!3@@@@@@!8 @@@RR@@@@@@>2pp_print_substring,vzv@б#posг㠐#intvv@@ @@@!3@YC!@A@@б#lenг#int#v$v@@ @@@!@@гy'printer0v1v@г&string:v;v@@ @@@!*@@@@@@!/ @@-"@@! 2Hv@@D9@@!!6Lv@@@Ovv@@g@@!@@=-pp_print_text-Z[@г'printercd@г7&stringmn@@ @@@!"3onnooooo@^u'@A@@@ @@@!$ @@@|@@@@@@ .pp_print_bytes.@г٠'printer@г`%bytes@@ @@@!%3@.K'@A@@@ @@@!' @@@@@@@@@ +pp_print_as/@б@г )formatter @@ @@@!(3@&C@A@@б@г#int@@ @@@!)@@б@г&string#@@ @@@!* @@г$unit'+@@ @@@!+-@@@@@!,0@@@%@@!-3( @@@9@@!.6<@@@@@@@@@<5pp_print_substring_as0,0 ,E@б#posг蠐#intGMGP@@ @@@!/3@Wl!@A@@б#lenг#int(GX)G[@@ @@@!0@@б@г )formatter7G_8Gh@@ @@@!1"@@б@г#intFGlGGo@@ @@@!21@@б@г&stringUGsVGy@@ @@@!3@@@г$unitbG}cG@@ @@@!4M@@@@@!5P@@@%@@!6S( @@@7@@!7V:@@TI@@!8YtGT@@k`@@!9]xGI@@@{,,@@@@@@d= {3 Primitive type printers }@@@@@@3@v@A-pp_print_char1@г 렐'printer@гz$char@@ @@@!:"@@@@@@!<' @@@@@@@@@-,pp_print_int2@г 'printer@г#int@@ @@@!=3@NI'@A@@@ @@@!? @@@@@@@@@ .pp_print_float3@г C'printer@гƠ%float@@ @@@!@3@.K'@A@@@ @@@!B @@@@@+@@@@ -pp_print_bool4 @г p'printer'(&@г$bool12@@ @@@!C332233333@.K'@A@@@ @@@!E @@@@@@X@@@@ 0pp_print_nothing5K'+L';@г 'printerT'BU'I@г $unit^'=_'A@@ @@@!F3`__`````@.K'@A@@@ @@@!H @@@m''@@@@@@ 9 {3 Printer combinators }KKKi@@@@@@3~}}~~~~~@<@A-pp_print_iter6kok|@б&pp_sepг ᠐'printer~~@гO$unit~~@@ @@@!I&@@@@@@!K+ @@б@б@б@А!a@!\N@!L:~~@@гr$unit~~@@ @@@!MI@@@@@!NL@@б@А!b@!^N@!OW~~@@г$unit~~@@ @@@!Pf@@@@@!Qi@@@"@@!Rl~ @@б@г A'printer@А!aH}@@@N@@@!T @@г V'printer @А!b@@@@F@@@!V @@@@@!W@@@5@@!X!~@@@@@!Y @@!Z)~@@ @,kk@@D@@!@@-pp_print_list778@б&pp_sepг 'printerDE@г$unitNO@@ @@@!_3POOPPPPP@+@A@@@ @@@!a @@б@г 'printerde @А!a@!mN@!bpq@@@ @@@!d#@@г Ǡ'printer~@г$list@А!a$; @@@*@@@!fB @@@@@@!hG @@@+@@!iJ.@@eM@@@!j @@!kQ'@@ @*@@@@,@@X.pp_print_array8!/@б&pp_sepг 'printer>E@гw$unit9=@@ @@@!n3@}+@A@@@ @@@!p @@б@г )'printerLS@А!a@!|N@!qIK@@@ @@@!s#@@г C'printer`g@г%array Z _@А!a$; W Y@@@*@@@!uB @@@@@@!wG @@@+@@!xJ.@@eM@@@!y @@!zQ !1'@@ @ $*@@ <@@,@@X,pp_print_seq9 /hl 0hx@б&pp_sepг 'printer <h =h@г$unit Fh Gh@@ @@@!}3 H G G H H H H H@}+@A@@@ @@@! @@б@г 'printer \h ]h@А!a@!N@! hh ih@@@ @@@!#@@г 'printer vh wh@г #Seq!t h h@  h h@@А!a-D h h@@@3@@@!K@@@(@@@!P %@@@4@@!S7(@@nV@@@! @@!Z hz0@@ @ hh3@@ @@5@@a/pp_print_option:  @б$noneг 'printer  @г x$unit  @@ @@@!3        @+@A@@@ @@@! @@б@г *'printer  @А!a@!N@!  @@@ @@@!#@@г D'printer  @г d&option!!@А!a$;! ! @@@*@@@!B @@@@@@!G @@@+@@!J.@@eM@@@! @@!Q!"'@@ @!%*@@!=@@,@@X/pp_print_result;!0 !1 @б"okг 'printer!= !> @А!a@!N@!3!E!D!D!E!E!E!E!E@y'@A!K !L @@@ @@@! @@б%errorг 'printer!] ,!^ 3@А!e@!N@! !i )!j +@@@ @@@!'@@г 'printer!w F!x M@г &result! ?! E@А!aD?! 8! :@@А!e+F! ;! =@@@Q2@@@!N! 7@@@( @@@!T%@@K4@@!W! #)@@oV@@![! -@@@!0@@!@@2@@b/pp_print_either<! N R! N a@б$leftг'printer! c m! c t@А!a@!N@!3!!!!!!!!@'@A! c j! c l@@@ @@@! @@б%rightг('printer! c ! c @А!b@!N@! ! c ~! c @@@ @@@!'@@гB'printer! c ! c @г &Either!t" c " c @ "  c "  c @@А!aMH" c " c @@А!b4O" c " c @@@ Z;@@@!W"" c @@@1 @@@!].@@T=@@!`"+ c x2@@x_@@!d"/ c e6@@@"2 N N9@@"J@@;@@k"H"G4 {3 Boxes and tags }"D  "E  @@@@@@3"C"B"B"C"C"C"C"C@}@A,pp_open_stag="P  "Q  @г'printer"Y  "Z  @г &Format$stag"g  "h  @ "k  "l  @@@@@@!+ @@@ @@@!0@@@"y   @@"@@"@@6-pp_close_stag>"  "  @г֠'printer" !" !@г"D$unit"  "  @@ @@@!3""""""""@WR'@A@@@ @@@! @@@"  @@"@@@@ +pp_open_box?"! ! "! !@г'printer"! !"! !%@г"#int"! !"! !@@ @@@!3""""""""@.K'@A@@@ @@@! @@@"! ! @@"@@@@ ,pp_close_box@"!&!*"!&!6@г0'printer"!&!="!&!D@г"$unit"!&!8"!&!<@@ @@@!3""""""""@.K'@A@@@ @@@! @@@#!&!&@@#@@@@ ##1 {3 Break hints} #!F!F#!F!\@@@@@@3########@<@A.pp_print_spaceA#!^!b#!^!p@гp'printer#'!^!w#(!^!~@г"ޠ$unit#1!^!r#2!^!v@@ @@@!"@@@@@@!' @@@#>!^!^@@#V@@@@-,pp_print_cutB#I!!#J!!@г'printer#R!!#S!!@г# $unit#\!!#]!!@@ @@@!3#^#]#]#^#^#^#^#^@NI'@A@@@ @@@! @@@#k!!@@#@@@@ .pp_print_breakC#v!!#w!!@б@гܠ)formatter#!!#!!@@ @@@!3########@&C@A@@б@г#e#int#!!#!!@@ @@@!@@б@г#t#int#!!#!!@@ @@@! @@г#[$unit#!!#!!@@ @@@!-@@@@@!0@@@%@@!3( @@@9@@!6<@@@#!!@@#@@@@<5pp_print_custom_breakD#!!#!!@б@г0)formatter#!!#!!@@ @@@!3########@Uj@A@@б$fitsЦВ@г#&string#!"#!"@@ @@@!@@@г#Р#int#!" #!"@@ @@@!(@@@г#֠&string$ !"$ !"@@ @@@!7@@@@/@@@!ݠ@%@@@!ޠ@@@@!@@!I6@@!c$'!"$(!"@O<@@б&breaksА!c@N@@@!ᠠ@D@@@!⠠@:@@@!@@!h$C!")$D!"+@@г#$unit$L!"/$M!"3@@ @@@!w@@(#@@!z$U!"" @@yF@@!~$Y!! @@@@@!@@@$_!!@@$w@@@@$u$t1 {3 Tabulations }$q"5"5$r"5"K@@@@@@3$p$o$o$p$p$p$p$p@@A,pp_open_tboxE$}"M"Q$~"M"]@гϠ'printer$"M"d$"M"k@г$=$unit$"M"_$"M"c@@ @@@!"@@@@@@!' @@@$"M"M@@$@@@@--pp_close_tboxF$"l"p$"l"}@г'printer$"l"$"l"@г$h$unit$"l"$"l"@@ @@@!3$$$$$$$$@NI'@A@@@ @@@! @@@$"l"l@@$@@@@ *pp_set_tabG$""$""@г''printer$""$""@г$$unit$""$""@@ @@@!3$$$$$$$$@.K'@A@@@ @@@! @@@$""@@%@@@@ ,pp_print_tabH% ""% ""@гT'printer%  ""%  ""@г$ $unit% ""% ""@@ @@@!3%%%%%%%%@.K'@A@@@ @@@! @@@%$ ""@@%<@@@@ /pp_print_tbreakI%/ ""%0 ""@б@г)formatter%: ""%; ""@@ @@@!3%<%;%;%<%<%<%<%<@&C@A@@б@г%#int%K ""%L ""@@ @@@!@@б@г%-#int%Z ""%[ ""@@ @@@! @@г%$unit%g ""%h ""@@ @@@!-@@@@@!0@@@%@@!3( @@@9@@!6<@@@%x ""@@%@@@@<%%; {3 Newlines and flushing }% ""% "#@@@@@@3%%%%%%%%@Nc@A3pp_print_if_newlineJ%# #$%# #7@г蠐'printer%# #>%# #E@г%V$unit%# #9%# #=@@ @@@!"@@@@@@!' @@@%# # @@%@@@@-0pp_force_newlineK%#F#J%#F#Z@г'printer%#F#a%#F#h@г%$unit%#F#\%#F#`@@ @@@"3%%%%%%%%@NI'@A@@@ @@@" @@@%#F#F@@%@@@@ .pp_print_flushL%#i#m%#i#{@г@'printer%#i#%#i#@г%$unit&#i#}&#i#@@ @@@"3&&&&&&&&@.K'@A@@@ @@@" @@@&#i#i@@&(@@@@ 0pp_print_newlineM&##&##@гm'printer&$##&%##@г%۠$unit&.##&/##@@ @@@"3&0&/&/&0&0&0&0&0@.K'@A@@@ @@@" @@@&=##@@&U@@@@ &S&R ! {1 Compiler specific functions }&O##&P##@@@@@@3&N&M&M&N&N&N&N&N@<@A&f&e0 {2 Separators }&b##&c##@@@@@@%commaN&l##&m##@г'printer&u##&v#$@г&,$unit&##&##@@ @@@" 3@@@@@@" 8 @@@&##@@&@@@@>)semicolonO&$$ &$$@г預'printer&$$&$$ @г&W$unit&$$&$$@@ @@@" 3&&&&&&&&@_I'@A@@@ @@@" @@@&$$@@&@@@@ &&ΐ5 {2 Compiler output} &$"$"&$"$<@@@@@@3&&&&&&&&@<@A.pp_two_columnsP&$>$B&$>$P@б#sepг&&string&$S$Z&$S$`@@ @@@"@@б)max_linesг&Ƞ#int&$S$o&$S$r@@ @@@"-@@б@г_)formatter'$v$x'$v$@@ @@@"<@@б@г&$list'$v$'$v$@В@г&렐&string'!$v$'"$v$@@ @@@"Y@@@г&&string'0$v$'1$v$@@ @@@"h@@@@@ @@"o @@@1 @@@"t'B$v$/@@г&$unit'J$v$'K$v$@@ @@@"@@@@@"@@@O@@"R @@lRd@@@" @@"']$S$d@@Z}@@@"@@"'e$S$U@@ @'h$>$>@%  [pp_two_columns ?sep ?max_lines ppf l] prints the lines in [l] as two columns separated by [sep] ("|" by default). [max_lines] can be used to indicate a maximum number of lines to print -- an ellipsis gets inserted at the middle if the input has too many lines. Example: {v pp_two_columns ~max_lines:3 Format.std_formatter [ "abc", "hello"; "def", "zzz"; "a" , "bllbl"; "bb" , "dddddd"; ] v} prints {v abc | hello ... bb | dddddd v} 'u$$'v4&&@@@@@@@'@@.@%'@@@@@@@%@e%@@GAA@A@A@A@~H@'A@k@d @@4@@x@^@r@k@ @@ @  +@  @ z 7@ 0 @  @  j@ c ?@ 8 @  @  F@ , @  @  @  @  ^@ D@'@ @*@#@0@)@b@[7@0 @@@z@s(@!@pN@G#@@@{@a?@8@ @@q@jF@,@@3''''''''@3.@A@ H************************************************************************(A@@(A@L@ H ( BMM( BM@ H OCaml (C(C@ H (D(D3@ H Florian Angeletti, projet Cambium, Inria Paris (E44(E4@ H (#F($F@ H Copyright 2024 Institut National de Recherche en Informatique et ()G(*G@ H en Automatique. (/H(0Hg@ H (5Ihh(6Ih@ H All rights reserved. This file is distributed under the terms of (;J(...@}"] tag box by inserting spaces at the beginning of boxes. Those function do nothing if the tag box appears after a break hint. 8* {1 Compatibility API} ͠ 3* The functions and types below provides source compatibility with format printers and conversion function from {!Format_doc} printers to {!Format} printers. The reverse direction is implemented using an escape hatch in the formatting instruction and should only be used to preserve backward compatibility. Q L* [formatter rdoc] creates a {!formatter} that updates the [rdoc] reference 7 8* Translate a {!Format_doc} printer to a {!Format} one.  * If necessary, embbed a {!Format} printer inside a formatting instruction stream. This breaks every guarantees provided by {!Format_doc}.  !* {2 Format string interpreters }] ?* {!doc_printf} and {!kdoc_printf} creates a document directly  * {2 Compatibility with {!Doc} } o &* {2 Source compatibility with Format} 栠7* {3 String printers }  ֠>* {3 Primitive type printers } :* {3 Printer combinators } +5* {3 Boxes and tags }i2* {3 Break hints} 2* {3 Tabulations }B<* {3 Newlines and flushing }, "* {1 Compiler specific functions }j1* {2 Separators }Z6* {2 Compiler output}  * [pp_two_columns ?sep ?max_lines ppf l] prints the lines in [l] as two columns separated by [sep] ("|" by default). [max_lines] can be used to indicate a maximum number of lines to print -- an ellipsis gets inserted at the middle if the input has too many lines. Example: {v pp_two_columns ~max_lines:3 Format.std_formatter [ "abc", "hello"; "def", "zzz"; "a" , "bllbl"; "bb" , "dddddd"; ] v} prints {v abc | hello ... bb | dddddd v} M@-./boot/ocamlc)-nostdlib"-I&./boot*-use-prims2runtime/primitives"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I%utils"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-c(( =/builds/workspace/precheck/flambda/false/label/ocaml-linux-32 >10/.-,+*)('&%$#"! @@0!&t$/&3))))))))@)@@8CamlinternalFormatBasics0%FU(Q/Tu)80]mWϓ:Mݠ&Stdlib0Lku]8_٠.Stdlib__Buffer08APF< t..Stdlib__Domain0:M;׉<O$Ġ.Stdlib__Either0Vy`u~c à.Stdlib__Format0ܚ#G7m|+Stdlib__Seq0nwzG&amg-Stdlib__Uchar056uf4[_@0]mWϓ:MA@ ) @*@@ ֐ P@H@,@''`@@+@x%֓$_@65v@@@@&K$@@@@ l %$@@$$+@ڐK@@\@T&g%@  5&%,&%@@ Ɛ '@A!-!&%!@@y  аSm&%@@@@'%@  e  h&9%@@y  @@@@@ΐ@  'n'@ 'ۓ'@z!!S@@$$D@]@@@X@P&_$@    @G@@5y@ǐ0$@*,@.@@;U!"8@@('@ ߐ)ư#}#@4]/#4#\@ g #Ւ#'(;@@ܐcߐ&%P@@Ӑ]@Ӑb"#9@@@~@@@@ R {'&>@װ"u"@@'%@@'9%@U~&%@Ӑ@@'d%@@ Đ&%5@&%!@((@Đ '\%@@(H(@x !j'&C@@@'@Ȱp@ @<e@@'&L@'&'@v@@@@@3@@@Ѱj@@@@[u@@ @ # ˰4@@@(q(D@ * S Y &%U@@͐+'g%@&(@@P@@