minor improvements, terminal keys
authorIan Kelling <ian@iankelling.org>
Sun, 30 Jun 2019 19:54:33 +0000 (15:54 -0400)
committerIan Kelling <ian@iankelling.org>
Sun, 30 Jun 2019 19:54:33 +0000 (15:54 -0400)
brc
btrbk-run
conflink
distro-end
subdir_files/.local/share/konsole/README.ian
subdir_files/.local/share/konsole/default.keytab.orig [moved from subdir_files/.local/share/konsole/default.keytab with 98% similarity]
subdir_files/.local/share/konsole/ian.keytab [new file with mode: 0644]
subdir_files/.local/share/konsole/profileian.profile

diff --git a/brc b/brc
index 99c4e819fd09ac6d396ce6640f5f7961800b7064..15799b880f790aab264ea2cc56acd79a1721d844 100644 (file)
--- a/brc
+++ b/brc
@@ -107,12 +107,16 @@ if [[ $- == *i* ]]; then
     bind '"\C-i": self-insert'
   else
 
+    if [[ $KONSOLE_PROFILE_NAME ]]; then
+      TERM=xterm-256color
+      fi
+
     # todo: not sure this works in sakura
     #stty werase undef
     #bind "\C-w": kill-region
     # sakura == xterm-256color
     # konsole == xterm
-    if [[ $TERM == "xterm" ]]; then
+    if [[ $TERM == xterm* ]]; then
       # control + arrow keys. for other terminals, see http://unix.stackexchange.com/questions/10806/how-to-change-previous-next-word-shortcut-in-bash
       bind '"\e[1;5C": shell-forward-word' 2>/dev/null
       bind '"\e[1;5D": shell-backward-word' 2>/dev/null
@@ -165,8 +169,8 @@ export PROFILE_TASKS_TASK_OUTPUT_LIMIT=100
 C_DEFAULT_DIR=/a
 
 # i for insensitive. the rest from
-# https://superuser.com/questions/366930/how-do-i-get-the-git-pager-to-clean-up-screen-output-after-exit
-# and reading the man
+# X means dont remove the current screenworth of output upon exit
+# R means to show colors n things
 export LESS=RXi
 export SYSTEMD_LESS=$LESS
 
@@ -1091,25 +1095,8 @@ ifn() {
        -o -name .hg -prune -o -name .editor-backups -prune \
        -o -name .undo-tree-history -prune \) -iname "*$**" 2>/dev/null
 }
