GSConnect updated command line interface, Wayland clipboard support (experimental)

GSConnect v25 (followed by v26 to address a single issue) was released hours ago and is already available on the Gnome Extensions website. The new version brings support for controlling remote media players, experimental clipboard support in Wayland and CLI scripting interfaces, and more.
So what is GSConnect? It is an implementation of KDE Connect (integrated with KDE Plasma desktop) for Gnome Shell.
After pairing an Android device with the KDE Connect application installed on the desktop via GSConnect, you will be able to perform various operations between the Android device and the desktop computer: transfer files, mirror clipboard and notifications, remotely control the media player , Send and receive text messages, use Android as remote keyboard and mouse input, launch commands on your computer from Android, and more. Newer GSConnect versions require Gnome Shell 3.28, 3.30, or 3.32. This GSConnect feature stopped working due to a protocol change in the SMS plugin of the KDE Conect Android application. My favorite new feature in the GSConnect update is the addition of a command line script interface, similar to kdeconnect-cliIn fact, I suggested it to the developer, and he implemented it well. This is currently experimental and not documented. To see the available command line options, you need to run this option in a terminal:

cd ~/.local/share/gnome-shell/extensions/[email protected]/service

./daemon.js --help

These are the options available with the CLI interface in the first GSConnect release:

./daemon.js --help

Usage:
  GSConnect [OPTION…]

Help Options:
  -h, --help                          Show help options
  --help-all                          Show all help options
  --help-gapplication                 Show GApplication options
  --help-gtk                          Show GTK+ Options

