[support] dlandon - Zoneminder 1.36


Recommended Posts

23 minutes ago, geekypenguin said:

I don't know if this has been brought up before, but I couldn't find an answer on a quick search.

 

Since upgrading to version 1.x many months ago now (zm was on version 0.something for over a year without issue) my array is always spun up.

Zoneminder writes to the cache initially, and then mover puts the recordings on the array overnight. Using openfiles I can see that ZM is holding open seemingly arbitrary event files after they've been moved off the cache drive, and thus keeps the array spun up. If I restart ZM it releases the files and the array spins down. However, if I open the web interface again, or wait until the mover runs again, the array spins back up and ZM holds onto another random set of files.

 

Any ideas?

I have Zoneminder appdata set to my SSD cache and don't move anything to the array.  You should consider the same.

Link to comment
Just now, dlandon said:

I have Zoneminder appdata set to my SSD cache and don't move anything to the array.  You should consider the same.

That doesn't really fix the issue, my cache (at 500gb) isn't big enough to store more than a couple of days worth of footage from all the cameras. That's why I move them onto the array for 2weeks before purging. 

The config folder for the docker sits only on the cache, and the cache/data share is on the array using the cache drive.

Link to comment
15 minutes ago, geekypenguin said:

That doesn't really fix the issue, my cache (at 500gb) isn't big enough to store more than a couple of days worth of footage from all the cameras. That's why I move them onto the array for 2weeks before purging. 

The config folder for the docker sits only on the cache, and the cache/data share is on the array using the cache drive.

Are you recording from all cameras using "Mocord" or "Record"?

Edited by dlandon
Link to comment
12 minutes ago, geekypenguin said:

I'm using modect

I have two cameras using "Modect" and keep events for 30 days.  My data folder is 50Gb.  I don't know how you are filling a 500Gb SSD.  Seems you have several options:

  • Get a larger cache disk.
  • Set up another SSD in Unassigned Devices dedicated to Zoneminder data.
  • Dedicate one array drive for Zoneminder data and keep it spinning.
  • Go to the Zoneminder forum and ask for a solution.
Link to comment

Hi There,

 

Thanks for this awesome docker - using a basic setup with a single camera, and I mostly have the hang of it. Could I ask a couple of basic questions on topics that have kinda been covered, but I didn't really follow?

 

I have installed Zoneminder from CA in the last few days, installation went well.

 

If I try to use the "https://ip:8443/zm" address to access Zoneminder (as per first post) I get the following error message:
  "This site can’t be reached

  ip’s server IP address could not be found.

  Try running Windows Network Diagnostics.

  DNS_PROBE_FINISHED_NXDOMAIN"

 

However when I click on the docker icon to open the GUI I get the following message (in Chrome):

  "Your connection is not private

  Attackers might be trying to steal your information from 192.168.1.100 (for example, passwords, messages, or credit cards). Learn more

  NET::ERR_CERT_AUTHORITY_INVALID"

 

I can click "Advanced" and then proceed to the Zoneminder GUI, which works ok for a few seconds/minutes, but then it goes back to the error screen. The timing seems quite variable - sometimes it will work for 10 minutes, other times it reverts back to the error message after about 5 seconds.

 

I suspect this could be down to one of two reasons:

1) UnRAID is using port 443 (HTTPS port is set to 443 in the identification settings - default UnRAID install)

     - However, I'm a novice at this, and I'm not sure if it's safe to just change the UnRAID HTTPS port to something else - any recommendations for what to set it to to avoid conflicts? (I don't currently access UnRAID remotely but may want to in the future)

 