-ifnl() {
-}
 
 
-if [[ $OS == Windows_NT ]]; then
-  # cygstart wrapper
-  cs() {
-    cygstart "$@" &
-  }
-  xp() {
-    explorer.exe .
-  }
-  # launch
-  o() {
-    local x=(*$1*)
-    (( ${#x[#]} > 1 )) && { echo "warning ${#x[#]} matches found"; sleep 1; }
-    cygstart *$1* &
-  }
-else
   o() {
     if type gvfs-open &> /dev/null ; then
       gvfs-open "$@"
@@ -1118,7 +1105,6 @@ else
     fi
     # another alternative is run-mailcap
   }
-fi
 
 ipdrop() {
   s iptables -A INPUT -s $1 -j DROP
@@ -2285,12 +2271,16 @@ unset IFS
 # commented until i want to use it because it
 # noticably slows bash startup
 #
-#if [[ $EUID != 0 && -e ~/.pyenv/bin ]]; then
-#  export PATH="~/.pyenv/bin:$PATH"
-#  eval "$(pyenv init -)"
-#  eval "$(pyenv virtualenv-init -)"
-#fi
 
+mypyenvinit () {
+  if [[ $EUID == 0 || ! -e ~/.pyenv/bin ]]; then
+    echo "error: dont be root. make sure pyenv is installed"
+    return 1
+  fi
+  export PATH="~/.pyenv/bin:$PATH"
+  eval "$(pyenv init -)"
+  eval "$(pyenv virtualenv-init -)"
+}
 
 
 export GOPATH=$HOME/go
index 6908018f61fbafda774339f4f299699e479a388b..f3589700b35729fa4cbb691e265a83e64c11658a 100644 (file)
--- a/btrbk-run
+++ b/btrbk-run
@@ -126,7 +126,7 @@ fi
 # set default targets
 if [[ ! -v targets && ! $source ]]; then
   if [[ $HOSTNAME != "$MAIL_HOST" ]] && $cron ; then
-    echo "We are not MAIL_HOST, nothing to do"
+    echo "MAIL_HOST=$MAIL_HOST, nothing to do"
     exit 0
   fi
   case $HOSTNAME in
index e26be58e0693af8d3ce3ddb9e84bdba8a8e1f636..eb94ebe1a9ed1de38ddd8d541f84751e56d81854 100755 (executable)
--- a/conflink
+++ b/conflink
@@ -70,7 +70,11 @@ done
 c_dirs=(/a/c{,/machine_specific/$HOSTNAME})
 case $USER in
   iank)
-    files=(/p/c/machine_specific/*/filesystem/etc/ssh/*_key)
+    files=(/p/c/machine_specific/*/filesystem/etc/ssh/*_key
+           /p/c/filesystem/etc/openvpn/client/*.key
+           /p/c/filesystem/etc/openvpn/easy-rsa/keys/*.key
+           /p/c/machine_specific/kw/filesystem/etc/openvpn/client/*.key
+          )
     if [[ -e $files ]]; then
       chmod 600 ${files[@]}
     fi
@@ -106,7 +110,6 @@ case $USER in
     ##### end special extra stuff #####
 
     sudo bash -c 'shopt -s nullglob; cd /etc/openvpn; for f in client/* server/*; do ln -sf $f .; done'
-    sudo bash -c 'shopt -s nullglob; cd /etc/openvpn; for f in server/*.key client/*.key; do chmod 600 $f; done'
 
     m sudo -H -u traci "$BASH_SOURCE"
     ;;
index 0e7c4b8197dab344b80a00602e76365deaa84dfa..b54285878e17a743de221ca36550294640aa5dda 100755 (executable)
@@ -731,6 +731,37 @@ EOF
 fi
 #########  end  pump.io periodic backup #############
 
+
+######### begin irc periodic backup #############
+if [[ $HOSTNAME == frodo ]]; then
+  s dd of=/etc/systemd/system/ircbackup.service <<'EOF'
+[Unit]
+Description=irc li backup
+After=multi-user.target
+
+[Service]
+User=iank
+Type=oneshot
+ExecStart=/a/bin/log-quiet/sysd-mail-once irc-backup rsync -rlptDhSAX --delete root@iankelling.org:/var/lib/znc/moddata/log/iank/freenode/ /k/irclogs
+EOF
+  s dd of=/etc/systemd/system/ircbackup.timer <<'EOF'
+[Unit]
+Description=irc li backup hourly
+
+[Timer]
+OnCalendar=hourly
+
+[Install]
+WantedBy=timers.target
+EOF
+  s systemctl daemon-reload
+  sgo ircbackup.timer
+fi
+
+
+######### end irc periodic backup #############
+
+
 # https://github.com/jlebon/textern
 cd /a/opt/textern
 make native-install USER=1
index dcde179de35e381ef35e2406d85d601e304a1b85..622cb121e1986bb22a199887770a0225fa41d793 100644 (file)
@@ -1,3 +1,11 @@
-only thing I added was
+I added several things, do a diff with default.orig.
+I saved that in case konsole updates the defaults.
 key Backspace+Ctrl : "\x17"
-I did it through the ui. it makes ctrl-backspace delete the prev word
\ No newline at end of file
+it makes ctrl-backspace delete the prev word by making it input C-w.
+Note: keybindings name is specified in profile file, filename.keytab, and at the top of that file.
+
+The \E[4d etc were found without exaplanation in a random stackoverflow
+comment. It seems to just be an unused and useful pattern, where d could
+be any letter. I set them with +AppScreen, but they don't necessarily
+need to be, its just thats the only place I use them, and maybe more
+useful to have the duplicates working outside of emacs.
similarity index 98%
rename from subdir_files/.local/share/konsole/default.keytab
rename to subdir_files/.local/share/konsole/default.keytab.orig
index 0d12e6b34c137df007dbc1968ff34c04e3888434..0e09117c69d68bd62f2ba60d88fb800b8dec5a3e 100644 (file)
@@ -1,96 +1,94 @@
 keyboard "Default (XFree 4)"
-key Space+Ctrl : "\x00"
-key Backtab+Ansi : "\E[Z"
-key Backtab-Ansi : "\t"
-key Backspace+Ctrl : "\x17"
-key Backspace : "\x7f"
-key Backspace+Ctrl : "\x17"
-key Esc : "\E"
-key Tab-Shift : "\t"
-key Tab+Shift+Ansi : "\E[Z"
-key Tab+Shift-Ansi : "\t"
-key Ins+KeyPad : "\E[2~"
-key Ins-AnyModifier : "\E[2~"
-key Ins+AnyModifier : "\E[2;*~"
-key Del+KeyPad : "\E[3~"
-key Del-AnyModifier : "\E[3~"
-key Del+AnyModifier : "\E[3;*~"
-key Return-Shift-NewLine : "\r"
-key Return-Shift+NewLine : "\r\n"
-key Return+Shift : "\EOM"
-key Enter+NewLine : "\r\n"
-key Enter-NewLine : "\r"
-key Left-Shift-Ansi : "\ED"
-key Left-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOD"
-key Left-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[D"
-key Left-Shift+Ansi+AnyModifier : "\E[1;*D"
-key Left+Shift+AppScreen : "\E[1;*D"
-key Left-Shift+KeyPad+Ansi+AppCursorKeys : "\EOD"
 key Left-Shift+KeyPad+Ansi-AppCursorKeys : "\E[D"
-key Up-Shift-Ansi : "\EA"
-key Up-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOA"
-key Up-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[A"
-key Up-Shift+Ansi+AnyModifier : "\E[1;*A"
-key Up+Shift+AppScreen : "\E[1;*A"
-key Up-Shift+KeyPad+Ansi+AppCursorKeys : "\EOA"
-key Up-Shift+KeyPad+Ansi-AppCursorKeys : "\E[A"
+key Left-Shift+KeyPad+Ansi+AppCursorKeys : "\EOD"
+key Left+Shift+AppScreen : "\E[1;*D"
+key Left-Shift+Ansi+AnyModifier : "\E[1;*D"
+key Left-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[D"
+key Left-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOD"
+key Left-Shift-Ansi : "\ED"
 key Up+Shift-AppScreen : ScrollLineUp
-key Home+KeyPad+AppCursorKeys : "\EOH"
-key Home+KeyPad-AppCursorKeys : "\E[H"
-key Home-AppCursorKeys-AnyModifier : "\E[H"
-key Home+AppCursorKeys-AnyModifier : "\EOH"
-key Home+AnyModifier : "\E[1;*H"
+key Up-Shift+KeyPad+Ansi-AppCursorKeys : "\E[A"
+key Up-Shift+KeyPad+Ansi+AppCursorKeys : "\EOA"
+key Up+Shift+AppScreen : "\E[1;*A"
+key Up-Shift+Ansi+AnyModifier : "\E[1;*A"
+key Up-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[A"
+key Up-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOA"
+key Up-Shift-Ansi : "\EA"
 key Home+Shift-AppScreen : ScrollUpToTop
-key End+KeyPad+AppCursorKeys : "\EOF"
-key End+KeyPad-AppCursorKeys : "\E[F"
-key End-AppCursorKeys-AnyModifier : "\E[F"
-key End+AppCursorKeys-AnyModifier : "\EOF"
-key End+AnyModifier : "\E[1;*F"
+key Home+AnyModifier : "\E[1;*H"
+key Home+AppCursorKeys-AnyModifier : "\EOH"
+key Home-AppCursorKeys-AnyModifier : "\E[H"
+key Home+KeyPad-AppCursorKeys : "\E[H"
+key Home+KeyPad+AppCursorKeys : "\EOH"
 key End+Shift-AppScreen : ScrollDownToBottom
-key PgUp-Shift+KeyPad : "\E[5~"
-key PgUp-Shift-AnyModifier : "\E[5~"
-key PgUp-Shift+AnyModifier : "\E[5;*~"
+key End+AnyModifier : "\E[1;*F"
+key End+AppCursorKeys-AnyModifier : "\EOF"
+key End-AppCursorKeys-AnyModifier : "\E[F"
+key End+KeyPad-AppCursorKeys : "\E[F"
+key End+KeyPad+AppCursorKeys : "\EOF"
 key PgUp+Shift-AppScreen : ScrollPageUp
-key PgDown-Shift+KeyPad : "\E[6~"
-key PgDown-Shift-AnyModifier : "\E[6~"
-key PgDown-Shift+AnyModifier : "\E[6;*~"
+key PgUp-Shift+AnyModifier : "\E[5;*~"
+key PgUp-Shift-AnyModifier : "\E[5~"
+key PgUp-Shift+KeyPad : "\E[5~"
 key PgDown+Shift-AppScreen : ScrollPageDown
-key Right-Shift-Ansi : "\EC"
-key Right-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOC"
-key Right-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[C"
-key Right-Shift+Ansi+AnyModifier : "\E[1;*C"
-key Right+Shift+AppScreen : "\E[1;*C"
-key Right-Shift+KeyPad+Ansi+AppCursorKeys : "\EOC"
+key PgDown-Shift+AnyModifier : "\E[6;*~"
+key PgDown-Shift-AnyModifier : "\E[6~"
+key PgDown-Shift+KeyPad : "\E[6~"
 key Right-Shift+KeyPad+Ansi-AppCursorKeys : "\E[C"
-key Down-Shift-Ansi : "\EB"
-key Down-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOB"
-key Down-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[B"
-key Down-Shift+Ansi+AnyModifier : "\E[1;*B"
-key Down+Shift+AppScreen : "\E[1;*B"
-key Down-Shift+KeyPad+Ansi+AppCursorKeys : "\EOB"
-key Down-Shift+KeyPad+Ansi-AppCursorKeys : "\E[B"
+key Right-Shift+KeyPad+Ansi+AppCursorKeys : "\EOC"
+key Right+Shift+AppScreen : "\E[1;*C"
+key Right-Shift+Ansi+AnyModifier : "\E[1;*C"
+key Right-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[C"
+key Right-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOC"
+key Right-Shift-Ansi : "\EC"
 key Down+Shift-AppScreen : ScrollLineDown
-key F11-AnyModifier : "\E[23~"
+key Down-Shift+KeyPad+Ansi-AppCursorKeys : "\E[B"
+key Down-Shift+KeyPad+Ansi+AppCursorKeys : "\EOB"
+key Down+Shift+AppScreen : "\E[1;*B"
+key Down-Shift+Ansi+AnyModifier : "\E[1;*B"
+key Down-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[B"
+key Down-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOB"
+key Down-Shift-Ansi : "\EB"
+key Backtab-Ansi : "\t"
+key Backtab+Ansi : "\E[Z"
+key Backspace : "\x7f"
+key Esc : "\E"
+key Tab+Shift-Ansi : "\t"
+key Tab+Shift+Ansi : "\E[Z"
+key Tab-Shift : "\t"
+key Ins+AnyModifier : "\E[2;*~"
+key Ins-AnyModifier : "\E[2~"
+key Ins+KeyPad : "\E[2~"
+key Del+AnyModifier : "\E[3;*~"
+key Del-AnyModifier : "\E[3~"
+key Del+KeyPad : "\E[3~"
+key Return+Shift : "\EOM"
+key Return-Shift+NewLine : "\r\n"
+key Return-Shift-NewLine : "\r"
+key Enter-NewLine : "\r"
+key Enter+NewLine : "\r\n"
 key F11+AnyModifier : "\E[23;*~"
-key F12-AnyModifier : "\E[24~"
+key F11-AnyModifier : "\E[23~"
 key F12+AnyModifier : "\E[24;*~"
-key F9-AnyModifier : "\E[20~"
+key F12-AnyModifier : "\E[24~"
 key F9+AnyModifier : "\E[20;*~"
-key F10-AnyModifier : "\E[21~"
+key F9-AnyModifier : "\E[20~"
 key F10+AnyModifier : "\E[21;*~"
-key F3-AnyModifier : "\EOR"
+key F10-AnyModifier : "\E[21~"
 key F3+AnyModifier : "\EO*R"
-key F4-AnyModifier : "\EOS"
+key F3-AnyModifier : "\EOR"
 key F4+AnyModifier : "\EO*S"
-key F1-AnyModifier : "\EOP"
+key F4-AnyModifier : "\EOS"
 key F1+AnyModifier : "\EO*P"
-key F2-AnyModifier : "\EOQ"
+key F1-AnyModifier : "\EOP"
 key F2+AnyModifier : "\EO*Q"
-key F7-AnyModifier : "\E[18~"
+key F2-AnyModifier : "\EOQ"
 key F7+AnyModifier : "\E[18;*~"
-key F8-AnyModifier : "\E[19~"
+key F7-AnyModifier : "\E[18~"
 key F8+AnyModifier : "\E[19;*~"
-key F5-AnyModifier : "\E[15~"
+key F8-AnyModifier : "\E[19~"
 key F5+AnyModifier : "\E[15;*~"
-key F6-AnyModifier : "\E[17~"
+key F5-AnyModifier : "\E[15~"
 key F6+AnyModifier : "\E[17;*~"
+key F6-AnyModifier : "\E[17~"
+key Space+Ctrl : "\x00"
diff --git a/subdir_files/.local/share/konsole/ian.keytab b/subdir_files/.local/share/konsole/ian.keytab
new file mode 100644 (file)
index 0000000..64e9c2b
--- /dev/null
@@ -0,0 +1,99 @@
+keyboard "ian"
+key F7+AnyModifier : "\E[18;*~"
+key F7-AnyModifier : "\E[18~"
+key F8+AnyModifier : "\E[19;*~"
+key F8-AnyModifier : "\E[19~"
+key F5+AnyModifier : "\E[15;*~"
+key F5-AnyModifier : "\E[15~"
+key F6+AnyModifier : "\E[17;*~"
+key F6-AnyModifier : "\E[17~"
+key F3+AnyModifier : "\EO*R"
+key F3-AnyModifier : "\EOR"
+key F4+AnyModifier : "\EO*S"
+key F4-AnyModifier : "\EOS"
+key F1+AnyModifier : "\EO*P"
+key F1-AnyModifier : "\EOP"
+key F2+AnyModifier : "\EO*Q"
+key F2-AnyModifier : "\EOQ"
+key F11+AnyModifier : "\E[23;*~"
+key F11-AnyModifier : "\E[23~"
+key F12+AnyModifier : "\E[24;*~"
+key F12-AnyModifier : "\E[24~"
+key F9+AnyModifier : "\E[20;*~"
+key F9-AnyModifier : "\E[20~"
+key F10+AnyModifier : "\E[21;*~"
+key F10-AnyModifier : "\E[21~"
+key Ins+AnyModifier : "\E[2;*~"
+key Ins-AnyModifier : "\E[2~"
+key Ins+KeyPad : "\E[2~"
+key Del+AnyModifier : "\E[3;*~"
+key Del-AnyModifier : "\E[3~"
+key Del+KeyPad : "\E[3~"
+key Return+Shift : "\EOM"
+key Return-Shift+NewLine : "\r\n"
+key Return-Shift-NewLine : "\r"
+key Enter-NewLine : "\r"
+key Enter+NewLine : "\r\n"
+key Backtab-Ansi : "\t"
+key Backtab+Ansi : "\E[Z"
+key Backspace+Ctrl+AppScreen : "\E[4b"
+key Backspace-AnyModifier : "\x7f"
+key Backspace+Ctrl-AppScreen : "\x17"
+key Esc : "\E"
+key Tab+Shift-Ansi : "\t"
+key Tab+Shift+Ansi : "\E[Z"
+key Tab-Shift : "\t"
+key PgUp+Shift-AppScreen : ScrollPageUp
+key PgUp-Shift+AnyModifier : "\E[5;*~"
+key PgUp-Shift-AnyModifier : "\E[5~"
+key PgUp-Shift+KeyPad : "\E[5~"
+key PgDown+Shift-AppScreen : ScrollPageDown
+key PgDown-Shift+AnyModifier : "\E[6;*~"
+key PgDown-Shift-AnyModifier : "\E[6~"
+key PgDown-Shift+KeyPad : "\E[6~"
+key Right-Shift+KeyPad+Ansi-AppCursorKeys : "\E[C"
+key Right-Shift+KeyPad+Ansi+AppCursorKeys : "\EOC"
+key Right+Shift+AppScreen : "\E[1;*C"
+key Right-Shift+Ansi+AnyModifier : "\E[1;*C"
+key Right-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[C"
+key Right-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOC"
+key Right-Shift-Ansi : "\EC"
+key Down+Shift-AppScreen : ScrollLineDown
+key Down-Shift+KeyPad+Ansi-AppCursorKeys : "\E[B"
+key Down-Shift+KeyPad+Ansi+AppCursorKeys : "\EOB"
+key Down+Shift+AppScreen : "\E[1;*B"
+key Down-Shift+Ansi+AnyModifier : "\E[1;*B"
+key Down-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[B"
+key Down-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOB"
+key Down-Shift-Ansi : "\EB"
+key Left-Shift+KeyPad+Ansi-AppCursorKeys : "\E[D"
+key Left-Shift+KeyPad+Ansi+AppCursorKeys : "\EOD"
+key Left+Shift+AppScreen : "\E[1;*D"
+key Left-Shift+Ansi+AnyModifier : "\E[1;*D"
+key Left-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[D"
+key Left-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOD"
+key Left-Shift-Ansi : "\ED"
+key Space+Ctrl : "\x00"
+key Up+Shift-AppScreen : ScrollLineUp
+key Up-Shift+KeyPad+Ansi-AppCursorKeys : "\E[A"
+key Up-Shift+KeyPad+Ansi+AppCursorKeys : "\EOA"
+key Up+Shift+AppScreen : "\E[1;*A"
+key Up-Shift+Ansi+AnyModifier : "\E[1;*A"
+key Up-Shift+Ansi-AppCursorKeys-AnyModifier : "\E[A"
+key Up-Shift+Ansi+AppCursorKeys-AnyModifier : "\EOA"
+key Up-Shift-Ansi : "\EA"
+key Home+Shift-AppScreen : ScrollUpToTop
+key Home+AnyModifier : "\E[1;*H"
+key Home+AppCursorKeys-AnyModifier : "\EOH"
+key Home-AppCursorKeys-AnyModifier : "\E[H"
+key Home+KeyPad-AppCursorKeys : "\E[H"
+key Home+KeyPad+AppCursorKeys : "\EOH"
+key .+Ctrl+AppScreen : "\E[4c"
+key I+Ctrl+AppScreen : "\E[4d"
+key M+Ctrl+AppScreen : "\E[4e"
+key End+Shift-AppScreen : ScrollDownToBottom
+key End+AnyModifier : "\E[1;*F"
+key End+AppCursorKeys-AnyModifier : "\EOF"
+key End-AppCursorKeys-AnyModifier : "\E[F"
+key End+KeyPad-AppCursorKeys : "\E[F"
+key End+KeyPad+AppCursorKeys : "\EOF"
index 71371b57b291d14f35ad8bb20d9272adee9df8b4..026aadd74582d6d20ea09e5c3cad063b0709bf96 100644 (file)
@@ -9,7 +9,7 @@ Parent=FALLBACK/
 RemoteTabTitleFormat=%w
 
 [Keyboard]
-KeyBindings=default
+KeyBindings=ian
 
 [Scrolling]
 HistorySize=100000