Caml1999I037  0Stdlib__Filename0current_dir_name(&stringQ@@@r@,filename.mliRYYRYv@@@@@/parent_dir_name)@@@s@UU@@A@@'dir_sep*@@@t@Y>>Y>R@@+B@@&concat+@.@@@u@@v@6@@@w@@x:@@@y@@z@@{@8^9^@@HC@@+is_relative,@K@@@|@@}$boolE@@@~@@@Ob##Pb#C@@_D@@+is_implicit-@b@@@@@@@@@@@dgeg@@tE@@,check_suffix.@w@@@@@@@@@@@4@@@@@@@@mm@@F@@+chop_suffix/@@@@@@@@@@@@@@@@@@@@v s sv s @@G@@/chop_suffix_opt0&suffix@@@@@@@@@@@&optionL@@@@@@@@@@@| C C| C @@H@@)extension1@@@@@@@@@@@@J ) )J ) I@@I@@0remove_extension2@@@@@@@@@@@@Y  Y  @@J@@.chop_extension3@@@@@@@@@@@@ee6@@K@@(basename4@@@@@@@@@@@@jj@@(L@@'dirname5@+@@@@@/@@@@@@-u.u@@=M@@$null6<@@@@:zss;zs@@JN@@)temp_file7(temp_dirS@@@@@@@@@\@@@@@@d@@@@@h@@@@@@@@@@f55g5t@@vO@@.open_temp_file8$mode,$listK&Stdlib)open_flag@@@@@@@@@@@%permsE#intA@@@@@@@@(temp_dirU@@@@@@@@@@@@@@@@@@@@@@@@ɠ@B+out_channel@@@@@@@@@@@@@@@@AA@@P@@(temp_dir9(temp_dir@@@@@@@@%permsT@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@   V@@Q@@1get_temp_dir_name:@$unitF@@@@@@@@@@@@@%R@@1set_temp_dir_name;@(@@@@@@@@@@@*+@@:S@@%quote<@=@@@@@A@@@@@@?  @ !@@OT@@-quote_command=@R@@@@@%stdin _@@@@@@@@&stdoutm@@@@@@@@&stderr){@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"("(""@@U@@@n;/0Stdlib__Filename0ʩDZ۽!g&Stdlib0t0VoS%{<F:8CamlinternalFormatBasics0|.e1R$|o@@@Caml1999T037z4 :1OC0Stdlib__Filename*ocaml.text&_none_@@A; Operations on file names. ,filename.mliP77P7W@@@@@@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@A0current_dir_nameRY]RYm@гj&stringRYpRYv@@ @@@{@@@RYY@)ocaml.doc E The conventional name for the current directory (e.g. [.] in Unix). SwwSw@@@@@@@@@@@ΐ@@@@@@/parent_dir_nameUU@г&stringUU@@ @@@|3@K8@A@@@U @9 W The conventional name for the parent of the current directory (e.g. [..] in Unix). VW"<@@@@@@@ A@@@I@@@@@@!'dir_sepY>B Y>I@гؠ&stringY>LY>R@@ @@@}3@8K6@A@@@Y>> @p @ The directory separator (e.g. [/] in Unix). @since 3.11.2 (ZSS)\@@@@@@@AB@@@<@@@@@@!&concat?^@^@б@г&stringJ^K^@@ @@@~3LKKLLLLL@:M8@A@@б@г"&string[^\^@@ @@@@@г/&stringh^i^@@ @@@@@@@@@@# @@@+@@ @@(.@@@z^@ϐ Z [concat dir file] returns a file name that designates file [file] in directory [dir]. _`!@@@@@@@C@@"@@@@@@@G+is_relativeb#'b#2@б@гp&stringb#5b#;@@ @@@3@`u8@A@@гm$boolb#?b#C@@ @@@@@@@@@@ @@@b## @ Return [true] if the file name is relative to the current directory, [false] if it is absolute (i.e. in Unix, starts with [/]). cDDe@@@@@@@D@@@*搠@@@@@@3+is_implicitgg@б@г&stringgg@@ @@@3@La8@A@@г$boolgg@@ @@@@@@@@@@ @@@g @e Return [true] if the file name is relative and does not start with an explicit reference to the current directory ([./] or [../] in Unix), [false] if it starts with an explicit reference to the root directory or the current directory. hk@@@@@@@6E@@@u1@@@@@@3,check_suffix4m5m@б@г&string?m@m@@ @@@3A@@AAAAA@La8@A@@б@г&stringPm Qm@@ @@@@@г$bool]m^m@@ @@@@@@@@@@# @@@+@@ @@(.@@@om@Đ Q [check_suffix name suff] returns [true] if the filename [name] ends with the suffix [suff]. Under Windows ports (including Cygwin), comparison is case-insensitive, relying on [String.lowercase_ascii]. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows. |n}t G q@@@@@@@F@@"@@@@@@@G+chop_suffixv s wv s @б@гe&stringv s v s @@ @@@3@`u8@A@@б@гv&stringv s v s @@ @@@@@г&stringv s v s @@ @@@@@@@@@@# @@@+@@ @@(.@@@v s s@# [chop_suffix name suff] removes the suffix [suff] from the filename [name]. @raise Invalid_argument if [name] does not end with the suffix [suff]. w  z ? A@@@@@@@G@@"@3@@@@@@G/chop_suffix_opt| C G| C V@б&suffixгƠ&string| C _| C e@@ @@@3@bw:@A@@б@гנ&string| C i| C o@@ @@@@@гq&option| C z| C @г&string'| C s(| C y@@ @@@(@@@@@@- @@@$@@ @@2'@@C:@@ @@7<| C X@@@?| C C"@  [chop_suffix_opt ~suffix filename] removes the suffix from the [filename] if possible, or returns [None] if the filename does not end with the suffix. Under Windows ports (including Cygwin), comparison is case-insensitive, relying on [String.lowercase_ascii]. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows. @since 4.08 L}  MG $ &@@@@@@@eH@@2@`@@@@@@W)extensioncJ ) -dJ ) 6@б@г5&stringnJ ) 9oJ ) ?@@ @@@3pooppppp@p8@A@@гD&string}J ) C~J ) I@@ @@@@@@@@@@ @@@J ) ) @ߐ u [extension name] is the shortest suffix [ext] of [name0] where: - [name0] is the longest suffix of [name] that does not contain a directory separator; - [ext] starts with a period; - [ext] is preceded by at least one non-period character in [name0]. If such a suffix does not exist, [extension name] is the empty string. @since 4.04 K J JW  @@@@@@@I@@@@@@@@@30remove_extensionY  Y  @б@г&stringY  Y  @@ @@@3@La8@A@@г&stringY  Y  @@ @@@@@@@@@@ @@@Y   @*  Return the given file name without its extension, as defined in {!Filename.extension}. If the extension is empty, the function returns the given file name. The following invariant holds for any file name [s]: [remove_extension s ^ extension s = s] @since 4.04 Z  c @@@@@@@J@@@:@@@@@@3.chop_extensionee#@б@гˠ&stringe&e,@@ @@@3@La8@A@@гڠ&stringe0e6@@ @@@@@@@@@@ @@@ e @u r Same as {!Filename.remove_extension}, but raise [Invalid_argument] if the given name has an empty extension. -f77.g~@@@@@@@FK@@@A@@@@@@3(basenameDjEj@б@г&stringOjPj@@ @@@3QPPQQQQQ@La8@A@@г%&string^j_j@@ @@@@@@@@@@ @@@kj @  Split a file name into directory name / base file name. If [name] is a valid file name, then [concat (dirname name) (basename name)] returns a file name which is equivalent to [name]. Moreover, after setting the current directory to [dirname name] (with {!Sys.chdir}), references to [basename name] (which is a relative file name) designate the same file as [name] before the call to {!Sys.chdir}. This function conforms to the specification of POSIX.1-2008 for the [basename] utility. xkys@@@@@@@L@@@@@@@@@3'dirnameuu@б@гa&stringuu@@ @@@3@La8@A@@гp&stringuu@@ @@@@@@@@@@ @@@u @ x See {!Filename.basename}. This function conforms to the specification of POSIX.1-2008 for the [dirname] utility. vxYq@@@@@@@M@@@א@@@@@@3$null zswzs{@г&stringzs~zs@@ @@@3@J_6@A@@@zss @B [null] is ["/dev/null"] on POSIX and ["NUL"] on Windows. It represents a file on the OS that discards all writes and returns end of file on reads. @since 4.10 {~!3@@@@@@@N@@@R@@@@@@!)temp_file!595B@б(temp_dirг堐&string5P5V@@ @@@3      @<O:@A@@б@г&string/5Z05`@@ @@@@@б@г&string>5d?5j@@ @@@ @@г&stringK5nL5t@@ @@@-@@@@@@@2 @@@)@@ @@7,@@HC@@@@@@@Ae5E@@ @h55@  [temp_file prefix suffix] returns the name of a fresh temporary file in the temporary directory. The base name of the temporary file is formed by concatenating [prefix], then a suitably chosen integer number, then [suffix]. The optional argument [temp_dir] indicates the temporary directory to use, defaulting to the current result of {!Filename.get_temp_dir_name}. The temporary file is created empty, with permissions [0o600] (readable and writable only by the file owner). The file is guaranteed to be different from any other file that existed when [temp_file] was called. @raise Sys_error if the file could not be created. @before 3.11.2 no ?temp_dir optional argument uuuv=?@@@@@@@O@@-@@@@@@@a.open_temp_file"AEAS@б$modeг $listVmVq@г)open_flagVcVl@@ @@@3@D@A@@@ @@@ @@б%permsг#intV}V@@ @@@@@б(temp_dirг&stringVV@@ @@@)@@б@г&stringVV@@ @@@8@@б@г&string@@ @@@G@@В@г &string@@ @@@X@@@гw+out_channel  @@ @@@g@@@@@ @@n @@@/@@ @@s2@@@C@@ @@xF@@`ƠZ@@@@@ @@*V @@{Рu@@@@@@@4Vu*@@ڠ@@@@@@@>V\4@@ @AAA7@ : Same as {!Filename.temp_file}, but returns both the name of a fresh temporary file, and an output channel opened (atomically) on this file. This function is more secure than [temp_file]: there is no risk that the temporary file will be modified (e.g. replaced by a symbolic link) before the program opens it. The optional argument [mode] is a list of additional flags to control the opening of the file. It can contain one or several of [Open_append], [Open_binary], and [Open_text]. The default is [[Open_text]] (open in text mode). The file is created with permissions [perms] (defaults to readable and writable only by the file owner, [0o600]). @raise Sys_error if the file could not be opened. @before 4.03 no ?perms optional argument @before 3.11.2 no ?temp_dir optional argument NO@@@@@@@gP@@G@b@@@@@@(temp_dir#e  f @б(temp_dirг9&stringr #s )@@ @@@3tssttttt@:@A@@б%permsгX#int 4 7@@ @@@@@б@г[&string < B@@ @@@"@@б@гj&string F L@@ @@@1@@гw&string P V@@ @@@>@@@@@@@C @@@)@@ @@H,@@Fe@@@@@@ @@Q -@@co]@@@@@@@[ #@@ @  &@+ f [temp_dir prefix suffix] creates and returns the name of a fresh temporary directory with permissions [perms] (defaults to 0o700) inside [temp_dir]. The base name of the temporary directory is formed by concatenating [prefix], then a suitably chosen integer number, then [suffix]. The optional argument [temp_dir] indicates the temporary directory to use, defaulting to the current result of {!Filename.get_temp_dir_name}. The temporary directory is created empty, with permissions [0o700] (readable, writable, and searchable only by the file owner). The directory is guaranteed to be different from any other directory that existed when [temp_dir] was called. If temp_dir does not exist, this function does not create it. Instead, it raises Sys_error. @raise Sys_error if the directory could not be created. @since 5.1 WW@@@@@@@Q@@6@;@@@@@@{1get_temp_dir_name$@б@г$unit@@ @@@3@8@A@@г۠&string@@ @@@@@@@@@@ @@@! @v  The name of the temporary directory: Under Unix, the value of the [TMPDIR] environment variable, or "/tmp" if the variable is not set. Under Windows, the value returned by [GetTempPath2] (if available) or [GetTempPath]. The temporary directory can be changed with {!Filename.set_temp_dir_name}. Under Windows, before OCaml 5.4, it would return the value of the [TEMP] environment variable, or "." if the variable was not set. @since 4.00 ./@@@@@@@GR@@@B@@@@@@31set_temp_dir_name%EF@б@г&stringPQ@@ @@@3RQQRRRRR@La8@A@@г$unit_`@@ @@@@@@@@@@ @@@l @ Change the temporary directory returned by {!Filename.get_temp_dir_name} and used by {!Filename.temp_file} and {!Filename.open_temp_file}. The temporary directory is a domain-local value which is inherited by child domains. @since 4.00 yz  @@@@@@@S@@@@@@@@@3%quote&   !@б@гb&string ! ! @@ @@@3@La8@A@@гq&string ! !@@ @@@@@@@@@@ @@@   @  Return a quoted version of a file name, suitable for use as one argument in a command line, escaping all meta-characters. Warning: under Windows, the output is only suitable for use with programs that follow the standard Windows quoting conventions. !!"#"&@@@@@@@T@@@ؐ@@@@@@3-quote_command'"(","("9@б@г&string"<"C"<"I@@ @@@3@La8@A@@б%stdinг&string"<"T"<"Z@@ @@@@@б&stdoutгѠ&string "<"f "<"l@@ @@@$@@б&stderrг⠐&string "<"x "<"~@@ @@@5@@б@г$list *"" +""@г&string 4"" 5""@@ @@@N@@@@@@S @@г &string F"" G""@@ @@@`@@@@@@@e @@A;@@@@@ @@ n Z"<"p@@\V@@@ @@ @@ x d"<"^@@w q@@@@@@@ n"<"M(@@@@@@@-@@@ v"("(0@ː  [quote_command cmd args] returns a quoted command line, suitable for use as an argument to {!Sys.command}, {!Unix.system}, and the {!Unix.open_process} functions. The string [cmd] is the command to call. The list [args] is the list of arguments to pass to this command. It can be empty. The optional arguments [?stdin] and [?stdout] and [?stderr] are file names used to redirect the standard input, the standard output, or the standard error of the command. If [~stdin:f] is given, a redirection [< f] is performed and the standard input of the command reads from file [f]. If [~stdout:f] is given, a redirection [> f] is performed and the standard output of the command is written to file [f]. If [~stderr:f] is given, a redirection [2> f] is performed and the standard error of the command is written to file [f]. If both [~stdout:f] and [~stderr:f] are given, with the exact same file name [f], a [2>&1] redirection is performed so that the standard output and the standard error of the command are interleaved and redirected to the same file [f]. Under Unix and Cygwin, the command, the arguments, and the redirections if any are quoted using {!Filename.quote}, then concatenated. Under Win32, additional quoting is performed as required by the [cmd.exe] shell that is called by {!Sys.command}. @raise Failure if the command cannot be escaped on the current platform. @since 4.10  "" (s(u@@@@@@@ U@@@@ @@@@@@@@@@_"@@@p3@@g@G@@@lC@#@@L@,u@U@@yP@0@J@@3        @L@A@ H************************************************************************ A@@ A@L@ H  BMM BM@ H OCaml  C C@ H  D D3@ H Xavier Leroy, projet Cristal, INRIA Rocquencourt  E44 E4@ H  F F@ H Copyright 1996 Institut National de Recherche en Informatique et  G G@ H en Automatique.  H Hg@ H  Ihh Ih@ H All rights reserved. This file is distributed under the terms of  J J@ H the GNU Lesser General Public License version 2.1, with the  K KN@ H special exception on linking described in the file LICENSE.  LOO LO@ H  M M@ H************************************************************************ N N5@<* Operations on file names.   F* The conventional name for the current directory (e.g. [.] in Unix). a X* The conventional name for the parent of the current directory (e.g. [..] in Unix). - A* The directory separator (e.g. [/] in Unix). @since 3.11.2  [* [concat dir file] returns a file name that designates file [file] in directory [dir].  * Return [true] if the file name is relative to the current directory, [false] if it is absolute (i.e. in Unix, starts with [/]). U * Return [true] if the file name is relative and does not start with an explicit reference to the current directory ([./] or [../] in Unix), [false] if it starts with an explicit reference to the root directory or the current directory.  R* [check_suffix name suff] returns [true] if the filename [name] ends with the suffix [suff]. Under Windows ports (including Cygwin), comparison is case-insensitive, relying on [String.lowercase_ascii]. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows.  * [chop_suffix name suff] removes the suffix [suff] from the filename [name]. @raise Invalid_argument if [name] does not end with the suffix [suff]. U * [chop_suffix_opt ~suffix filename] removes the suffix from the [filename] if possible, or returns [None] if the filename does not end with the suffix. Under Windows ports (including Cygwin), comparison is case-insensitive, relying on [String.lowercase_ascii]. Note that this does not match exactly the interpretation of case-insensitive filename equivalence from Windows. @since 4.08 砠 v* [extension name] is the shortest suffix [ext] of [name0] where: - [name0] is the longest suffix of [name] that does not contain a directory separator; - [ext] starts with a period; - [ext] is preceded by at least one non-period character in [name0]. If such a suffix does not exist, [extension name] is the empty string. @since 4.04  * Return the given file name without its extension, as defined in {!Filename.extension}. If the extension is empty, the function returns the given file name. The following invariant holds for any file name [s]: [remove_extension s ^ extension s = s] @since 4.04 W s* Same as {!Filename.remove_extension}, but raise [Invalid_argument] if the given name has an empty extension.  * Split a file name into directory name / base file name. If [name] is a valid file name, then [concat (dirname name) (basename name)] returns a file name which is equivalent to [name]. Moreover, after setting the current directory to [dirname name] (with {!Sys.chdir}), references to [basename name] (which is a relative file name) designate the same file as [name] before the call to {!Sys.chdir}. This function conforms to the specification of POSIX.1-2008 for the [basename] utility. Ǡ y* See {!Filename.basename}. This function conforms to the specification of POSIX.1-2008 for the [dirname] utility.  * [null] is ["/dev/null"] on POSIX and ["NUL"] on Windows. It represents a file on the OS that discards all writes and returns end of file on reads. @since 4.10 K * [temp_file prefix suffix] returns the name of a fresh temporary file in the temporary directory. The base name of the temporary file is formed by concatenating [prefix], then a suitably chosen integer number, then [suffix]. The optional argument [temp_dir] indicates the temporary directory to use, defaulting to the current result of {!Filename.get_temp_dir_name}. The temporary file is created empty, with permissions [0o600] (readable and writable only by the file owner). The file is guaranteed to be different from any other file that existed when [temp_file] was called. @raise Sys_error if the file could not be created. @before 3.11.2 no ?temp_dir optional argument Ӡ ;* Same as {!Filename.temp_file}, but returns both the name of a fresh temporary file, and an output channel opened (atomically) on this file. This function is more secure than [temp_file]: there is no risk that the temporary file will be modified (e.g. replaced by a symbolic link) before the program opens it. The optional argument [mode] is a list of additional flags to control the opening of the file. It can contain one or several of [Open_append], [Open_binary], and [Open_text]. The default is [[Open_text]] (open in text mode). The file is created with permissions [perms] (defaults to readable and writable only by the file owner, [0o600]). @raise Sys_error if the file could not be opened. @before 4.03 no ?perms optional argument @before 3.11.2 no ?temp_dir optional argument  g* [temp_dir prefix suffix] creates and returns the name of a fresh temporary directory with permissions [perms] (defaults to 0o700) inside [temp_dir]. The base name of the temporary directory is formed by concatenating [prefix], then a suitably chosen integer number, then [suffix]. The optional argument [temp_dir] indicates the temporary directory to use, defaulting to the current result of {!Filename.get_temp_dir_name}. The temporary directory is created empty, with permissions [0o700] (readable, writable, and searchable only by the file owner). The directory is guaranteed to be different from any other directory that existed when [temp_dir] was called. If temp_dir does not exist, this function does not create it. Instead, it raises Sys_error. @raise Sys_error if the directory could not be created. @since 5.1 k * The name of the temporary directory: Under Unix, the value of the [TMPDIR] environment variable, or "/tmp" if the variable is not set. Under Windows, the value returned by [GetTempPath2] (if available) or [GetTempPath]. The temporary directory can be changed with {!Filename.set_temp_dir_name}. Under Windows, before OCaml 5.4, it would return the value of the [TEMP] environment variable, or "." if the variable was not set. @since 4.00 # * Change the temporary directory returned by {!Filename.get_temp_dir_name} and used by {!Filename.temp_file} and {!Filename.open_temp_file}. The temporary directory is a domain-local value which is inherited by child domains. @since 4.00 ۠  * Return a quoted version of a file name, suitable for use as one argument in a command line, escaping all meta-characters. Warning: under Windows, the output is only suitable for use with programs that follow the standard Windows quoting conventions.  * [quote_command cmd args] returns a quoted command line, suitable for use as an argument to {!Sys.command}, {!Unix.system}, and the {!Unix.open_process} functions. The string [cmd] is the command to call. The list [args] is the list of arguments to pass to this command. It can be empty. The optional arguments [?stdin] and [?stdout] and [?stderr] are file names used to redirect the standard input, the standard output, or the standard error of the command. If [~stdin:f] is given, a redirection [< f] is performed and the standard input of the command reads from file [f]. If [~stdout:f] is given, a redirection [> f] is performed and the standard output of the command is written to file [f]. If [~stderr:f] is given, a redirection [2> f] is performed and the standard error of the command is written to file [f]. If both [~stdout:f] and [~stderr:f] are given, with the exact same file name [f], a [2>&1] redirection is performed so that the standard output and the standard error of the command are interleaved and redirected to the same file [f]. Under Unix and Cygwin, the command, the arguments, and the redirections if any are quoted using {!Filename.quote}, then concatenated. Under Win32, additional quoting is performed as required by the [cmd.exe] shell that is called by {!Sys.command}. @raise Failure if the command cannot be escaped on the current platform. @since 4.10 @?)../ocamlc0-strict-sequence(-absname"-w5+a-4-9-41-42-44-45-48"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal"-o4stdlib__Filename.cmi"-c g h Z/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores/stdlib @@0P A3_Z 3 l k k l l l l l@ j@@8CamlinternalFormatBasics0|.e1R$|o&Stdlib0t0VoS%{<F: 0ʩDZ۽!g@0ʩDZ۽!gAVCV9͐@@@nV@ T@@@W@ @@<@א@ڐ@q%uѐ @W!L@@@P@@