2) I haven't set Zoneminder to a static IP

   - However, although I have found some guidance on this it didn't work for me. This is what I have done:

        - Edit the Zoneminder docker

        - Change the network type to "Custom: Eth0" (other options are "Bridge/Host/None"

        - Set the fixed IP address to 172.17.0.6 (this is what it was assigned under "Bridge")

        - When I go to apply changes the operation fails :(

 

Any recommendations for someone who is still learning this stuff would be much appreciated - Thank you!

 

 

Link to comment
1 hour ago, ThinkSta said:

If I try to use the "https://ip:8443/zm" address to access Zoneminder (as per first post) I get the following error message:
  "This site can’t be reached

  ip’s server IP address could not be found.

  Try running Windows Network Diagnostics.

  DNS_PROBE_FINISHED_NXDOMAIN"

That port is for the default installation and may not apply if you have made changes.  The best bet is to left click on the Docker icon and select WebUI.  The URL shown in the address bar is the address to use for Zoneminder access.

1 hour ago, ThinkSta said:

However when I click on the docker icon to open the GUI I get the following message (in Chrome):

  "Your connection is not private

  Attackers might be trying to steal your information from 192.168.1.100 (for example, passwords, messages, or credit cards). Learn more

  NET::ERR_CERT_AUTHORITY_INVALID"

This occurs because Zoneminder has a self-signed certificate.  You are secure, but the browser is telling you that the certificate is not certified and might be a problem.

1 hour ago, ThinkSta said:

1) UnRAID is using port 443 (HTTPS port is set to 443 in the identification settings - default UnRAID install)

     - However, I'm a novice at this, and I'm not sure if it's safe to just change the UnRAID HTTPS port to something else - any recommendations for what to set it to to avoid conflicts? (I don't currently access UnRAID remotely but may want to in the future)

Use the default Zoneminder Docker settings and there won't be a conflict.

1 hour ago, ThinkSta said:

