Commit 4bc2c406 authored by nanahira's avatar nanahira

update

parent 835ca1db
...@@ -2,7 +2,7 @@ version: '2.4' ...@@ -2,7 +2,7 @@ version: '2.4'
services: services:
apt-cacher-ng: apt-cacher-ng:
restart: always restart: always
image: git-registry.mycard.moe/nanahira/apt-cacher-ng-docker:latest image: git-registry.moenext.com/nanahira/apt-cacher-ng-docker:latest
dns: {{dns}} dns: {{dns}}
ports: ports:
{% if address %} {% if address %}
......
...@@ -3,7 +3,7 @@ services: ...@@ -3,7 +3,7 @@ services:
{% for instance in instances %} {% for instance in instances %}
attacker-{{ instance.name }}: attacker-{{ instance.name }}:
restart: always restart: always
image: git-registry.mycard.moe/nanahira/dice-attacker:master image: git-registry.moenext.com/nanahira/dice-attacker:master
network_mode: host network_mode: host
environment: environment:
PARELLEL: '{{instance.count}}' PARELLEL: '{{instance.count}}'
......
...@@ -4,7 +4,7 @@ volumes: ...@@ -4,7 +4,7 @@ volumes:
services: services:
cdn: cdn:
restart: always restart: always
image: git-registry.mycard.moe/mycard/cdn-docker:plus image: git-registry.moenext.com/mycard/cdn-docker:plus
ulimits: ulimits:
nproc: 1048576 nproc: 1048576
nofile: nofile:
......
...@@ -2,5 +2,5 @@ version: '2.4' ...@@ -2,5 +2,5 @@ version: '2.4'
services: services:
coal: coal:
restart: always restart: always
image: git-registry.mycard.moe/nanahira/coal-attacker image: git-registry.moenext.com/nanahira/coal-attacker
scale: '{{scale}}' scale: '{{scale}}'
version: '2.4'
services:
runner:
restart: always
image: gitlab/gitlab-runner:latest
privileged: true
network_mode: host
volumes:
- ./cache:/cache
- ./templates:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
#cleaner:
# restart: always
# image: quay.io/gitlab/gitlab-runner-docker-cleanup
# environment:
# LOW_FREE_SPACE: 10G
# EXPECTED_FREE_SPACE: 20G
# DEFAULT_TTL: 1m
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
concurrent = {{ansible_processor_vcpus}}
check_interval = 0
shutdown_timeout = 0
[session_server]
session_timeout = 1800
{% for instance in instances %}
[[runners]]
name = "{{instance.name}}"
url = "{{instance.url}}"
token = "{{instance.token}}"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
MaxUploadedArchiveSize = 0
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
{% if instance.docker | default(false) %}
tls_verify = false
image = "docker:25-git"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
shm_size = 0
network_mtu = 0
{% else %}
tls_verify = false
image = "git-registry.moenext.com/mycard/docker-runner-base:latest"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
network_mtu = 0
{% endif %}
{% endfor %}
...@@ -4,16 +4,17 @@ services: ...@@ -4,16 +4,17 @@ services:
restart: always restart: always
image: gitlab/gitlab-runner:latest image: gitlab/gitlab-runner:latest
privileged: true privileged: true
network_mode: host
volumes: volumes:
- ./cache:/cache - ./cache:/cache
- ./config:/etc/gitlab-runner - ./config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
cleaner: #cleaner:
restart: always # restart: always
image: quay.io/gitlab/gitlab-runner-docker-cleanup # image: quay.io/gitlab/gitlab-runner-docker-cleanup
environment: # environment:
LOW_FREE_SPACE: 10G # LOW_FREE_SPACE: 10G
EXPECTED_FREE_SPACE: 20G # EXPECTED_FREE_SPACE: 20G
DEFAULT_TTL: 1m # DEFAULT_TTL: 1m
volumes: # volumes:
- /var/run/docker.sock:/var/run/docker.sock # - /var/run/docker.sock:/var/run/docker.sock
...@@ -2,7 +2,7 @@ version: '2.4' ...@@ -2,7 +2,7 @@ version: '2.4'
services: services:
gocq: gocq:
restart: always restart: always
image: git-registry.mycard.moe/3rdeye/docker-go-cqhttp:latest image: git-registry.moenext.com/3rdeye/docker-go-cqhttp:latest
network_mode: host network_mode: host
volumes: volumes:
- ./templates:/data - ./templates:/data
version: '2.4'
services:
gost:
restart: always
image: alpine
ports:
- '{{listen | default('7892')}}:7892'
volumes:
- ./data/gost:/usr/bin/gost:ro
- ./collects:/app
working_dir: /app
command: /usr/bin/gost -L ss+obfs4://:7892
...@@ -3,6 +3,6 @@ services: ...@@ -3,6 +3,6 @@ services:
{% for instance in instances %} {% for instance in instances %}
{{instance.name}}: {{instance.name}}:
restart: always restart: always
image: git-registry.mycard.moe/nanahira/windbot image: git-registry.moenext.com/nanahira/windbot
command: Chat=false Debug=false Deck=DarkMagician Host=s1.ygo233.com Port=23333 HostInfo={{instance.room}} Name={{instance.name}} command: Chat=false Debug=false Deck=DarkMagician Host=s1.ygo233.com Port=23333 HostInfo={{instance.room}} Name={{instance.name}}
{% endfor %} {% endfor %}
version: '2.4'
networks:
ns:
driver: bridge
driver_opts:
com.docker.network.bridge.enable_ip_masquerade: 'false'
com.docker.network.bridge.name: brns
ipam:
config:
- subnet: '{{ip_prefix}}.{{ns_id}}/29'
volumes:
postgres:
services:
babeld:
image: git-registry.moenext.com/railgun/babeld
network_mode: host
privileged: true
restart: always
volumes: ['./templates/babeld.conf:/etc/babeld.conf:ro']
powerdns:
networks:
ns:
ipv4_address: '{{ip_prefix}}.{{ns_id + 3}}'
restart: always
image: powerdns/pdns-auth-46
environment:
PDNS_AUTH_API_KEY: '{{pdns_auth_api_key}}'
volumes:
- ./templates/pdns.conf:/etc/powerdns/pdns.conf:ro
coredns:
networks:
ns:
ipv4_address: '{{ip_prefix}}.{{ns_id + 2}}'
restart: always
ports:
- '53:53'
- '53:53/udp'
volumes:
- ./templates/Corefile:/Corefile:ro
image: git-registry.moenext.com/railgun/coredns
depends_on:
- powerdns
postgres:
restart: always
image: bitnami/postgresql:15
networks:
ns:
ipv4_address: '{{ip_prefix}}.{{ns_id + 4}}'
volumes:
- postgres:/bitnami/postgresql
- /etc/localtime:/etc/localtime:ro
environment:
TZ: Asia/Shanghai
POSTGRESQL_USERNAME: '{{pg_user}}'
POSTGRESQL_PASSWORD: '{{pg_pass}}'
POSTGRESQL_REPLICATION_MODE: slave
POSTGRESQL_REPLICATION_USER: '{{master_pg_user}}'
POSTGRESQL_REPLICATION_PASSWORD: '{{master_pg_pass}}'
POSTGRESQL_MASTER_HOST: '{{master_ip}}'
. {
forward . {{ip_prefix}}.{{ns_id + 3}}:53
alternate NXDOMAIN . {{alternate_dns}}:53
}
# MyCard babeld for outer
# debug 1
# router-id 00:00:00:00:00:00:00:03
pid-file ""
redistribute ip 10.198.53.{{ns_id}}/29
redistribute local deny
reflect-kernel-metric true
# local-port-readwrite 33123
interface {{interface}} type wired
log stderr all;
router id {{ansible_ssh_host}};
protocol device {}
{% for interface in sources %}
protocol direct {
ipv4;
interface "{{interface}}";
}
{% endfor %}
{% for subnet in staticRanges %}
protocol static {
ipv4;
route {{subnet}} via "lo";
}
{% endfor %}
protocol ospf v2 {
ipv4 {
import all;
export where source ~ [ RTS_DEVICE, RTS_STATIC ];
};
area 0 {
networks {
{% for subnet in networks %}
{{subnet}};
{% endfor %}
};
{% for interface in targets %}
interface "{{interface}}" {
type broadcast;
cost 1;
hello 5;
authentication cryptographic;
password "{{ospfToken}}";
};
{% endfor %}
};
}
local-address=0.0.0.0:53
launch=gpgsql
gpgsql-host={{ip_prefix}}.{{ns_id + 4}}
gpgsql-dbname=pdns
gpgsql-user={{pg_user}}
gpgsql-password={{pg_pass}}
gpgsql-dnssec
include-dir=/etc/powerdns/pdns.d
default-soa-content=ns{{ns_id}}.lv5.ac zh99998.gmail.com 0 10800 3600 604800 3600
../../../certs
\ No newline at end of file
...@@ -22,7 +22,30 @@ done ...@@ -22,7 +22,30 @@ done
if [[ -n "$MASQ_INTERFACE" ]]; then if [[ -n "$MASQ_INTERFACE" ]]; then
"$IPTABLES_EXEC" -t nat -D POSTROUTING -o "$MASQ_INTERFACE" -j MASQUERADE
"$IPTABLES_EXEC" -t nat -A POSTROUTING -o "$MASQ_INTERFACE" -j MASQUERADE "$IPTABLES_EXEC" -t nat -A POSTROUTING -o "$MASQ_INTERFACE" -j MASQUERADE
fi fi
_get_first_address_of_network() {
network="$1"
address="$(echo "$network" | awk -F'/' '{print $1}')"
# increase the last octet by 1
IFS='.' read -r -a octets <<< "$address"
octets[3]=$((${octets[3]} + 1))
echo "${octets[0]}.${octets[1]}.${octets[2]}.${octets[3]}"
}
_add_gost() {
switch="$1"
"$IPTABLES_EXEC" -t nat "$switch" PREROUTING \
-s "$NETWORK" ! -d "$NETWORK" \
-p tcp -m multiport ! --dports 65001,65002 \
-j DNAT --to-destination "$(_get_first_address_of_network "$NETWORK"):65001"
}
_add_gost -D
if [[ -n "$GOST" ]]; then
_add_gost -A
fi
"$@" "$@"
version: '2' version: '2'
services: services:
ocserv: ocserv:
image: git-registry.mycard.moe/railgun/ocserv image: git-registry.moenext.com/railgun/ocserv
privileged: true privileged: true
network_mode: host network_mode: host
restart: always restart: always
...@@ -10,9 +10,15 @@ services: ...@@ -10,9 +10,15 @@ services:
- '{{certs_path}}:/etc/ssl/railgun/certs:ro' - '{{certs_path}}:/etc/ssl/railgun/certs:ro'
- ./data/dhparam.pem:/etc/ssl/railgun/dhparam.pem:ro - ./data/dhparam.pem:/etc/ssl/railgun/dhparam.pem:ro
- ./data/entrypoint.sh:/entrypoint.sh:ro - ./data/entrypoint.sh:/entrypoint.sh:ro
entrypoint:
- /entrypoint.sh
command:
- /usr/sbin/ocserv
- -f
environment: environment:
IPTABLES_EXEC: '{{iptables_exec}}' IPTABLES_EXEC: '{{iptables_exec}}'
MASQ_INTERFACE: '{{masq_interface}}' MASQ_INTERFACE: '{{masq_interface}}'
NETWORK: '{{network}}'
{% if username is defined and username %} {% if username is defined and username %}
USERNAME: '{{username}}' USERNAME: '{{username}}'
PASSWORD: '{{password}}' PASSWORD: '{{password}}'
...@@ -22,8 +28,22 @@ services: ...@@ -22,8 +28,22 @@ services:
'USER_{{user.username}}': '{{user.password}}' 'USER_{{user.username}}': '{{user.password}}'
{% endfor %} {% endfor %}
{% endif %} {% endif %}
entrypoint: {% if gost is defined and gost %}
- /entrypoint.sh GOST: 1
gost:
restart: always
image: git-registry.moenext.com/nanahira/gost
network_mode: host
command: command:
- /usr/sbin/ocserv - -L=redirect://:65001
- -f {% if warp is defined and warp %}
- -F=http://127.0.0.1:65002
warp:
restart: always
image: git-registry.moenext.com/nanahira/warp-proxy
network_mode: host
environment:
LOCAL_PROXY_PORT: 65002
command: sleep infinity
{% endif %}
{% endif %}
version: '2' version: '2'
services: services:
ocserv: ocserv:
image: git-registry.mycard.moe/railgun/ocserv image: git-registry.moenext.com/railgun/ocserv
privileged: true privileged: true
network_mode: host network_mode: host
restart: always restart: always
......
...@@ -3,7 +3,7 @@ services: ...@@ -3,7 +3,7 @@ services:
{% for instance in instances %} {% for instance in instances %}
'openconnect-{{instance.name}}': 'openconnect-{{instance.name}}':
restart: always restart: always
image: git-registry.mycard.moe/railgun/openconnect image: git-registry.moenext.com/railgun/openconnect
network_mode: host network_mode: host
devices: devices:
- /dev/net/tun:/dev/net/tun - /dev/net/tun:/dev/net/tun
......
version: '2.4' version: '2.4'
services: services:
babeld: babeld:
image: git-registry.mycard.moe/railgun/babeld image: git-registry.moenext.com/railgun/babeld
network_mode: host network_mode: host
privileged: true privileged: true
restart: always restart: always
......
FROM git-registry.mycard.moe/nanahira/shadowban-eu-backend:steve FROM git-registry.moenext.com/nanahira/shadowban-eu-backend:steve
COPY ./accounts.txt /app/accounts.txt COPY ./accounts.txt /app/accounts.txt
ENV COOKIE_FILE /app/accounts.txt ENV COOKIE_FILE /app/accounts.txt
This diff is collapsed.
This diff is collapsed.
...@@ -2,7 +2,7 @@ version: '2.4' ...@@ -2,7 +2,7 @@ version: '2.4'
services: services:
shadowban: shadowban:
restart: always restart: always
image: git-registry.mycard.moe/nanahira/shadowban-eu-backend:steve image: git-registry.moenext.com/nanahira/shadowban-eu-backend:steve
ports: ports:
- '{{ansible_ssh_host}}:{{port}}:80' - '{{ansible_ssh_host}}:{{port}}:80'
volumes: volumes:
......
version: '2.4' version: '2.4'
services: services:
{% for rule in rules %} {% for rule in rules %}
'socat-{{rule.listen | replace(":", "-")}}': 'socat-{{rule.listen | replace(":", "-")}}-{{rule.protocol | default("tcp")}}':
restart: always restart: always
image: alpine/socat image: alpine/socat
ports: ports:
- '{{rule.listen}}:3000' - '{{rule.listen}}:3000/{{rule.protocol | default("tcp")}}'
command: 'tcp-listen:3000,fork,reuseaddr tcp-connect:{{rule.to}}' command: '{{ rule.protocol | default("tcp") }}-listen:3000,fork,reuseaddr {{ rule.protocol | default("tcp") }}:{{rule.to}}'
{% endfor %} {% endfor %}
/home/nanahira/zeeai/trader
\ No newline at end of file
version: '2.4'
services:
novnc:
restart: always
image: theasp/novnc:latest
environment:
RUN_XTERM: 'no'
DISPLAY_WIDTH: 1920
DISPLAY_HEIGHT: 1080
ports:
- 127.0.0.1:3000:8080
fetcher-hotcoin:
restart: always
build: ./data/trader
volumes:
- ./collects:/output
environment:
DISPLAY: novnc:0.0
DRIVER: hotcoin
OUTPUT_PATH: /output/hotcoin.txt
command: npm run fetch
fetcher-coincall:
restart: always
build: ./data/trader
volumes:
- ./collects:/output
environment:
DISPLAY: novnc:0.0
DRIVER: coincall
OUTPUT_PATH: /output/coincall.txt
command: npm run fetch
fetcher-binance:
restart: always
build: ./data/trader
volumes:
- ./collects:/output
environment:
DISPLAY: novnc:0.0
DRIVER: binance
OUTPUT_PATH: /output/binance.txt
command: npm run fetch
fetcher-binance_ws:
restart: always
build: ./data/trader
volumes:
- ./collects:/output
environment:
DISPLAY: novnc:0.0
DRIVER: binance_ws
OUTPUT_PATH: /output/binance_ws.txt
command: npm run fetch
fetcher-coincall_ws:
restart: always
build: ./data/trader
volumes:
- ./collects:/output
environment:
DISPLAY: novnc:0.0
DRIVER: coincall_ws
OUTPUT_PATH: /output/coincall_ws.txt
command: npm run fetch
\ No newline at end of file
/home/nanahira/zeeai/coin-price-fetcher/
\ No newline at end of file
version: '2.4'
services:
fetcher-binance-spot:
restart: always
build: ./data/src
volumes:
- ./collects:/output
environment:
DRIVER: binance
SYMBOL: ETHUSDT
OUTPUT_PATH: /output/binance-spot.txt
API_KEY: '{{binance_api_key}}'
API_SECRET: '{{binance_api_secret}}'
MARKET: spot
fetcher-binance-future:
restart: always
build: ./data/src
volumes:
- ./collects:/output
environment:
DRIVER: binance
SYMBOL: ETHUSDT
OUTPUT_PATH: /output/binance-future.txt
API_KEY: '{{binance_api_key}}'
API_SECRET: '{{binance_api_secret}}'
MARKET: usdm
fetcher-coincall:
restart: always
build: ./data/src
volumes:
- ./collects:/output
environment:
DRIVER: coincall
SYMBOL: ETHUSDT
OUTPUT_PATH: /output/coincall.txt
API_KEY: '{{coincall_api_key}}'
API_SECRET: '{{coincall_api_secret}}'
fetcher-bybit:
restart: always
build: ./data/src
volumes:
- ./collects:/output
environment:
DRIVER: bybit
SYMBOL: ETHUSDT
OUTPUT_PATH: /output/bybit.txt
API_KEY: '{{bybit_api_key}}'
API_SECRET: '{{bybit_api_secret}}'
fetcher-htx:
restart: always
build: ./data/src
volumes:
- ./collects:/output
environment:
DRIVER: htx
SYMBOL: ETHUSDT
OUTPUT_PATH: /output/htx.txt
fetcher-mexc:
restart: always
build: ./data/src
volumes:
- ./collects:/output
environment:
DRIVER: mexc
SYMBOL: ETHUSDT
OUTPUT_PATH: /output/mexc.txt
fetcher-phemex:
restart: always
build: ./data/src
volumes:
- ./collects:/output
environment:
DRIVER: phemex
SYMBOL: ETHUSDT
OUTPUT_PATH: /output/phemex.txt
fetcher-kraken:
restart: always
build: ./data/src
volumes:
- ./collects:/output
environment:
DRIVER: kraken
SYMBOL: ETHUSDT
OUTPUT_PATH: /output/kraken.txt
fetcher-woox:
restart: always
build: ./data/src
volumes:
- ./collects:/output
environment:
DRIVER: woox
SYMBOL: ETHUSDT
OUTPUT_PATH: /output/woox.txt
APPLICATION_ID: '{{woox_application_id}}'
version: '2.4'
services:
warp:
image: git-registry.moenext.com/nanahira/warp-proxy
restart: always
command: sleep infinity
environment:
{% if open %}
FORWARD_PROXY_PORT: 3000
ports:
- '{{listen}}:3000'
{% else %}
LOCAL_PROXY_PORT: '{{listen}}'
network_mode: host
{% endif %}
-----BEGIN CERTIFICATE-----
MIIG1TCCBL2gAwIBAgIQbFWr29AHksedBwzYEZ7WvzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAw
MTMwMDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UE
ChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBSU0EgRG9tYWluIFNlY3VyZSBT
aXRlIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAhmlzfqO1Mdgj
4W3dpBPTVBX1AuvcAyG1fl0dUnw/MeueCWzRWTheZ35LVo91kLI3DDVaZKW+TBAs
JBjEbYmMwcWSTWYCg5334SF0+ctDAsFxsX+rTDh9kSrG/4mp6OShubLaEIUJiZo4
t873TuSd0Wj5DWt3DtpAG8T35l/v+xrN8ub8PSSoX5Vkgw+jWf4KQtNvUFLDq8mF
WhUnPL6jHAADXpvs4lTNYwOtx9yQtbpxwSt7QJY1+ICrmRJB6BuKRt/jfDJF9Jsc
RQVlHIxQdKAJl7oaVnXgDkqtk2qddd3kCDXd74gv813G91z7CjsGyJ93oJIlNS3U
gFbD6V54JMgZ3rSmotYbz98oZxX7MKbtCm1aJ/q+hTv2YK1yMxrnfcieKmOYBbFD
hnW5O6RMA703dBK92j6XRN2EttLkQuujZgy+jXRKtaWMIlkNkWJmOiHmErQngHvt
iNkIcjJumq1ddFX4iaTI40a6zgvIBtxFeDs2RfcaH73er7ctNUUqgQT5rFgJhMmF
x76rQgB5OZUkodb5k2ex7P+Gu4J86bS15094UuYcV09hVeknmTh5Ex9CBKipLS2W
2wKBakf+aVYnNCU6S0nASqt2xrZpGC1v7v6DhuepyyJtn3qSV2PoBiU5Sql+aARp
wUibQMGm44gjyNDqDlVp+ShLQlUH9x8CAwEAAaOCAXUwggFxMB8GA1UdIwQYMBaA
FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBTI2XhootkZaNU9ct5fCj7c
tYaGpjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUE
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIgYDVR0gBBswGTANBgsrBgEEAbIxAQIC
TjAIBgZngQwBAgEwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1
c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYG
CCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu
Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRw
Oi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAVDwoIzQDV
ercT0eYqZjBNJ8VNWwVFlQOtZERqn5iWnEVaLZZdzxlbvz2Fx0ExUNuUEgYkIVM4
YocKkCQ7hO5noicoq/DrEYH5IuNcuW1I8JJZ9DLuB1fYvIHlZ2JG46iNbVKA3ygA
Ez86RvDQlt2C494qqPVItRjrz9YlJEGT0DrttyApq0YLFDzf+Z1pkMhh7c+7fXeJ
qmIhfJpduKc8HEQkYQQShen426S3H0JrIAbKcBCiyYFuOhfyvuwVCFDfFvrjADjd
4jX1uQXd161IyFRbm89s2Oj5oU1wDYz5sx+hoCuh6lSs+/uPuWomIq3y1GDFNafW
+LsHBU16lQo5Q2yh25laQsKRgyPmMpHJ98edm6y2sHUabASmRHxvGiuwwE25aDU0
2SAeepyImJ2CzB80YG7WxlynHqNhpE7xfC7PzQlLgmfEHdU+tHFeQazRQnrFkW2W
kqRGIq7cKRnyypvjPMkjeiV9lRdAM9fSJvsB3svUuu1coIG1xxI1yegoGM4r5QP4
RGIVvYaiI76C0djoSbQ/dkIUUXQuB8AL5jyH34g3BZaaXyvpmnV4ilppMXVAnAYG
ON51WhJ6W0xNdNJwzYASZYH+tmCWI+N60Gv2NNMGHwMZ7e9bXgzUCZH5FaBFDGR5
S9VWqHB73Q+OyIVvIbKYcSc2w/aSuFKGSA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGgTCCBGmgAwIBAgIQT0JY30MLptsIPz3irNiRTjANBgkqhkiG9w0BAQwFADBL
MQswCQYDVQQGEwJBVDEQMA4GA1UEChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NT
TCBSU0EgRG9tYWluIFNlY3VyZSBTaXRlIENBMB4XDTI0MDQwMTAwMDAwMFoXDTI0
MDYzMDIzNTk1OVowJTEjMCEGA1UEAxMaZ3ctYW1zLTEubmV0d29ya2Nvbm5ldC5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYNOIzKPLLuEYpRdSq
1Jy71qw5Kit5DRwHRfYcrd0+tU7kj06VmjNDUNgCjNhNBQgH7C3E9dClSLq3CiQR
AYDcw62N4KTTHIPrOfA31vkpudxkP9oiMVQwGSneHRhHIspMDPBncJlbPUmYFxjg
0VV3oF9C1Gi9tUBvTbntxhwK8kr5zGJtlCALsCVVUaJO/SKSG6/o9hPvnTrA2zLK
GX4C0veUrYKw755A+s92jLnBPRPMfbqbTXXzi10fzw/Sq8An4eF3uQeckt6zM9QX
RiRf/tK3MiaFAgnD2rO91lGphrOvYTepqPp22RVxiGmKxeeV40LIpeUbpI29ElY0
VSx3AgMBAAGjggKFMIICgTAfBgNVHSMEGDAWgBTI2XhootkZaNU9ct5fCj7ctYaG
pjAdBgNVHQ4EFgQUI7Ws/cmmRuSlzfSQJeAnduoSUTgwDgYDVR0PAQH/BAQDAgWg
MAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEkG
A1UdIARCMEAwNAYLKwYBBAGyMQECAk4wJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9z
ZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQIBMIGIBggrBgEFBQcBAQR8MHowSwYIKwYB
BQUHMAKGP2h0dHA6Ly96ZXJvc3NsLmNydC5zZWN0aWdvLmNvbS9aZXJvU1NMUlNB
RG9tYWluU2VjdXJlU2l0ZUNBLmNydDArBggrBgEFBQcwAYYfaHR0cDovL3plcm9z
c2wub2NzcC5zZWN0aWdvLmNvbTCCAQMGCisGAQQB1nkCBAIEgfQEgfEA7wB2AHb/
iD8KtvuVUcJhzPWHujS0pM27KdxoQgqf5mdMWjp0AAABjpjyF9AAAAQDAEcwRQIg
TIKAbajalsovwaXPuLT2EASYJJX8vRDiAilan0DUIXgCIQDEi/VhTR084perLn3a
x910VjCkplLWEtX1ZETzM8BnhAB1ADtTd3U+LbmAToswWwb+QDtn2E/D9Me9AA0t
cm/h+tQXAAABjpjyF7QAAAQDAEYwRAIgHY7JRIVIE+Q2NdjLBtaZ3+ArmeQlANl2
DFkVyCVvpUsCIC6agA323XCYMv78dTyyWcL2w0stc1cspWKUCDfaICYHMCUGA1Ud
EQQeMByCGmd3LWFtcy0xLm5ldHdvcmtjb25uZXQuY29tMA0GCSqGSIb3DQEBDAUA
A4ICAQA1xB/Sfel4lsG8FGztFFu6iGrKlGgFNMsV1smZA+ZaN0rMl8vuF8A+vJLO
d13uLCa5RQssACpZmarQHuqj1Se2Jh1WJ5hNNQ0qXOorvgdy9s8rGnx2WJa/8du7
l8ed2rMqLz1tXnMLL64jvo1XYmdvlBTKs0EwMoGHk521iG7zkzhm6e5J5aui7jp7
gGHVt0MisV/6AXva0D9oJfm5Oakwz61UlyAnfbKXfiU1baoaxgqjkMUrRfMvSeeK
0SEynzDQJ5LXs39L+d1yhqxWAfC0n0v+CKas4arJCRoKXu6nr3S2bZtnwv8p4j5r
7gobZGO9rWVUrEywGzu6fGrEsw/Nvq/mlsiHY94mFNKfx5hbQtek5E7ChFOw0Yqt
0dtlELRcrPEcRplxf+TyMhxNXKW/CTsqS0udxi/wX9/KN/loQVhOEcAxLcBcLCmc
46EneBCq5SWe9bpICq1YerEvQ/Cbc1wS7BUgVRU9mxMG7zeHawL40xHC0s+Zt/cL
ZE1a7vRhWxUsPHuIyAoi85sNkN0UxOyupzQ/SIkCLNkyLLiDWYmbu1FYZ1kgwozz
r2Dg/JdeWSlRVoZMWCEH8WPl86ocwUx0979aN9lJXMSFh249FYH6DeqrdUb0I/b4
gQAKRLR4m7kuPJTiOGMQ05XqxfbQ5MpihjUqIZJrEggjhq7STw==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAmDTiMyjyy7hGKUXUqtScu9asOSoreQ0cB0X2HK3dPrVO5I9O
lZozQ1DYAozYTQUIB+wtxPXQpUi6twokEQGA3MOtjeCk0xyD6znwN9b5KbncZD/a
IjFUMBkp3h0YRyLKTAzwZ3CZWz1JmBcY4NFVd6BfQtRovbVAb0257cYcCvJK+cxi
bZQgC7AlVVGiTv0ikhuv6PYT7506wNsyyhl+AtL3lK2CsO+eQPrPdoy5wT0TzH26
m01184tdH88P0qvAJ+Hhd7kHnJLeszPUF0YkX/7StzImhQIJw9qzvdZRqYazr2E3
qaj6dtkVcYhpisXnleNCyKXlG6SNvRJWNFUsdwIDAQABAoIBAG6uXiMHzu8XlGWk
8w46x7LMW7bCFJTVVKFxXZPjVrSoEbOhBmtBk6+K1VmdZBk15G4mb+3/NvdKWQSL
qkh3iGaBIO7AAfvGi6N9IVLpz4xpLHv19sDQkEDdu5VaIPJxuRvueM8vkUVI3wBr
I1swvm7cPwmQ/o2dhTqrEd53JqNKCFsimW33sNhI2bip9y027Xw0HY67J3+FATS/
7ZwxLnQgu3Yk1KMVHBSuUDwHizQye7jsW9FDnfAWZ+thbhzCwGnd+a2vkR1zPlVJ
OKZeSzteAjk5wYHu8oyTa+2vjqCxrYbF/77feEv1lwIMXrv3U5o7+TzkhGUbxPOI
iheucdECgYEA0fbnf2CqHbB4liCv6orHKGc6af3m4VXQqocb91YuCUltcinwtsp+
04nJ0vgDYsW8OSRaTYe0nw/dCCRacsOHmAlrWgyD2jPwB5hoZ7ISD1G3X+rA8Clf
DlvMxu89iYno7dS5MSbY3Luoyw80al1fQ2wa1QYiCwmnC0ikZZldkQ8CgYEAuZQW
Jd2/8Fx3A/Zm63wA7uAc+GZWJAYQOL46nmITdgcilLzdN0rCQMrfB8tmzyIQLslV
za7+PuHPTbRoREN75x4tHFtcHjepA3YjQbl/K5eKlLxhgyHZwp/kwOMkGdeUdQYA
2BFbEML2TZOrslamaUfiCH+O0cBh2lyBrXUp3hkCgYEAy6p3pfxLJ59taRrt6VGS
nCN96yBp27xVO4TxYLtMzp9WNb5vC7Bi06k9h5IiHqZ1zOvxWHFBiGVn3yT8Q4Rd
O+IvKtsm7vsgYw24gJWfpRJ8EONzIcLPvOrZOUMJ6ydGNaT5uq7W/05dDhOCoYZP
COSNJoPbc996FJzzMsZQl4sCgYEArXhkv56qRXdZdSXGDQeMI77wta2Lhf74+OGx
D84j3OdMhvaIXqAONtysYK/ceXCg6esfvrV+Sa9wxXUHJhBi6KbHikNIN6LV5Ttw
N4a6/jeYvfHdwONKl+g4v6lTXKisyDsFXPPUSTXFYLzR+VGQGser3T/HdAA+OAzS
1x63NTkCgYEAoQyHQgsuLMdZSqUZFEJlVquZcpqQX7XjZIJ9lQi9qAU4RsIbTfsJ
2IbKGCGnc7yKYm3ztCDU8ujhEQBQsIj6ieoR18ryj8LqbJ1QkjezvbMZdds35+Dw
rWbj3AVdXaLRYiK2pTMJQWKjK47ev6bz8l2oyfr37XOKQ1Lfb8nn5hE=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDhTCCAwygAwIBAgIQI7dt48G7KxpRlh4I6rdk6DAKBggqhkjOPQQDAzCBiDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNl
eSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMT
JVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAwMTMw
MDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UEChMH
WmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBFQ0MgRG9tYWluIFNlY3VyZSBTaXRl
IENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAENkFhFytTJe2qypTk1tpIV+9QuoRk
gte7BRvWHwYk9qUznYzn8QtVaGOCMBBfjWXsqqivl8q1hs4wAYl03uNOXgFu7iZ7
zFP6I6T3RB0+TR5fZqathfby47yOCZiAJI4go4IBdTCCAXEwHwYDVR0jBBgwFoAU
OuEJhtTPGcKWdnRJdtzgNcZjY5owHQYDVR0OBBYEFA9r5kvOOUeu9n6QHnnwMJGS
yF+jMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAEGzAZMA0GCysGAQQBsjEBAgJO
MAgGBmeBDAECATBQBgNVHR8ESTBHMEWgQ6BBhj9odHRwOi8vY3JsLnVzZXJ0cnVz
dC5jb20vVVNFUlRydXN0RUNDQ2VydGlmaWNhdGlvbkF1dGhvcml0eS5jcmwwdgYI
KwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNodHRwOi8vY3J0LnVzZXJ0cnVzdC5j
b20vVVNFUlRydXN0RUNDQWRkVHJ1c3RDQS5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6
Ly9vY3NwLnVzZXJ0cnVzdC5jb20wCgYIKoZIzj0EAwMDZwAwZAIwJHBUDwHJQN3I
VNltVMrICMqYQ3TYP/TXqV9t8mG5cAomG2MwqIsxnL937Gewf6WIAjAlrauksO6N
UuDdDXyd330druJcZJx0+H5j5cFOYBaGsKdeGW7sCMaR2PsDFKGllas=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEEzCCA5qgAwIBAgIQTB0SfQr8jDX45kSQQowPLTAKBggqhkjOPQQDAzBLMQsw
CQYDVQQGEwJBVDEQMA4GA1UEChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBF
Q0MgRG9tYWluIFNlY3VyZSBTaXRlIENBMB4XDTI0MDYwNTAwMDAwMFoXDTI0MDkw
MzIzNTk1OVowJTEjMCEGA1UEAxMaZ3ctYXRsLTEubmV0d29ya2Nvbm5ldC5jb20w
WTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS7W82gxg+aM4f0D/85wDbGu6XZMPcm
jEo4T2Nf4VzlX2i37ARqSMFdRZH99JRFv/9bNJut78PfIaLMpCy6Cy7jo4IChDCC
AoAwHwYDVR0jBBgwFoAUD2vmS845R672fpAeefAwkZLIX6MwHQYDVR0OBBYEFJZu
mKWDwBeBdHS5KmOCqxfdf4XUMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAA
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysG
AQQBsjEBAgJOMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BT
MAgGBmeBDAECATCBiAYIKwYBBQUHAQEEfDB6MEsGCCsGAQUFBzAChj9odHRwOi8v
emVyb3NzbC5jcnQuc2VjdGlnby5jb20vWmVyb1NTTEVDQ0RvbWFpblNlY3VyZVNp
dGVDQS5jcnQwKwYIKwYBBQUHMAGGH2h0dHA6Ly96ZXJvc3NsLm9jc3Auc2VjdGln
by5jb20wggECBgorBgEEAdZ5AgQCBIHzBIHwAO4AdQB2/4g/Crb7lVHCYcz1h7o0
tKTNuyncaEIKn+ZnTFo6dAAAAY/mWLYVAAAEAwBGMEQCIFzVMEuSnngBPJew8Y6z
/h/UOYOCliSd8X9ejgJ9Di+2AiAsUgHkXSELH/ZE8S0XCQ83AqRPQU0Y9OmvcbKE
231lBwB1AD8XS0/XIkdYlB1lHIS+DRLtkDd/H4Vq68G/KIXs+GRuAAABj+ZYtcYA
AAQDAEYwRAIgWHU2V+nLEeiJVDVYa8Bvfaisd41RyKzagJAMH/FgIe0CIG0TNRY2
8MFVy1j3J6gEWfgw0RD/viACvaJJ/Amh8VNKMCUGA1UdEQQeMByCGmd3LWF0bC0x
Lm5ldHdvcmtjb25uZXQuY29tMAoGCCqGSM49BAMDA2cAMGQCMCjIroAgxABIQBwW
5xpl8IO2T+YoTJzC6uFEJ2p7t5TVP+BywNs9+/tST2rg61dPowIwBKRmpIdujaqr
QGi/s/Eufiyk6zw0suZhSIt+JBfLHc0dBmiYi8Fgfz3wmm7Rc81x
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAj0vjwLCxeexLz96eKfFKW4b4jolxmbVkGA8bKIldKMm2a7Ka
d79eh9cbdH0d5Rsb9PpnTaAVqYQi53FKtFczMkT3miP4RSSr1qKj8mTkUULMPnCF
0Meun7M/x5rmNjQe27blKvjiUGf4DALcZ9tFjGFUGBAXZLHyC760a5vAMj0Dki7A
RJhMBG68TUESApl04hwA4OlLLwhfCojIl5TNjN22nJW4y3Nrt9MNPBJyhCnkF8u0
0UsLyOGo1beKDKn8M81YUX495zSZDLQULR0wBzrkL/+IC8q0sBEZKnCTwnoN5uBW
OI5oKcDVAQaarYD3fLaed14VyqWQxX4I+sQAMwIDAQABAoIBAHxQwk2w/MdhkIPO
Bjks8+1jss81vjAzhZq5wD3yrbdtB613TTsF8uS2YUM2KHFSi3aEpopZj3F5CS7w
wnaiD/BUlNpMyl5x6gJTJxhrHwjAgqDIzc7K7VvvDi4E3CO6I+tJSJd3RB+tkywY
b05KlJOs/F/D1getuOcnky6n+J2btN2eu+LdSrSBhl8cISeqG8KdDUXRBOBF1xrd
ApW2KkJGHcF2tchYQUuw8J26J/kPddIXEbTP68GnwnUxaOBSBMfIRWeDNU4nD0Y+
/cRAxHKE9DzxhWhqzp2iMEBIyt5pcu3/x6EQUrYsXLumk6bz1bCa458N90gZsSCC
17W2Q4ECgYEAwXtd/5DcmLFrvT96INaRKs6/qJjyKwGMvhZMSiaIaSLdMX/jeCpE
poxBv+ZJwELGMU6sBF/kk0JKED6LWfgfGjrcFuf+ZU8kgPjbsFNGtVpgMhTavfKm
wIHX4xrK2hgETenc08BSgR7w9tINig7X9nVNaFuU1Gy/S8W0VFyRp1sCgYEAvZk7
Cx0pLcA+au7umY1hySLGI3YwD/+dvkWWvNFBtASjQw1CYAtF2icODw+jkbbR5CCP
cdt5akpZekZTEB86R/mtFKzbB3NyMLpXYaOY2CukKnFsddY2eQ80t9VAvqPrtk0c
oHihZGbG/mLT93PMNiPBu0TOhZlUV/jj2wy3ugkCgYB/DmGa+2kxyIkE3RN5Tw5D
e0O3FsEo5rqi9Yehxg4cZK223NHmznMIn+BpgXP7Ep6OMKibstEqtwRmCHyAV4Ut
N2viivSvWLqTC1lRQE6Vt0SmfrVquVcx4dKAq858S/s/owzF7W0Ap+37V9NWTwsZ
KMztc/6XRNaWjr0uDSAFMwKBgQC2H3/Y4C0TFoyemV82vtmEpNOhcsEeTRNQl3YB
cBzl+GJ/YTg2G/4AXO2jSAl+Shf6Q9CmtQU/NaYXz3+wh96rDsnUh2pqENpKtmSD
lOuYEuvCHWvrEVcIGLQyNjXYKoucdRwfhWC6mgNijrpAA8rQ4q4Q3jpnmO6tBpaR
bvj5SQKBgQCbrGjrptvEdyiILi7ZDH4Hi1ZOKL19F3qziz3ir4tBS2AyJABeB+aw
ptfJ++DaipSxVUXZ4OOLYSC82+aYjUl1aGHuzVRPFXTsw/R/yJLeSPkv1PtPmSyS
FsycmI+lt0OoE+vTePlDISHRJU5zacszmyELdRkLhhfxRJs4S/GnEw==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIG1TCCBL2gAwIBAgIQbFWr29AHksedBwzYEZ7WvzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAw
MTMwMDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UE
ChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBSU0EgRG9tYWluIFNlY3VyZSBT
aXRlIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAhmlzfqO1Mdgj
4W3dpBPTVBX1AuvcAyG1fl0dUnw/MeueCWzRWTheZ35LVo91kLI3DDVaZKW+TBAs
JBjEbYmMwcWSTWYCg5334SF0+ctDAsFxsX+rTDh9kSrG/4mp6OShubLaEIUJiZo4
t873TuSd0Wj5DWt3DtpAG8T35l/v+xrN8ub8PSSoX5Vkgw+jWf4KQtNvUFLDq8mF
WhUnPL6jHAADXpvs4lTNYwOtx9yQtbpxwSt7QJY1+ICrmRJB6BuKRt/jfDJF9Jsc
RQVlHIxQdKAJl7oaVnXgDkqtk2qddd3kCDXd74gv813G91z7CjsGyJ93oJIlNS3U
gFbD6V54JMgZ3rSmotYbz98oZxX7MKbtCm1aJ/q+hTv2YK1yMxrnfcieKmOYBbFD
hnW5O6RMA703dBK92j6XRN2EttLkQuujZgy+jXRKtaWMIlkNkWJmOiHmErQngHvt
iNkIcjJumq1ddFX4iaTI40a6zgvIBtxFeDs2RfcaH73er7ctNUUqgQT5rFgJhMmF
x76rQgB5OZUkodb5k2ex7P+Gu4J86bS15094UuYcV09hVeknmTh5Ex9CBKipLS2W
2wKBakf+aVYnNCU6S0nASqt2xrZpGC1v7v6DhuepyyJtn3qSV2PoBiU5Sql+aARp
wUibQMGm44gjyNDqDlVp+ShLQlUH9x8CAwEAAaOCAXUwggFxMB8GA1UdIwQYMBaA
FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBTI2XhootkZaNU9ct5fCj7c
tYaGpjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUE
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIgYDVR0gBBswGTANBgsrBgEEAbIxAQIC
TjAIBgZngQwBAgEwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1
c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYG
CCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu
Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRw
Oi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAVDwoIzQDV
ercT0eYqZjBNJ8VNWwVFlQOtZERqn5iWnEVaLZZdzxlbvz2Fx0ExUNuUEgYkIVM4
YocKkCQ7hO5noicoq/DrEYH5IuNcuW1I8JJZ9DLuB1fYvIHlZ2JG46iNbVKA3ygA
Ez86RvDQlt2C494qqPVItRjrz9YlJEGT0DrttyApq0YLFDzf+Z1pkMhh7c+7fXeJ
qmIhfJpduKc8HEQkYQQShen426S3H0JrIAbKcBCiyYFuOhfyvuwVCFDfFvrjADjd
4jX1uQXd161IyFRbm89s2Oj5oU1wDYz5sx+hoCuh6lSs+/uPuWomIq3y1GDFNafW
+LsHBU16lQo5Q2yh25laQsKRgyPmMpHJ98edm6y2sHUabASmRHxvGiuwwE25aDU0
2SAeepyImJ2CzB80YG7WxlynHqNhpE7xfC7PzQlLgmfEHdU+tHFeQazRQnrFkW2W
kqRGIq7cKRnyypvjPMkjeiV9lRdAM9fSJvsB3svUuu1coIG1xxI1yegoGM4r5QP4
RGIVvYaiI76C0djoSbQ/dkIUUXQuB8AL5jyH34g3BZaaXyvpmnV4ilppMXVAnAYG
ON51WhJ6W0xNdNJwzYASZYH+tmCWI+N60Gv2NNMGHwMZ7e9bXgzUCZH5FaBFDGR5
S9VWqHB73Q+OyIVvIbKYcSc2w/aSuFKGSA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAmyeKMp2vfR1jHSmlz5IaBVPTghZgf2Q91HWRuTVB8bhqtqsl
n6z7ExB5VACvd4i6ojyPU7fVC4fnKgxb1bhN13c+LRY/nwKEARvwatx+FM5tuuAA
Fap2cwFAAplmfXEOXLp+QqRJviEr/W6lAhot84a6kHw3rq6vQWvsDTvSIJCkUx5C
AOmLpKjaioIDWgrE9R7sDdINfJwL/oKObP3hqV4vtk8ZRtFmAIPNHkdfW6rhVgtU
TuHIG+nnnrDphoS4txwA4DRHHKrJ3mNc1zwbvhhXhsmvfeUrDKpl8VH72RzUI3M/
ESkoKWEfi6wV+JR1TeXyEoRMi3ZpfRkcTUVEFwIDAQABAoIBAEp4T/y7ct+6mzgE
JXHbzmGAOqTV2LtMgeDYDXm39k7vFUlYHFbn0Br2bUXEjnPxTKNSLfkg40EFmg60
n9+U9sfUlCNP6nmH25QstNiVvG6AJmrr2R6NEw1gLDkTJ/5NpXccjD2wXTTE9zhN
QyYfKq8Ym7N967wMXFIqWsJ/U/wMrt9I6am4ZsXM1d/F/TI1GDk152xweczv/e8X
4x+3InOknUhJQ/tIxtXsVLjw0Rsuwy6Od2cjeYiKHjsbi97ONXjBXF2YpqmnU0Bz
L8MLuiH56f3Lpjp7bw3iv0joL/0h12J0JKqrOesCirGRNl9LAS5yL+4w2c0t5dpu
p3GouQECgYEA6zfqpnXKnnBNukblXxdnV2/+MiCwFpbpI3HWSoBYvLFp4VcHpAtG
RZJCgvU9XwHLqFblghrRh6ciBkmhg5VqLn8Hi93vODYh0B6D+ROK4fU1BmwD5HuJ
7RvYtpA2rwV9XkYi71N1Dg2USjQvPrA0/F0wfEz31+xkzJuY+9lQPv0CgYEAqNzE
Emg07b1xCYEbO+R5rK/7vY2fLd5Tw5OG4D/Eo3LRiBUBCvD1GnORaiZjxFrqLISa
cathf+cUIVrXFtFhNgtcbGxaYOqWiwEv/X756Gt96chNLrP0S6rhNBo1qTwrZz7h
T8AtrycG/hCvTJngHqAURM7q7PRtINmFUe58naMCgYBp3D2P8x1glxx0RGoAlPDe
ijm15744PGzqldYiq4bETXhggSGgM67JqtyiQasAMjetKIacOmOokJCgkczOApXK
HUORMC30d3BaURGGLMRpk0js/fn2f58AhnLPHzJtLKRSpHAek8nvrC7cAoZsyTLf
jTVADAfTNsHa0ABXAGO8JQKBgH8Gs6h1I3vECohvyqDfWniBWgpZwuiqWrDBBbEj
xzR9ZwnLYyFr6bWgQj9r6ZkIGyiqB9SCa7HfjtEYmLzdfRc+rKQTTlmhnuWqWwOC
xVQFqI540zbSwG87eHXNUZihXrUoJC3uD2+3GBd/TZ9+EY54NUcdsLPXm1Ae0Z+0
m6GpAoGAHQS4upFaPFct1A+SW5dXs7/JJUOezpcbPKhCHzfsgFQckM3OG+Ea++0x
hFf4+KsGVc5Uz0M2WONSz8PIJWBBqsHC4qx7FN6WSnBoyWR3N84KwsnWjTDCchu6
BOJtPckAg7vCRcILReuRiw/gtflbUd+VwFrK6pPlBtsLnU7NddM=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIG1TCCBL2gAwIBAgIQbFWr29AHksedBwzYEZ7WvzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAw
MTMwMDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UE
ChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBSU0EgRG9tYWluIFNlY3VyZSBT
aXRlIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAhmlzfqO1Mdgj
4W3dpBPTVBX1AuvcAyG1fl0dUnw/MeueCWzRWTheZ35LVo91kLI3DDVaZKW+TBAs
JBjEbYmMwcWSTWYCg5334SF0+ctDAsFxsX+rTDh9kSrG/4mp6OShubLaEIUJiZo4
t873TuSd0Wj5DWt3DtpAG8T35l/v+xrN8ub8PSSoX5Vkgw+jWf4KQtNvUFLDq8mF
WhUnPL6jHAADXpvs4lTNYwOtx9yQtbpxwSt7QJY1+ICrmRJB6BuKRt/jfDJF9Jsc
RQVlHIxQdKAJl7oaVnXgDkqtk2qddd3kCDXd74gv813G91z7CjsGyJ93oJIlNS3U
gFbD6V54JMgZ3rSmotYbz98oZxX7MKbtCm1aJ/q+hTv2YK1yMxrnfcieKmOYBbFD
hnW5O6RMA703dBK92j6XRN2EttLkQuujZgy+jXRKtaWMIlkNkWJmOiHmErQngHvt
iNkIcjJumq1ddFX4iaTI40a6zgvIBtxFeDs2RfcaH73er7ctNUUqgQT5rFgJhMmF
x76rQgB5OZUkodb5k2ex7P+Gu4J86bS15094UuYcV09hVeknmTh5Ex9CBKipLS2W
2wKBakf+aVYnNCU6S0nASqt2xrZpGC1v7v6DhuepyyJtn3qSV2PoBiU5Sql+aARp
wUibQMGm44gjyNDqDlVp+ShLQlUH9x8CAwEAAaOCAXUwggFxMB8GA1UdIwQYMBaA
FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBTI2XhootkZaNU9ct5fCj7c
tYaGpjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUE
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIgYDVR0gBBswGTANBgsrBgEEAbIxAQIC
TjAIBgZngQwBAgEwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1
c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYG
CCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu
Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRw
Oi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAVDwoIzQDV
ercT0eYqZjBNJ8VNWwVFlQOtZERqn5iWnEVaLZZdzxlbvz2Fx0ExUNuUEgYkIVM4
YocKkCQ7hO5noicoq/DrEYH5IuNcuW1I8JJZ9DLuB1fYvIHlZ2JG46iNbVKA3ygA
Ez86RvDQlt2C494qqPVItRjrz9YlJEGT0DrttyApq0YLFDzf+Z1pkMhh7c+7fXeJ
qmIhfJpduKc8HEQkYQQShen426S3H0JrIAbKcBCiyYFuOhfyvuwVCFDfFvrjADjd
4jX1uQXd161IyFRbm89s2Oj5oU1wDYz5sx+hoCuh6lSs+/uPuWomIq3y1GDFNafW
+LsHBU16lQo5Q2yh25laQsKRgyPmMpHJ98edm6y2sHUabASmRHxvGiuwwE25aDU0
2SAeepyImJ2CzB80YG7WxlynHqNhpE7xfC7PzQlLgmfEHdU+tHFeQazRQnrFkW2W
kqRGIq7cKRnyypvjPMkjeiV9lRdAM9fSJvsB3svUuu1coIG1xxI1yegoGM4r5QP4
RGIVvYaiI76C0djoSbQ/dkIUUXQuB8AL5jyH34g3BZaaXyvpmnV4ilppMXVAnAYG
ON51WhJ6W0xNdNJwzYASZYH+tmCWI+N60Gv2NNMGHwMZ7e9bXgzUCZH5FaBFDGR5
S9VWqHB73Q+OyIVvIbKYcSc2w/aSuFKGSA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGgjCCBGqgAwIBAgIQGtm8ToXQBvoIk1N5u5qWrzANBgkqhkiG9w0BAQwFADBL
MQswCQYDVQQGEwJBVDEQMA4GA1UEChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NT
TCBSU0EgRG9tYWluIFNlY3VyZSBTaXRlIENBMB4XDTI0MDMyNjAwMDAwMFoXDTI0
MDYyNDIzNTk1OVowJTEjMCEGA1UEAxMaZ3ctbnljLTEubmV0d29ya2Nvbm5ldC5j
b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV5tyv0sLcex7MDCuU
9IEHUwySHwSCV3AYcMZ9awZ8PBRzaK7Vlm0Bs90XLNQY6Bekk2KxaOrdw04Hg8XB
9UoQQs3780BGXv7IEHE1pBP1CJvxgb6wVHBBB/FdGDB+/ntdSPi6K5BN+piL76Jy
LRcDhMjLCL9enljjbX8Nn+VyGDAaXnCzlFyX8cuJSxw10jGZedOpGQohp3s+CkWc
XN0JXoIoIbh1oiuQ9L+zdMBBxEVgk5AN7VduP7CzZTiULscw1IBPwm30tUcgGvmh
BrryrpUVtRMtfyEcazr6V1dAX8rxpbgijq9oKmGjbkczLM5zhwpshdfnyH5LYhTD
JS37AgMBAAGjggKGMIICgjAfBgNVHSMEGDAWgBTI2XhootkZaNU9ct5fCj7ctYaG
pjAdBgNVHQ4EFgQUuisKivrBakMTKJXRhF8AU3xtJPIwDgYDVR0PAQH/BAQDAgWg
MAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMEkG
A1UdIARCMEAwNAYLKwYBBAGyMQECAk4wJTAjBggrBgEFBQcCARYXaHR0cHM6Ly9z
ZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQIBMIGIBggrBgEFBQcBAQR8MHowSwYIKwYB
BQUHMAKGP2h0dHA6Ly96ZXJvc3NsLmNydC5zZWN0aWdvLmNvbS9aZXJvU1NMUlNB
RG9tYWluU2VjdXJlU2l0ZUNBLmNydDArBggrBgEFBQcwAYYfaHR0cDovL3plcm9z
c2wub2NzcC5zZWN0aWdvLmNvbTCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB1AHb/
iD8KtvuVUcJhzPWHujS0pM27KdxoQgqf5mdMWjp0AAABjnlNsXkAAAQDAEYwRAIg
ON19rRnl3t28culnHqy9vSGLWpMscI1xCIw0E0tGY1kCIDA7cpbq/TQ7I9HS65Q0
Sz6e+Yc0yJDZS4rUr6HhZwviAHcAO1N3dT4tuYBOizBbBv5AO2fYT8P0x70ADS1y
b+H61BcAAAGOeU2xJAAABAMASDBGAiEA6Iv8V1YxxWKUZXfG2ji9pWP8glSGcY5T
BHP9lRQz6V4CIQCNsxVTjxS3VEIjLh06AgbxogsCQAU06foQWO9fUeIWFzAlBgNV
HREEHjAcghpndy1ueWMtMS5uZXR3b3JrY29ubmV0LmNvbTANBgkqhkiG9w0BAQwF
AAOCAgEAMvQ6NdR7WjcHqkG3Qzmgp41PqjUZn+y88Scf9TET/fs6+++BghBciljo
z3h42aqIULYXPZWHeT/kfgNxXb33nwjcoCu7zi3QuuuOKCbwFzn+OjNU6FsUmkSD
Ly1gnz18Fme4qgfu2NqFCTqy4k1huelTV2wPZzdnpQuMFX9e60bnH7GRyZeYuQcf
ZIXXnNPBJpml77AuwDAJ/07efTTRmCAa42twX5zVZzugRdlkUZty9PGmS2bs6nwi
VAPo+4dBFqB5ByVpWRWu30zPDw6ZP6MLXfm978r6F0pDO5ByOxTKjNYIHHFihe9x
aWNrYFFTjJQywRoe7Tzg2JdhY1mKy3jTcy8/+hweL3AL6FUBPVV+hM/InwzDGrBH
IemLoVkx3T7ZzFdfvrSj83T0AluCLgibF9LWd+Ubgbbz4H+MgnOAqER35hmxsLLr
zIlEAK57+odRAbfbFmsHixMZmxvJzGdhUoaaGqAckL+8Vwvqd4UxtVwM4MAEbQk1
VO52t7IerK8TnzOJEK9cbKY7Z/iPvMUyjniVPBZEOAe8ZnrRmwb+IbygiGEQcCSK
nJ1cg+3gQmSu5f09ZE2YQQPw0YWIQ7J6qUgFuM/cBH6PaA6PVoB1aTdO3Pit7OFW
/hRUXLhEon6YvGlSfpmASB8vQTDo69X0ItSFZd3/zaiONiD7UQc=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAlebcr9LC3HsezAwrlPSBB1MMkh8EgldwGHDGfWsGfDwUc2iu
1ZZtAbPdFyzUGOgXpJNisWjq3cNOB4PFwfVKEELN+/NARl7+yBBxNaQT9Qib8YG+
sFRwQQfxXRgwfv57XUj4uiuQTfqYi++ici0XA4TIywi/Xp5Y421/DZ/lchgwGl5w
s5Rcl/HLiUscNdIxmXnTqRkKIad7PgpFnFzdCV6CKCG4daIrkPS/s3TAQcRFYJOQ
De1Xbj+ws2U4lC7HMNSAT8Jt9LVHIBr5oQa68q6VFbUTLX8hHGs6+ldXQF/K8aW4
Io6vaCpho25HMyzOc4cKbIXX58h+S2IUwyUt+wIDAQABAoIBABIUu6/Viz2O+EMC
gMtBxsJ8aPrDFQcnxtSb3cVJAIpBsPHOwa/vqgxXhqaB+L9cV2W5hWEC17mSEjpj
0Zm4nYtik3f9elZCpRa6rP0cYm/e7vhtfvPD65pce+ePwGHBDl5NK/tAv/I39OiE
KiL9f1YkURf0YSjnjq84COg6zjE5u78x12eFx6AFoiq6eB9p5EcCZa31Gtfbm0KY
q7O9UBsbCNKPuDuzZ3Ko0tRsL3ii+1b8o66Oh8SNXbAxEUtQ6cpe5INDDVA4vKwD
Ry+q61RdScBiUobtgGUUmcFn0vjvxmOX1MuLTQ9E2H4185vu9tsjwbg/oVEqeRes
C9FXl1kCgYEA56XH8bXtsDT6l5X6zIZpmKpHlGC25Qa2/HHTVNzVHMlZAPnD+Ggn
S5ZdoYbF767gZVNk1YX8hxgl7pib//6G43YTXMFpTBNy4CzzNhvr2M8drM8J2xI/
6SczHvrBkDZ/fxoZQZxOeb87DgA4n8MbZ+mxb2eD+voKpLahzwosv28CgYEApakY
ujXdXbsbqW4QIT/gK9V+VCB+GWplh4Cp5V4uiVg9mNW+ljK75ffL44zt5z+t9KYq
+5XTqD3XGl3tWLKZ1MqA7I/iZFL+CrG9eJ2/CnLSzmEHCEQuG+0n00MvbhX/BMdA
in5YixJqGrQh33d/czrUHtMXYWNegFtccn9xNDUCgYEA4NCwABHEoKKKIdvZD+3T
RerclVBXsGaX6OC/bTj1S37N9nhwjQDoQh+otz8Jkthxx2TsE555utLg3XMW05e+
absKh5beDotBjfeSAw2OE1jPQAufURGhHTKCFqreeIurqTs3D8oXD2lccvYb/lFo
o6zWG3ynRkitU7Y7y6fgTdkCgYEAm+ajKrr+dPNdePnnnCLs6NOma62YfnquyfK/
8OfNi9vLPEYLcnaUdjvZWXCLg5FeOFsZIGNEKZTpFhtG/q42LxfUdMyEFj40bgQP
d6+c1kxxL2AIqjLf4dAyJpOX01ZIBUsu5ic5VMgjqrXTGubuvpaigc/OtQw7JzjT
q71b3/ECgYEAhf50PcdJiJiTxXhFep6qnOd587N3VGQxxCpB4GRWrbXS2v8t0Shn
AjiK8qXYDZgQ7j80TIRvPPXZO+ehpH9VRVbJlyiUSfeW4+Meucom614HGqbPsbTa
OhB2zV7b7c9OG++ghoV+t2BMvxgmadb2ssb/nHpChNXkCloljSBahGM=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIG1TCCBL2gAwIBAgIQbFWr29AHksedBwzYEZ7WvzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAw
MTMwMDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UE
ChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBSU0EgRG9tYWluIFNlY3VyZSBT
aXRlIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAhmlzfqO1Mdgj
4W3dpBPTVBX1AuvcAyG1fl0dUnw/MeueCWzRWTheZ35LVo91kLI3DDVaZKW+TBAs
JBjEbYmMwcWSTWYCg5334SF0+ctDAsFxsX+rTDh9kSrG/4mp6OShubLaEIUJiZo4
t873TuSd0Wj5DWt3DtpAG8T35l/v+xrN8ub8PSSoX5Vkgw+jWf4KQtNvUFLDq8mF
WhUnPL6jHAADXpvs4lTNYwOtx9yQtbpxwSt7QJY1+ICrmRJB6BuKRt/jfDJF9Jsc
RQVlHIxQdKAJl7oaVnXgDkqtk2qddd3kCDXd74gv813G91z7CjsGyJ93oJIlNS3U
gFbD6V54JMgZ3rSmotYbz98oZxX7MKbtCm1aJ/q+hTv2YK1yMxrnfcieKmOYBbFD
hnW5O6RMA703dBK92j6XRN2EttLkQuujZgy+jXRKtaWMIlkNkWJmOiHmErQngHvt
iNkIcjJumq1ddFX4iaTI40a6zgvIBtxFeDs2RfcaH73er7ctNUUqgQT5rFgJhMmF
x76rQgB5OZUkodb5k2ex7P+Gu4J86bS15094UuYcV09hVeknmTh5Ex9CBKipLS2W
2wKBakf+aVYnNCU6S0nASqt2xrZpGC1v7v6DhuepyyJtn3qSV2PoBiU5Sql+aARp
wUibQMGm44gjyNDqDlVp+ShLQlUH9x8CAwEAAaOCAXUwggFxMB8GA1UdIwQYMBaA
FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBTI2XhootkZaNU9ct5fCj7c
tYaGpjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUE
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIgYDVR0gBBswGTANBgsrBgEEAbIxAQIC
TjAIBgZngQwBAgEwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1
c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYG
CCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu
Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRw
Oi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAVDwoIzQDV
ercT0eYqZjBNJ8VNWwVFlQOtZERqn5iWnEVaLZZdzxlbvz2Fx0ExUNuUEgYkIVM4
YocKkCQ7hO5noicoq/DrEYH5IuNcuW1I8JJZ9DLuB1fYvIHlZ2JG46iNbVKA3ygA
Ez86RvDQlt2C494qqPVItRjrz9YlJEGT0DrttyApq0YLFDzf+Z1pkMhh7c+7fXeJ
qmIhfJpduKc8HEQkYQQShen426S3H0JrIAbKcBCiyYFuOhfyvuwVCFDfFvrjADjd
4jX1uQXd161IyFRbm89s2Oj5oU1wDYz5sx+hoCuh6lSs+/uPuWomIq3y1GDFNafW
+LsHBU16lQo5Q2yh25laQsKRgyPmMpHJ98edm6y2sHUabASmRHxvGiuwwE25aDU0
2SAeepyImJ2CzB80YG7WxlynHqNhpE7xfC7PzQlLgmfEHdU+tHFeQazRQnrFkW2W
kqRGIq7cKRnyypvjPMkjeiV9lRdAM9fSJvsB3svUuu1coIG1xxI1yegoGM4r5QP4
RGIVvYaiI76C0djoSbQ/dkIUUXQuB8AL5jyH34g3BZaaXyvpmnV4ilppMXVAnAYG
ON51WhJ6W0xNdNJwzYASZYH+tmCWI+N60Gv2NNMGHwMZ7e9bXgzUCZH5FaBFDGR5
S9VWqHB73Q+OyIVvIbKYcSc2w/aSuFKGSA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAjt1EMl6YATPL83q2YoTCJSv25n849yclJcEsVlxee2lW8mmW
GB8c1qzEzwK/jgrSbOXeBq9PoaLl7drWyjel/OF7i5OKJtBxXJhKEzLVo5Lvzn01
lEATfALsfFYdQatq1QZ5rUMcZKQnOfSbyXFArqRmmXxjgn2wKAwQxLhVnMSNN+dv
jcRVSre1JCvcENcB2HNWlVXq7tfJBrvD/r0IXArhaULEXkILG0A/JK21WkDZyy+j
geYa2u5sl4ywb+eco/I2h2+xcsf7HuXR20XFYeqlJWItYMddXqfjgXiascMK6FgP
sZQhX6hWVHOQ9Cb0sm8bJzgfALT8XxsckhVL2wIDAQABAoIBADxHV/L4vqIjPLaq
3DGNWm1cs3xlyZ9ewOnBK/f0WVkxBSKbMl1TI1Pg6dl+i1xfbJHOG3QunCbTGLjX
UTFZcYvVh89InU3rPSmYiAi5tjKiWNSDOAwpTQ9SHH4Jx6ZhsV3YsZZNbrl4GaT2
dJT2WBhX/YJdXY89gQokrR6TuGvAUXsI8/DTNYFwEJue4tXcEkN1CkX4ay7F6jtz
iRfcK/8FukSJXiivstsKeaSPfwQ7HbsDEJq36tqQWe3YuCXk90b+VwQdr1xSyCjx
fq6tMKesF2Vl5tt0K+O+10jQ7OPPjBO3rMPk2kRinKu+YOqO/KZlXxee0D7haoZr
6GlWeEECgYEAwx5p/EXitgPaoNmNKl0VbO3+jLGKO1P/m3lxdYAuHD76+KggXOh+
tzI0lhPJrgbmfDLRzn7PXTZBy+IRI/1/v/MlnJR0II21jqopvpHdzRealSfGx/D5
xR2CEi93ZZTwJvaXrfOLqx6ruNnd9FNi2wolvc9VPJxQCv8O+fEp/cMCgYEAu3Dm
OPB+k/Bqx9LwLZpvxw+keCuJwka8PyqVn79aHdFHhNJuerKNRAkQzS5IiViqcmyf
7+rm/g4vWFQjivp8oEFbHiEnmfxrS5MMXQ1hA50ux5R2ScLyvlxgtP6Iit8DjRMo
B20RG3pNveWT5vqbE5JFY3HA9u3XLC7YyHthIAkCgYEAlHcw+AcJMawPEDNZSbHY
WrFg7hctcmVA6kFnBpxI+a8mckwji+5QdP7bqpJV9HhFqp1UrYYqLOfa+tMCbds2
+Ix/wvvmvNp3Gp3584q0NZlPQ00n4P1IYCdK0KGTfRTuAwfBdFgLn2JQEfCdBYrp
fnfjLeF0HxFlimh3MdHCPNcCgYEAle8WST+ekKoEUDkcI+5gMSQDFJkHBd9dH03q
B7Gh3S4VflpxQzZmJ6D0zpuSLEM/fG4FdX06Lsib+JS9JaN+YxZEU5KDwfoWvYov
npNgIerui3jnMdN+JuVv+feMs0D27zb+kwocYBVx8E+fAmk9+ObNGGHaz+qqbs4+
XAfNRjkCgYBLK+sRNIUPerE/YATSsTQkKk8tmUlm/9tGhj281OzVJlHVPaCHKFjS
m1oUl8q+xERruOYdXJPnC7G6TxMkXholDejq8aGXa/aLkp7Qae9aDj5obmNaBqct
ttmj3AojFbM8xaLAdhLX0/Kteb8w3MDdjyeObbb7CuDBzo2Ib+vPGg==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIG1TCCBL2gAwIBAgIQbFWr29AHksedBwzYEZ7WvzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAw
MTMwMDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UE
ChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBSU0EgRG9tYWluIFNlY3VyZSBT
aXRlIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAhmlzfqO1Mdgj
4W3dpBPTVBX1AuvcAyG1fl0dUnw/MeueCWzRWTheZ35LVo91kLI3DDVaZKW+TBAs
JBjEbYmMwcWSTWYCg5334SF0+ctDAsFxsX+rTDh9kSrG/4mp6OShubLaEIUJiZo4
t873TuSd0Wj5DWt3DtpAG8T35l/v+xrN8ub8PSSoX5Vkgw+jWf4KQtNvUFLDq8mF
WhUnPL6jHAADXpvs4lTNYwOtx9yQtbpxwSt7QJY1+ICrmRJB6BuKRt/jfDJF9Jsc
RQVlHIxQdKAJl7oaVnXgDkqtk2qddd3kCDXd74gv813G91z7CjsGyJ93oJIlNS3U
gFbD6V54JMgZ3rSmotYbz98oZxX7MKbtCm1aJ/q+hTv2YK1yMxrnfcieKmOYBbFD
hnW5O6RMA703dBK92j6XRN2EttLkQuujZgy+jXRKtaWMIlkNkWJmOiHmErQngHvt
iNkIcjJumq1ddFX4iaTI40a6zgvIBtxFeDs2RfcaH73er7ctNUUqgQT5rFgJhMmF
x76rQgB5OZUkodb5k2ex7P+Gu4J86bS15094UuYcV09hVeknmTh5Ex9CBKipLS2W
2wKBakf+aVYnNCU6S0nASqt2xrZpGC1v7v6DhuepyyJtn3qSV2PoBiU5Sql+aARp
wUibQMGm44gjyNDqDlVp+ShLQlUH9x8CAwEAAaOCAXUwggFxMB8GA1UdIwQYMBaA
FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBTI2XhootkZaNU9ct5fCj7c
tYaGpjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUE
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIgYDVR0gBBswGTANBgsrBgEEAbIxAQIC
TjAIBgZngQwBAgEwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1
c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYG
CCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu
Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRw
Oi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAVDwoIzQDV
ercT0eYqZjBNJ8VNWwVFlQOtZERqn5iWnEVaLZZdzxlbvz2Fx0ExUNuUEgYkIVM4
YocKkCQ7hO5noicoq/DrEYH5IuNcuW1I8JJZ9DLuB1fYvIHlZ2JG46iNbVKA3ygA
Ez86RvDQlt2C494qqPVItRjrz9YlJEGT0DrttyApq0YLFDzf+Z1pkMhh7c+7fXeJ
qmIhfJpduKc8HEQkYQQShen426S3H0JrIAbKcBCiyYFuOhfyvuwVCFDfFvrjADjd
4jX1uQXd161IyFRbm89s2Oj5oU1wDYz5sx+hoCuh6lSs+/uPuWomIq3y1GDFNafW
+LsHBU16lQo5Q2yh25laQsKRgyPmMpHJ98edm6y2sHUabASmRHxvGiuwwE25aDU0
2SAeepyImJ2CzB80YG7WxlynHqNhpE7xfC7PzQlLgmfEHdU+tHFeQazRQnrFkW2W
kqRGIq7cKRnyypvjPMkjeiV9lRdAM9fSJvsB3svUuu1coIG1xxI1yegoGM4r5QP4
RGIVvYaiI76C0djoSbQ/dkIUUXQuB8AL5jyH34g3BZaaXyvpmnV4ilppMXVAnAYG
ON51WhJ6W0xNdNJwzYASZYH+tmCWI+N60Gv2NNMGHwMZ7e9bXgzUCZH5FaBFDGR5
S9VWqHB73Q+OyIVvIbKYcSc2w/aSuFKGSA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAhC64RRo8KLNqXrqtC/PBV/rbobGoY79CT7QBHahqzfoEByrU
oJ+mMfLL6ZE/IVsNZdENXxGQHwg+sxuJ8HE9hkaJxr5FMePuGx/3D6WluZKbQRTv
dtEI8T/0X48f/XVMPcg9UbBscOOOQHsUifG1RXdxIeiWXDGiE3cTKeNs4fsgcbaR
gspB5oEtklunv2foDWdSbw/EPRDBDHZv1qBO1FYshGgsfQPcjc2oz/m2MmCJgOrh
JQrV3Wkqq3xhTuDFf9LHu/i5Lo78178cVqxX9YGt5Kx0jcb/lloaNL72Xf/GqCJd
vh6U/U5AiQr/hadT5oVEAlDSPb6uYz/GUzkAIwIDAQABAoIBAE5lv1kM5F1nfFFO
+s+59RSPbrCKREtU5qmLI5ZJi387KCRwHMhfqBy72oFfakgITvvyb7HRIt+k7jsg
vEFliI4ZTCIaO8QJYfGolcor/wz/jSGenyCjfmBIBFKg+uJDLcL+/o9yyf5ymK5Z
0aa3O0JGQ01PO87WiUBuQWl4v92PTkF6lc/KBg6u4dK56/RlcKfzxyCJH2d0YxaM
V/hTlbCmRRlupIuKnYlRb5Q73Dy+eVC4efw8THR/QsHV39L0ZFu6HFgqnYCjeouj
S3jsU9ONrOgwfi27Xuhpwztfh7GZrdWjVRnLQDelOu1fBB7BvLQhtO2Tfo/rzCb2
8jlENCECgYEA0uE8uctfsrCQK7CP7mC1ajfOZrPzYqECcyY9zfXBluFI7T9H0vIc
uTl4GK0QwxRlpBFg59vaGTPSWi6QS2Czmry6hjNlW6jIqbTweFMJ1bF06aQw1r/6
t5Of3MbOybMftiJ5x0GuCx/o7rblyKYZrp16Dkp1T5vT8Zu759tY5PkCgYEAoHbn
QT+8SxsyI95fayN+GV/qMuXTjZZkq5Yct5uj6wrhX1v38Bk/CqU0YGcebOOplZrW
SdDE4RCfjWvpsMoYunty07Pdtf3K4z6kEwOfeW2ZFgnV8saVJtuddhNBn7Es95DB
RHt2acjqsleXqDHGSg5fXAcE4gq8/X0qGz40gPsCgYEAmIbFT3UkELDYdmFMmZRl
YyBeL7a0sX/Xr8XXKiM5FJJ6Fu+QWak40VgZ328+EnusUJEpUEqaY2QyH3xSbdLR
1XfwSaTfCP75tJXk4ILfOCsUbvGNSaauBx3FoQBDDWx74VbqUg7VfcJkzlSHuys4
pC3O3ItKcnw5PiXwMXFbyLECgYBFmOzafxNjHAuWRRfrtzw1M0W4B7jHG2jUh0oz
VL0278QqgRA7wid2rYrXGUK4BdKDAeJZp8QMvhIF271DIZSyJWL7cXMDQW2jPIMb
gCHGIAQa6+8w2nLMpMpZ8SYwZj9TrSQ2WLpWTX+GFLnBiL0xV6SCnMTAadnotEX0
BPnuywKBgCDDJ9bRDe4WX5U/8FbIK/1bppw4jduRPgLVp+VB22C2rRxQZzme38nh
PXUJKScmHDVgUq4g+c/cJSino2CKXv8ywUmGy7rOWzqK3uTzDZDE/JzJsvCigHFg
yfdUszRnNmKLcYcbS7bY6bPhDrioHKcM8qu8Bq2eSbXCyVdxZ0Lj
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIG1TCCBL2gAwIBAgIQbFWr29AHksedBwzYEZ7WvzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjAw
MTMwMDAwMDAwWhcNMzAwMTI5MjM1OTU5WjBLMQswCQYDVQQGEwJBVDEQMA4GA1UE
ChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NTTCBSU0EgRG9tYWluIFNlY3VyZSBT
aXRlIENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAhmlzfqO1Mdgj
4W3dpBPTVBX1AuvcAyG1fl0dUnw/MeueCWzRWTheZ35LVo91kLI3DDVaZKW+TBAs
JBjEbYmMwcWSTWYCg5334SF0+ctDAsFxsX+rTDh9kSrG/4mp6OShubLaEIUJiZo4
t873TuSd0Wj5DWt3DtpAG8T35l/v+xrN8ub8PSSoX5Vkgw+jWf4KQtNvUFLDq8mF
WhUnPL6jHAADXpvs4lTNYwOtx9yQtbpxwSt7QJY1+ICrmRJB6BuKRt/jfDJF9Jsc
RQVlHIxQdKAJl7oaVnXgDkqtk2qddd3kCDXd74gv813G91z7CjsGyJ93oJIlNS3U
gFbD6V54JMgZ3rSmotYbz98oZxX7MKbtCm1aJ/q+hTv2YK1yMxrnfcieKmOYBbFD
hnW5O6RMA703dBK92j6XRN2EttLkQuujZgy+jXRKtaWMIlkNkWJmOiHmErQngHvt
iNkIcjJumq1ddFX4iaTI40a6zgvIBtxFeDs2RfcaH73er7ctNUUqgQT5rFgJhMmF
x76rQgB5OZUkodb5k2ex7P+Gu4J86bS15094UuYcV09hVeknmTh5Ex9CBKipLS2W
2wKBakf+aVYnNCU6S0nASqt2xrZpGC1v7v6DhuepyyJtn3qSV2PoBiU5Sql+aARp
wUibQMGm44gjyNDqDlVp+ShLQlUH9x8CAwEAAaOCAXUwggFxMB8GA1UdIwQYMBaA
FFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBTI2XhootkZaNU9ct5fCj7c
tYaGpjAOBgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUE
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIgYDVR0gBBswGTANBgsrBgEEAbIxAQIC
TjAIBgZngQwBAgEwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1
c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYG
CCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu
Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRw
Oi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQAVDwoIzQDV
ercT0eYqZjBNJ8VNWwVFlQOtZERqn5iWnEVaLZZdzxlbvz2Fx0ExUNuUEgYkIVM4
YocKkCQ7hO5noicoq/DrEYH5IuNcuW1I8JJZ9DLuB1fYvIHlZ2JG46iNbVKA3ygA
Ez86RvDQlt2C494qqPVItRjrz9YlJEGT0DrttyApq0YLFDzf+Z1pkMhh7c+7fXeJ
qmIhfJpduKc8HEQkYQQShen426S3H0JrIAbKcBCiyYFuOhfyvuwVCFDfFvrjADjd
4jX1uQXd161IyFRbm89s2Oj5oU1wDYz5sx+hoCuh6lSs+/uPuWomIq3y1GDFNafW
+LsHBU16lQo5Q2yh25laQsKRgyPmMpHJ98edm6y2sHUabASmRHxvGiuwwE25aDU0
2SAeepyImJ2CzB80YG7WxlynHqNhpE7xfC7PzQlLgmfEHdU+tHFeQazRQnrFkW2W
kqRGIq7cKRnyypvjPMkjeiV9lRdAM9fSJvsB3svUuu1coIG1xxI1yegoGM4r5QP4
RGIVvYaiI76C0djoSbQ/dkIUUXQuB8AL5jyH34g3BZaaXyvpmnV4ilppMXVAnAYG
ON51WhJ6W0xNdNJwzYASZYH+tmCWI+N60Gv2NNMGHwMZ7e9bXgzUCZH5FaBFDGR5
S9VWqHB73Q+OyIVvIbKYcSc2w/aSuFKGSA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGfzCCBGegAwIBAgIQWunQa/EAPsCVztXqL484YzANBgkqhkiG9w0BAQwFADBL
MQswCQYDVQQGEwJBVDEQMA4GA1UEChMHWmVyb1NTTDEqMCgGA1UEAxMhWmVyb1NT
TCBSU0EgRG9tYWluIFNlY3VyZSBTaXRlIENBMB4XDTI0MDMyMDAwMDAwMFoXDTI0
MDYxODIzNTk1OVowJDEiMCAGA1UEAxMZd3d3LnRlc3QtaWtldjIubXlwYXBlci5h
aTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAITgQHiOM4uxdyNyiMIz
z+QwZ2T9Vj7u+walaNzxAfArD3GavkhNokWT+rZ5VJa/btDotGoevgpLN2pwoBpI
LA9jotsH8hewvP1LAOTk4DZaoIvvO7PE1CG+5Q1N/MUIIPUs1gXoZ4IHDt514SgE
QIgOaWUD3a070R8cK6lpE9AHQabLgp/fnSLUZkV0KUdkOQsWphZl9bQ3WtLEIwMV
4SdSdazKg0eOYTxocO5MuiHdLQK1tO89hwTEtwQQWPmzZDiJOtQgErFkconC2CK2
doXCf+9UEH6qDk4iGLBkp2N5kzc0H1qI1o7OENm+xJGiva9a/d0de8KqTVyv8tGA
B9ECAwEAAaOCAoQwggKAMB8GA1UdIwQYMBaAFMjZeGii2Rlo1T1y3l8KPty1hoam
MB0GA1UdDgQWBBQRbdd/9KOb63dOBE2LDGuLHHY2FDAOBgNVHQ8BAf8EBAMCBaAw
DAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwSQYD
VR0gBEIwQDA0BgsrBgEEAbIxAQICTjAlMCMGCCsGAQUFBwIBFhdodHRwczovL3Nl
Y3RpZ28uY29tL0NQUzAIBgZngQwBAgEwgYgGCCsGAQUFBwEBBHwwejBLBggrBgEF
BQcwAoY/aHR0cDovL3plcm9zc2wuY3J0LnNlY3RpZ28uY29tL1plcm9TU0xSU0FE
b21haW5TZWN1cmVTaXRlQ0EuY3J0MCsGCCsGAQUFBzABhh9odHRwOi8vemVyb3Nz
bC5vY3NwLnNlY3RpZ28uY29tMIIBAwYKKwYBBAHWeQIEAgSB9ASB8QDvAHUAdv+I
Pwq2+5VRwmHM9Ye6NLSkzbsp3GhCCp/mZ0xaOnQAAAGOWYu+7wAABAMARjBEAiAw
i1DCV9bgCxhzaxdcKHwfFoDK8BKzSrwG0aQob/bnQAIgMohuwpQaAlZ9oTVBB7nd
cVyl+wZiJvoEvKb6Q1DZx34AdgA7U3d1Pi25gE6LMFsG/kA7Z9hPw/THvQANLXJv
4frUFwAAAY5Zi753AAAEAwBHMEUCIQCggNeN0shFSW6P30EtmPBGmj8YNuba296l
1++uizUMPQIgStZpkNfj4gD2IdEky8d6xx8RhNyFzW/eX1FDvbdlbQcwJAYDVR0R
BB0wG4IZd3d3LnRlc3QtaWtldjIubXlwYXBlci5haTANBgkqhkiG9w0BAQwFAAOC
AgEALjW6/llw9XgCvgFov7Ke5Orx5ltKqfVjlf5d0KUjUHiXT5cqwcvxf8jeU0HK
bYDVakr9Ok9xuE4LwgsJIbIjc5Z5yvx9v3ShnujTOe1w+fmSUPHKvh48+99cAYj3
SMBMkQT0YRS9DfJQqT1TXNNpWr1P/AqnOuGgZ5JnoE05hL4f5s22VHm8WLyouFaH
YjJjyjAX8wRXe9hWUaOkEOFhUN6oKwPmND7NUlsLHioM3JxV4vOKS7H7uK3ZbP12
xW02sdxyXq7hjJIsmU81SU95YPGJ6ujwPi+TzJaQXywILVivdA+xpNxdcFXeZoWi
KdksTSHU1jPKIcbEZqb2YKiJlK1cMvbpBqYhGVkI3MDMpM0/a42Vn9upTR+1Pb/L
v3pDccbN8DNwToSw6Iyl+xwKdIrN4L5gTxpsiisZ0B7l6mzvxVuQOvmLyn3rdb3c
uk21b+X5UwUz1fchpiP4JLU5cT4nMbyWKhvVaq8RB9OpeZuDwGsqAOhL9E6YF28z
YIwsfYUf0zRbQWe8M/er8WU43BPCXpmHBxsawzQIIpR2Ced04PbzkV8BA2YUdqpV
PlgTXLz8qJh1JfjFErjqorq//W4OLy4MK0/MQ01jnMluO34uoggCVVqXGGGskbil
0KhfMrTe8FqCSzS67PBvVS2agZol9vsM2E3F1PKKKkfagl8=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAhOBAeI4zi7F3I3KIwjPP5DBnZP1WPu77BqVo3PEB8CsPcZq+
SE2iRZP6tnlUlr9u0Oi0ah6+Cks3anCgGkgsD2Oi2wfyF7C8/UsA5OTgNlqgi+87
s8TUIb7lDU38xQgg9SzWBehnggcO3nXhKARAiA5pZQPdrTvRHxwrqWkT0AdBpsuC
n9+dItRmRXQpR2Q5CxamFmX1tDda0sQjAxXhJ1J1rMqDR45hPGhw7ky6Id0tArW0
7z2HBMS3BBBY+bNkOIk61CASsWRyicLYIrZ2hcJ/71QQfqoOTiIYsGSnY3mTNzQf
WojWjs4Q2b7EkaK9r1r93R17wqpNXK/y0YAH0QIDAQABAoIBAGpxirQIllpNq/cF
hXCtONi/vdQ07aY0o3tLfpmfp8HRfOmw4MXjCx9Zz/nlcFHiwM8x23U3c12jq5zk
5BypvEIHuypjTxiTSJJQR0MV5lckeoAfAWCdSKJP3gWud9MPE/fUFw9cga60IMEt
BVWdMmTLxrpZQnfH91pIouFvf6OhRIV4c5ZTSq0zcOhZydNI5kYGuPAxjvUQ2KFY
R/Tl5FRBed4DuECd9jTyp2d5sElZ2KhUp7f95uRW8f2w9F9ERYkkV7dAZvtViFr4
jXj9UWEIqbmR6LSkeLCgzy1bZmDW6ohDgxjufWhzBbGM4N/3jZ466XpALcQXRX9q
D3tTuAECgYEAw2IPwIrMVJQpeLBEvJcPX2cQnTViv1x8LJgFxa6Ea1DE6XQomvDt
nlFKCRdbtnR/0k2rpawIfnJ1zOs+8/gPW+F4yBOVnK/gIEaej4vaiRzNmuIqc+4n
RIS3FaKYiaGX+Jxsi8XN+v46tpBFTzio56AF2HysildHu12gh83G8iECgYEArhmu
gl3BasQorzoftm5aYcUKT6/AN7H7DOeXIleaGE1i+l358OY7Eb4T/QVqfb4g3DpK
F/BhzWcTpcnFMas2Rn6wUxkNiqSr9N76+GXPfcXUDgUg3MMAw1NKNLPULEmH05n9
S7Qp8gUYTmLlZ8miIpGBOmqsUMHnMeccS+rMv7ECgYEAmgeqx24k2+DaOO0to0er
tNh5vpYhvR7aPgWzNz734eqQ8kLC6DNcAN2w8i3Z/aMmSdM1qKxRHe56dAxZWtiK
szKzl3fpENeOZ6OEyUHGDSYJ6Tq3oSF1D41ZENNYUdh1CGe5Iw/T7TWTb+2Y1nWi
osgDE8Jl+8IHKO0M60MMvkECgYADAoSm0lIes2d0qA+WStAbMpncCNDM5bHOZk6R
lGwgkW3toCRLCt/ojZ2w2SAfLmNJC2TuhwRZ1bdcPWHAWxJkI5qOxTcbt38Vi6lR
FAmDRiFFYMdRqblgpxb4VEeNwHOtr9LWNTYobfgems0Wf0DjUhqm1ONHviJuFW3C
zjtd8QKBgQCJFyJgRXcDLq7UhSh3DFLvZvNQjxZywlq2o8hV0/OcWQelvnNKACIK
Fai117XR1bOoCgguNzr5R73qEFHIa2hjLP4l8cRa/nlmHvw47u45GxxAqKlVCO95
klz6WMLuhQQ1lNULJ2bsKv+YOVs1acrE4omgZ0t3lsQN9wxAFqyjPA==
-----END RSA PRIVATE KEY-----
version: '2.4' version: '2.4'
volumes:
charon_socket:
driver: local
services: services:
strongswan: strongswan:
restart: always restart: always
...@@ -10,9 +13,10 @@ services: ...@@ -10,9 +13,10 @@ services:
- NET_RAW - NET_RAW
volumes: volumes:
- ./templates/ikev2-express.conf:/etc/swanctl/conf.d/ikev2.conf:ro - ./templates/ikev2-express.conf:/etc/swanctl/conf.d/ikev2.conf:ro
- ./data/certs/{{ansible_ssh_host}}/certificate.crt:/etc/swanctl/x509/cert.pem:ro - {{ansible_user_dir}}/certs/cert.pem:/etc/swanctl/x509/cert.pem:ro
- ./data/certs/{{ansible_ssh_host}}/private.key:/etc/swanctl/private/privkey.pem:ro - {{ansible_user_dir}}/certs/privkey.pem:/etc/swanctl/private/privkey.pem:ro
- ./data/certs/{{ansible_ssh_host}}/ca_bundle.crt:/etc/swanctl/x509ca/ca.pem:ro - {{ansible_user_dir}}/certs/chain.pem:/etc/swanctl/x509ca/ca.pem:ro
- charon_socket:/var/run
# command: sleep infinity # command: sleep infinity
environment: environment:
FOO: 3 FOO: 3
...@@ -22,3 +26,28 @@ services: ...@@ -22,3 +26,28 @@ services:
{% if dns %} {% if dns %}
CHARON_DNS: {{ dns }} CHARON_DNS: {{ dns }}
{% endif %} {% endif %}
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
command: --path.rootfs=/host --web.listen-address=127.0.0.1:9100
pid: host
restart: always
cap_add:
- SYS_TIME
network_mode: host
volumes:
- '/:/host:ro,rslave'
charon-socat:
restart: always
image: alpine/socat:latest
network_mode: host
volumes:
- charon_socket:/mnt/charon
command: tcp-listen:5000,bind=127.0.0.1,fork,reuseaddr unix-connect:/mnt/charon/charon.vici
frpc:
restart: always
image: fatedier/frpc:v{{frp_version}}
command: -c /frpc.ini
network_mode: host
volumes:
- ./templates/frpc.ini:/frpc.ini:ro
[common]
server_addr = {{prom_host}}
server_port = {{frp_port}}
tcp_mux = true
protocol = tcp
token = {{frp_token}}
[{{inventory_hostname_short}}_frpc]
privilege_mode = true
type = tcp
local_ip = 127.0.0.1
local_port = 9100
remote_port = {{ node_exporter_port_base + seq }}
use_encryption = true
use_compression = true
[{{inventory_hostname_short}}_charon]
privilege_mode = true
type = tcp
local_ip = 127.0.0.1
local_port = 5000
remote_port = {{ charon_port_base + seq }}
use_encryption = true
use_compression = true
connections {
ikev2-eap-mschapv2 {
version = 2
unique = never
rekey_time = 0s
fragmentation = yes
dpd_delay = 60s
send_cert = always
pools = rw_pool
proposals = aes256-sha256-prfsha256-modp2048, aes256gcm16-prfsha384-modp1024, default
local_addrs = %any
local {
certs = cert.pem
id = {{server_id}}
}
remote {
auth = eap-mschapv2
eap_id = %any
}
children {
ikev2-eap-mschapv2 {
local_ts = {{allow_network}}
rekey_time = 0s
dpd_action = clear
esp_proposals = aes256-sha256, aes128-sha1, default
}
}
}
}
secrets {
private-cert {
file = privkey.pem
}
{% for user in users %}
eap-{{user.id}} {
id = {{user.id}}
secret = "{{user.secret}}"
}
{% endfor %}
}
pools {
rw_pool {
addrs = {{network}}
{% if dns %}
dns = {{dns}}
{% endif %}
}
}
connections {
ikev2-eap-mschapv2 {
version = 2
unique = never
rekey_time = 0s
fragmentation = yes
dpd_delay = 60s
send_cert = never
pools = rw_pool
proposals = aes256-sha256-prfsha256-modp2048, aes256gcm16-prfsha384-modp1024, default
local_addrs = %any
local {
auth = psk
id = {{server_id}}
}
remote {
auth = eap-mschapv2
eap_id = %any
}
children {
ikev2-eap-mschapv2 {
local_ts = {{allow_network}}
rekey_time = 0s
dpd_action = clear
esp_proposals = aes256-sha256, aes128-sha1, default
}
}
}
}
secrets {
ike-main {
id = {{server_id}}
secret = "{{wg_privkey}}"
}
{% for user in users %}
eap-{{user.id}} {
id = {{user.id}}
secret = "{{user.secret}}"
}
{% endfor %}
}
pools {
rw_pool {
addrs = {{network}}
{% if dns %}
dns = {{dns}}
{% endif %}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment