727f612b38
changed to null-terminate the intermediate token all the time in json.c
2018-04-25 16:12:59 +00:00
687d633c15
changed to call lt_dlinit() and lt_dlexit() as necessary when libltdl is enabled
2018-04-25 04:12:13 +00:00
bf030731fd
added '\n' to is_spacechar()
2018-04-24 05:24:58 +00:00
527f48fe80
added to handle a character literal
2018-04-23 14:30:00 +00:00
b6df00f2d2
added more error checks
2018-04-23 09:40:26 +00:00
407b469ec2
finished wring a primitive standalone json parser
2018-04-23 09:16:27 +00:00
c6e4aa0702
add some json parsing code
2018-04-22 18:18:45 +00:00
fa726cd82b
renamed hcl_json_t to hcl_jsoner_t
2018-04-21 05:36:06 +00:00
f87fdba5cb
added json related files
2018-04-21 02:13:53 +00:00
7c886ae2e3
added hcl_setinloc() and called this on each .SCRIPT command received in the server
2018-04-12 02:50:37 +00:00
9a1b20a47d
enhanced the hcl server to write back an error message for input-phase errors
2018-04-12 02:22:17 +00:00
436d67b5eb
improved error message handling in hcl server
2018-04-11 09:44:29 +00:00
64acfe3aec
restructured client and server code into a single library libhclex.
...
also migrated socket related functions into the library
2018-04-10 13:57:17 +00:00
dfee95436f
touched up an error message shown for an invalid hashed literal encountered whose first character after # is invalid
2018-04-10 10:10:50 +00:00
13ecb7e337
exported hcl_server_proto_feed_reply()
2018-04-10 09:17:00 +00:00
ae3745d5f3
added HCL_MOD_INCTX to hcl
...
added HCL_SERVER_MODULE_INCTX to hcl server
2018-04-09 15:54:54 +00:00
40aaa13e8e
fixed an issue in logfmtv.h
2018-04-09 09:11:24 +00:00
8f3191011c
fixed build files again
2018-04-09 06:11:57 +00:00
16ac5fe68d
fixed build files
2018-04-09 05:36:32 +00:00
f73bd64bc7
fixed missing short-form reply handling in lib/main-c.c
2018-04-09 02:42:05 +00:00
480fd879ee
renamed quo to div and added mdiv
2018-04-08 17:56:25 +00:00
69a68e3fa4
added the 'rem' and 'mod' primitive functions
2018-04-08 17:35:21 +00:00
e92407221f
renamed some function names for naming consistency
2018-04-07 15:54:16 +00:00
746dceff43
added lambda? predicate
2018-04-07 15:21:05 +00:00
3d344fc649
set salit.size to 0 forcibly in get_symbol_array_literal()
2018-04-07 15:09:02 +00:00
bec9600463
fixed an error handling issue in get_symbol_array_literal()
2018-04-07 06:28:54 +00:00
54015185ab
added many type checking predicates
2018-04-07 04:43:56 +00:00
726b8026b3
added the abs primitive function
2018-04-07 02:28:38 +00:00
9c23d72cec
renamed some encoding functions for consistency
2018-04-06 16:33:17 +00:00
01335db507
remove some spaces
2018-04-06 15:16:23 +00:00
69a5ef94bd
changed hcl_seterrxxx() functions not to set the errnum field again for failures in internal operations, especially in hcl_convxxx()
2018-04-06 14:59:44 +00:00
8726768be2
changed hcl_seterrxxx() functions
2018-04-06 14:37:40 +00:00
4ff11f147c
changed notation from #{} to #()
2018-04-06 14:21:47 +00:00
913883f31a
fixed an issume of producing a wrong closing bracket for a dictionary objecT
2018-04-06 08:55:23 +00:00
e41a02b957
changed hcl to be more json friendly including changing various notations and grammars
2018-04-06 08:33:25 +00:00
f1871fbe45
shortened bitwise-xxxx to bit-xxxx
2018-04-05 07:11:21 +00:00
3f614517a3
added primitive functions for bitwise operations on integers
2018-04-05 04:56:52 +00:00
46dc1968ad
implemented sqrt for fixed-point decimal.
...
fixed a bug in getting sqrt of a negative number
2018-04-04 04:41:23 +00:00
d5097b998a
added partial sqrt function
2018-04-03 14:02:40 +00:00
67c16596a8
added error messages in more places of bigint.c
2018-04-03 08:11:56 +00:00
9500b97c69
fixed a sign check bug in bigint.c
2018-04-03 07:49:46 +00:00
d4460c1b7c
fixed a bug and a wrong assertion in mul_nums()
2018-04-02 12:59:37 +00:00
0d350e9707
added hcl_mltnums() which scales the result according to the first parameter
2018-04-02 12:52:10 +00:00
dd73887115
added hcl_genums(), hcl_gtnums(), hcl_lenums(), hcl_ltnums(), hcl_eqnums(), hcl_nenums()
2018-04-02 12:28:09 +00:00
2d7fd04f25
implemented %f for sprintf
2018-04-02 08:47:50 +00:00
6ed4d2e705
added hcl_truncfpdevcal().
...
fixed bugs in sprintf
2018-04-01 17:09:07 +00:00
16b96e49bc
made code a bit win32 friendly
2018-03-31 07:10:43 +00:00
8df5087b9d
enhanced the multiplication function to truncate the resulting fixed-point decimal to the equal precision to the operands
2018-03-30 18:11:11 +00:00
e466c6b68a
disallowed fixed point decimal literal with no digit after the point.
...
fixed a bug in hcl_divnums
2018-03-30 17:37:40 +00:00
2253d09a18
implemented basic arithmetic operations for fixed-point decimals
2018-03-30 15:43:09 +00:00
dae10ef59c
fixed an escaping problem in printing a character or a string object
2018-03-29 04:47:03 +00:00
3fb9b31192
fixed reply encoding in the unicode mode in the server
2018-03-29 03:08:43 +00:00
116512ae9d
started adding fpdec calculation functions
2018-03-28 16:40:42 +00:00
3a30ffda7b
implemented reading and printing of fixed-point decimal number. primitives yet to be written
2018-03-28 08:57:49 +00:00
25253fc0e1
added neq? nql? nqk? for convenience over using not.
...
added >, >=, <, <=, =, /=
2018-03-28 03:15:20 +00:00
e5fbf1967f
added hcl_get_sockaddr_info()
2018-03-25 02:53:03 +00:00
0e2c892d8b
enhanced server's error handling a bit
2018-03-24 06:06:01 +00:00
e7726ac3db
added more error checks
2018-03-23 10:02:08 +00:00
8626c6c7aa
improved error handling in main-c.c
2018-03-23 02:51:38 +00:00
b845bee716
checked O_CLOEXEC availablity
2018-03-22 09:53:16 +00:00
f575bc6add
changed the server code to support multiple listening addresses
2018-03-22 09:46:44 +00:00
b7590398f1
implemented simple idle timeout on the server.
...
added --shutwr to the sample client code
2018-03-22 07:15:19 +00:00
41b7237ae5
improved the client sample code a bit
2018-03-22 06:08:44 +00:00
b3c0640ba6
fixed a bug in main-c.c
2018-03-22 04:31:18 +00:00
8be5e3fd83
moved the socket address convertion functions to the main hcl library
...
enhanced the client library and samples
2018-03-22 03:42:17 +00:00
57f8c8969a
touched up hcl client code
2018-03-21 15:17:46 +00:00
f675835a11
added reply handler
2018-03-21 10:38:10 +00:00
69e50af80f
added more client code
2018-03-20 14:54:32 +00:00
f9cf5e6554
added some hcl client code
2018-03-20 10:36:00 +00:00
11dbde8380
fixed a bug in the default log callback
2018-03-19 09:50:56 +00:00
46ff9acfe2
exposed hcl_addbuiltinprims().
2018-03-19 09:22:12 +00:00
89f3fc2d08
started some code for hcl client
2018-03-18 15:29:16 +00:00
5aa3a72eea
renamed main2.c to main-s.c
...
started adding client code
2018-03-17 16:07:51 +00:00
1968f11cdf
fixed a logmask handling issue
2018-03-17 11:57:02 +00:00
c41c3a12af
enhanced the inclusion path handling in the sample hcl server code
...
added HCL_SERVER_SCRIPT_INCLUDE_PATH
added optstate field in hcl_server_worker_t
2018-03-17 05:44:40 +00:00
b3cef9ec5c
added the used field to hcl_server_wid_map_data_t
...
started implementing .SHOW-WORKERS and .KILL-WORKER
2018-03-16 17:27:24 +00:00
36ee74f0ec
enhanced the log_write callback to use as few write system calls as possible.
...
changed the hcl server to raise an error if .SCRIPT is not followed by actual script text on the same line
2018-03-16 16:20:40 +00:00
0b7acc1fd8
Added HCL_SERVER_WORKER_MAX_COUNT
...
changed the main server loop to purge dead clients as soon as the multiplex is finished
2018-03-16 14:57:34 +00:00
70ef4b6299
enhanced the hcl server code to assign an ID to each worker created
2018-03-16 05:56:05 +00:00
a4e05ead91
fixed the hcl server to apply some settings to underlying hcl
2018-03-16 01:46:59 +00:00
2b2da9e780
added the empty hcl-c.h and hcl-c.c files
2018-03-15 15:27:34 +00:00
5dcb376907
enhanced the hcl server implementation further while fixing a couple bugs too
2018-03-15 15:23:51 +00:00
3228386c2c
implemented actor_max_runtime primitively using timer events
2018-03-15 10:30:06 +00:00
6f69e018c4
added timer functions
2018-03-15 08:35:38 +00:00
b56218ee25
enhanced the error handling of address conversion failure
2018-03-14 15:01:07 +00:00
1736eb5c8b
enclosed the value of a macro in parenthesis
2018-03-14 14:56:15 +00:00
b7434aa976
fixed a potential in set_err_with_syserr in hcl-s.c
2018-03-14 14:54:10 +00:00
de534fed83
cleaned up code a bit
2018-03-14 14:46:23 +00:00
25b71a4800
exported hcl_seterrbfmtv(), hcl_seterrufmtv()
...
added hcl_server_seterrbfmt(), hcl_server_seterrufmt(), hcl_server_seterrbfmtv(), hcl_server_seterrufmtv()
added socket address conversion functions
2018-03-14 14:40:05 +00:00
72fe88548f
added .DATA to the chunked output
2018-03-14 10:39:36 +00:00
39749ab847
put the hcl server code into a library
2018-03-14 10:14:38 +00:00
773f09aab2
added hcl-s.c and hcl-s.h
2018-03-13 10:20:50 +00:00
34a23ef986
moving code in main2.c to hcl-s.c
2018-03-13 10:20:33 +00:00
6ff6286ecf
speeded up termination
...
added functions to manipulate server options
2018-03-13 02:02:25 +00:00
3ba32a615d
exported hcl_conv_ucs_to_bcs_with_cmgr() and similar functions
...
enhanced the sample server program
2018-03-12 16:45:42 +00:00
d51ad1cd6a
Added partial sample program to accept requests over a socket
2018-03-12 10:39:13 +00:00
a2d8206c58
removed a duplicate macro definition in hcl-prv.h
2018-03-11 17:08:02 +00:00
27e1e55a7c
added hcl_getip(), hcl_getbclen(), hcl_getlflen()
...
renamed vm_checkpoint to vm_checkbc while adding a new parameter
2018-03-11 11:16:28 +00:00
b9224dfa97
added a sample line commented out
2018-03-11 03:12:38 +00:00
f9e60cea28
changed the position of abortion check
2018-03-11 03:05:42 +00:00
536f7fd9f2
added hcl_abort()
...
taken out vm_startup and vm_cleanup from hcl_vmprim_t and moved them to hcl_cb_t
2018-03-10 17:53:44 +00:00
986e02ae69
fixed return types of io handlers in main.c
2018-03-09 05:12:55 +00:00
3acdae2cdf
changed the hcl_ioimpl_t prototype to return 'int' instead of 'hcl_ooi_t'.
...
changed the io arguments to have a new 'xlen' field that holds the result of IO operations where 0 means end of stream
2018-03-09 05:05:09 +00:00
a60bd0c898
renamed hcl_purgeatdic() to hcl_zapatdic()
...
exposed hcl_moveoop()
extended the meaning of the kernel bits in the object flags
extended hcl_pfbase_t to include the type - one of HCL_PFBASE_FUNC, HCL_PFBASE_VAR, HCL_PFBASE_CONST. HCL_PFBASE_CONST not fully implemented yet
2018-03-08 14:18:30 +00:00
02b02865ac
work in progress to add the hcl_purgeatdic() function
2018-03-08 10:00:57 +00:00
de7db3e3bd
updated the build files to utilize the standalone libltdl library if available
2018-03-07 07:50:28 +00:00
474d48a211
changed configure.ac to reset DL_LIBS if it's set to 'none required'
2018-03-05 04:39:57 +00:00
3eac18548c
added mmap/munmap check to configure.ac
2018-03-05 04:08:11 +00:00
2c1b4448be
changed the notatin of an error literal from #\eNNN to #eNNN.
...
changed the notation of a smptr literal from #\pXXXX to #pXXXX
2018-03-05 03:47:18 +00:00
e3b5d33811
implemented the builtin primitive function sprintf
2018-03-05 03:35:44 +00:00
d4d9491f3c
exported hcl_readchar() and hcl_unreadchar()
2018-03-04 14:43:23 +00:00
71d024837d
enhanced the compiler to implement short-circuited logical 'and' and 'or' special forms.
...
renamed the primitive function 'and' to '_and' and 'or' to '_or'
2018-03-03 17:16:41 +00:00
c387772803
added a new special word and and or. compiler yet to be enhanced
2018-03-03 03:28:10 +00:00
5aee382e9e
fixed the wrong word output for #nil in the json format
2018-03-02 07:58:37 +00:00
60a32bf642
added HCL_LOG_PREFER_JSON and implemented %J
2018-03-02 07:44:13 +00:00
450526215a
fixed a compilation issue about MMAP_HUGETLB
2018-03-02 02:09:41 +00:00
9094157e28
fixed print_formatted() to use hcl_outfmtobj() instead of hcl_print().
...
added 2 new optional callbacks - vmprim.alloc_heap and vmprim.free_heap
2018-03-01 14:47:12 +00:00
0b460a3f2a
added the logf builtin function
2018-03-01 09:46:02 +00:00
e58d4e30cc
fixed a bug printing %% in print_formatted.
...
changed to use #x #o #b for hexadecimal, octal, binary output
2018-03-01 08:56:56 +00:00
329fc6ce7d
removed unused lines
2018-03-01 05:27:17 +00:00
6eaf73a3d7
touched up various remaining implementation details of the printf builtin function.
2018-03-01 05:25:09 +00:00
09302470f7
enhanced hcl_inttostr() to accept a negative radix to produce lower-case alphabetic digits
2018-02-28 15:57:19 +00:00
ed729adc2e
removed unneeded code
2018-02-28 10:23:08 +00:00
ffa6c39852
fixed a bug in printing a single character when hcl_ooch_t is hcl_bch_t
...
implemented the primitive printf function partially
2018-02-28 10:17:05 +00:00
aaafc1371b
changed the format of accepted values by --enable-unicode
2018-02-28 07:33:13 +00:00
701554af0d
fixed a wrong index used when getting the mod pointer into/from the prim object
2018-02-28 05:04:42 +00:00
c865de4d61
changed the prototype of hcl_pfimpl_t to accept a hcl_mod_t* pointer
2018-02-28 04:52:01 +00:00
eaf7f9243d
changed types of some variables from hcl_oow_t to hcl_ooi_t
...
attempted to add the builtin printf function
2018-02-26 15:52:15 +00:00
ef51ee4a1d
enhanced the logfmtv to handle encoding conversion of the format string
2018-02-26 15:24:45 +00:00
bf49aa1260
changed a wrong function name from hcl_logoofmt to hcl_logufmt
...
enhanced the log formatter routine a bit
2018-02-26 10:49:31 +00:00
7e6b16e153
work in progress to implement the builtin printf function
2018-02-24 04:01:19 +00:00
a5fe90597c
fixed a compiler bug that didn't check the number of arguments to a primitive function properly when no parameter was given
2018-02-24 01:28:58 +00:00
a4be9907b7
added some comments
2018-02-23 08:50:18 +00:00
9498530691
enhanced HCL_BRANDOF() to avoid multiple comparisons.
...
added the eqk? builtin primitive
removed unnecessary lines
2018-02-23 07:17:23 +00:00
9abb389aa2
got rid of hcl_getlastretv() but let hcl_execute() and hcl_executefromip() to return the returnv value
2018-02-22 12:57:31 +00:00
a78dba499f
changed the reader to use a stack of 4-item arrays instead of chains of 3 cons cells
...
cleaned up some unused code
2018-02-22 10:02:39 +00:00
4876d1775c
added hcl_getlastretv().
...
enhanced hcl_hashobj() to return hash values for nil, true, false
2018-02-22 07:41:03 +00:00
dbeac10a38
added more error immunity check for the log_write callback
2018-02-22 04:44:21 +00:00
a39e38cc8d
made hcl immune to an error number/message set in the log_write callback
2018-02-22 04:35:55 +00:00
6e4a8f6081
enhanced pf_log to print a character without quotes.
...
fixed formatting specifiers in log_char_object() in prim.c
2018-02-21 13:13:25 +00:00
25e4bb040c
added a new debugging macro HCL_DEBUG_LEXER
...
removed the debugging macro HCL_DBEUG_BIGINT
2018-02-21 13:02:05 +00:00
c12b85e0a0
enhanced --enable-unicode to accept ucs4 and ucs2 in addition to yes/no.
...
redefined the moo_uch_t type to follow the enable-unicode value
2018-02-21 10:12:47 +00:00
67a334bc26
deprecated NDEBUG and introduced HCL_BUILD_DEBUG and HCL_BUILD_RELEASE
2018-02-21 09:30:18 +00:00
5128c1a99f
localized a local variable into a loop in PUT_OOCH and PUT_OOCS in logfmtv
2018-02-21 08:54:13 +00:00
14b3013c79
fixed the premature termination issue in logfmtv
2018-02-21 08:48:47 +00:00
ed7f580e54
changed the wrong field name when HCL_OOCH_IS_BCH
2018-02-21 07:54:38 +00:00
7a47ba6369
cleaned up code a bit
2018-02-21 07:38:59 +00:00
cfdc22ee60
added --enable-unicode to configure.ac
...
cleaned up unnecessary code
2018-02-21 07:37:10 +00:00
a1ce05a5fb
more error checks
2018-02-20 14:53:12 +00:00
af67156d1b
changed the main loop a little bit
2018-02-20 14:10:09 +00:00
e61207291c
removed NDEBUG enclosing karatsuba_cutoff
2018-02-20 10:27:11 +00:00
1f4143f20f
made hcl_inttooow() and hcl_oowtoint() public
2018-02-19 16:17:46 +00:00
edea84bd46
added the gc builtin function
2018-02-18 15:02:57 +00:00
21cddab62f
change dic.get to return an error code upon search failure
2018-02-17 16:45:17 +00:00
093ee93a3c
deleted unneeded code
2018-02-17 16:09:44 +00:00
22127d384f
added some error checks for error literals and smptr literals
2018-02-17 16:01:27 +00:00
de0715e302
implemented the single quote character literal.
...
added the error literal and the smptr literal notations and types
2018-02-17 15:42:12 +00:00
270a762e32
added some builtin modules, but without many functions in them
2018-02-15 15:36:15 +00:00
2a0551df2d
enhanced hcl_inttostr() to keep results in the temporary buffer when ngc is negative.
...
changed the integer printing function to utilize this change in print.c
2018-02-15 08:05:48 +00:00
46a4bd1561
fixed to use hcl-wide temporary buffers when converting an integer to a string
2018-02-15 06:58:36 +00:00
374748f271
added reader & compiler check to filter out special symbols when processing argument and variable names in more contexts
2018-02-15 01:39:00 +00:00
bcc616acde
fixed the wrong buggy argument to hcl_decode() in main.c
2018-02-13 16:19:16 +00:00
f802bec44a
integrated bigint
...
cleaned up code
2018-02-13 16:10:41 +00:00
eff0957fbb
adjusted bigint code
2018-02-13 11:48:16 +00:00
0483f506f8
changed mod_test to mod_fake_test. this will eventually be removed
2018-02-13 02:30:06 +00:00
978bc30203
removed duplicate hcl_t definition
2018-02-13 02:26:37 +00:00
2201ee5a94
added hcl_walkdic
...
fixed a bug of not printing the list closer properly in hcl_print().
enhanced error handling
2018-02-12 16:51:38 +00:00
4ddffc101d
mapped a dotted identifer to a primitive function
2018-02-12 10:50:44 +00:00
45bb26d97f
fixed the way to drive hcl in main.c
2018-02-09 17:15:31 +00:00
eff4be881f
implemented (do ...)
2018-02-09 16:10:29 +00:00
d684f0c1db
implemented defun as a shortcut to (set xxxx (lambda () ..))
2018-02-09 15:27:02 +00:00
043f756076
improved error messsages
2018-02-09 15:04:18 +00:00
b1679f636f
added some error messsages
2018-02-09 04:27:24 +00:00
0546665e95
renamed prim to pf.
...
added module manipulation functions
2018-02-09 04:24:50 +00:00
91e1177bdb
added -ldl to the build process
2018-02-09 04:02:17 +00:00
a741b74513
added dl_xxx vm primtiives
2018-02-09 03:48:30 +00:00
c6ac66e3f0
fixed header includsion in main.c
2018-02-09 01:13:11 +00:00
f27ae54982
set default type mask in moo_compile() and moo_executefromip().
...
changed the main program a little bit
2018-02-08 15:04:07 +00:00
d78714432a
regenerated build files
2018-02-08 14:44:06 +00:00
95b4c5e0d7
added more vm primitives
2018-02-08 14:40:56 +00:00
49363231a1
added hcl_executefromip()
2018-02-08 10:33:59 +00:00
08d6f4b4ad
added the id field to process
2018-02-08 09:21:18 +00:00
4f55376107
touched up code. added eqv? eql? not
2018-02-08 07:40:27 +00:00
e54096f2a0
changed copyright years
2018-02-07 14:13:13 +00:00
ca7da52af4
added bytearray compilation code
2018-02-07 13:55:22 +00:00
f904914d6a
implemented dictionary printing
2018-02-07 10:55:20 +00:00
979ba97769
enhanced the compiler to handle array enclosed in #().
...
added partial code to handle dictionary enclosed in #{}
2018-02-07 07:35:30 +00:00
19a672af45
added partial code for HCL_CODE_MAKE_DICTIONARY, HCL_CODE_MAKE_ARRAY, etc
2018-02-06 13:52:58 +00:00
7826f0ff06
changed the reader to handle #(), #[], #{}, '() specially
2018-02-06 10:16:01 +00:00
380784cf57
added printing routines
2018-02-05 15:59:32 +00:00
293222d5c5
trying to revive this project
2018-02-05 10:43:25 +00:00
a84cd9da09
fixed a bug in logfmt.c
2016-11-21 12:39:38 +00:00
66af1a8ea3
fixed a logfmt bug
2016-11-09 15:50:41 +00:00
ccca08c725
added some primitive functions
2016-10-25 13:44:38 +00:00
15b995801d
implemented elif handling and changed the compiler to eliminate some unecessary expressions
2016-10-19 17:31:29 +00:00
ac818fdbfd
implemented else handling
2016-10-18 17:00:35 +00:00
57af7d6c7e
started the if handling
2016-10-15 08:49:27 +00:00
68f700374b
prevented a syncoded symbol from being used as a variable/argument name
2016-10-13 09:48:32 +00:00
4160e9e0fe
improved break handling further
2016-10-13 07:41:10 +00:00
1f16bc2d11
in the course of adding break
2016-10-12 09:54:07 +00:00
c2216421b7
added the until loop
2016-10-12 07:30:54 +00:00
0773ecece9
handled the while loop almost in full
2016-10-11 10:29:37 +00:00
ad671fb493
added some code to handle while
2016-10-10 11:36:24 +00:00
36cdf2e062
refactored comp.c a bit
2016-10-08 17:22:48 +00:00
066b5c0e0d
added _uint128_t check
2016-10-07 14:46:05 +00:00
5db3bbd8d8
fixed an argument passing handling bug
2016-10-06 18:17:52 +00:00
15208b5e85
added some code to handle primitives and the call instruction
2016-10-06 17:49:47 +00:00
badf66c9d4
added some code for executing byte codes
2016-10-04 17:56:28 +00:00
bdfc72d48d
added some code to handle local variable declaration
2016-10-01 04:36:48 +00:00
55a5d2c3c6
did something on temporary variable and argument handling
2016-09-29 13:20:09 +00:00
06156b1a45
added hcl-cfg.h.in
2016-09-28 14:41:27 +00:00
94e690004d
added initial hcl files
2016-09-28 14:40:37 +00:00