From e8917ecf07ba5173c24002b8f6f8c9aab29d8e56 Mon Sep 17 00:00:00 2001 From: Zachary Seguin Date: Fri, 13 Apr 2018 18:06:12 -0400 Subject: [PATCH] Add core role --- .gitignore | 6 + ansible.cfg | 475 +++++++++++++++++++++++ hosts | 5 + log/.keep | 0 playbooks/test.yml | 5 + roles/core/files/csclub.rsyslog.conf | 6 + roles/core/files/ntp.conf | 41 ++ roles/core/files/resolv.conf | 12 + roles/core/files/ssh_config | 25 ++ roles/core/files/ssh_known_hosts | 192 +++++++++ roles/core/files/sshd_config | 65 ++++ roles/core/handlers/main.yml | 5 + roles/core/handlers/ntp.yml | 12 + roles/core/handlers/remote_access.yml | 12 + roles/core/handlers/rsyslog.yml | 12 + roles/core/tasks/dns.yml | 15 + roles/core/tasks/logging.yml | 16 + roles/core/tasks/main.yml | 8 + roles/core/tasks/mirrors.yml | 20 + roles/core/tasks/ntp.yml | 15 + roles/core/tasks/packages.yml | 131 +++++++ roles/core/tasks/remote_access.yml | 33 ++ roles/core/templates/ubuntu.sources.list | 57 +++ 23 files changed, 1168 insertions(+) create mode 100644 .gitignore create mode 100644 ansible.cfg create mode 100644 hosts create mode 100644 log/.keep create mode 100644 playbooks/test.yml create mode 100644 roles/core/files/csclub.rsyslog.conf create mode 100644 roles/core/files/ntp.conf create mode 100644 roles/core/files/resolv.conf create mode 100644 roles/core/files/ssh_config create mode 100644 roles/core/files/ssh_known_hosts create mode 100644 roles/core/files/sshd_config create mode 100644 roles/core/handlers/main.yml create mode 100644 roles/core/handlers/ntp.yml create mode 100644 roles/core/handlers/remote_access.yml create mode 100644 roles/core/handlers/rsyslog.yml create mode 100644 roles/core/tasks/dns.yml create mode 100644 roles/core/tasks/logging.yml create mode 100644 roles/core/tasks/main.yml create mode 100644 roles/core/tasks/mirrors.yml create mode 100644 roles/core/tasks/ntp.yml create mode 100644 roles/core/tasks/packages.yml create mode 100644 roles/core/tasks/remote_access.yml create mode 100644 roles/core/templates/ubuntu.sources.list diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a6b067d --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +log/ +*.log +*.pyc +generate-hosts/ +generate-hosts-*/ +*.retry diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..d370dca --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,475 @@ +# config file for ansible -- https://ansible.com/ +# =============================================== + +# nearly all parameters can be overridden in ansible-playbook +# or with command line flags. ansible will read ANSIBLE_CONFIG, +# ansible.cfg in the current working directory, .ansible.cfg in +# the home directory or /etc/ansible/ansible.cfg, whichever it +# finds first + +[defaults] + +# some basic default values... + +inventory = hosts +#library = /usr/share/my_modules/ +#module_utils = /usr/share/my_module_utils/ +remote_tmp = /tmp +#local_tmp = ~/.ansible/tmp +#plugin_filters_cfg = /etc/ansible/plugin_filters.yml +#forks = 5 +#poll_interval = 15 +#sudo_user = root +#ask_sudo_pass = True +#ask_pass = True +#transport = smart +#remote_port = 22 +#module_lang = C +#module_set_locale = False + +# plays will gather facts by default, which contain information about +# the remote system. +# +# smart - gather by default, but don't regather if already gathered +# implicit - gather by default, turn off with gather_facts: False +# explicit - do not gather by default, must say gather_facts: True +#gathering = implicit + +# This only affects the gathering done by a play's gather_facts directive, +# by default gathering retrieves all facts subsets +# all - gather all subsets +# network - gather min and network facts +# hardware - gather hardware facts (longest facts to retrieve) +# virtual - gather min and virtual facts +# facter - import facts from facter +# ohai - import facts from ohai +# You can combine them using comma (ex: network,virtual) +# You can negate them using ! (ex: !hardware,!facter,!ohai) +# A minimal set of facts is always gathered. +#gather_subset = all + +# some hardware related facts are collected +# with a maximum timeout of 10 seconds. This +# option lets you increase or decrease that +# timeout to something more suitable for the +# environment. +# gather_timeout = 10 + +# additional paths to search for roles in, colon separated +roles_path = roles + +# uncomment this to disable SSH key host checking +#host_key_checking = False + +# change the default callback, you can only have one 'stdout' type enabled at a time. +#stdout_callback = skippy + + +## Ansible ships with some plugins that require whitelisting, +## this is done to avoid running all of a type by default. +## These setting lists those that you want enabled for your system. +## Custom plugins should not need this unless plugin author specifies it. + +# enable callback plugins, they can output to stdout but cannot be 'stdout' type. +#callback_whitelist = timer, mail + +# Determine whether includes in tasks and handlers are "static" by +# default. As of 2.0, includes are dynamic by default. Setting these +# values to True will make includes behave more like they did in the +# 1.x versions. +#task_includes_static = False +#handler_includes_static = False + +# Controls if a missing handler for a notification event is an error or a warning +#error_on_missing_handler = True + +# change this for alternative sudo implementations +#sudo_exe = sudo + +# What flags to pass to sudo +# WARNING: leaving out the defaults might create unexpected behaviours +#sudo_flags = -H -S -n + +# SSH timeout +#timeout = 10 + +# default user to use for playbooks if user is not specified +# (/usr/bin/ansible will use current user as default) +#remote_user = root + +# logging is off by default unless this path is defined +# if so defined, consider logrotate +log_path = log/ansible.log + +# default module name for /usr/bin/ansible +#module_name = command + +# use this shell for commands executed under sudo +# you may need to change this to bin/bash in rare instances +# if sudo is constrained +#executable = /bin/sh + +# if inventory variables overlap, does the higher precedence one win +# or are hash values merged together? The default is 'replace' but +# this can also be set to 'merge'. +#hash_behaviour = replace + +# by default, variables from roles will be visible in the global variable +# scope. To prevent this, the following option can be enabled, and only +# tasks and handlers within the role will see the variables there +#private_role_vars = yes + +# list any Jinja2 extensions to enable here: +#jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n + +# if set, always use this private key file for authentication, same as +# if passing --private-key to ansible or ansible-playbook +#private_key_file = /path/to/file + +# If set, configures the path to the Vault password file as an alternative to +# specifying --vault-password-file on the command line. +#vault_password_file = /path/to/vault_password_file + +# format of string {{ ansible_managed }} available within Jinja2 +# templates indicates to users editing templates files will be replaced. +# replacing {file}, {host} and {uid} and strftime codes with proper values. +#ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host} +# {file}, {host}, {uid}, and the timestamp can all interfere with idempotence +# in some situations so the default is a static string: +#ansible_managed = Ansible managed + +# by default, ansible-playbook will display "Skipping [host]" if it determines a task +# should not be run on a host. Set this to "False" if you don't want to see these "Skipping" +# messages. NOTE: the task header will still be shown regardless of whether or not the +# task is skipped. +#display_skipped_hosts = True + +# by default, if a task in a playbook does not include a name: field then +# ansible-playbook will construct a header that includes the task's action but +# not the task's args. This is a security feature because ansible cannot know +# if the *module* considers an argument to be no_log at the time that the +# header is printed. If your environment doesn't have a problem securing +# stdout from ansible-playbook (or you have manually specified no_log in your +# playbook on all of the tasks where you have secret information) then you can +# safely set this to True to get more informative messages. +#display_args_to_stdout = False + +# by default (as of 1.3), Ansible will raise errors when attempting to dereference +# Jinja2 variables that are not set in templates or action lines. Uncomment this line +# to revert the behavior to pre-1.3. +#error_on_undefined_vars = False + +# by default (as of 1.6), Ansible may display warnings based on the configuration of the +# system running ansible itself. This may include warnings about 3rd party packages or +# other conditions that should be resolved if possible. +# to disable these warnings, set the following value to False: +#system_warnings = True + +# by default (as of 1.4), Ansible may display deprecation warnings for language +# features that should no longer be used and will be removed in future versions. +# to disable these warnings, set the following value to False: +#deprecation_warnings = True + +# (as of 1.8), Ansible can optionally warn when usage of the shell and +# command module appear to be simplified by using a default Ansible module +# instead. These warnings can be silenced by adjusting the following +# setting or adding warn=yes or warn=no to the end of the command line +# parameter string. This will for example suggest using the git module +# instead of shelling out to the git command. +# command_warnings = False + + +# set plugin path directories here, separate with colons +#action_plugins = /usr/share/ansible/plugins/action +#cache_plugins = /usr/share/ansible/plugins/cache +#callback_plugins = /usr/share/ansible/plugins/callback +#connection_plugins = /usr/share/ansible/plugins/connection +#lookup_plugins = /usr/share/ansible/plugins/lookup +#inventory_plugins = /usr/share/ansible/plugins/inventory +#vars_plugins = /usr/share/ansible/plugins/vars +#filter_plugins = /usr/share/ansible/plugins/filter +#test_plugins = /usr/share/ansible/plugins/test +#terminal_plugins = /usr/share/ansible/plugins/terminal +#strategy_plugins = /usr/share/ansible/plugins/strategy + + +# by default, ansible will use the 'linear' strategy but you may want to try +# another one +#strategy = free + +# by default callbacks are not loaded for /bin/ansible, enable this if you +# want, for example, a notification or logging callback to also apply to +# /bin/ansible runs +#bin_ansible_callbacks = False + + +# don't like cows? that's unfortunate. +# set to 1 if you don't want cowsay support or export ANSIBLE_NOCOWS=1 +nocows = 1 + +# set which cowsay stencil you'd like to use by default. When set to 'random', +# a random stencil will be selected for each task. The selection will be filtered +# against the `cow_whitelist` option below. +#cow_selection = default +#cow_selection = random + +# when using the 'random' option for cowsay, stencils will be restricted to this list. +# it should be formatted as a comma-separated list with no spaces between names. +# NOTE: line continuations here are for formatting purposes only, as the INI parser +# in python does not support them. +#cow_whitelist=bud-frogs,bunny,cheese,daemon,default,dragon,elephant-in-snake,elephant,eyes,\ +# hellokitty,kitty,luke-koala,meow,milk,moofasa,moose,ren,sheep,small,stegosaurus,\ +# stimpy,supermilker,three-eyes,turkey,turtle,tux,udder,vader-koala,vader,www + +# don't like colors either? +# set to 1 if you don't want colors, or export ANSIBLE_NOCOLOR=1 +#nocolor = 1 + +# if set to a persistent type (not 'memory', for example 'redis') fact values +# from previous runs in Ansible will be stored. This may be useful when +# wanting to use, for example, IP information from one group of servers +# without having to talk to them in the same playbook run to get their +# current IP information. +#fact_caching = memory + + +# retry files +# When a playbook fails by default a .retry file will be created in ~/ +# You can disable this feature by setting retry_files_enabled to False +# and you can change the location of the files by setting retry_files_save_path + +#retry_files_enabled = False +#retry_files_save_path = ~/.ansible-retry + +# squash actions +# Ansible can optimise actions that call modules with list parameters +# when looping. Instead of calling the module once per with_ item, the +# module is called once with all items at once. Currently this only works +# under limited circumstances, and only with parameters named 'name'. +#squash_actions = apk,apt,dnf,homebrew,pacman,pkgng,yum,zypper + +# prevents logging of task data, off by default +#no_log = False + +# prevents logging of tasks, but only on the targets, data is still logged on the master/controller +#no_target_syslog = False + +# controls whether Ansible will raise an error or warning if a task has no +# choice but to create world readable temporary files to execute a module on +# the remote machine. This option is False by default for security. Users may +# turn this on to have behaviour more like Ansible prior to 2.1.x. See +# https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user +# for more secure ways to fix this than enabling this option. +#allow_world_readable_tmpfiles = False + +# controls the compression level of variables sent to +# worker processes. At the default of 0, no compression +# is used. This value must be an integer from 0 to 9. +#var_compression_level = 9 + +# controls what compression method is used for new-style ansible modules when +# they are sent to the remote system. The compression types depend on having +# support compiled into both the controller's python and the client's python. +# The names should match with the python Zipfile compression types: +# * ZIP_STORED (no compression. available everywhere) +# * ZIP_DEFLATED (uses zlib, the default) +# These values may be set per host via the ansible_module_compression inventory +# variable +#module_compression = 'ZIP_DEFLATED' + +# This controls the cutoff point (in bytes) on --diff for files +# set to 0 for unlimited (RAM may suffer!). +#max_diff_size = 1048576 + +# This controls how ansible handles multiple --tags and --skip-tags arguments +# on the CLI. If this is True then multiple arguments are merged together. If +# it is False, then the last specified argument is used and the others are ignored. +# This option will be removed in 2.8. +#merge_multiple_cli_flags = True + +# Controls showing custom stats at the end, off by default +#show_custom_stats = True + +# Controls which files to ignore when using a directory as inventory with +# possibly multiple sources (both static and dynamic) +#inventory_ignore_extensions = ~, .orig, .bak, .ini, .cfg, .retry, .pyc, .pyo + +# This family of modules use an alternative execution path optimized for network appliances +# only update this setting if you know how this works, otherwise it can break module execution +#network_group_modules=eos, nxos, ios, iosxr, junos, vyos + +# When enabled, this option allows lookups (via variables like {{lookup('foo')}} or when used as +# a loop with `with_foo`) to return data that is not marked "unsafe". This means the data may contain +# jinja2 templating language which will be run through the templating engine. +# ENABLING THIS COULD BE A SECURITY RISK +#allow_unsafe_lookups = False + +# set default errors for all plays +#any_errors_fatal = False + +[inventory] +# enable inventory plugins, default: 'host_list', 'script', 'yaml', 'ini' +#enable_plugins = host_list, virtualbox, yaml, constructed + +# ignore these extensions when parsing a directory as inventory source +#ignore_extensions = .pyc, .pyo, .swp, .bak, ~, .rpm, .md, .txt, ~, .orig, .ini, .cfg, .retry + +# ignore files matching these patterns when parsing a directory as inventory source +#ignore_patterns= + +# If 'true' unparsed inventory sources become fatal errors, they are warnings otherwise. +#unparsed_is_failed=False + +[privilege_escalation] +#become=True +#become_method=sudo +#become_user=root +#become_ask_pass=True + +[paramiko_connection] + +# uncomment this line to cause the paramiko connection plugin to not record new host +# keys encountered. Increases performance on new host additions. Setting works independently of the +# host key checking setting above. +#record_host_keys=False + +# by default, Ansible requests a pseudo-terminal for commands executed under sudo. Uncomment this +# line to disable this behaviour. +#pty=False + +# paramiko will default to looking for SSH keys initially when trying to +# authenticate to remote devices. This is a problem for some network devices +# that close the connection after a key failure. Uncomment this line to +# disable the Paramiko look for keys function +#look_for_keys = False + +# When using persistent connections with Paramiko, the connection runs in a +# background process. If the host doesn't already have a valid SSH key, by +# default Ansible will prompt to add the host key. This will cause connections +# running in background processes to fail. Uncomment this line to have +# Paramiko automatically add host keys. +#host_key_auto_add = True + +[ssh_connection] + +# ssh arguments to use +# Leaving off ControlPersist will result in poor performance, so use +# paramiko on older platforms rather than removing it, -C controls compression use +#ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s + +# The base directory for the ControlPath sockets. +# This is the "%(directory)s" in the control_path option +# +# Example: +# control_path_dir = /tmp/.ansible/cp +#control_path_dir = ~/.ansible/cp + +# The path to use for the ControlPath sockets. This defaults to a hashed string of the hostname, +# port and username (empty string in the config). The hash mitigates a common problem users +# found with long hostames and the conventional %(directory)s/ansible-ssh-%%h-%%p-%%r format. +# In those cases, a "too long for Unix domain socket" ssh error would occur. +# +# Example: +# control_path = %(directory)s/%%h-%%r +#control_path = + +# Enabling pipelining reduces the number of SSH operations required to +# execute a module on the remote server. This can result in a significant +# performance improvement when enabled, however when using "sudo:" you must +# first disable 'requiretty' in /etc/sudoers +# +# By default, this option is disabled to preserve compatibility with +# sudoers configurations that have requiretty (the default on many distros). +# +#pipelining = False + +# Control the mechanism for transferring files (old) +# * smart = try sftp and then try scp [default] +# * True = use scp only +# * False = use sftp only +#scp_if_ssh = smart + +# Control the mechanism for transferring files (new) +# If set, this will override the scp_if_ssh option +# * sftp = use sftp to transfer files +# * scp = use scp to transfer files +# * piped = use 'dd' over SSH to transfer files +# * smart = try sftp, scp, and piped, in that order [default] +#transfer_method = smart + +# if False, sftp will not use batch mode to transfer files. This may cause some +# types of file transfer failures impossible to catch however, and should +# only be disabled if your sftp version has problems with batch mode +#sftp_batch_mode = False + +# The -tt argument is passed to ssh when pipelining is not enabled because sudo +# requires a tty by default. +#use_tty = True + +[persistent_connection] + +# Configures the persistent connection timeout value in seconds. This value is +# how long the persistent connection will remain idle before it is destroyed. +# If the connection doesn't receive a request before the timeout value +# expires, the connection is shutdown. The default value is 30 seconds. +#connect_timeout = 30 + +# Configures the persistent connection retry timeout. This value configures the +# the retry timeout that ansible-connection will wait to connect +# to the local domain socket. This value must be larger than the +# ssh timeout (timeout) and less than persistent connection idle timeout (connect_timeout). +# The default value is 15 seconds. +#connect_retry_timeout = 15 + +# The command timeout value defines the amount of time to wait for a command +# or RPC call before timing out. The value for the command timeout must +# be less than the value of the persistent connection idle timeout (connect_timeout) +# The default value is 10 second. +#command_timeout = 10 + +[accelerate] +#accelerate_port = 5099 +#accelerate_timeout = 30 +#accelerate_connect_timeout = 5.0 + +# The daemon timeout is measured in minutes. This time is measured +# from the last activity to the accelerate daemon. +#accelerate_daemon_timeout = 30 + +# If set to yes, accelerate_multi_key will allow multiple +# private keys to be uploaded to it, though each user must +# have access to the system via SSH to add a new key. The default +# is "no". +#accelerate_multi_key = yes + +[selinux] +# file systems that require special treatment when dealing with security context +# the default behaviour that copies the existing context or uses the user default +# needs to be changed to use the file system dependent context. +#special_context_filesystems=nfs,vboxsf,fuse,ramfs,9p + +# Set this to yes to allow libvirt_lxc connections to work without SELinux. +#libvirt_lxc_noseclabel = yes + +[colors] +#highlight = white +#verbose = blue +#warn = bright purple +#error = red +#debug = dark gray +#deprecate = purple +#skip = cyan +#unreachable = red +#ok = green +#changed = yellow +#diff_add = green +#diff_remove = red +#diff_lines = cyan + + +[diff] +# Always print diff when running ( same as always running with -D/--diff ) +# always = no + +# Set how many context lines to show in diff +# context = 3 diff --git a/hosts b/hosts new file mode 100644 index 0000000..ec9896e --- /dev/null +++ b/hosts @@ -0,0 +1,5 @@ +test: + hosts: + 172.19.134.38: + ansible_user: ubuntu + ansible_ssh_private_key_file: ~/.ssh/id_rsa diff --git a/log/.keep b/log/.keep new file mode 100644 index 0000000..e69de29 diff --git a/playbooks/test.yml b/playbooks/test.yml new file mode 100644 index 0000000..8090849 --- /dev/null +++ b/playbooks/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: test + become: true + roles: + - core diff --git a/roles/core/files/csclub.rsyslog.conf b/roles/core/files/csclub.rsyslog.conf new file mode 100644 index 0000000..5979a26 --- /dev/null +++ b/roles/core/files/csclub.rsyslog.conf @@ -0,0 +1,6 @@ +# +# Computer Science Club +# Logging +# + +#*.* @@logstash.csclub.uwaterloo.ca:5514 diff --git a/roles/core/files/ntp.conf b/roles/core/files/ntp.conf new file mode 100644 index 0000000..c379c9d --- /dev/null +++ b/roles/core/files/ntp.conf @@ -0,0 +1,41 @@ +# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help + +driftfile /var/lib/ntp/ntp.drift + +# Enable this if you want statistics to be logged. +#statsdir /var/log/ntpstats/ +statistics loopstats peerstats clockstats +filegen loopstats file loopstats type day enable +filegen peerstats file peerstats type day enable +filegen clockstats file clockstats type day enable + +# NTP Server +#server ntp.csclub.uwaterloo.ca +server 129.97.167.12 +#server ntp.student.cs.uwaterloo.ca +server 129.97.167.4 +#server ntp.cs.uwaterloo.ca +server 129.97.15.14 +#server ntp.cscf.uwaterloo.ca +server 129.97.15.15 + +# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for +# details. The web page +# +# might also be helpful. +# +# Note that "restrict" applies to both servers and clients, so a configuration +# that might be intended to block requests from certain clients could also end +# up blocking replies from your own upstream servers. + +# Disable the monitoring facility. +# see https://isc.sans.edu/forums/diary/NTP+reflection+attack/17300 +disable monitor + +# By default, exchange time with everybody, but don't allow configuration +restrict -4 default kod notrap nomodify nopeer noquery +restrict -6 default kod notrap nomodify nopeer noquery + +# Local users may interrogate the ntp server more closely. +restrict 127.0.0.1 +restrict ::1 diff --git a/roles/core/files/resolv.conf b/roles/core/files/resolv.conf new file mode 100644 index 0000000..a0ae578 --- /dev/null +++ b/roles/core/files/resolv.conf @@ -0,0 +1,12 @@ +search csclub.uwaterloo.ca uwaterloo.ca +options rotate timeout:1 attempts:1 ndots:2 + +# CSC Nameservers +nameserver 2620:101:f000:4901:c5c::4 +nameserver 2620:101:f000:7300:c5c::20 +nameserver 129.97.134.4 +nameserver 129.97.18.20 + +# IST Anycast (fallback) +#nameserver 129.97.2.1 +#nameserver 129.97.2.2 diff --git a/roles/core/files/ssh_config b/roles/core/files/ssh_config new file mode 100644 index 0000000..29c3e3a --- /dev/null +++ b/roles/core/files/ssh_config @@ -0,0 +1,25 @@ +# This is the ssh client system-wide configuration file. See +# ssh_config(5) for more information. This file provides defaults for +# users, and the values can be changed in per-user configuration files +# or on the command line. + +# Configuration data is parsed as follows: +# 1. command line options +# 2. user-specific file +# 3. system-wide file +# Any configuration value is only changed the first time it is set. +# Thus, host-specific definitions should be at the beginning of the +# configuration file, and defaults at the end. + +# Site-wide defaults for some commonly used options. For a comprehensive +# list of available options, their meanings and defaults, please see the +# ssh_config(5) man page. + +Host * + SendEnv LANG LC_* + GSSAPITrustDns yes + GSSAPIKeyExchange yes + + GSSAPIAuthentication yes + GSSAPIDelegateCredentials yes + UseRoaming no diff --git a/roles/core/files/ssh_known_hosts b/roles/core/files/ssh_known_hosts new file mode 100644 index 0000000..a3cd32a --- /dev/null +++ b/roles/core/files/ssh_known_hosts @@ -0,0 +1,192 @@ +aspartame.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII27ztnAm39AurPIoIsdTFVE+u46EuOwpRizR6D9BG+Y +aspartame.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4TzqMpguUFMIly6HKTHpKKJrvJmIBWrS7FZSH0JCDsUrwzlYZQSTG1d0uCqO0NG0SV6GsdxcrucLRJajkidoB1RMgaZ/PPOK2a4o94aR09p9lBoE/MX9capCuybLg0EVc1/YTdRxM1wjP9f4Mjp6t5snTZ89RTAdPOg3MjFbveHHQceg0tYbOu3VlNMoove1gh0GBftmLobPnPzUgtMCJ3I2KcXpqTMUJSC01k23DG+M6sRQ7XjuG9P5Q0ly49qtt3p/NSeR6B/kETN3QiI8FQo5VoW2OP1Mpa4sNoBoBs55Wq4XYC1m1vyH3SqU8ExcrZqjI+LbJtYQGpH5BWySv +aspartame ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII27ztnAm39AurPIoIsdTFVE+u46EuOwpRizR6D9BG+Y +aspartame ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4TzqMpguUFMIly6HKTHpKKJrvJmIBWrS7FZSH0JCDsUrwzlYZQSTG1d0uCqO0NG0SV6GsdxcrucLRJajkidoB1RMgaZ/PPOK2a4o94aR09p9lBoE/MX9capCuybLg0EVc1/YTdRxM1wjP9f4Mjp6t5snTZ89RTAdPOg3MjFbveHHQceg0tYbOu3VlNMoove1gh0GBftmLobPnPzUgtMCJ3I2KcXpqTMUJSC01k23DG+M6sRQ7XjuG9P5Q0ly49qtt3p/NSeR6B/kETN3QiI8FQo5VoW2OP1Mpa4sNoBoBs55Wq4XYC1m1vyH3SqU8ExcrZqjI+LbJtYQGpH5BWySv +auth1.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAvLvnQ6Ocf/QjojRW5fPrROrsQvSr/8pRVQCNXphs4W +auth1.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmdYsXyf24OrBn3ZTo1rWZt55ZnE6L5DGYgmvRqwTFlrr0GyqNKSUDu+QL4NlxVRMB8IMe4inpuRb7JZuO47IRqf/KCIgWLfpsd1CMflqc2rYRVYmra2JSQ10DHJb4VGbOqABhkeB4YeTPwImr/BG4FBOm7QCqIu16RzjANXjYtGZq/s72hUhnm4yV36BHtXXaI4Ji7i4IeT2onyxfZyFcC9DcP83GUFOGtjAMumDRpJ5ftek+147gfF3dSvaYj8esFZW4geMoKXBe3B9vYAgH8z4iNbMqDc7NAVOWsvf5dSKiegrIrovNWm6rVWqYAXluJ6nkt1i5wkkM776cUUCn +auth1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAvLvnQ6Ocf/QjojRW5fPrROrsQvSr/8pRVQCNXphs4W +auth1 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmdYsXyf24OrBn3ZTo1rWZt55ZnE6L5DGYgmvRqwTFlrr0GyqNKSUDu+QL4NlxVRMB8IMe4inpuRb7JZuO47IRqf/KCIgWLfpsd1CMflqc2rYRVYmra2JSQ10DHJb4VGbOqABhkeB4YeTPwImr/BG4FBOm7QCqIu16RzjANXjYtGZq/s72hUhnm4yV36BHtXXaI4Ji7i4IeT2onyxfZyFcC9DcP83GUFOGtjAMumDRpJ5ftek+147gfF3dSvaYj8esFZW4geMoKXBe3B9vYAgH8z4iNbMqDc7NAVOWsvf5dSKiegrIrovNWm6rVWqYAXluJ6nkt1i5wkkM776cUUCn +auth2.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGJcYRda4/NglHpJDn9CadzN6gkO4ziUI1CZ4KZ6T76G +auth2.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyXarBOhnkPR2cpeXPrSzBBFY5Wth7SRTuPtY0DLRsIVqAfJ/92pY79AWcvpM0DtoguMscc3iOWKhLpz5gxA3zPUOjloNMvGMHjUzC8Mwi0URJB9nbfpuE5+sHSLIcl26PbvHTTgL4WbsSypAxHNEe3Cc2uZ7JmGgccicXm6r7rQBICWmwQHjkB7rlXYNuY8Kni0lRDWNV45QUpab553wbBw0PZWmnjA1/ft8gN7ppXzBfvdPZy/OBal+7dUsCdBSsiCUu4Fowkqa5wzQP5JrfExmO3fp5mTTKWA1+ige2FJQoLhTtT6WuZ1MiMig2h/5itguxADP9X9/EFxVUsj05 +auth2 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGJcYRda4/NglHpJDn9CadzN6gkO4ziUI1CZ4KZ6T76G +auth2 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyXarBOhnkPR2cpeXPrSzBBFY5Wth7SRTuPtY0DLRsIVqAfJ/92pY79AWcvpM0DtoguMscc3iOWKhLpz5gxA3zPUOjloNMvGMHjUzC8Mwi0URJB9nbfpuE5+sHSLIcl26PbvHTTgL4WbsSypAxHNEe3Cc2uZ7JmGgccicXm6r7rQBICWmwQHjkB7rlXYNuY8Kni0lRDWNV45QUpab553wbBw0PZWmnjA1/ft8gN7ppXzBfvdPZy/OBal+7dUsCdBSsiCUu4Fowkqa5wzQP5JrfExmO3fp5mTTKWA1+ige2FJQoLhTtT6WuZ1MiMig2h/5itguxADP9X9/EFxVUsj05 +bit-shifter.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIODyyKCLjh71NswLcYdjjHkGgvUXnru5wvoojQYR2kwH +bit-shifter.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDzH2lcDDp7S3b42mbpdcO1FySgY0dZQjxn9+90RN9x7HPKIhmuppJ1dkbmUFiDix1NzhO8ea3q2/b7XTjtN19zQP4+sV7eNpLw6O4UjTGAhTc7rWFrDrcQ7i7UAh9iM+DfnQa4BkQHr9j2cjgbvemDaRKSvzJvZXAMYLCu4kIEc+K6Qeer/pj4fcv5bvPuq+/kSsrLLEN/QfShFeKhfpO7e8dGicMuOnvruXUs0pqUXQtmQ2Wyjzouo+al0LnEWkA+7Atm1pg/VHnYIyAtYO615oSd3ExeOrLhZc68klWx3SXzkgywNItOENsq32gVgExyl0yTfVLd3CKwn+3D8Vf +bit-shifter ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIODyyKCLjh71NswLcYdjjHkGgvUXnru5wvoojQYR2kwH +bit-shifter ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDzH2lcDDp7S3b42mbpdcO1FySgY0dZQjxn9+90RN9x7HPKIhmuppJ1dkbmUFiDix1NzhO8ea3q2/b7XTjtN19zQP4+sV7eNpLw6O4UjTGAhTc7rWFrDrcQ7i7UAh9iM+DfnQa4BkQHr9j2cjgbvemDaRKSvzJvZXAMYLCu4kIEc+K6Qeer/pj4fcv5bvPuq+/kSsrLLEN/QfShFeKhfpO7e8dGicMuOnvruXUs0pqUXQtmQ2Wyjzouo+al0LnEWkA+7Atm1pg/VHnYIyAtYO615oSd3ExeOrLhZc68klWx3SXzkgywNItOENsq32gVgExyl0yTfVLd3CKwn+3D8Vf +block1.cloud.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFue/N1Y8gQ8XDZEcn7Z0G57APuf3Th5Ud+6PmjqCnI/ +block1.cloud.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAWtTVqR9doE4gyBamgJ6IaOew/Mg3VGYGbkRIw+rG3PQTap03pWDq59I8WoxKP/ntQoN4fqwYp5aofRNgijAXPqpBSwgWe36VIgizATOlBoLKtn/BI/+r19BwZwjZpPl9S+HlgPIo7+iLqyo3shwzonfpw8uxjnq+PGvoRPEw0C3z7EbZHdOYbnBaeVor7OUzC79DgqG3WgDIvdOspv/Svi9Yie862lMEzl+D69AZclMuHjLWs1cK8cgqEY7BbhLRAVaIIZ2EgPmiW3pu/B3k03fBj2S366lrouEeZ+GqJTDBmIZ+cy82FxBQp3wYwtSvdM97gzD9/T7N7011KA6B +block1.cloud ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFue/N1Y8gQ8XDZEcn7Z0G57APuf3Th5Ud+6PmjqCnI/ +block1.cloud ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAWtTVqR9doE4gyBamgJ6IaOew/Mg3VGYGbkRIw+rG3PQTap03pWDq59I8WoxKP/ntQoN4fqwYp5aofRNgijAXPqpBSwgWe36VIgizATOlBoLKtn/BI/+r19BwZwjZpPl9S+HlgPIo7+iLqyo3shwzonfpw8uxjnq+PGvoRPEw0C3z7EbZHdOYbnBaeVor7OUzC79DgqG3WgDIvdOspv/Svi9Yie862lMEzl+D69AZclMuHjLWs1cK8cgqEY7BbhLRAVaIIZ2EgPmiW3pu/B3k03fBj2S366lrouEeZ+GqJTDBmIZ+cy82FxBQp3wYwtSvdM97gzD9/T7N7011KA6B +caffeine.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEl/7srK3RCWen+dBNiO1WfWQQqx4yVs+X6M/XRYPjml +caffeine.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzLf726SMtgFQODIFN0G2WhwMPW6A6zDvd+hLUZWsx5in1rdCAVgtBAnqSlIZQzG+VV6b7VF/vUFg0g8Iku4txwQzE2o0Edln6RWFcEgYgczCY/QdtQ358NyZQ75M/fzM3HyX62cTzkX/nXOLIxGs8O8lmCSRs0D2I5JW4XciFvH4tarlstCflfkiTitqOicpaU+bEKfnXlfbR6tWsm5dp0gFcowtabJnWkuMNxyFSURWfglTrIn/XsEbA9rMdPzSHkpbuibrP9TaRQt+hwph+0fOtb2TlQlH1wu4O8Xi0R/XqlWASjRrXHrU6bMSOqq9Ym4a6oBUDrZMdKdlH48xsQ== +caffeine ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEl/7srK3RCWen+dBNiO1WfWQQqx4yVs+X6M/XRYPjml +caffeine ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzLf726SMtgFQODIFN0G2WhwMPW6A6zDvd+hLUZWsx5in1rdCAVgtBAnqSlIZQzG+VV6b7VF/vUFg0g8Iku4txwQzE2o0Edln6RWFcEgYgczCY/QdtQ358NyZQ75M/fzM3HyX62cTzkX/nXOLIxGs8O8lmCSRs0D2I5JW4XciFvH4tarlstCflfkiTitqOicpaU+bEKfnXlfbR6tWsm5dp0gFcowtabJnWkuMNxyFSURWfglTrIn/XsEbA9rMdPzSHkpbuibrP9TaRQt+hwph+0fOtb2TlQlH1wu4O8Xi0R/XqlWASjRrXHrU6bMSOqq9Ym4a6oBUDrZMdKdlH48xsQ== +cobalamin.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJT/8C2QZ5eRyIA6Q9ZdDS6naCf9raqEo7hZUhTm+Sm +cobalamin.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDo5+jPDT0ak6Ox4vk+EPmxNsVgQuLK82IyKvvuPHZ2qJ27ZJ6a1YxE+WiwpmKkF4BfLC0bwMIY5PZ3IUZ+gfVxiA19kddEWa97kmntsOB2oirpv/Ewvv83KflVWwjIiMCS9BlbVwtzhfzaOUec0f7jsqQ1x/J2mvAEt81vgjFeWOqmxGhLQs8sZZzeqQBZyOHral5GvcIfvBbBMAhV8E7KuyjqQsGWqOdrEThEM7a/sNmmawI130PGlOIz6FKcnBZJWxpo0L26cGIEI92lvWRs/NWPaPDtyWuaamkP3PFedAc6kX6pnU+MqZldsbH6bDsPq1iOryU3y8WebdTBGVh9 +cobalamin ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBJT/8C2QZ5eRyIA6Q9ZdDS6naCf9raqEo7hZUhTm+Sm +cobalamin ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDo5+jPDT0ak6Ox4vk+EPmxNsVgQuLK82IyKvvuPHZ2qJ27ZJ6a1YxE+WiwpmKkF4BfLC0bwMIY5PZ3IUZ+gfVxiA19kddEWa97kmntsOB2oirpv/Ewvv83KflVWwjIiMCS9BlbVwtzhfzaOUec0f7jsqQ1x/J2mvAEt81vgjFeWOqmxGhLQs8sZZzeqQBZyOHral5GvcIfvBbBMAhV8E7KuyjqQsGWqOdrEThEM7a/sNmmawI130PGlOIz6FKcnBZJWxpo0L26cGIEI92lvWRs/NWPaPDtyWuaamkP3PFedAc6kX6pnU+MqZldsbH6bDsPq1iOryU3y8WebdTBGVh9 +controller1.cloud.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICnbUa/1bUvBgEx1VvhHMDoH1Cont7o18zjQWcCiZngB +controller1.cloud.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA6FNgsLkV5oZNHrp1H5gOof4h/uLwq9CPV2Bz7oGQw4/d2EBW3JSCPkx5Q+RxRalpwxE3K9PWxUCch6Lr9dlwrFkf7RapElPTg9erwVwKHUdamrlIlAXbzJ/err4x9yupERil3O7zV68OE0XOnwPms1Ljs9lX+tC0E4Pog+XXMqYZBuiUB8zr/0UaK0NadkGEIHekcsoGPzuQ28QyktqoPlwK9UTdE7y4HnrbohAG/aMSsRZnYIUcpgXZEeMM2mxtP82NHtDHX6L/lLmZPR2hQeUVvJD6l8ByBEWLu37cAYKjBc96voADwinB1hgugc5x49e+CQWs1wEjyM0W26pb +controller1.cloud ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICnbUa/1bUvBgEx1VvhHMDoH1Cont7o18zjQWcCiZngB +controller1.cloud ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA6FNgsLkV5oZNHrp1H5gOof4h/uLwq9CPV2Bz7oGQw4/d2EBW3JSCPkx5Q+RxRalpwxE3K9PWxUCch6Lr9dlwrFkf7RapElPTg9erwVwKHUdamrlIlAXbzJ/err4x9yupERil3O7zV68OE0XOnwPms1Ljs9lX+tC0E4Pog+XXMqYZBuiUB8zr/0UaK0NadkGEIHekcsoGPzuQ28QyktqoPlwK9UTdE7y4HnrbohAG/aMSsRZnYIUcpgXZEeMM2mxtP82NHtDHX6L/lLmZPR2hQeUVvJD6l8ByBEWLu37cAYKjBc96voADwinB1hgugc5x49e+CQWs1wEjyM0W26pb +corn-syrup.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJQYiN9/mUUBcJx4lOCnm9W9n91iKvAY5cfcnoRzNqKU +corn-syrup.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1Y3qdNiwgOQzHXoDnRozSJ31eGoVYldmG3R2Rwa2rXNUwKVeVx612GxANjPaWrMyJ7bYEI1x7xtfdxKRcz94uumeqnR8cBTNKhxd1vtx0J64TcmezZqZdTAJZ11NVLRp+cuYPNDY62PNRtfjlkXMZ1BX1QFgNQdpARkXkLlDqAkkhaDVMhtXg2/3Z+xe5cizcwAjyeVjWlEpYrg+g2CKnpL6/hF9WZT3OLYsUDqVGZS0tDrS9nOuPuNQFdHZPUdaaNx7Lv+k8D4Yxeauc8EGGD2qEJ3xTh2P7FmaYbDc7s8GIYHa1lKh87ZULNyD6G5ieLYjSCjyHjVrmFVJM8woyw== +corn-syrup ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJQYiN9/mUUBcJx4lOCnm9W9n91iKvAY5cfcnoRzNqKU +corn-syrup ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1Y3qdNiwgOQzHXoDnRozSJ31eGoVYldmG3R2Rwa2rXNUwKVeVx612GxANjPaWrMyJ7bYEI1x7xtfdxKRcz94uumeqnR8cBTNKhxd1vtx0J64TcmezZqZdTAJZ11NVLRp+cuYPNDY62PNRtfjlkXMZ1BX1QFgNQdpARkXkLlDqAkkhaDVMhtXg2/3Z+xe5cizcwAjyeVjWlEpYrg+g2CKnpL6/hF9WZT3OLYsUDqVGZS0tDrS9nOuPuNQFdHZPUdaaNx7Lv+k8D4Yxeauc8EGGD2qEJ3xTh2P7FmaYbDc7s8GIYHa1lKh87ZULNyD6G5ieLYjSCjyHjVrmFVJM8woyw== +db1.cloud.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOKkqUPlrSVOB7ROQLzk1R0hoCM0YpSrRgfFTHq4TfJb +db1.cloud.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuJ0mfAZmDLRQwezFuNSk8HyonfWVt85eyqddpNhZEumIlaJHcvpyig7CrnzkV747R0TCuiEFGNBNOLH/MQZfYIrjLM18QVUUPE3hragayxiMa7SnH50EJFt2OGNbGte6w664Guv5EGSqpY11VSpHsuuN7KPU8+ko3Xa+uhuz5lorLPAlGxO2Bz+PWDB1igmYMplJ0UfFZ/xmpMISAf2hakvlXiIjajp4cDSzVfKQMsLsUiwcO4lB65dO8KIR7OzIGtchcfb4qCp1CHjDx05GRomGNNFSYywn78O/0vvuSFkUKHtOi7oXVqWSD4uhVA3HWl8RdAkf1uH+yXfZXXzRh +db1.cloud ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOKkqUPlrSVOB7ROQLzk1R0hoCM0YpSrRgfFTHq4TfJb +db1.cloud ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuJ0mfAZmDLRQwezFuNSk8HyonfWVt85eyqddpNhZEumIlaJHcvpyig7CrnzkV747R0TCuiEFGNBNOLH/MQZfYIrjLM18QVUUPE3hragayxiMa7SnH50EJFt2OGNbGte6w664Guv5EGSqpY11VSpHsuuN7KPU8+ko3Xa+uhuz5lorLPAlGxO2Bz+PWDB1igmYMplJ0UfFZ/xmpMISAf2hakvlXiIjajp4cDSzVfKQMsLsUiwcO4lB65dO8KIR7OzIGtchcfb4qCp1CHjDx05GRomGNNFSYywn78O/0vvuSFkUKHtOi7oXVqWSD4uhVA3HWl8RdAkf1uH+yXfZXXzRh +dextrose.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJakT99tON1ug7OGL8nAoelggn5kVIkU5ZJcgcYYQeDf +dextrose.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkn3oIB0ubCLlriCIYFNR7z7i5wOm/GmPnt94eOjVk21RKzo4jJeczYX/OjvqNPTqeYgsOknoSjNPZ9EwkARe9XmhjIhRYsSrQeQH2i59WQTzg9EqnrdwuxHfEkO2X3CBBp6clftjONK8Wm7IwlfrUHssbTNczCuxyNrVP8hapXJuv69GQCqi4DTHEnswynjrh47iEgp0m/q7Q8leb98vfJd6a1fQrTqP7/+XJ6/h4cT5+tnwIC3BlnzzJYqzvK0FePYNZEf1TGFTZ2f5PzHAQo8IQQOLH2/Qiv43FgUSWanm3DO94C2IOO7vvHyZFXtktfmxoAGnm8E5ppEP6UR/3 +dextrose ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJakT99tON1ug7OGL8nAoelggn5kVIkU5ZJcgcYYQeDf +dextrose ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkn3oIB0ubCLlriCIYFNR7z7i5wOm/GmPnt94eOjVk21RKzo4jJeczYX/OjvqNPTqeYgsOknoSjNPZ9EwkARe9XmhjIhRYsSrQeQH2i59WQTzg9EqnrdwuxHfEkO2X3CBBp6clftjONK8Wm7IwlfrUHssbTNczCuxyNrVP8hapXJuv69GQCqi4DTHEnswynjrh47iEgp0m/q7Q8leb98vfJd6a1fQrTqP7/+XJ6/h4cT5+tnwIC3BlnzzJYqzvK0FePYNZEf1TGFTZ2f5PzHAQo8IQQOLH2/Qiv43FgUSWanm3DO94C2IOO7vvHyZFXtktfmxoAGnm8E5ppEP6UR/3 +dns1.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDo3l7ZgezN5AnhqcxDENRWI4d+XzQ2d3jU06cCrxdlk +dns1.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEI6VGY4MP/KUvRmAZe4zU5uBS84+r1r1CCOqMrzUniLVeDeEwkLVOsVjzAA3aTrZTPHu74SnmIeFSgD8N3ZmLsRX1J5MjLyTueQWhW2CfVVmJgm2HKRT+oACd/ICK3igeLeLJZbHX/kWj3fpIXH1qPEE5FG1RXZnl//YrqlHfD5bhAkoc8T9f4tVSi2uCBLsygI9YX+TMgslVMaoAPtUOsNoHX86tC01PnJdZeWNV4mffsezritwANOcEHwer6ae8KvMHyTn1PNS+JliaUjM1sJgbcrKLgS2X3WiJobm6axTsoTtAuwYifhaRTKqoAOVowk2QnwyjKimI/oYNj7xZ +dns1 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDo3l7ZgezN5AnhqcxDENRWI4d+XzQ2d3jU06cCrxdlk +dns1 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEI6VGY4MP/KUvRmAZe4zU5uBS84+r1r1CCOqMrzUniLVeDeEwkLVOsVjzAA3aTrZTPHu74SnmIeFSgD8N3ZmLsRX1J5MjLyTueQWhW2CfVVmJgm2HKRT+oACd/ICK3igeLeLJZbHX/kWj3fpIXH1qPEE5FG1RXZnl//YrqlHfD5bhAkoc8T9f4tVSi2uCBLsygI9YX+TMgslVMaoAPtUOsNoHX86tC01PnJdZeWNV4mffsezritwANOcEHwer6ae8KvMHyTn1PNS+JliaUjM1sJgbcrKLgS2X3WiJobm6axTsoTtAuwYifhaRTKqoAOVowk2QnwyjKimI/oYNj7xZ +dns2.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ69SS+uWofWrv6o/1ayfDl4dYrXdomif482cTVbFpyb +dns2.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClthQ42O/5q46PqkF2Gbay+RQthHvRghnN62hDV+g6ROEyAHbsTZZH2GNadLAuCkiVMTLk7XXFaAXAzXGwKlnt9SML306U6gIxriDJ5xW2Qq1LzvAFcMGRLA0V7HhxHfQveHPiAOTjyBDXr0DL8JNvvw5RlcjATHkUnEIZMD8OVR4n4lZ4WWQGGimWekN/xqxAbICasvSeDVBlYlN2mlcjB0xuRbDJl9itbHW5lk9VIaSuCwc+Q+xcQI3jtWsz2baQa+yCfaHwIHys3ChN6AeW61hdWHRvYtsSvfnIyVXqGejADrNuTqJxMgFx+04JehuOrzNtLlC+QPaaN/F5abt5 +dns2 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ69SS+uWofWrv6o/1ayfDl4dYrXdomif482cTVbFpyb +dns2 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClthQ42O/5q46PqkF2Gbay+RQthHvRghnN62hDV+g6ROEyAHbsTZZH2GNadLAuCkiVMTLk7XXFaAXAzXGwKlnt9SML306U6gIxriDJ5xW2Qq1LzvAFcMGRLA0V7HhxHfQveHPiAOTjyBDXr0DL8JNvvw5RlcjATHkUnEIZMD8OVR4n4lZ4WWQGGimWekN/xqxAbICasvSeDVBlYlN2mlcjB0xuRbDJl9itbHW5lk9VIaSuCwc+Q+xcQI3jtWsz2baQa+yCfaHwIHys3ChN6AeW61hdWHRvYtsSvfnIyVXqGejADrNuTqJxMgFx+04JehuOrzNtLlC+QPaaN/F5abt5 +etcd-dc.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHyxHvCJCKcb2muGpI5NwzEf3r+9k0jUlyM8KCmltxLb +etcd-dc.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC63TGw/IqyVLuwAKfKpYIQYE+gHcqm2G891blFJ3QrtctlF/Q//g5bW8k/OXP0mdREarbQ7LMFwY8g1bmhUAJslSHUhy67W59TL5CZzVwJrUgM5rKOH+hWjTp7ZhxT2Q/I007k3bl7qFgD03lHbN5gXCq7yguQAjDZdygraY9f7aemlJtvce/6pPr1KVqArbVb+MUY5tEuafiyRr7Xrd8T4NF10bGF/OONIiV7o2O17leQiWlRN9ZovsbPcQhvVNrllfsbb0CChNpHY36o99cG5l0o18UEGxiGrct4p7J003cmJnaJMR6Ez0XqNSpzAXwkWIWXNESr3ruiE/rSE3UL +etcd-dc ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHyxHvCJCKcb2muGpI5NwzEf3r+9k0jUlyM8KCmltxLb +etcd-dc ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC63TGw/IqyVLuwAKfKpYIQYE+gHcqm2G891blFJ3QrtctlF/Q//g5bW8k/OXP0mdREarbQ7LMFwY8g1bmhUAJslSHUhy67W59TL5CZzVwJrUgM5rKOH+hWjTp7ZhxT2Q/I007k3bl7qFgD03lHbN5gXCq7yguQAjDZdygraY9f7aemlJtvce/6pPr1KVqArbVb+MUY5tEuafiyRr7Xrd8T4NF10bGF/OONIiV7o2O17leQiWlRN9ZovsbPcQhvVNrllfsbb0CChNpHY36o99cG5l0o18UEGxiGrct4p7J003cmJnaJMR6Ez0XqNSpzAXwkWIWXNESr3ruiE/rSE3UL +etcd-mc.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILETz1K9Wc2Y8enIHBgzmvfKcjASQoT2txSE/wxhH1gD +etcd-mc.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNlQT91ULEwkVEesEz6TGZZIkxKsxsYXyc1FquBN/hGZI4UiPGwwwmAxAdHjlfj0k/3i9zzBy1QC/czo6qY1aYarIDuqS8gRvBCV3JVBce1yFTcRKRfGOCXABgyEljlJxKmcS4S//lIKhE92M124y8F0YkxqsM3MKWujubD938MLjZWfZOY8uVDVggC9lf7R8hXzu/alj07PET1fni1llz1cr3FT1ShoEKhVZyjt5WGObNyzjqbleOQIcYUlIVu+bZ2VtY6oia1f3RYtJPfXHg3gJTyZLr57k1cZORSvLXJEHmR4kp6QCzRs7D7zm0R72F0oRhh4e/rEVIJjA+9977 +etcd-mc ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILETz1K9Wc2Y8enIHBgzmvfKcjASQoT2txSE/wxhH1gD +etcd-mc ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNlQT91ULEwkVEesEz6TGZZIkxKsxsYXyc1FquBN/hGZI4UiPGwwwmAxAdHjlfj0k/3i9zzBy1QC/czo6qY1aYarIDuqS8gRvBCV3JVBce1yFTcRKRfGOCXABgyEljlJxKmcS4S//lIKhE92M124y8F0YkxqsM3MKWujubD938MLjZWfZOY8uVDVggC9lf7R8hXzu/alj07PET1fni1llz1cr3FT1ShoEKhVZyjt5WGObNyzjqbleOQIcYUlIVu+bZ2VtY6oia1f3RYtJPfXHg3gJTyZLr57k1cZORSvLXJEHmR4kp6QCzRs7D7zm0R72F0oRhh4e/rEVIJjA+9977 +etcd-phy.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMZvm5HSmM/ws9ufNGX22+N8DX0I97b1Xk4tnXarJPwG +etcd-phy.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9oYiZYxbBtwgNvf1YWm9SPSrhmL4l/sflJyTyAuXspqjZdJ6hD2rekssRnANK/A2qy/1bCX+8dM5FLoU0jg2lAPO9m8OifyrcFaeu1K9rohL9g6xy6DO9+2XHqSrZpnojzbtkNmzSFyuOftJLl2NP2JKo+++ZJd9GPOiKzCWfIRIh5ir00boaFp1b7YtvYVINbH2esO94ArnQdseEOI9lnPc2/40RfCYANxjluOl8JwWH8KKlAcB9piv1qTWHDH2BKkinvcVjDe9+dJ/iyTlGe2BOqvbTz6JLwSK4E07In3dLCYTgfWYozmpHcNOfdc/NLhspyt6IufAFrcwBwJJl +etcd-phy ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMZvm5HSmM/ws9ufNGX22+N8DX0I97b1Xk4tnXarJPwG +etcd-phy ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9oYiZYxbBtwgNvf1YWm9SPSrhmL4l/sflJyTyAuXspqjZdJ6hD2rekssRnANK/A2qy/1bCX+8dM5FLoU0jg2lAPO9m8OifyrcFaeu1K9rohL9g6xy6DO9+2XHqSrZpnojzbtkNmzSFyuOftJLl2NP2JKo+++ZJd9GPOiKzCWfIRIh5ir00boaFp1b7YtvYVINbH2esO94ArnQdseEOI9lnPc2/40RfCYANxjluOl8JwWH8KKlAcB9piv1qTWHDH2BKkinvcVjDe9+dJ/iyTlGe2BOqvbTz6JLwSK4E07In3dLCYTgfWYozmpHcNOfdc/NLhspyt6IufAFrcwBwJJl +ginkgo.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPXC/EauwfwA4GQ9+M5onxYuw98VMnaNXMhcjCu0avad +ginkgo.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBKv03zY66/ue2hO3HzsJD9q7o718Oo1vdW8FA2Opw+MiiHfKTTJfUQAaJxuIWE3PbK0V2YRJooJSwsG/8AhTVh0+tMpxcoMa3vbmE5r7mreleIVEPvNl6jFBHAvXrjE4gocvsC9whCXfkWpGP4snbygvWK8hzF7UY2jmbrh3fO6VPHCJ53Q2aUINXIQPbl131myWOt3G94sTIgEBK2g22VuCfP5iDVP46Ua+6JkFozUUd7foo122YSWtpl0+zNM3fVMJUf7s018ILyg44X9Z8gbBJRIBoOswS26qLwHtrDLwwT3YRgn6mWeNaDWKLluj5WFIOhGpHhYfgakm9NN4P +ginkgo ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPXC/EauwfwA4GQ9+M5onxYuw98VMnaNXMhcjCu0avad +ginkgo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBKv03zY66/ue2hO3HzsJD9q7o718Oo1vdW8FA2Opw+MiiHfKTTJfUQAaJxuIWE3PbK0V2YRJooJSwsG/8AhTVh0+tMpxcoMa3vbmE5r7mreleIVEPvNl6jFBHAvXrjE4gocvsC9whCXfkWpGP4snbygvWK8hzF7UY2jmbrh3fO6VPHCJ53Q2aUINXIQPbl131myWOt3G94sTIgEBK2g22VuCfP5iDVP46Ua+6JkFozUUd7foo122YSWtpl0+zNM3fVMJUf7s018ILyg44X9Z8gbBJRIBoOswS26qLwHtrDLwwT3YRgn6mWeNaDWKLluj5WFIOhGpHhYfgakm9NN4P +glomag.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKxpuwKe9wYy992ulrBbTS8Ag0Y9YsBuFItwipix3mAA +glomag.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdFFZ8VdVK0rtWAfTZdM5MoI6P+Lqpo8FPqeXK9crwxutbaTgyj8JHBayCCEVrPciuddJ181ysvEae1d/0kNykhvJBUPwWIi66s1yCU93TNYvjfpxYrMLuDrQa0dh6cjavdjRbbzoi96I1DCt90X7TbDQHKGglf1Kg3a+3QyDk9b1T4+goC5uiHHJaI7wpdSZp5v7a9F9cnMPAdHSeoKtzKf4M0umzEd+XEXJQQT/ZlxGaL0SGPBN/7Lz+7ddpI8r2ApOgSaiBLZD+64wJHks/BtXD3nzfn4V8a+JnMIJ0pNc4vPMJU4/kdIrW00jAHv5UG+q7Ke6p03EETtIUaHab +glomag ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKxpuwKe9wYy992ulrBbTS8Ag0Y9YsBuFItwipix3mAA +glomag ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdFFZ8VdVK0rtWAfTZdM5MoI6P+Lqpo8FPqeXK9crwxutbaTgyj8JHBayCCEVrPciuddJ181ysvEae1d/0kNykhvJBUPwWIi66s1yCU93TNYvjfpxYrMLuDrQa0dh6cjavdjRbbzoi96I1DCt90X7TbDQHKGglf1Kg3a+3QyDk9b1T4+goC5uiHHJaI7wpdSZp5v7a9F9cnMPAdHSeoKtzKf4M0umzEd+XEXJQQT/ZlxGaL0SGPBN/7Lz+7ddpI8r2ApOgSaiBLZD+64wJHks/BtXD3nzfn4V8a+JnMIJ0pNc4vPMJU4/kdIrW00jAHv5UG+q7Ke6p03EETtIUaHab +guayusa.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPtdKNzJ7Nt0jg+rjsfmlXADrnITQMJEbtyn1JvUknDX +guayusa.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5r72Bwd+DoYPJfOlh4kMGTWPmodylynWT87RJgCPThXi5S/YbVriOs4k9UbxynILkmYIASUSLUWfG9/I1H8tYlngKFCKXLTr9JD9D0j9U72gJiq9c0LvyBVNhry7HLRSLs9Jz0Goxj62rDF2U+xIIgNxiWpzIpyGFkX2z21bOfYvqYHXfKimdtBRa9MzzFB9XjspbgpjDeIjI1N4i7L58E5NxBELIxhs4zusRuIv3ARkfeaydOegxC5wYPVahCp/nWmXWSW8wAMDma2JJy54RTFjaJ6XWcXcsgL79hUwSOEGu+z4DYh1PFUYiUbU8z4Y2ocReH7eqhy7F+eCziGzV +guayusa ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPtdKNzJ7Nt0jg+rjsfmlXADrnITQMJEbtyn1JvUknDX +guayusa ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5r72Bwd+DoYPJfOlh4kMGTWPmodylynWT87RJgCPThXi5S/YbVriOs4k9UbxynILkmYIASUSLUWfG9/I1H8tYlngKFCKXLTr9JD9D0j9U72gJiq9c0LvyBVNhry7HLRSLs9Jz0Goxj62rDF2U+xIIgNxiWpzIpyGFkX2z21bOfYvqYHXfKimdtBRa9MzzFB9XjspbgpjDeIjI1N4i7L58E5NxBELIxhs4zusRuIv3ARkfeaydOegxC5wYPVahCp/nWmXWSW8wAMDma2JJy54RTFjaJ6XWcXcsgL79hUwSOEGu+z4DYh1PFUYiUbU8z4Y2ocReH7eqhy7F+eCziGzV +gwem.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBDzFSHEDNnprhxJ9IvjtHvud65CEP28tTObEGMewGhg +gwem.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEMf5K0/8T88rXxBZeTh1qkdR/QxpShJsSHeh2KbEyHLyhJn26tudtzZojD93xt+LeZvL+Hi0bEkWgfVEX3WWbmetrePjd9Mcz+E7ND38n2oGYl/ddcNlUcVm1J4R+YI6G9pPfOa66yHeYeWFXGZEJRsJbZjI1r64GOjsm2cLP0+V7xlwPPe7lQFOcCRbfyKBEVaeipn4MUzXS0bRra1hxxB745FrvauJtM6HUQcaey+NKOczt+9ZiXGuklj3/qrGsiMg5K3rmRYbQWAbA2OELPwthgX3uP4FzH6XWjo6qYSRZBhytQcgRS8vqdlux1kcL19QCiv5aP/FlwDl4qqf9 +gwem ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBDzFSHEDNnprhxJ9IvjtHvud65CEP28tTObEGMewGhg +gwem ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEMf5K0/8T88rXxBZeTh1qkdR/QxpShJsSHeh2KbEyHLyhJn26tudtzZojD93xt+LeZvL+Hi0bEkWgfVEX3WWbmetrePjd9Mcz+E7ND38n2oGYl/ddcNlUcVm1J4R+YI6G9pPfOa66yHeYeWFXGZEJRsJbZjI1r64GOjsm2cLP0+V7xlwPPe7lQFOcCRbfyKBEVaeipn4MUzXS0bRra1hxxB745FrvauJtM6HUQcaey+NKOczt+9ZiXGuklj3/qrGsiMg5K3rmRYbQWAbA2OELPwthgX3uP4FzH6XWjo6qYSRZBhytQcgRS8vqdlux1kcL19QCiv5aP/FlwDl4qqf9 +hfcs.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINx6o3+z5wJxIs9zYSvf/bwzsWI5Nm27Sf/F3kvp0aYs +hfcs.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/XkcWvw/JAagtCFymBySJpnPjx0Uk0KTDDtdwNqeHH4/GvN0R8KWQNLg/2eJpGNIt8geTyake7Hg879rrHEh4RZrDkz9Zu8yTrV8nGGf2tZ58NmEo0CQn7I3wziNcJHpl1MQUXmtua8buvUNL+l7F+yag3u+ElPeQd7KAUparF2n9pz06kK4U3XEvimgOnTqbJaqP39ki/EjmUhi0I6LvzpoOdA6/06IM+EkVi58l5mu1vBffUpzKQXIOSJf3j4y/zEYqEkO7rHWdZJn0CVMG+cfYxry+GC3CRonw5MdemzU3wd+e4KI/zsdvfXBJwqnhAIN6Jq1hbtodLZYODp/v +hfcs ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINx6o3+z5wJxIs9zYSvf/bwzsWI5Nm27Sf/F3kvp0aYs +hfcs ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/XkcWvw/JAagtCFymBySJpnPjx0Uk0KTDDtdwNqeHH4/GvN0R8KWQNLg/2eJpGNIt8geTyake7Hg879rrHEh4RZrDkz9Zu8yTrV8nGGf2tZ58NmEo0CQn7I3wziNcJHpl1MQUXmtua8buvUNL+l7F+yag3u+ElPeQd7KAUparF2n9pz06kK4U3XEvimgOnTqbJaqP39ki/EjmUhi0I6LvzpoOdA6/06IM+EkVi58l5mu1vBffUpzKQXIOSJf3j4y/zEYqEkO7rHWdZJn0CVMG+cfYxry+GC3CRonw5MdemzU3wd+e4KI/zsdvfXBJwqnhAIN6Jq1hbtodLZYODp/v +high-fructose-corn-syrup.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINx6o3+z5wJxIs9zYSvf/bwzsWI5Nm27Sf/F3kvp0aYs +high-fructose-corn-syrup.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/XkcWvw/JAagtCFymBySJpnPjx0Uk0KTDDtdwNqeHH4/GvN0R8KWQNLg/2eJpGNIt8geTyake7Hg879rrHEh4RZrDkz9Zu8yTrV8nGGf2tZ58NmEo0CQn7I3wziNcJHpl1MQUXmtua8buvUNL+l7F+yag3u+ElPeQd7KAUparF2n9pz06kK4U3XEvimgOnTqbJaqP39ki/EjmUhi0I6LvzpoOdA6/06IM+EkVi58l5mu1vBffUpzKQXIOSJf3j4y/zEYqEkO7rHWdZJn0CVMG+cfYxry+GC3CRonw5MdemzU3wd+e4KI/zsdvfXBJwqnhAIN6Jq1hbtodLZYODp/v +high-fructose-corn-syrup ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINx6o3+z5wJxIs9zYSvf/bwzsWI5Nm27Sf/F3kvp0aYs +high-fructose-corn-syrup ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/XkcWvw/JAagtCFymBySJpnPjx0Uk0KTDDtdwNqeHH4/GvN0R8KWQNLg/2eJpGNIt8geTyake7Hg879rrHEh4RZrDkz9Zu8yTrV8nGGf2tZ58NmEo0CQn7I3wziNcJHpl1MQUXmtua8buvUNL+l7F+yag3u+ElPeQd7KAUparF2n9pz06kK4U3XEvimgOnTqbJaqP39ki/EjmUhi0I6LvzpoOdA6/06IM+EkVi58l5mu1vBffUpzKQXIOSJf3j4y/zEYqEkO7rHWdZJn0CVMG+cfYxry+GC3CRonw5MdemzU3wd+e4KI/zsdvfXBJwqnhAIN6Jq1hbtodLZYODp/v +load-balancer-01.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOv1ICwZARPxBZDw5b0pjuYb+CV6x93cFz+6Blq+bIjE +load-balancer-01.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1hM6i72q/96N9uvg7ZT+rGSYPHhCOFeWn2ntBQIQG2rL7lgNTssYVnM399Js2Xg8cZu+at4yp+TX2fxqM6Vtqtw4sVgQ1Vi9mPT2wyNp5L6ioH02Epa3BdLtREMN/2Khk8aN841+Hp3q7qo63PgNJUP8ucqUA6PUeJo6TdR39aMCy23nzDAlcGqGVQUAMjIqV086O9DROY7UfoRsUBg3evEb3OLdOwCp174qKFY4pM+T3E8fgSWcmMxnoKBJHmN2MCRoTH8FpJlS1i8z89ADdep3MekKiwkc02tVKliIEdpv/RleapTWfSfi0aXmJyFkLhbit2ZXnG4CLDesFqUNV +load-balancer-01 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOv1ICwZARPxBZDw5b0pjuYb+CV6x93cFz+6Blq+bIjE +load-balancer-01 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1hM6i72q/96N9uvg7ZT+rGSYPHhCOFeWn2ntBQIQG2rL7lgNTssYVnM399Js2Xg8cZu+at4yp+TX2fxqM6Vtqtw4sVgQ1Vi9mPT2wyNp5L6ioH02Epa3BdLtREMN/2Khk8aN841+Hp3q7qo63PgNJUP8ucqUA6PUeJo6TdR39aMCy23nzDAlcGqGVQUAMjIqV086O9DROY7UfoRsUBg3evEb3OLdOwCp174qKFY4pM+T3E8fgSWcmMxnoKBJHmN2MCRoTH8FpJlS1i8z89ADdep3MekKiwkc02tVKliIEdpv/RleapTWfSfi0aXmJyFkLhbit2ZXnG4CLDesFqUNV +load-balancer-02.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYxoez1Ods9nzkQ2+sRTLwoaUGPwdjorb9plEWphBah +load-balancer-02.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEjoXEZXPWdz4Q56UYA/9V44sQOLEvAP55bJfJgvOw/HOyd/jI7ixpNx2LOeVtca02HmiOl63zNiTzvfjDIqYQ2S6/pK3zXTyTJuQTtkcQWThuEmWHB23ihGj+w6iKTLvh378eP/DUEmgljITNYT6szcZml7NVARtarCCfi+R8H0KURPA31QMh3XGMUn/NUdaI+oI2qVW6KPsLSRZKJQWmAsiDiHRd5j8toSH+eOeZG1kWy16vyEsJJY3D0y89yTrB5LQBnL0SR6SgLH+EB711ePhJ10q/HlobKCpbGlDniCNpwAIChdpzDBWhj8NczW9DjcwbLt0hVxaK7OQZDbcX +load-balancer-02 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYxoez1Ods9nzkQ2+sRTLwoaUGPwdjorb9plEWphBah +load-balancer-02 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEjoXEZXPWdz4Q56UYA/9V44sQOLEvAP55bJfJgvOw/HOyd/jI7ixpNx2LOeVtca02HmiOl63zNiTzvfjDIqYQ2S6/pK3zXTyTJuQTtkcQWThuEmWHB23ihGj+w6iKTLvh378eP/DUEmgljITNYT6szcZml7NVARtarCCfi+R8H0KURPA31QMh3XGMUn/NUdaI+oI2qVW6KPsLSRZKJQWmAsiDiHRd5j8toSH+eOeZG1kWy16vyEsJJY3D0y89yTrB5LQBnL0SR6SgLH+EB711ePhJ10q/HlobKCpbGlDniCNpwAIChdpzDBWhj8NczW9DjcwbLt0hVxaK7OQZDbcX +logstash.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILdbiiRqgKanqNh27Z5/ROMnJc09uigjHrsm8HIlWNJO +logstash.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbq9+25852vtZDKKfH0/ZbyBwX1Eycd8wKIlumFmF70olPIPfZHMqd4p4jMppLVXdS2NkeOzUeDWKv0kRXcOkcFIB1GYaQHJeIMEY1Oo1yt5QzkraaOemsNt2+dz/sTOlPPdsFb0mJj7SF/GWMc0wjcZp2S53QSxfp3/lD+nmn4VNKEvwgA/J+H8OK9gb3sYBlNb11E69LvB0Cuw39xs47GIex7Wip8Kp3GAhlFluhsluTbaGr902tZn3DFOohPhB/YTWn4pvLY2VpUY9F1uJC6ReUCQjSGtqVOmREXTPR2UKIrSHfnlNoS1nP1vEP6T0qMylVs0YpMjcmxnvxqQBH +logstash ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILdbiiRqgKanqNh27Z5/ROMnJc09uigjHrsm8HIlWNJO +logstash ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCbq9+25852vtZDKKfH0/ZbyBwX1Eycd8wKIlumFmF70olPIPfZHMqd4p4jMppLVXdS2NkeOzUeDWKv0kRXcOkcFIB1GYaQHJeIMEY1Oo1yt5QzkraaOemsNt2+dz/sTOlPPdsFb0mJj7SF/GWMc0wjcZp2S53QSxfp3/lD+nmn4VNKEvwgA/J+H8OK9gb3sYBlNb11E69LvB0Cuw39xs47GIex7Wip8Kp3GAhlFluhsluTbaGr902tZn3DFOohPhB/YTWn4pvLY2VpUY9F1uJC6ReUCQjSGtqVOmREXTPR2UKIrSHfnlNoS1nP1vEP6T0qMylVs0YpMjcmxnvxqQBH +mail.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICyt77ru/ViAIvaw9Nca9zL8Gqv5VwNGZnW7LCQu+9WP +mail.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTas45BY/7HZjNUgwJtBSOMNVK+/eMM3r3EJyXMaNbnsSa0SrZgXmu0oA39uYHZD++ejn8tYsGqTtTHgIIcCAgrFWJykzGS35lq/t4YcqWqJLbTO2UiNwbi+VBEHWSRF5+vmYgO8ApuksULLsTy2PwfV6OoAqWtLiKcS2nmTRYuRqJlBNPkEVDjgREseRS+uFPK42cEhL3NNvHaHOxd5s9iamWFPVyH4s55MIASNMFzy3O3FD0Ewg60sTqBt1i4bqZcEC+ONYkm8/QFEJNcldIyn2XPN2FhfQ6QhCHnC/X1Z7ok2LFDsYo4rNd0eQrwIiK4KhwlwQg5/eJhTgbcig/ +mail ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICyt77ru/ViAIvaw9Nca9zL8Gqv5VwNGZnW7LCQu+9WP +mail ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTas45BY/7HZjNUgwJtBSOMNVK+/eMM3r3EJyXMaNbnsSa0SrZgXmu0oA39uYHZD++ejn8tYsGqTtTHgIIcCAgrFWJykzGS35lq/t4YcqWqJLbTO2UiNwbi+VBEHWSRF5+vmYgO8ApuksULLsTy2PwfV6OoAqWtLiKcS2nmTRYuRqJlBNPkEVDjgREseRS+uFPK42cEhL3NNvHaHOxd5s9iamWFPVyH4s55MIASNMFzy3O3FD0Ewg60sTqBt1i4bqZcEC+ONYkm8/QFEJNcldIyn2XPN2FhfQ6QhCHnC/X1Z7ok2LFDsYo4rNd0eQrwIiK4KhwlwQg5/eJhTgbcig/ +maltodextrin.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINpo9EqfEkFPRj6AVsk2XwGT9eM6OtnSRxfOrV/cdrOJ +maltodextrin.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDINydeWNmqn3PAtvR4mJwI1equy5a5QYmWLqbbU4g2BxMt/t231bP0/MSgjk2hDslu96aYUREZjx0bgx0M9dlcaiy7UqXESXL1wROPAGqH35F4ZLH1HRkxI6b2vfysh3F2bfh+6A30ItstyFh3N5BsJufE+S1iSyTVxdJ9SLLi/0mC7pOymV3HEVG/B4EgSqk4MDBYVPO+jI5iKwDbcitvnXq7MxGQT/Svr9QHfK5o8Drl3gD46ZhF7JtKQ0ewivcfPnulhQkraVo6CaqnXerUPXGZn2JSURh8IRL/xLj8mHuZ75/rpQZnsUdOXIGYMqEOIthL5j3HGXR6pg3lHKlf +maltodextrin ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINpo9EqfEkFPRj6AVsk2XwGT9eM6OtnSRxfOrV/cdrOJ +maltodextrin ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDINydeWNmqn3PAtvR4mJwI1equy5a5QYmWLqbbU4g2BxMt/t231bP0/MSgjk2hDslu96aYUREZjx0bgx0M9dlcaiy7UqXESXL1wROPAGqH35F4ZLH1HRkxI6b2vfysh3F2bfh+6A30ItstyFh3N5BsJufE+S1iSyTVxdJ9SLLi/0mC7pOymV3HEVG/B4EgSqk4MDBYVPO+jI5iKwDbcitvnXq7MxGQT/Svr9QHfK5o8Drl3gD46ZhF7JtKQ0ewivcfPnulhQkraVo6CaqnXerUPXGZn2JSURh8IRL/xLj8mHuZ75/rpQZnsUdOXIGYMqEOIthL5j3HGXR6pg3lHKlf +mattermost.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII2dttPz6rcDyIGM5NYKx9LURUQNgzSGEkSVEuP+OdjZ +mattermost.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChF3yXKmHgNXZ0lk9K62jJ2SyIQGcrB9NQkZfsX6UtQqaiTV0CTih5r3QBpfrqvSsuJGNEyJ4X1euN5YbuiSMsyjvNJ6WRo8x4B4WE5pPdu3nUMdxT7oPdX6dajAlyDfxPRDyYX1nhimPx1ZuFo3+DZ6LoLkJ2k3S7BDpXbByAtWYd7iKPjmUqWhJ1ic3mqCXYIOoWEGx2rDjZTtQzw35HTvcudOopkxsuWR4o6BW92e5cA0Dpz88zfDFcVfiuPJS1w/QmaYkhHN8lo1Ji3B09hVSIeO9Ii8zDCRPw/S7QYgfMQRRbQuoUtfH9hRHqZL/ycpEtYs9SGG1JWz5WOjK3 +mattermost ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII2dttPz6rcDyIGM5NYKx9LURUQNgzSGEkSVEuP+OdjZ +mattermost ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChF3yXKmHgNXZ0lk9K62jJ2SyIQGcrB9NQkZfsX6UtQqaiTV0CTih5r3QBpfrqvSsuJGNEyJ4X1euN5YbuiSMsyjvNJ6WRo8x4B4WE5pPdu3nUMdxT7oPdX6dajAlyDfxPRDyYX1nhimPx1ZuFo3+DZ6LoLkJ2k3S7BDpXbByAtWYd7iKPjmUqWhJ1ic3mqCXYIOoWEGx2rDjZTtQzw35HTvcudOopkxsuWR4o6BW92e5cA0Dpz88zfDFcVfiuPJS1w/QmaYkhHN8lo1Ji3B09hVSIeO9Ii8zDCRPw/S7QYgfMQRRbQuoUtfH9hRHqZL/ycpEtYs9SGG1JWz5WOjK3 +munin.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIc2OFHM1FI9SLnd94+H8eExdmwRnQQO5axNZBdPR0Xk +munin.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGasfjpaAvGwIFaDUd7MVs+hlnXKbFuzz07lUkAH7LvtqQdfNi6ytBLar+xy52O2e8Dx1Id+zQIgy+69+mDY3ewJZ528CIlKTOutJIDQq9gr9NngZwVnz1Jhn5otFgRMcGRDjVcvU7Y+/krP1Tlty12Udi9Bxe0d3gbysMsQTmLqo/JgfjQ1TlfQqJbUQNFUESTX9lgxvRN+IZpI+924EphJ5dz5Yt9IP9D60BnLOPgG0Lo0QEUom6S32gE9aKSFp6Zd6bSTgMYM+zGRaLX36uwFF+SW36QxvhJOjoOXsTRJd0ASwcresqj1fIPhohYkwhpeBgR6O1uLSuhfklFY/z +munin ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIc2OFHM1FI9SLnd94+H8eExdmwRnQQO5axNZBdPR0Xk +munin ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGasfjpaAvGwIFaDUd7MVs+hlnXKbFuzz07lUkAH7LvtqQdfNi6ytBLar+xy52O2e8Dx1Id+zQIgy+69+mDY3ewJZ528CIlKTOutJIDQq9gr9NngZwVnz1Jhn5otFgRMcGRDjVcvU7Y+/krP1Tlty12Udi9Bxe0d3gbysMsQTmLqo/JgfjQ1TlfQqJbUQNFUESTX9lgxvRN+IZpI+924EphJ5dz5Yt9IP9D60BnLOPgG0Lo0QEUom6S32gE9aKSFp6Zd6bSTgMYM+zGRaLX36uwFF+SW36QxvhJOjoOXsTRJd0ASwcresqj1fIPhohYkwhpeBgR6O1uLSuhfklFY/z +natural-flavours.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM8aYjlkPSts9u/HHwG3MPWPqvYx1eQ8EyfsHdQZvQmH +natural-flavours.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxB8N1u+o/74IImggUHbW3l5TL6DhU2woDXxBS5h1e/tNlWpPWiAZUym8WQEARfPFwgKuz/lpGEPXHB4RjxBUO3XD06MqIltqAok231GB5JkjUxIV+0+prqNYn+69ddWGigNMHngy2x2K/hyb4nk2TmvqtYFPJAZvhv8YcVwQ6KZytWlOT0RtkLWr4NG+JpcUqFRbaAfD9Bb5xUTBmeEPTV2tE/XDOttA6unSl2bwZUhy6E5A5znk0/FashGCr/tpDeq2Sm7Fg4TGf/LX3TQU8myXL7aJxjOZlQ09LF/r4k8Vx7lQjZ6OF3UxIs52yrv5RaiIkCOb+FW6AlPSJZL9Jw== +natural-flavours ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM8aYjlkPSts9u/HHwG3MPWPqvYx1eQ8EyfsHdQZvQmH +natural-flavours ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxB8N1u+o/74IImggUHbW3l5TL6DhU2woDXxBS5h1e/tNlWpPWiAZUym8WQEARfPFwgKuz/lpGEPXHB4RjxBUO3XD06MqIltqAok231GB5JkjUxIV+0+prqNYn+69ddWGigNMHngy2x2K/hyb4nk2TmvqtYFPJAZvhv8YcVwQ6KZytWlOT0RtkLWr4NG+JpcUqFRbaAfD9Bb5xUTBmeEPTV2tE/XDOttA6unSl2bwZUhy6E5A5znk0/FashGCr/tpDeq2Sm7Fg4TGf/LX3TQU8myXL7aJxjOZlQ09LF/r4k8Vx7lQjZ6OF3UxIs52yrv5RaiIkCOb+FW6AlPSJZL9Jw== +netbox.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFtLKp5XuE2o/rC6Is8nAebfBlTO23n2uy5rTnGbh6MK +netbox.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBWgjnv2JxsoPSc3uGsV/8AcyHaxdRcZhO41qR1mfCOwHV/url8c69srx3k5s+dGwo+4Xiwgm6X4Zv0JdV/ALW2QWcBl0pSMansU/At0IUcEh5uPHqDn8iHaA5SFkCfAcfMLRgqIeloXTbCHdi5pVRjM1LhXjFBl6WAP7sDbA76SYuEb80ujZe1stojJbaHHMd9iEXmFdt5UZwktCqdsMFwNHTv1caf4Tc78CirBg3CqBVKWKHo4IXwYneBrX4CnBr9HJwaLVKzFZcg1TYFCuHfizOEKCOSsM1ZZA9l+68Oeza0oQq1PI0FvtpFPpWSRUN/OA1tPrJgcpnbEsf8Knr +netbox ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFtLKp5XuE2o/rC6Is8nAebfBlTO23n2uy5rTnGbh6MK +netbox ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBWgjnv2JxsoPSc3uGsV/8AcyHaxdRcZhO41qR1mfCOwHV/url8c69srx3k5s+dGwo+4Xiwgm6X4Zv0JdV/ALW2QWcBl0pSMansU/At0IUcEh5uPHqDn8iHaA5SFkCfAcfMLRgqIeloXTbCHdi5pVRjM1LhXjFBl6WAP7sDbA76SYuEb80ujZe1stojJbaHHMd9iEXmFdt5UZwktCqdsMFwNHTv1caf4Tc78CirBg3CqBVKWKHo4IXwYneBrX4CnBr9HJwaLVKzFZcg1TYFCuHfizOEKCOSsM1ZZA9l+68Oeza0oQq1PI0FvtpFPpWSRUN/OA1tPrJgcpnbEsf8Knr +network1.cloud.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB/g4FEHTUjsdpt++I+zCuBK8NIn+jyfIaRFbpUpJ4q0 +network1.cloud.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0pCxlzlimV9Yrz38ZNEYiAAG8hGGSGu3cvoAKA5oVHF0ht4Kd7uzOg03r1+4VcQ31F2SLUayEUpco9L7wpdAuOiOpYLGqedhRrHjSlLMvY8YN8OzppA7deFKYg5xJmRAz5uGRZ50jNXzjCd1C8UCv4ytSGR3o0o6Gs2j0NEq19nkKaSN2cqLhxL2XJgrF0IOfE25CnFDdWe2aS7RZ8ia0l4rZKJ9Hh8VzjBRgTpBwL+YENPell1NAWRgwAdCCroIwk2IFfpzLgnL9OufHeMFMVGp/jqm+OFX/dVp7qqkQe4TnRX9bgLHKNOdUAwFG0dh/q2vrZlvn57Nav2DmoFXH +network1.cloud ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB/g4FEHTUjsdpt++I+zCuBK8NIn+jyfIaRFbpUpJ4q0 +network1.cloud ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0pCxlzlimV9Yrz38ZNEYiAAG8hGGSGu3cvoAKA5oVHF0ht4Kd7uzOg03r1+4VcQ31F2SLUayEUpco9L7wpdAuOiOpYLGqedhRrHjSlLMvY8YN8OzppA7deFKYg5xJmRAz5uGRZ50jNXzjCd1C8UCv4ytSGR3o0o6Gs2j0NEq19nkKaSN2cqLhxL2XJgrF0IOfE25CnFDdWe2aS7RZ8ia0l4rZKJ9Hh8VzjBRgTpBwL+YENPell1NAWRgwAdCCroIwk2IFfpzLgnL9OufHeMFMVGp/jqm+OFX/dVp7qqkQe4TnRX9bgLHKNOdUAwFG0dh/q2vrZlvn57Nav2DmoFXH +nullsleep.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGEBbBWfDxURsUChomUCxt0cTXGt0tfLzcVDJrg50oK6 +nullsleep.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzJXI0yFebeqYl1tZICq8+B4WVyO9d9BvegKFxHaABeITyRfGpx/fO9gO7RgVKlpvOPI3fPWM7OiMwi471QNZcsEUxXshYgNfdiNCaMHcEBFYOx12moKhE1mo/KKyCdfhxel6Lt2Nq2sE2HpMo59vfM768RUCBlAIQWvfMUusnD47TO+sH5fE+MycKxDRg55kjGBB/K3+y+EO8mJ1ZV5CISlMCh8EL5HeOf8zh/ZX5B7v5PYlbKcyGBef0YjOulAoEal3XuqVnEF99bdgFCMdd/rOa/Cgq/44lubMBgwux770K/pgPz5OktOTFreH19P1lVmnOLQi2nGVue3Ljw8A4w== +nullsleep ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGEBbBWfDxURsUChomUCxt0cTXGt0tfLzcVDJrg50oK6 +nullsleep ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzJXI0yFebeqYl1tZICq8+B4WVyO9d9BvegKFxHaABeITyRfGpx/fO9gO7RgVKlpvOPI3fPWM7OiMwi471QNZcsEUxXshYgNfdiNCaMHcEBFYOx12moKhE1mo/KKyCdfhxel6Lt2Nq2sE2HpMo59vfM768RUCBlAIQWvfMUusnD47TO+sH5fE+MycKxDRg55kjGBB/K3+y+EO8mJ1ZV5CISlMCh8EL5HeOf8zh/ZX5B7v5PYlbKcyGBef0YjOulAoEal3XuqVnEF99bdgFCMdd/rOa/Cgq/44lubMBgwux770K/pgPz5OktOTFreH19P1lVmnOLQi2nGVue3Ljw8A4w== +object1.cloud.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA4Dhfslt5MLR8sUjcHgrNGS0G5B7luSyxV1YAswsDzB +object1.cloud.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvz6rFVP+51HpQs40aW1fJrgnc10uhlmYMv4+gMery4mGAC35IHxvUJmRfVUJgel6DQz0mkqC5h/Dt/212YTKERSCcpmmnH4tHiIWO/T1Op4luy54iiUxyYUc7wVmCwifvm0c3hy1/Lhi87EDp1Pf5+vsXLqPspvs/4krciMllTx/n3e1cYUrZF64c73nWYgIZk3rRWIB8wcD/0MT9ikOWtJdMXTyCT9gtDtBjLlY8X3UE0fd1n/kQNhifHCtGLoZUh1JF15rSwOkNNSLZ1LCMkxrRM96Gb9WdEIf+4shnKVX+mNpV/qBr3DSH1RdrtiB2Y91qJ7ORCUWGNbJUAlfl +object1.cloud ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA4Dhfslt5MLR8sUjcHgrNGS0G5B7luSyxV1YAswsDzB +object1.cloud ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvz6rFVP+51HpQs40aW1fJrgnc10uhlmYMv4+gMery4mGAC35IHxvUJmRfVUJgel6DQz0mkqC5h/Dt/212YTKERSCcpmmnH4tHiIWO/T1Op4luy54iiUxyYUc7wVmCwifvm0c3hy1/Lhi87EDp1Pf5+vsXLqPspvs/4krciMllTx/n3e1cYUrZF64c73nWYgIZk3rRWIB8wcD/0MT9ikOWtJdMXTyCT9gtDtBjLlY8X3UE0fd1n/kQNhifHCtGLoZUh1JF15rSwOkNNSLZ1LCMkxrRM96Gb9WdEIf+4shnKVX+mNpV/qBr3DSH1RdrtiB2Y91qJ7ORCUWGNbJUAlfl +potassium-benzoate.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHQTR2Zui8kaLLiQeBFDkkvdVEJ6+rL9Ez2QIMWJgu0Z +potassium-benzoate.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHQTR2Zui8kaLLiQeBFDkkvdVEJ6+rL9Ez2QIMWJgu0Z +potassium-benzoate.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO4ZqQ8XG7fmM1o6v6g3Ac+ljP6j4HnyrPA9dNjVWMxjM0KhxOtKWQZufAFcLBvmh/myK13cJnnrHYjq+ZIc4SH2LRTW/nu9Tdsj/BPbCiNQrAk8JLv4fJJVhysT3XWRlvJaN7xTwUdQ+EEPSHFj0KB5OevONwlNqQ+2GKGrkDRnslxY1Twgj+6WxGvY+mFBpid+v2K8ypb96zNOI2azwUvRMrFpgntRrqCiWbvsy4KZEikhSv/VumTb9YlyyjqMhqJgv7zKAbYf/VrlSHvO1pb9lbEGZmaS1P27m7sr5dfHMy5YeAG4NCwtsXXz8vz9zl9LzS08/Eb93rk7NiX17r +potassium-benzoate.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO4ZqQ8XG7fmM1o6v6g3Ac+ljP6j4HnyrPA9dNjVWMxjM0KhxOtKWQZufAFcLBvmh/myK13cJnnrHYjq+ZIc4SH2LRTW/nu9Tdsj/BPbCiNQrAk8JLv4fJJVhysT3XWRlvJaN7xTwUdQ+EEPSHFj0KB5OevONwlNqQ+2GKGrkDRnslxY1Twgj+6WxGvY+mFBpid+v2K8ypb96zNOI2azwUvRMrFpgntRrqCiWbvsy4KZEikhSv/VumTb9YlyyjqMhqJgv7zKAbYf/VrlSHvO1pb9lbEGZmaS1P27m7sr5dfHMy5YeAG4NCwtsXXz8vz9zl9LzS08/Eb93rk7NiX17r +potassium-benzoate ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHQTR2Zui8kaLLiQeBFDkkvdVEJ6+rL9Ez2QIMWJgu0Z +potassium-benzoate ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHQTR2Zui8kaLLiQeBFDkkvdVEJ6+rL9Ez2QIMWJgu0Z +potassium-benzoate ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO4ZqQ8XG7fmM1o6v6g3Ac+ljP6j4HnyrPA9dNjVWMxjM0KhxOtKWQZufAFcLBvmh/myK13cJnnrHYjq+ZIc4SH2LRTW/nu9Tdsj/BPbCiNQrAk8JLv4fJJVhysT3XWRlvJaN7xTwUdQ+EEPSHFj0KB5OevONwlNqQ+2GKGrkDRnslxY1Twgj+6WxGvY+mFBpid+v2K8ypb96zNOI2azwUvRMrFpgntRrqCiWbvsy4KZEikhSv/VumTb9YlyyjqMhqJgv7zKAbYf/VrlSHvO1pb9lbEGZmaS1P27m7sr5dfHMy5YeAG4NCwtsXXz8vz9zl9LzS08/Eb93rk7NiX17r +potassium-benzoate ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO4ZqQ8XG7fmM1o6v6g3Ac+ljP6j4HnyrPA9dNjVWMxjM0KhxOtKWQZufAFcLBvmh/myK13cJnnrHYjq+ZIc4SH2LRTW/nu9Tdsj/BPbCiNQrAk8JLv4fJJVhysT3XWRlvJaN7xTwUdQ+EEPSHFj0KB5OevONwlNqQ+2GKGrkDRnslxY1Twgj+6WxGvY+mFBpid+v2K8ypb96zNOI2azwUvRMrFpgntRrqCiWbvsy4KZEikhSv/VumTb9YlyyjqMhqJgv7zKAbYf/VrlSHvO1pb9lbEGZmaS1P27m7sr5dfHMy5YeAG4NCwtsXXz8vz9zl9LzS08/Eb93rk7NiX17r +prometheus.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN288oTaY0gEgfglLpY53voc5DtppHKBBwRXBfZ2J0QJ +prometheus.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzeZMYqzT7iLdWQrQX8PnnJBravY5cTRnHc1OzrgGWQLu9WF7eVYo12qh5Y+WTJOjlYWu2+VBEhxGza+02JLLUSLJ4jOi4Dm8hWMUEjw8xh8eyDBmnydeQMEKZBTho9E6tL6ewLv1kR4fC8cXgJo3Pb9PAZTXHfsd1gwTQULTpkXoVEUp847LSRiw8uZSwfGQRmeLVmsz7IL0oglLf0uom/g6wXyYOdcouhmfurTfBS2Dh2KNhfu+lZ93Dtdzxnc4rBAdm2nZwAHmiames+x5ixHG23tEFgotDLG4cCwGJaT/sZOlQypy1XhsxNdOmF0U/5ZE32fn/hTyC3M6tKohT +prometheus ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN288oTaY0gEgfglLpY53voc5DtppHKBBwRXBfZ2J0QJ +prometheus ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzeZMYqzT7iLdWQrQX8PnnJBravY5cTRnHc1OzrgGWQLu9WF7eVYo12qh5Y+WTJOjlYWu2+VBEhxGza+02JLLUSLJ4jOi4Dm8hWMUEjw8xh8eyDBmnydeQMEKZBTho9E6tL6ewLv1kR4fC8cXgJo3Pb9PAZTXHfsd1gwTQULTpkXoVEUp847LSRiw8uZSwfGQRmeLVmsz7IL0oglLf0uom/g6wXyYOdcouhmfurTfBS2Dh2KNhfu+lZ93Dtdzxnc4rBAdm2nZwAHmiames+x5ixHG23tEFgotDLG4cCwGJaT/sZOlQypy1XhsxNdOmF0U/5ZE32fn/hTyC3M6tKohT +router1.cloud.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBKUnCzz4mfm+5JLGlgQk9rynlrdqLij3tkbhslhMkDW +router1.cloud.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2wTcevm1ec8UnE2R04Aw5QcCFteKzVJSCr+wYTAdPHRSBu/0Zedu3jVt79wkpt5Jsif9y3YV+IgIdJbETUB4fPidrSb1vOsSt4Z3cq2RVsf3RWgKOoHpnX50Kc9VYhZmHU8+IWSPGtjOkXDI1oCSgZjykj1+b02bbAsEoF137vplVEhzzyl8kxdQZ99BcI6EQ0K+ee5mLClAQ9DbLeIQtR723ipzuP13VveARmOj9C9fqxBWTWuCrS6MrUakx0R+YlfJU9PeeSKqiXbonbWdBtVXORpI5rNQGXjPgsBmbnSnKRqeQXHKEPDT93dVoeMVKYa4fCdE7PUY7PZcBI8/F +router1.cloud ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBKUnCzz4mfm+5JLGlgQk9rynlrdqLij3tkbhslhMkDW +router1.cloud ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC2wTcevm1ec8UnE2R04Aw5QcCFteKzVJSCr+wYTAdPHRSBu/0Zedu3jVt79wkpt5Jsif9y3YV+IgIdJbETUB4fPidrSb1vOsSt4Z3cq2RVsf3RWgKOoHpnX50Kc9VYhZmHU8+IWSPGtjOkXDI1oCSgZjykj1+b02bbAsEoF137vplVEhzzyl8kxdQZ99BcI6EQ0K+ee5mLClAQ9DbLeIQtR723ipzuP13VveARmOj9C9fqxBWTWuCrS6MrUakx0R+YlfJU9PeeSKqiXbonbWdBtVXORpI5rNQGXjPgsBmbnSnKRqeQXHKEPDT93dVoeMVKYa4fCdE7PUY7PZcBI8/F +rt.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGhh51yhgdLUI9bq69aqtw1rrPo/y8O5339gaBFEH2am +rt.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvHWacOC003Qkp9hzBOBeH52MvYJkvSSbRgKdmaUVR5HB/MlqPNnp3tfw1kF3gdtM0PUU1NbZ94c7rRWRWYIOavkNr6hXzDFHACX7VGub8Hg6024IuoVRnmvgDcm6rnRxedvhN4OLpXlePXcmbtXQ302861cyKXTAzup0O5hAbuEqGvUhtR8bt3ATW5ucYmU+JinlV6gMcCz6UH69X3dj037mu5IxLJoSaknT6v9Zm5tsK2EfFe6/CqLN6tKyBuBWegdcXTJ1hNVCAIL5Ayz3wqcuPcRV25hTFddcNXUYGSnwUUk2rO1sSb0X9/RQ/OiH5bdVtSel0gi28Ap5+d0jd +rt ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGhh51yhgdLUI9bq69aqtw1rrPo/y8O5339gaBFEH2am +rt ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvHWacOC003Qkp9hzBOBeH52MvYJkvSSbRgKdmaUVR5HB/MlqPNnp3tfw1kF3gdtM0PUU1NbZ94c7rRWRWYIOavkNr6hXzDFHACX7VGub8Hg6024IuoVRnmvgDcm6rnRxedvhN4OLpXlePXcmbtXQ302861cyKXTAzup0O5hAbuEqGvUhtR8bt3ATW5ucYmU+JinlV6gMcCz6UH69X3dj037mu5IxLJoSaknT6v9Zm5tsK2EfFe6/CqLN6tKyBuBWegdcXTJ1hNVCAIL5Ayz3wqcuPcRV25hTFddcNXUYGSnwUUk2rO1sSb0X9/RQ/OiH5bdVtSel0gi28Ap5+d0jd +shibboleth.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZA1kQH5ItdTxZfp7ORNAm+oNRvniTZJTg+TdDRcRGN +shibboleth.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDB8A/QDCg02J7jdv7SiL/Ri61uuuHtECuhKBl4qFC53XxOSeiNOcnD2dHP9yn/cK6SVoTZXLmMVBFwxSHgGnE3K+sknGPf9h3a44Avt1HvDOeZxEWisu08Ua4SrStrEL1cc41Q/HtklAuaEQz6uLPae1UgJYW694YKxSGDMdr9/JPdUSFfPSY2RaNSVPIgXKzIa5j4HtRwCATngGz3TrOAl7ovXkuYnfE9PDlTRY64BxRWvZaZFREuBpmyhjD7inE1zG4TSX4sL31cq0iv9mBso/yhB2VADGc/kVi2GyS+mZ5ALhOYB3jtYXMdMM29nzB0rfdwSsj6YYuEYgto9Yar +shibboleth ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDZA1kQH5ItdTxZfp7ORNAm+oNRvniTZJTg+TdDRcRGN +shibboleth ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDB8A/QDCg02J7jdv7SiL/Ri61uuuHtECuhKBl4qFC53XxOSeiNOcnD2dHP9yn/cK6SVoTZXLmMVBFwxSHgGnE3K+sknGPf9h3a44Avt1HvDOeZxEWisu08Ua4SrStrEL1cc41Q/HtklAuaEQz6uLPae1UgJYW694YKxSGDMdr9/JPdUSFfPSY2RaNSVPIgXKzIa5j4HtRwCATngGz3TrOAl7ovXkuYnfE9PDlTRY64BxRWvZaZFREuBpmyhjD7inE1zG4TSX4sL31cq0iv9mBso/yhB2VADGc/kVi2GyS+mZ5ALhOYB3jtYXMdMM29nzB0rfdwSsj6YYuEYgto9Yar +sodium-benzoate.csclub.uwaterloo.ca ssh-ed25519 +AAAAC3NzaC1lZDI1NTE5AAAAIAqTJmG62zeZGMmHOD+caw0XvGznpfhPaAJEJnWrMdRr +sodium-benzoate.csclub.uwaterloo.ca ssh-rsa +AAAAB3NzaC1yc2EAAAABIwAAAQEA6rKVV1vf0TEM+80e2uCcsoTvoLQMNJHBvRnBIlrSBTZRctVFAydGLa4UhPdNIE/n/83DuVytZ4c0VS3ASi+7O+AA+NlW+KayKYnD6afzqxRrbMQPdOhFu4GN0q0MXJs3xIl1g0+OmI7RUdesvbZYJBY0uCsjH2Y6u/paqmTkMyr11Tk12iVEBvwnaH1HBdsN4ZnHGQWA58mUYZHBz1TxoGCp4o7vMStoOlJb5a2xS39RhPHp67lA5H0/51uwG6Lj5NHxr8w2OBst6722cxF2/fxl03LmEQM17uy9muiAi7igggO0Iu2IHMpNlanMRnkzypuGqKN1LHWJ1rJNr1MZlQ== +sodium-benzoate ssh-ed25519 +AAAAC3NzaC1lZDI1NTE5AAAAIAqTJmG62zeZGMmHOD+caw0XvGznpfhPaAJEJnWrMdRr +sodium-benzoate ssh-rsa +AAAAB3NzaC1yc2EAAAABIwAAAQEA6rKVV1vf0TEM+80e2uCcsoTvoLQMNJHBvRnBIlrSBTZRctVFAydGLa4UhPdNIE/n/83DuVytZ4c0VS3ASi+7O+AA+NlW+KayKYnD6afzqxRrbMQPdOhFu4GN0q0MXJs3xIl1g0+OmI7RUdesvbZYJBY0uCsjH2Y6u/paqmTkMyr11Tk12iVEBvwnaH1HBdsN4ZnHGQWA58mUYZHBz1TxoGCp4o7vMStoOlJb5a2xS39RhPHp67lA5H0/51uwG6Lj5NHxr8w2OBst6722cxF2/fxl03LmEQM17uy9muiAi7igggO0Iu2IHMpNlanMRnkzypuGqKN1LHWJ1rJNr1MZlQ== +strombola.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICcAk96AtqG1gJd0yc5YQbBHZlzq8/0MXf2b/q7Z3ZGo +strombola.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZhdxHj587MfoUcfTR72ouS1VeRaivD9ZpbAULl7od73Uo4xff/sIuT4hhm+gyQGW9gKA1mQfuhJ34nXnEulaWk3R8dWMxwn0lRElvbIG+bcrCCinKNU2RRoLOCh2cmri4bEF8PaejN/kt91CSRRT4Sko1tG7P58GedrOAxJDmsq7zHoTm9JTAJBa9AuPo6TgurXLN+6zQ+eCvBERcMgPLG8G2bhZg37c/scdI59s0om1oc6LcOSgGkF3yxmBmkSxvworr8rCXzVWhUvbNAdd0P8CI0zBOxxWuUi1/Q0PeRyFmI/T+6DvOuzXKdQgpOZj9dR4rfJb04V/s3C3d+DA1 +strombola ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICcAk96AtqG1gJd0yc5YQbBHZlzq8/0MXf2b/q7Z3ZGo +strombola ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZhdxHj587MfoUcfTR72ouS1VeRaivD9ZpbAULl7od73Uo4xff/sIuT4hhm+gyQGW9gKA1mQfuhJ34nXnEulaWk3R8dWMxwn0lRElvbIG+bcrCCinKNU2RRoLOCh2cmri4bEF8PaejN/kt91CSRRT4Sko1tG7P58GedrOAxJDmsq7zHoTm9JTAJBa9AuPo6TgurXLN+6zQ+eCvBERcMgPLG8G2bhZg37c/scdI59s0om1oc6LcOSgGkF3yxmBmkSxvworr8rCXzVWhUvbNAdd0P8CI0zBOxxWuUi1/Q0PeRyFmI/T+6DvOuzXKdQgpOZj9dR4rfJb04V/s3C3d+DA1 +sucrose.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBxM7kOFiqijhaYQyXADyXk0ktjp4OvZTk/auOSuYltw +sucrose.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPDNlOisklAHEpwXuw+HhHK8WzNRX+unks07c5JPOwDHKdwNj/q0H3Jp1avsfGwwVM3P+mALxi0gk2GBCT4MvOuv0GLiNoKJWz4mwADZcCb7FEdKqlRdpckVcHRNJSIA5lRrkb6IlegF0o8f+y5c+zTZE/4Pa61bIIUvU0hS4rtdvIaCd9x066Rutgl3taQ2tW8btmK7F+pWoTKiaz9KTt0hUcr/SGSrMtI9VNdD1Dt7sAyTqYz6v2OLRlTTF1Q5u2eYlNy9s7dlwHrHrwNgGildU2S/WvIZ0hLBLfU5yCuOocJUGoQdjCA/IbHVnl5jFhDiEJ6eD6jo23nVFWwnNL +sucrose ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBxM7kOFiqijhaYQyXADyXk0ktjp4OvZTk/auOSuYltw +sucrose ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPDNlOisklAHEpwXuw+HhHK8WzNRX+unks07c5JPOwDHKdwNj/q0H3Jp1avsfGwwVM3P+mALxi0gk2GBCT4MvOuv0GLiNoKJWz4mwADZcCb7FEdKqlRdpckVcHRNJSIA5lRrkb6IlegF0o8f+y5c+zTZE/4Pa61bIIUvU0hS4rtdvIaCd9x066Rutgl3taQ2tW8btmK7F+pWoTKiaz9KTt0hUcr/SGSrMtI9VNdD1Dt7sAyTqYz6v2OLRlTTF1Q5u2eYlNy9s7dlwHrHrwNgGildU2S/WvIZ0hLBLfU5yCuOocJUGoQdjCA/IbHVnl5jFhDiEJ6eD6jo23nVFWwnNL +taurine.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOFu35kh6YDpTfwmtFpdB8ZUl5hAy4l3q9QGCYL50JFD +taurine.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAx69z3QCtSccheSYSqpMHeJUuoco3rfNZfCNuopQDc87RRO9vhqMg1K8cE0RiViY8/ksQ0VDT3LC2WyBCa2p1NJ+TU+ZB4bKpcR0SAH1/pagZvaI+wXq4jYeGzZSHnh2Uh0n5Tt2AycU8sOGs2OyPP3/uYuXOa3DW52ooZsvV61pSJwB7Kne3P/MpXTsOC6zcENVnXypv5dWeWY/0jOYO2WMBkjIsYdqj/4sPx0IIIqR9OKGuxaDVbcXhkC7Uqz5NOQ8r/lfueojWePo2ExuJUsyzv5FFD9Lls3U+gjekTQvNZtyqcx1hCfEFn3Hz87wZvhV6F9394zEU9A0z8X8nMQ== +taurine ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOFu35kh6YDpTfwmtFpdB8ZUl5hAy4l3q9QGCYL50JFD +taurine ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAx69z3QCtSccheSYSqpMHeJUuoco3rfNZfCNuopQDc87RRO9vhqMg1K8cE0RiViY8/ksQ0VDT3LC2WyBCa2p1NJ+TU+ZB4bKpcR0SAH1/pagZvaI+wXq4jYeGzZSHnh2Uh0n5Tt2AycU8sOGs2OyPP3/uYuXOa3DW52ooZsvV61pSJwB7Kne3P/MpXTsOC6zcENVnXypv5dWeWY/0jOYO2WMBkjIsYdqj/4sPx0IIIqR9OKGuxaDVbcXhkC7Uqz5NOQ8r/lfueojWePo2ExuJUsyzv5FFD9Lls3U+gjekTQvNZtyqcx1hCfEFn3Hz87wZvhV6F9394zEU9A0z8X8nMQ== +test-ipv6.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILYdv1TC4b7N8S0/t6Xvyft0mjrM9d4b54Frj8eQLLQx +test-ipv6.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIgYxewDMHZrNw1yRthPwQxcGD7CBFEWhAG5lKn51lq/uynucz5HBfouy7LU9PTyAJa5FsYVK23eDEHCppYlL+3TwU3gYyC0mEzsM9g2oJPCxvqH59p4qftyNKF9sgv9bkadYf6NT6MMtBlWYN7xLZPBfJkshQEQu85S+zD3JHO8bF7etwWn3sX7gbTheO0LD8jzj6G2AyRTWpkk5v8O7kBiwiZOoC2ehcSfqaxAVqxYbawi+pQ5iXfX8A5RXduezH2XcRKD2GG1/f2nMALXrEq8OrRH7UVFJUPPViQxNnk4D4w2THkNaEnT2/8YcxelzFFY5EhW9pEOBXjZeLRzGr +test-ipv6 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILYdv1TC4b7N8S0/t6Xvyft0mjrM9d4b54Frj8eQLLQx +test-ipv6 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIgYxewDMHZrNw1yRthPwQxcGD7CBFEWhAG5lKn51lq/uynucz5HBfouy7LU9PTyAJa5FsYVK23eDEHCppYlL+3TwU3gYyC0mEzsM9g2oJPCxvqH59p4qftyNKF9sgv9bkadYf6NT6MMtBlWYN7xLZPBfJkshQEQu85S+zD3JHO8bF7etwWn3sX7gbTheO0LD8jzj6G2AyRTWpkk5v8O7kBiwiZOoC2ehcSfqaxAVqxYbawi+pQ5iXfX8A5RXduezH2XcRKD2GG1/f2nMALXrEq8OrRH7UVFJUPPViQxNnk4D4w2THkNaEnT2/8YcxelzFFY5EhW9pEOBXjZeLRzGr +web1.cloud.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIItZUg1AQdug+YyJmBzOVmSZc500Mr3XvccJocAu6u7v +web1.cloud.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+RpVEcnBzPsnknOW32ykx+2pf/yDV+GOsZGxyDqawN7v5FhI9CzNGgoPmPMMsA38PYF9JEMEeL11qKX85NZVtUDpFEBoS+6Qnc689rNuw8nI36L6F7bGbYavbod1/AaHKOCk6LjDi5VXtH/mvyvVJdfJtigrufLVTQut5qZK+uuVY8sCbuscKS49pZRYy9hViP90aVE/2wnr/AyxowCRm7klcmbpeTemho0pgzAVibkJqSpT3rBVLx4eShkiz0hNxQrxOmaAKpm7Jh5StSnGBM94Hwaak1zqBUgA3mO+jmBjGm5seJVKozY5FeM42XVfLeF3duXtQnaQ/bUe9Ov8J +web1.cloud ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIItZUg1AQdug+YyJmBzOVmSZc500Mr3XvccJocAu6u7v +web1.cloud ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+RpVEcnBzPsnknOW32ykx+2pf/yDV+GOsZGxyDqawN7v5FhI9CzNGgoPmPMMsA38PYF9JEMEeL11qKX85NZVtUDpFEBoS+6Qnc689rNuw8nI36L6F7bGbYavbod1/AaHKOCk6LjDi5VXtH/mvyvVJdfJtigrufLVTQut5qZK+uuVY8sCbuscKS49pZRYy9hViP90aVE/2wnr/AyxowCRm7klcmbpeTemho0pgzAVibkJqSpT3rBVLx4eShkiz0hNxQrxOmaAKpm7Jh5StSnGBM94Hwaak1zqBUgA3mO+jmBjGm5seJVKozY5FeM42XVfLeF3duXtQnaQ/bUe9Ov8J +yerba-mate.csclub.uwaterloo.ca ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILo5PcuOEnGo1KAIzMP/z3TjHnQqAre2xsumeAeCkNPj +yerba-mate.csclub.uwaterloo.ca ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOuKRa3mQ9ljfSVmKcX4eXNr4impOHLl4VCWfrfi6fsQnBtgL9tpCZcRKDIqdgIHihqVKGsa4q5pCt9wIZyXnYkAC61+aoWCWJYON6WDacr3WAVQ7kRKR+MX0VSZrUm45WcjQIxfNA2X63DbmOexN5aUjlqwfFdbGGkSn/tQTGblmk35q5ZSyPrS2RvaneCyC/3jM8Al//aaPdN0j+CJF41GcToEbHBqSgV7YVR6AdWuYPE5dlZmZ4Ce9xh9mcWVd7NqXcWR76r7vIVO3ZwzJZ2ux7X/TG+4gzTigHlRw0vEGgVGtuxRuseP/MAX3w2euMebtifEtvAbJGHlpjJ4SV +yerba-mate ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILo5PcuOEnGo1KAIzMP/z3TjHnQqAre2xsumeAeCkNPj +yerba-mate ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOuKRa3mQ9ljfSVmKcX4eXNr4impOHLl4VCWfrfi6fsQnBtgL9tpCZcRKDIqdgIHihqVKGsa4q5pCt9wIZyXnYkAC61+aoWCWJYON6WDacr3WAVQ7kRKR+MX0VSZrUm45WcjQIxfNA2X63DbmOexN5aUjlqwfFdbGGkSn/tQTGblmk35q5ZSyPrS2RvaneCyC/3jM8Al//aaPdN0j+CJF41GcToEbHBqSgV7YVR6AdWuYPE5dlZmZ4Ce9xh9mcWVd7NqXcWR76r7vIVO3ZwzJZ2ux7X/TG+4gzTigHlRw0vEGgVGtuxRuseP/MAX3w2euMebtifEtvAbJGHlpjJ4SV diff --git a/roles/core/files/sshd_config b/roles/core/files/sshd_config new file mode 100644 index 0000000..988faa0 --- /dev/null +++ b/roles/core/files/sshd_config @@ -0,0 +1,65 @@ +# Package generated configuration file +# See the sshd(8) manpage for details + +# What ports, IPs and protocols we listen for +Port 22 + +# Use only protocol version 2 +Protocol 2 + +# HostKeys for protocol version 2 +HostKey /etc/ssh/ssh_host_ed25519_key +HostKey /etc/ssh/ssh_host_rsa_key +KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 +Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr +MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com + +# Privilege Separation is turned on for security +UsePrivilegeSeparation yes + +# Logging +SyslogFacility AUTH +LogLevel INFO + +# Authentication +UsePAM yes +StrictModes yes +PermitRootLogin yes +LoginGraceTime 120 +MaxStartups 25:30:100 + +# password authentication via PAM (single sign-on initial case) +PasswordAuthentication yes +PermitEmptyPasswords no + +# keyboard-interactive authentication (like password, works with +needchange) +ChallengeResponseAuthentication yes + +# kerberos (single sign-on already authenticated case) +GSSAPIAuthentication yes +GSSAPIKeyExchange yes +GSSAPICleanupCredentials yes +GSSAPIStrictAcceptorCheck no + +# public key authentication with authorized_keys +PubkeyAuthentication yes + +# no single sign-on via hosts.equiv; we use kerberos +HostbasedAuthentication no +IgnoreRhosts yes + +# no builtin kerberos auth with password, we do the same via pam_krb5 +KerberosAuthentication no + +# allow X forwarding +X11Forwarding yes +X11DisplayOffset 10 + +# PAM prints these already +PrintMotd no +PrintLastLog no + +# Allow client to pass locale environment variables +AcceptEnv LANG LC_* + +Subsystem sftp /usr/lib/openssh/sftp-server diff --git a/roles/core/handlers/main.yml b/roles/core/handlers/main.yml new file mode 100644 index 0000000..140634e --- /dev/null +++ b/roles/core/handlers/main.yml @@ -0,0 +1,5 @@ +--- + +- import_tasks: remote_access.yml +- import_tasks: rsyslog.yml +- import_tasks: ntp.yml diff --git a/roles/core/handlers/ntp.yml b/roles/core/handlers/ntp.yml new file mode 100644 index 0000000..1c19540 --- /dev/null +++ b/roles/core/handlers/ntp.yml @@ -0,0 +1,12 @@ +--- + +- name: Start ntp + service: + name: ntp + state: started + enabled: true + +- name: Restart ntp + service: + name: ntp + state: restarted diff --git a/roles/core/handlers/remote_access.yml b/roles/core/handlers/remote_access.yml new file mode 100644 index 0000000..25fd500 --- /dev/null +++ b/roles/core/handlers/remote_access.yml @@ -0,0 +1,12 @@ +--- + +- name: Start OpenSSH server + service: + name: sshd + state: started + enabled: true + +- name: Restart OpenSSH server + service: + name: sshd + state: restarted diff --git a/roles/core/handlers/rsyslog.yml b/roles/core/handlers/rsyslog.yml new file mode 100644 index 0000000..cd752d1 --- /dev/null +++ b/roles/core/handlers/rsyslog.yml @@ -0,0 +1,12 @@ +--- + +- name: Start rsyslog + service: + name: rsyslog + state: started + enabled: true + +- name: Restart rsyslog + service: + name: rsyslog + state: restarted diff --git a/roles/core/tasks/dns.yml b/roles/core/tasks/dns.yml new file mode 100644 index 0000000..b4738c0 --- /dev/null +++ b/roles/core/tasks/dns.yml @@ -0,0 +1,15 @@ +--- +- name: Disable resolvconf + service: + name: '{{ item }}' + state: stopped + enabled: false + with_items: + - resolvconf + - systemd-resolved + ignore_errors: true +- name: Configure /etc/resolv.conf + copy: + src: resolv.conf + dest: /etc/resolv.conf + attributes: 'ie' diff --git a/roles/core/tasks/logging.yml b/roles/core/tasks/logging.yml new file mode 100644 index 0000000..f7570aa --- /dev/null +++ b/roles/core/tasks/logging.yml @@ -0,0 +1,16 @@ +--- + +- name: Install rsyslog + apt: + name: rsyslog + cache_valid_time: 3600 + notify: + - Start rsyslog + +- name: Configure rsyslog + copy: + src: csclub.rsyslog.conf + dest: /etc/rsyslog.d/csclub.conf + notify: + - Restart rsyslog + diff --git a/roles/core/tasks/main.yml b/roles/core/tasks/main.yml new file mode 100644 index 0000000..88ee4f9 --- /dev/null +++ b/roles/core/tasks/main.yml @@ -0,0 +1,8 @@ +--- +- import_tasks: dns.yml +- import_tasks: mirrors.yml +- import_tasks: remote_access.yml +- import_tasks: ntp.yml + when: not(ansible_virtualization_role == 'guest' and ansible_virtualization_type == 'lxc') +- import_tasks: logging.yml +- import_tasks: packages.yml diff --git a/roles/core/tasks/mirrors.yml b/roles/core/tasks/mirrors.yml new file mode 100644 index 0000000..279ae08 --- /dev/null +++ b/roles/core/tasks/mirrors.yml @@ -0,0 +1,20 @@ +--- +- name: Configure /etc/apt/sources.list + template: + src: '{{ ansible_distribution | lower}}.sources.list' + dest: /etc/apt/sources.list + mode: 0644 + owner: root + group: root + +- name: Add debian.csclub.uwaterloo.ca GPG key + apt_key: + url: http://debian.csclub.uwaterloo.ca/csclub.asc + state: present +- name: Add debian.csclub.uwaterloo.ca repository + apt_repository: + repo: '{{ item }}' + state: present + with_items: + - 'deb http://debian.csclub.uwaterloo.ca/ {{ ansible_distribution_release }} main' + - 'deb-src http://debian.csclub.uwaterloo.ca/ {{ ansible_distribution_release }} main' diff --git a/roles/core/tasks/ntp.yml b/roles/core/tasks/ntp.yml new file mode 100644 index 0000000..0860cb3 --- /dev/null +++ b/roles/core/tasks/ntp.yml @@ -0,0 +1,15 @@ +--- + +- name: Install ntp + apt: + name: ntp + cache_valid_time: 3600 + notify: + - Start ntp + +- name: Copy ntp configuration + copy: + src: ntp.conf + dest: /etc/ntp.conf + notify: + - Restart ntp diff --git a/roles/core/tasks/packages.yml b/roles/core/tasks/packages.yml new file mode 100644 index 0000000..f722a19 --- /dev/null +++ b/roles/core/tasks/packages.yml @@ -0,0 +1,131 @@ +--- + +- name: Install shells + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - bash + - bash-completion + - bash-doc + - zsh + - zsh-doc + - dash + - ksh + - tcsh + - csh + - rc + +- name: Install editors + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - vim-nox + - ed + - nano + +- name: Install words + apt: + name: wamerican-insane + cache_valid_time: 3600 + +- name: Install utils + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - acl + - less + - lsof + - bc + - dc + - psmisc + - procps + - htop + - schedtool + - pciutils + - iftop + - attr + - tree + - parted + - rsync + +- name: Install network tools + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - iotop + - iputils-ping + - iputils-arping + - traceroute + - telnet + - iproute2 + - ethtool + - dnsutils + - whois + - wget + - curl + - netcat-traditional + - netcat-openbsd + - vlan + - bridge-utils + - tcpdump + - tshark + - ftp + - tftp + +- name: Install terminal multiplexers + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - tmux + - screen + +- name: Install compression tools + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - bzip2 + - gzip + - pax + - lzma + - xz-utils + - cpio + +- name: Install ncurses + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - ncurses-bin + - ncurses-term + +- name: Install Debian package management tools + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - aptitude + - dselect + +- name: Install gpg + apt: + name: gnupg + cache_valid_time: 3600 + +- name: Install man pages + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - manpages + - info + +- name: Install molly-guard + apt: + name: molly-guard + cache_valid_time: 3600 diff --git a/roles/core/tasks/remote_access.yml b/roles/core/tasks/remote_access.yml new file mode 100644 index 0000000..be30785 --- /dev/null +++ b/roles/core/tasks/remote_access.yml @@ -0,0 +1,33 @@ +--- + +- name: Install SSH server + apt: + name: openssh-server + cache_valid_time: 3600 + notify: + - Start OpenSSH server + +- name: Install packages for remote access + apt: + name: '{{ item }}' + cache_valid_time: 3600 + with_items: + - openssh-client + - mosh + +- name: Configure OpenSSH server + copy: + src: sshd_config + dest: /etc/ssh/sshd_config + notify: + - Restart OpenSSH server + +- name: Configure OpenSSH + copy: + src: '{{ item.src }}' + dest: '{{ item.dest }}' + with_items: + - src: ssh_config + dest: /etc/ssh/ssh_config + - src: ssh_known_hosts + dest: /etc/ssh/ssh_known_hosts diff --git a/roles/core/templates/ubuntu.sources.list b/roles/core/templates/ubuntu.sources.list new file mode 100644 index 0000000..307ef86 --- /dev/null +++ b/roles/core/templates/ubuntu.sources.list @@ -0,0 +1,57 @@ +## Note, this file is written by cloud-init on first boot of an instance +## modifications made here will not survive a re-bundle. +## if you wish to make changes you can: +## a.) add 'apt_preserve_sources_list: true' to /etc/cloud/cloud.cfg +## or do the same in user-data +## b.) add sources in /etc/apt/sources.list.d +## c.) make changes to template file /etc/cloud/templates/sources.list.tmpl + +# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to +# newer versions of the distribution. +deb http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }} main restricted +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }} main restricted + +## Major bug fix updates produced after the final release of the +## distribution. +deb http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }}-updates main restricted +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }}-updates main restricted + +## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu +## team. Also, please note that software in universe WILL NOT receive any +## review or updates from the Ubuntu security team. +deb http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }} universe +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }} universe +deb http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }}-updates universe +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }}-updates universe + +## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu +## team, and may not be under a free licence. Please satisfy yourself as to +## your rights to use the software. Also, please note that software in +## multiverse WILL NOT receive any review or updates from the Ubuntu +## security team. +deb http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }} multiverse +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }} multiverse +deb http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }}-updates multiverse +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }}-updates multiverse + +## N.B. software from this repository may not have been tested as +## extensively as that contained in the main release, although it includes +## newer versions of some applications which may provide useful features. +## Also, please note that software in backports WILL NOT receive any review +## or updates from the Ubuntu security team. +deb http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }}-backports main restricted universe multiverse +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu/ {{ ansible_distribution_release }}-backports main restricted universe multiverse + +deb http://mirror.csclub.uwaterloo.ca/ubuntu {{ ansible_distribution_release }}-security main restricted +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu {{ ansible_distribution_release }}-security main restricted +deb http://mirror.csclub.uwaterloo.ca/ubuntu {{ ansible_distribution_release }}-security universe +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu {{ ansible_distribution_release }}-security universe +deb http://mirror.csclub.uwaterloo.ca/ubuntu {{ ansible_distribution_release }}-security multiverse +deb-src http://mirror.csclub.uwaterloo.ca/ubuntu {{ ansible_distribution_release }}-security multiverse + +## Uncomment the following two lines to add software from Canonical's +## 'partner' repository. +## This software is not part of Ubuntu, but is offered by Canonical and the +## respective vendors as a service to Ubuntu users. +# deb http://archive.canonical.com/ubuntu {{ ansible_distribution_release }} partner +# deb-src http://archive.canonical.com/ubuntu {{ ansible_distribution_release }} partner