2) I haven't set Zoneminder to a static IP

   - However, although I have found some guidance on this it didn't work for me. This is what I have done:

        - Edit the Zoneminder docker

        - Change the network type to "Custom: Eth0" (other options are "Bridge/Host/None"

        - Set the fixed IP address to 172.17.0.6 (this is what it was assigned under "Bridge")

        - When I go to apply changes the operation fails :(

Based on your previous ip in the error message, you will need to assign a 192.168.1.x ip address.  If you don't understand about static ip addresses, stay away for the time being.  It is not a requirement for Zoneminder operation, it just makes it easier to port forward if you are trying to access Zoneminder from outside your network and with potential conflicts with all the ports on the Unraid ip address.

 

I recommend you start over by removing the Zoneminder Docker image.  You won't lose any Zoneminder setup or data.  Then go to CA and find the Zoneminder Docker and load the default template.  Don't make any changes in the template.  Then access the WebUI from the Docker selection. - this will be the URL to use for Zoneminder access.  If Zoneminder fails after a while, look at the Zoneminder Docker log to see if it is any help.

Link to comment
1 hour ago, alael said:

Does not work i always get unable to reach site either host bridge or even br0 with dedicate ip all lead to the same result any idea?

It's very hard to help you when all I get is "Does not work...".  How about you try this?

- Look at the Docker log and see if there is anything in the log indicating an issue.

- Show a screen shot of the URL after selecting the WebUI from the Docker selection drop down.  It will also show any browser error.

 

If you use the default Docker template, the URL should show up as "https://IP:8443/zm".

Link to comment
  • 2 weeks later...
20 hours ago, alael said:

Like for example that the default config is wrong?, either via host through or br0 with dedicate IP accessing the port / IP  always result in connection refused, This usually happen on broken docker container image as matter of fact the last 2 page are filled with people having the same problem dunno why you seems so surprised

I did make a change to the template some time ago that was the cause of some of this.  Since you aren't helping me with any information about what is happening for you, all I can suggest is for you to delete the existing template and then get the default from CA and use it.  Don't make any changes until you have it working.  If that doesn't work, then delete the appdata/Zoneminder folder and the docker image and start over.  I cannot duplicate this problem.

 

I'll do what I can to help you, but I don't appreciate the condescending attitude.  Like I am supposed to know what is wrong and why can't I just fix it!  I can't figure out what is happening for you without information.  There can be many things, including your network and your ability to configure it properly, that can be the problem.

 

I'm not surprised about this  I just need information to be able to figure it out.

  • Like 1
Link to comment
On 1/19/2019 at 12:38 AM, enriquezandrew92 said:

Whenever I search for Zoneminder in CA it only shows the private repos. I try installing it but never seems to work correctly. I would rather just install the Zoneminder preconfigured. Any ideas? 

Since I just happened to have noticed this post, your problem is that your version of CA is from the stone-age.  You desperately need to update it, as that's why you aren't seeing Zoneminder, (or a ton of other apps for that matter)

Link to comment
  • 3 weeks later...

Hi Guys

I am having trouble with the ZM container. SQL is failing to start. 

I cannot get into the container to assess the situation, as it instantly runs scripts as soon as it starts. 

 

There were some extra logs earlier which looked like it was trying to upgrade mariadb to V10?

 

The few seconds I did get inside the container, it showed two processes of mysqld one of them was running as root mysqld_safe or something like that. 

 

Can anyone point me in some form of direction?

 

Thanks

* Starting MariaDB database server mysqld
...done.
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[918]: Upgrading MySQL tables if necessary.
DBI connect('database=zm;host=localhost','zmuser',...) failed: Lost connection to MySQL server at 'reading initial communication packet', system error: 104 at /usr/share/perl5/ZoneMinder/Database.pm line 109.

DBI connect('database=zm;host=localhost;mysql_multi_statements=1','zmuser',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) at /usr/share/perl5/ZoneMinder/Database.pm line 109.


Database already at version 1.32.3, update skipped.


Feb 19 11:23:46 2ec60b177ec3 zmupdate[919]: ERR [Error reconnecting to db: errstr:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) error val:]

Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Looking for 'mysql' as: /usr/bin/mysql
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Phase 1/6: Checking and upgrading mysql database
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Processing databases
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: mysql
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: /usr/bin/mysqlcheck: Error: Couldn't get table list for database mysql: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused")

Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Phase 2/6: Fixing views
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: /usr/bin/mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused") when trying to connect

Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: FATAL ERROR: Upgrade failed

Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[945]: Checking for insecure root accounts.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused")

DBI connect('database=zm;host=localhost','zmuser',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) at /usr/share/perl5/ZoneMinder/Config.pm line 117.

Can't connect to db at /usr/share/perl5/ZoneMinder/Config.pm line 166.
BEGIN failed--compilation aborted at /usr/share/perl5/ZoneMinder/Config.pm line 166.

Compilation failed in require at /usr/bin/zmupdate.pl line 71.

BEGIN failed--compilation aborted at /usr/bin/zmupdate.pl line 71.

* Starting Apache httpd web server apache2
*
Starting ZoneMinder:
DBI connect('database=zm;host=localhost','zmuser',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) at /usr/share/perl5/ZoneMinder/Config.pm line 117.

Can't connect to db at /usr/share/perl5/ZoneMinder/Config.pm line 166.
BEGIN failed--compilation aborted at /usr/share/perl5/ZoneMinder/Config.pm line 166.

Compilation failed in require at /usr/share/perl5/ZoneMinder.pm line 33.

BEGIN failed--compilation aborted at /usr/share/perl5/ZoneMinder.pm line 33.

Compilation failed in require at /usr/bin/zmpkg.pl line 34.

BEGIN failed--compilation aborted at /usr/bin/zmpkg.pl line 34.

ZoneMinder failed to start


*** /etc/my_init.d/40_firstrun.sh failed with status 255


*** Killing all processes...
Feb 19 11:23:55 2ec60b177ec3 syslog-ng[16]: syslog-ng shutting down; version='3.5.6'

 

Link to comment
1 hour ago, Dextros said:

Hi Guys

I am having trouble with the ZM container. SQL is failing to start. 

I cannot get into the container to assess the situation, as it instantly runs scripts as soon as it starts. 

 

There were some extra logs earlier which looked like it was trying to upgrade mariadb to V10?

 

The few seconds I did get inside the container, it showed two processes of mysqld one of them was running as root mysqld_safe or something like that. 

 

Can anyone point me in some form of direction?

 

Thanks


* Starting MariaDB database server mysqld
...done.
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[918]: Upgrading MySQL tables if necessary.
DBI connect('database=zm;host=localhost','zmuser',...) failed: Lost connection to MySQL server at 'reading initial communication packet', system error: 104 at /usr/share/perl5/ZoneMinder/Database.pm line 109.

DBI connect('database=zm;host=localhost;mysql_multi_statements=1','zmuser',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) at /usr/share/perl5/ZoneMinder/Database.pm line 109.


Database already at version 1.32.3, update skipped.


Feb 19 11:23:46 2ec60b177ec3 zmupdate[919]: ERR [Error reconnecting to db: errstr:Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) error val:]

Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Looking for 'mysql' as: /usr/bin/mysql
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Phase 1/6: Checking and upgrading mysql database
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Processing databases
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: mysql
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: /usr/bin/mysqlcheck: Error: Couldn't get table list for database mysql: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused")

Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: Phase 2/6: Fixing views
Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: /usr/bin/mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused") when trying to connect

Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[922]: FATAL ERROR: Upgrade failed