Application Options:
  -l, --list-devices                  List available devices
  -a, --list-all                      List all devices
  -d, --device=            Target Device
  --pair                              Pair
  --unpair                            Unpair
  --message=            Send SMS
  --message-body=               Message Body
  --notification=              Send Notification
  --notification-appname=<name>       Notification App Name
  --notification-body=<text>          Notification Body
  --notification-icon=<icon-name>     Notification Icon
  --notification-id=<id>              Notification ID
  --photo                             Photo
  --ping                              Ping
  --ring                              Ring
  --share-file=<filepath|URI>         Share File
  --share-link=<URL>                  Share Link
  -v, --version                       Show release version
  --display=DISPLAY                   X display to use</code></pre><p><noscript><img class="alignnone size-full wp-image-5983" src="https://static.codepre.com/uploads/1580553849.png" width="640" height="458" alt="GSConnect command" title="GSConnect command" srcset="https://static.codepre.com/uploads/1580553849.png 640w, https://static.codepre.com/uploads/1580553849-300x215.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></noscript><img class="lazyload alignnone size-full wp-image-5983" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20640%20458%22%3E%3C/svg%3E' data-src="https://static.codepre.com/uploads/1580553849.png" width="640" height="458" alt="GSConnect command" title="GSConnect command" data-srcset="https://static.codepre.com/uploads/1580553849.png 640w, https://static.codepre.com/uploads/1580553849-300x215.png 300w" data-sizes="(max-width: 640px) 100vw, 640px" />Let’s look at an example. The following command (a single command on a line) is triggered from the KDE Conect Android application, and its role is to take a screenshot of the Linux desktop using the Gnome screenshot tool and then send it back to your Android phone:</p><pre class="cssterm"><code>file=/tmp/$(hostname)_$(date "+%Y%m%d_%H%M%S").png; gnome-screenshot -f "${file}" && ~/.local/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js -d $(~/.local/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js -a) --share-file="${file}"</code></pre><p>It is worth noting that this command only works if there is a device available in GSConnect. In other cases, you need to pass the device ID. This command needs to be added in the Command panel of the GSConnect device. Related to Android: Controlling Android devices from the desktop using scrcpy and Helper GUI For scrcpy, Android desktop display and remote control tools</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><noscript><img class="alignnone size-full wp-image-5984" src="https://static.codepre.com/uploads/1580553851.png" width="640" height="151" srcset="https://static.codepre.com/uploads/1580553851.png 640w, https://static.codepre.com/uploads/1580553851-300x71.png 300w" sizes="(max-width: 640px) 100vw, 640px" alt="GSConnect updated command line interface, Wayland clipboard support (experimental)" title="GSConnect updated command line interface, Wayland clipboard support (experimental)"></noscript><img class="lazyload alignnone size-full wp-image-5984" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20640%20151%22%3E%3C/svg%3E' data-src="https://static.codepre.com/uploads/1580553851.png" width="640" height="151" data-srcset="https://static.codepre.com/uploads/1580553851.png 640w, https://static.codepre.com/uploads/1580553851-300x71.png 300w" data-sizes="(max-width: 640px) 100vw, 640px" alt="GSConnect updated command line interface, Wayland clipboard support (experimental)" title="GSConnect updated command line interface, Wayland clipboard support (experimental)"></td></tr><tr><td class="tr-caption" style="text-align: center;">I’m using Spotify to play music on an Android phone and GSConnect exposes playback controls on the Gnome desktop</td></tr></tbody></table><p>The latest GSConnect also brings support for controlling remote media players. With this version, if you have a media player running on your phone, you can control it from your desktop. GSConnect exposes this remote media player to the MPRISv2 interface, so you can control it from the Gnome Shell notification panel or some MPRISv2 extensions. This is not useful for many users, but if you are one of the users listening to music on your phone while using your desktop, you will find it very useful.<br /> More changes in GSConnect v25 and v26:</p><ul><li>Wayland’s clipboard support (experimental)</li><li>MMS group messaging (read-only)</li><li>Added support for Brave web browser and Nemo file browser</li><li>Contacts plugin: GSConnect now supports libebook-contacts to resolve VCards (if GIR is available), and improved handling of encoded names in the native parser.</li><li>SFTP: Added support for password authentication again as some devices will experience problems without it.</li><li>Many bug fixes and major refactorings</li></ul><p><noscript><img class="alignnone size-full wp-image-5985" src="https://static.codepre.com/uploads/1580553853.png" width="640" height="448" alt="GSConnect Nemo to mobile device" title="GSConnect Nemo to mobile device" srcset="https://static.codepre.com/uploads/1580553853.png 640w, https://static.codepre.com/uploads/1580553853-300x210.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></noscript><img class="lazyload alignnone size-full wp-image-5985" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20640%20448%22%3E%3C/svg%3E' data-src="https://static.codepre.com/uploads/1580553853.png" width="640" height="448" alt="GSConnect Nemo to mobile device" title="GSConnect Nemo to mobile device" data-srcset="https://static.codepre.com/uploads/1580553853.png 640w, https://static.codepre.com/uploads/1580553853-300x210.png 300w" data-sizes="(max-width: 640px) 100vw, 640px" /></p><p>If you use the Nemo file manager on your Gnome desktop (see How to install Nemo on <a href="http://codepre.com/ubuntu" title="Ubuntu" target="_self" class="auto-link" >Ubuntu</a> and replace Nautilus), GSConnect will now integrate with its context menu, allowing you to right-click the file to send it to your Android device. To do this, you need to install:</p><ul><li><code>nemo-python</code> (On Ubuntu, you need to install <code>nemo-python</code> If Nemo is installed from the official Ubuntu repository, or <code>python-nemo</code> (If Nemo is installed from Cinnamon PPA)</li><li>On <a href="http://codepre.com/debian" title="Debian" target="_self" class="auto-link" >Debian</a> / Ubuntu, also install <code>gir1.2-nemo-3.0</code></li><li>Install on Fedora too <code>nemo-extensions</code></li></ul><h2>Install GSConnect</h2><p>GSConnect can be downloaded from <a href="https://extensions.gnome.org/extension/1319/gsconnect/" target="_blank" rel="noopener noreferrer nofollow">Gnome Shell Extension Website</a> (Updated to the latest version) or by searching in the Gnome Software app. You also need to install KDE Conect on your Android device by: <a href="https://play.google.com/store/apps/details?id=org.kde.kdeconnect_tp" target="_blank" rel="noopener noreferrer nofollow">app Store</a> Either <a href="https://f-droid.org/repository/browse/?fdid=org.kde.kdeconnect_tp" target="_blank" rel="noopener noreferrer nofollow">F-robot</a>.<br /> In order to be able to install extensions directly from the Gnome Extensions website, you need to install software packages and browser extensions on your system, <a href="https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome/Installation" target="_blank" rel="noopener noreferrer nofollow">As explained here</a>.<br /> It’s also worth noting that on my system, after updating to this version, GSConnect must be paired with KDE Conect of Android again.<br /> See also official GSConnect <a href="https://github.com/andyholmes/gnome-shell-extension-gsconnect/wiki/Installation#standard" target="_blank" rel="noopener noreferrer nofollow">Installation and pairing instructions</a>.</p><p><a href="https://www.linuxuprising.com/2019/09/gsconnect-updated-with-command-line.html" rel="nofollow noopener" target="_blank">Source</a></p><div class='yarpp-related yarpp-related-none'><h3>More related tutorials:</h3> Writing. . .</div></div><footer class="entryMeta"></footer></article><div class="last-posts-list postinfo clearfix"><hr><h4 class="lastPostsListTitle"> Last posts</h4><ul><li><a href='https://codepre.com/subtitle-editing-free-open-source-video-subtitle-editor-install-subtitle-editing-on-ubuntu.html'>Subtitle Editing Free Open Source Video Subtitle Editor – Install Subtitle Editing on Ubuntu</a></li><li><a href='https://codepre.com/mobile-phone-phishing-attack-this-is-the-way-to-ensure-the-security-of-smartphone.html'>Mobile phone phishing attack: This is the way to ensure the security of smartphone</a></li><li><a href='https://codepre.com/pixelorama-2d-sprite-editor-v0-6-adds-support-for-palettes-and-multiple-themes.html'>Pixelorama 2D Sprite Editor v0.6 adds support for palettes and multiple themes</a></li><li><a href='https://codepre.com/how-to-install-vsphere-esxi-7-0-on-a-bare-metal-server.html'>How to install vSphere ESXi 7.0 on a bare metal server</a></li><li><a href='https://codepre.com/how-to-install-qsampler-audio-sampler-on-ubuntu.html'>How to install QSampler Audio Sampler on Ubuntu</a></li><li><a href='https://codepre.com/mozilla-firefox-81-has-been-released-with-a-new-theme-of-media-control-via-keyboard.html'>Mozilla Firefox 81 has been released with a new theme of media control via keyboard</a></li><li><a href='https://codepre.com/jabref-bibliography-manager-how-to-install-jabref-on-ubuntu.html'>JabRef Bibliography Manager – How to install JabRef on Ubuntu</a></li><li><a href='https://codepre.com/ffmpeg-how-to-crop-video-by-example.html'>FFmpeg: How to crop video by example</a></li><li><a href='https://codepre.com/how-to-send-kubernetes-logs-to-external-elasticsearch.html'>How to send Kubernetes logs to external Elasticsearch</a></li><li><a href='https://codepre.com/auto-cpufreq-is-a-new-cpu-speed-and-power-optimizer-for-linux.html'>auto-cpufreq is a new CPU speed and power optimizer for Linux</a></li></ul></div></div><div class="asideMenuButton"><header class="asideMenuButtonTitle">Sidebar</header><div class="asideMenuButtonContent"><hr><hr><hr></div></div><aside><div class="aside-container container-full"><div class="customSidebar"> <a class="postmeta-thumbnail" href="https://static.codepre.com/uploads/1580553853.png" title="GSConnect updated command line interface, Wayland clipboard support (experimental)" ><noscript><img width="640" height="448" src="https://static.codepre.com/uploads/1580553853.png" class="attachment-large size-large wp-post-image" alt="GSConnect Nemo to mobile device" srcset="https://static.codepre.com/uploads/1580553853.png 640w, https://static.codepre.com/uploads/1580553853-300x210.png 300w" sizes="(max-width: 640px) 100vw, 640px" title="GSConnect updated command line interface, Wayland clipboard support (experimental)"></noscript><img width="640" height="448" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20640%20448%22%3E%3C/svg%3E' data-src="https://static.codepre.com/uploads/1580553853.png" class="lazyload attachment-large size-large wp-post-image" alt="GSConnect Nemo to mobile device" data-srcset="https://static.codepre.com/uploads/1580553853.png 640w, https://static.codepre.com/uploads/1580553853-300x210.png 300w" data-sizes="(max-width: 640px) 100vw, 640px" title="GSConnect updated command line interface, Wayland clipboard support (experimental)"></a><div class="row sidebarContent"><div class="col-md-12"><div class="widget"><h3 class="widgetTitle">GSConnect updated command line interface, Wayland clipboard support (experimental)</h3></div><div class="widget"> Last update on February 1, 2020</div><div class="widget"><div class=""> Published February 1, 2020</div><div class=""></div><div class=""> Categories: <a href="https://codepre.com/how-to" rel="category tag">How to</a></div> Tags: There are no tags for this post</div><div class="widget relatedPosts"><h4 class="widgetTitle"> Related Posts</h4><ul class="relatedPostList"><li> <a href="https://codepre.com/mobile-phone-phishing-attack-this-is-the-way-to-ensure-the-security-of-smartphone.html" rel="bookmark" title="Mobile phone phishing attack: This is the way to ensure the security of smartphone"><div class="thumb"> <noscript><img width="100" height="100" src="https://static.codepre.com/uploads/1600937529-100x100.jpg" class="attachment-mini size-mini wp-post-image" alt="Mobile phone phishing attack: This is the way to ensure the security of smartphone" srcset="https://static.codepre.com/uploads/1600937529-100x100.jpg 100w, https://static.codepre.com/uploads/1600937529-150x150.jpg 150w, https://static.codepre.com/uploads/1600937529-300x300.jpg 300w, https://static.codepre.com/uploads/1600937529-120x120.jpg 120w" sizes="(max-width: 100px) 100vw, 100px" title="Mobile phone phishing attack: This is the way to ensure the security of smartphone"></noscript><img width="100" height="100" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3C/svg%3E' data-src="https://static.codepre.com/uploads/1600937529-100x100.jpg" class="lazyload attachment-mini size-mini wp-post-image" alt="Mobile phone phishing attack: This is the way to ensure the security of smartphone" data-srcset="https://static.codepre.com/uploads/1600937529-100x100.jpg 100w, https://static.codepre.com/uploads/1600937529-150x150.jpg 150w, https://static.codepre.com/uploads/1600937529-300x300.jpg 300w, https://static.codepre.com/uploads/1600937529-120x120.jpg 120w" data-sizes="(max-width: 100px) 100vw, 100px" title="Mobile phone phishing attack: This is the way to ensure the security of smartphone"></div> <span>Mobile phone phishing attack: This is the way to ensure the security of smartphone</span> </a></li><li> <a href="https://codepre.com/pixelorama-2d-sprite-editor-v0-6-adds-support-for-palettes-and-multiple-themes.html" rel="bookmark" title="Pixelorama 2D Sprite Editor v0.6 adds support for palettes and multiple themes"><div class="thumb"> <noscript><img width="100" height="100" src="https://static.codepre.com/uploads/1600900327-100x100.png" class="attachment-mini size-mini wp-post-image" alt="Pixelorama 2D sprite editor" srcset="https://static.codepre.com/uploads/1600900327-100x100.png 100w, https://static.codepre.com/uploads/1600900327-150x150.png 150w, https://static.codepre.com/uploads/1600900327-300x300.png 300w, https://static.codepre.com/uploads/1600900327-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" title="Pixelorama 2D Sprite Editor v0.6 adds support for palettes and multiple themes"></noscript><img width="100" height="100" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3C/svg%3E' data-src="https://static.codepre.com/uploads/1600900327-100x100.png" class="lazyload attachment-mini size-mini wp-post-image" alt="Pixelorama 2D sprite editor" data-srcset="https://static.codepre.com/uploads/1600900327-100x100.png 100w, https://static.codepre.com/uploads/1600900327-150x150.png 150w, https://static.codepre.com/uploads/1600900327-300x300.png 300w, https://static.codepre.com/uploads/1600900327-120x120.png 120w" data-sizes="(max-width: 100px) 100vw, 100px" title="Pixelorama 2D Sprite Editor v0.6 adds support for palettes and multiple themes"></div> <span>Pixelorama 2D Sprite Editor v0.6 adds support for palettes and multiple themes</span> </a></li><li> <a href="https://codepre.com/how-to-install-vsphere-esxi-7-0-on-a-bare-metal-server.html" rel="bookmark" title="How to install vSphere ESXi 7.0 on a bare metal server"><div class="thumb"> <noscript><img width="100" height="100" src="https://static.codepre.com/uploads/1600897919-100x100.png" class="attachment-mini size-mini wp-post-image" alt="How to install vSphere ESXi 7.0 on a bare metal server" srcset="https://static.codepre.com/uploads/1600897919-100x100.png 100w, https://static.codepre.com/uploads/1600897919-150x150.png 150w, https://static.codepre.com/uploads/1600897919-300x300.png 300w, https://static.codepre.com/uploads/1600897919-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" title="How to install vSphere ESXi 7.0 on a bare metal server"></noscript><img width="100" height="100" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3C/svg%3E' data-src="https://static.codepre.com/uploads/1600897919-100x100.png" class="lazyload attachment-mini size-mini wp-post-image" alt="How to install vSphere ESXi 7.0 on a bare metal server" data-srcset="https://static.codepre.com/uploads/1600897919-100x100.png 100w, https://static.codepre.com/uploads/1600897919-150x150.png 150w, https://static.codepre.com/uploads/1600897919-300x300.png 300w, https://static.codepre.com/uploads/1600897919-120x120.png 120w" data-sizes="(max-width: 100px) 100vw, 100px" title="How to install vSphere ESXi 7.0 on a bare metal server"></div> <span>How to install vSphere ESXi 7.0 on a bare metal server</span> </a></li><li> <a href="https://codepre.com/ffmpeg-how-to-crop-video-by-example.html" rel="bookmark" title="FFmpeg: How to crop video by example"><div class="thumb"> <noscript><img width="100" height="100" src="https://static.codepre.com/uploads/1600857107-100x100.png" class="attachment-mini size-mini wp-post-image" alt="FFmpeg: How to crop video by example" srcset="https://static.codepre.com/uploads/1600857107-100x100.png 100w, https://static.codepre.com/uploads/1600857107-300x300.png 300w, https://static.codepre.com/uploads/1600857107-150x150.png 150w, https://static.codepre.com/uploads/1600857107-120x120.png 120w, https://static.codepre.com/uploads/1600857107.png 500w" sizes="(max-width: 100px) 100vw, 100px" title="FFmpeg: How to crop video by example"></noscript><img width="100" height="100" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3C/svg%3E' data-src="https://static.codepre.com/uploads/1600857107-100x100.png" class="lazyload attachment-mini size-mini wp-post-image" alt="FFmpeg: How to crop video by example" data-srcset="https://static.codepre.com/uploads/1600857107-100x100.png 100w, https://static.codepre.com/uploads/1600857107-300x300.png 300w, https://static.codepre.com/uploads/1600857107-150x150.png 150w, https://static.codepre.com/uploads/1600857107-120x120.png 120w, https://static.codepre.com/uploads/1600857107.png 500w" data-sizes="(max-width: 100px) 100vw, 100px" title="FFmpeg: How to crop video by example"></div> <span>FFmpeg: How to crop video by example</span> </a></li><li> <a href="https://codepre.com/how-to-send-kubernetes-logs-to-external-elasticsearch.html" rel="bookmark" title="How to send Kubernetes logs to external Elasticsearch"><div class="thumb"> <noscript><img width="100" height="100" src="https://static.codepre.com/uploads/1600818580-100x100.png" class="attachment-mini size-mini wp-post-image" alt="How to send Kubernetes logs to external Elasticsearch" srcset="https://static.codepre.com/uploads/1600818580-100x100.png 100w, https://static.codepre.com/uploads/1600818580-150x150.png 150w, https://static.codepre.com/uploads/1600818580-300x300.png 300w, https://static.codepre.com/uploads/1600818580-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" title="How to send Kubernetes logs to external Elasticsearch"></noscript><img width="100" height="100" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20100%20100%22%3E%3C/svg%3E' data-src="https://static.codepre.com/uploads/1600818580-100x100.png" class="lazyload attachment-mini size-mini wp-post-image" alt="How to send Kubernetes logs to external Elasticsearch" data-srcset="https://static.codepre.com/uploads/1600818580-100x100.png 100w, https://static.codepre.com/uploads/1600818580-150x150.png 150w, https://static.codepre.com/uploads/1600818580-300x300.png 300w, https://static.codepre.com/uploads/1600818580-120x120.png 120w" data-sizes="(max-width: 100px) 100vw, 100px" title="How to send Kubernetes logs to external Elasticsearch"></div> <span>How to send Kubernetes logs to external Elasticsearch</span> </a></li></ul></div></div></div></div><div class="dynamicSidebar"><div class="row sidebarContent"><div class="col-md-12"><div class="widget"><h4 class="widgetTitle">Recent Tutorials</h4><ul><li> <a href="https://codepre.com/subtitle-editing-free-open-source-video-subtitle-editor-install-subtitle-editing-on-ubuntu.html">Subtitle Editing Free Open Source Video Subtitle Editor – Install Subtitle Editing on Ubuntu</a></li><li> <a href="https://codepre.com/mobile-phone-phishing-attack-this-is-the-way-to-ensure-the-security-of-smartphone.html">Mobile phone phishing attack: This is the way to ensure the security of smartphone</a></li><li> <a href="https://codepre.com/pixelorama-2d-sprite-editor-v0-6-adds-support-for-palettes-and-multiple-themes.html">Pixelorama 2D Sprite Editor v0.6 adds support for palettes and multiple themes</a></li><li> <a href="https://codepre.com/how-to-install-vsphere-esxi-7-0-on-a-bare-metal-server.html">How to install vSphere ESXi 7.0 on a bare metal server</a></li><li> <a href="https://codepre.com/how-to-install-qsampler-audio-sampler-on-ubuntu.html">How to install QSampler Audio Sampler on Ubuntu</a></li><li> <a href="https://codepre.com/mozilla-firefox-81-has-been-released-with-a-new-theme-of-media-control-via-keyboard.html">Mozilla Firefox 81 has been released with a new theme of media control via keyboard</a></li><li> <a href="https://codepre.com/jabref-bibliography-manager-how-to-install-jabref-on-ubuntu.html">JabRef Bibliography Manager – How to install JabRef on Ubuntu</a></li><li> <a href="https://codepre.com/ffmpeg-how-to-crop-video-by-example.html">FFmpeg: How to crop video by example</a></li><li> <a href="https://codepre.com/how-to-send-kubernetes-logs-to-external-elasticsearch.html">How to send Kubernetes logs to external Elasticsearch</a></li><li> <a href="https://codepre.com/auto-cpufreq-is-a-new-cpu-speed-and-power-optimizer-for-linux.html">auto-cpufreq is a new CPU speed and power optimizer for Linux</a></li></ul></div></div></div></div></div></aside></div><footer class="container-fluid"><div class="content clearfix"><div class="col-md-12 copyright"><p><strong>©  <a href="https://codepre.com">CodePre.com</a></strong></p></div></div></footer><noscript><style>.lazyload{display:none;}</style></noscript><script data-noptimize="1">window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;</script><script async data-noptimize="1" src='https://codepre.com/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js?ao_version=2.6.2'></script> <script type='text/javascript' src='https://codepre.com/wp-content/cache/autoptimize/js/autoptimize_single_8decb0ce7eb8097d463a77d859a02725.js'></script> <script type='text/javascript' src='https://codepre.com/wp-content/plugins/enlighter/resources/EnlighterJS.min.js'></script> <script type='text/javascript' src='https://codepre.com/wp-includes/js/wp-embed.min.js'></script> <script type="text/javascript">EnlighterJS_Config = {"selector":{"block":"pre.EnlighterJSRAW","inline":"code.EnlighterJSRAW"},"language":"generic","theme":"enlighter","indent":2,"hover":"NULL","showLinenumbers":false,"rawButton":true,"infoButton":false,"windowButton":true,"rawcodeDoubleclick":false,"grouping":true,"cryptex":{"enabled":false,"email":"mail@example.tld"}};!function(){var a=function(a){var b="Enlighter Error: ";console.error?console.error(b+a):console.log&&console.log(b+a)};return window.addEvent?"undefined"==typeof EnlighterJS?void a("Javascript Resources not loaded yet!"):"undefined"==typeof EnlighterJS_Config?void a("Configuration not loaded yet!"):void window.addEvent("domready",function(){EnlighterJS.Util.Init(EnlighterJS_Config.selector.block,EnlighterJS_Config.selector.inline,EnlighterJS_Config)}):void a("MooTools Framework not loaded yet!")}();;</script> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-157368018-1"></script> <script>window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-157368018-1');</script> </body></html><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>