Feb 19 11:23:46 2ec60b177ec3 /etc/mysql/debian-start[945]: Checking for insecure root accounts.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111 "Connection refused")

DBI connect('database=zm;host=localhost','zmuser',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) at /usr/share/perl5/ZoneMinder/Config.pm line 117.

Can't connect to db at /usr/share/perl5/ZoneMinder/Config.pm line 166.
BEGIN failed--compilation aborted at /usr/share/perl5/ZoneMinder/Config.pm line 166.

Compilation failed in require at /usr/bin/zmupdate.pl line 71.

BEGIN failed--compilation aborted at /usr/bin/zmupdate.pl line 71.

* Starting Apache httpd web server apache2
*
Starting ZoneMinder:
DBI connect('database=zm;host=localhost','zmuser',...) failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) at /usr/share/perl5/ZoneMinder/Config.pm line 117.

Can't connect to db at /usr/share/perl5/ZoneMinder/Config.pm line 166.
BEGIN failed--compilation aborted at /usr/share/perl5/ZoneMinder/Config.pm line 166.

Compilation failed in require at /usr/share/perl5/ZoneMinder.pm line 33.

BEGIN failed--compilation aborted at /usr/share/perl5/ZoneMinder.pm line 33.

Compilation failed in require at /usr/bin/zmpkg.pl line 34.

BEGIN failed--compilation aborted at /usr/bin/zmpkg.pl line 34.

ZoneMinder failed to start


*** /etc/my_init.d/40_firstrun.sh failed with status 255


*** Killing all processes...
Feb 19 11:23:55 2ec60b177ec3 syslog-ng[16]: syslog-ng shutting down; version='3.5.6'

 

I would delete the docker container and install it again.

Link to comment

Hi all i can't grab zoneminder

 

 

root@localhost:# /usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker run -d --name='Zoneminder' --net='bridge' --privileged=true -e TZ="Europe/London" -e HOST_OS="Unraid" -e 'PUID'='99' -e 'PGID'='100' -e 'SHMEM'='50%' -p '8443:443/tcp' -p '9000:9000/tcp' -v '/mnt/user/appdata/Zoneminder':'/config':'rw' -v '/mnt/user/appdata/Zoneminder/data':'/var/cache/zoneminder':'rw' --log-opt max-size=50m --log-opt max-file=1 'dlandon/zoneminder' 

Unable to find image 'dlandon/zoneminder:latest' locally
/usr/bin/docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.1.21:53: read udp 192.168.1.14:43048->192.168.1.21:53: i/o timeout.
See '/usr/bin/docker run --help'.

The command failed.

 

 

registry-1.docker.io is not reachable. tested with isitdown as well

Link to comment
13 minutes ago, gareth_iowc said:

Hi all i can't grab zoneminder

 

 

root@localhost:# /usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker run -d --name='Zoneminder' --net='bridge' --privileged=true -e TZ="Europe/London" -e HOST_OS="Unraid" -e 'PUID'='99' -e 'PGID'='100' -e 'SHMEM'='50%' -p '8443:443/tcp' -p '9000:9000/tcp' -v '/mnt/user/appdata/Zoneminder':'/config':'rw' -v '/mnt/user/appdata/Zoneminder/data':'/var/cache/zoneminder':'rw' --log-opt max-size=50m --log-opt max-file=1 'dlandon/zoneminder' 

Unable to find image 'dlandon/zoneminder:latest' locally
/usr/bin/docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.1.21:53: read udp 192.168.1.14:43048->192.168.1.21:53: i/o timeout.
See '/usr/bin/docker run --help'.

The command failed.

 

 

registry-1.docker.io is not reachable. tested with isitdown as well

root@localhost:# /usr/local/emhttp/plugins/dynamix.docker.manager/scripts/docker run -d --name='Zoneminder' --net='bridge' --log-opt max-size='10m' --log-opt max-file='1' --privileged=true -e TZ="America/New_York" -e HOST_OS="Unraid" -e 'PUID'='99' -e 'PGID'='100' -e 'SHMEM'='50%' -p '8443:443/tcp' -p '9000:9000/tcp' -v '/mnt/cache/appdata/Zoneminder':'/config':'rw' -v '/mnt/user/appdata/Zoneminder/data':'/var/cache/zoneminder':'rw' --log-opt max-size=50m --log-opt max-file=1 'dlandon/zoneminder' 
5f0db268221cf47d66db6f54b2e2bc03293e14af2c1475515dbd0c0887c8e547

The command finished successfully!

Works for me.  Is your server connected to the Internet?  It looks like the docker did not get downloaded.

Link to comment
On 2/22/2019 at 12:27 AM, Mlatx said:

Someone has posted about setting up zoneminder through a reverse proxy but left no explanation on how.  How would I do that?  I have letsencrypt running for nextcloud.  Another post mentions you cannot use letsencrypt because zoneminder runs on apache and not nginx.  

It absolutely can be done!

I use the letsencrypt docker as a reverse proxy for a bunch of Apache based web services.

I don't have a one specific for zoneminder but it will be exactly the same config as any others you have working, just set your backend server to the ip:port of your zoneminder instance

Link to comment
On 2/23/2019 at 3:37 PM, geekypenguin said:

It absolutely can be done!

I use the letsencrypt docker as a reverse proxy for a bunch of Apache based web services.

I don't have a one specific for zoneminder but it will be exactly the same config as any others you have working, just set your backend server to the ip:port of your zoneminder instance

Thanks.  I did some more research and got a working zoneminder.subdomain.conf file (I am using my own subdomain).

 

I have the following:

 

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name zoneminder.*;

    include /config/nginx/ssl.conf;

    client_max_body_size 0;

    location /zm {
        include /config/nginx/proxy.conf;
        proxy_pass https://IPADDRESSOFYOURSERVER:8443/zm;
    }
}
 

Link to comment

I've updated the docker with the latest version of zmeventnotification.  There are changes to some paths for zmeventnotification, but the biggest change is in the hook structure.  Please read the first post and the zmeventnotification link on how to setup and use the hook processing.  I do not have a system to do any hook processing.  I followed the installation instructions for getting the hook processing setup, but there may be a few tweaks I need to make.  If you use the hook feature, let me know if it is working for you.

Link to comment

There is now a face recognition capability in zmeventnotification.  I have implemented the file structure and support for the this in the docker.  I have not tested it so I don't know what additional needs to be done.  There is explanation in the first post on how the docker handles the files and folders for the hook processing.  Let me know what else needs to be done.

Link to comment

I have tried getting the userscript.sh as stated in your OP to run but I don't think its working .What is weird is I see this in the log

 

 

*** Running /etc/my_init.d/999_advanced_script.sh...
Userscript Provided
*** Running /etc/rc.local...
*** Booting runit daemon...
*** Runit started as PID 927
Mar 7 09:03:11 cbd80626d0d2 cron[930]: (CRON) INFO (pidfile fd = 3)
Mar 7 09:03:11 cbd80626d0d2 cron[930]: (CRON) INFO (Running @reboot jobs)
Mar 7 09:03:11 cbd80626d0d2 zmeventnotification[913]: INF [using config file: /etc/zm/zmeventnotification.ini]
Mar 7 09:03:11 cbd80626d0d2 zmeventnotification[913]: INF [Push enabled via FCM]
Mar 7 09:03:11 cbd80626d0d2 zmeventnotification[913]: INF [MQTT Enabled]
Mar 7 09:03:11 cbd80626d0d2 zmeventnotification[913]: INF [You are running version: 3.2-docker]

 

I did chmod +x userscript.sh 

have ADVANCED_SCRIPT 1 as a variable in my docker setup

 

when I drop into the docker console pip is not found. shouldn't it have been installed by the user script below.

 

#!/bin/sh

# Python modules needed for hook processing
apt-get -y install python-pip
pip install numpy opencv-python imutils configparser Shapely
pip ./setup.py install

# Install for face recognition
pip install face_recognition

Link to comment
  • dlandon changed the title to [support] dlandon - Zoneminder 1.36

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.