@super-protocol/addons-tee 0.8.6 → 0.8.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +5 -1
  2. package/bindings/sgx-native/README.md +1 -1
  3. package/bindings/sgx-native/build/Release/libmbedcrypto_gramine.so.13 +0 -0
  4. package/bindings/sgx-native/build/Release/libmbedx509_gramine.so.4 +0 -0
  5. package/bindings/sgx-native/build/Release/sgx_native.node +0 -0
  6. package/dist/quote-validator/index.d.ts +1 -1
  7. package/dist/quote-validator/index.js +2 -2
  8. package/dist/quote-validator/{sgx-untrasted-validator.js → sgx-untrusted-validator.js} +1 -1
  9. package/dist/sgx-native-module/consts.d.ts +9 -0
  10. package/dist/sgx-native-module/consts.js +8 -2
  11. package/dist/sgx-native-module/dcap-quote-verify.service.d.ts +1 -1
  12. package/dist/sgx-native-module/dcap-quote-verify.service.js +8 -4
  13. package/dist/sgx-native-module/enclave.service.d.ts +16 -6
  14. package/dist/sgx-native-module/enclave.service.js +19 -5
  15. package/dist/sgx-native-module/errors.d.ts +5 -0
  16. package/dist/sgx-native-module/errors.js +18 -5
  17. package/dist/sgx-native-module/pki.service.d.ts +41 -0
  18. package/dist/sgx-native-module/pki.service.js +60 -2
  19. package/dist/sgx-native-module/sgx-tests.js +82 -0
  20. package/package.json +7 -6
  21. package/test_sgx_env/Dockerfile +16 -0
  22. package/test_sgx_env/build-and-run-tests.sh +29 -0
  23. package/test_sgx_env/gsc-config.yaml +14 -0
  24. package/test_sgx_env/node16-base.manifest +13 -0
  25. package/test_sgx_env/sgx_default_qcnl.conf +20 -0
  26. package/bindings/build-sgx-native.sh +0 -9
  27. package/bindings/sgx-native/build/Release/libmbedcrypto_gramine.so.12 +0 -0
  28. package/bindings/sgx-native/build/Release/libsgx_util.so +0 -0
  29. package/bindings/sgx-native/docker_build.sh +0 -78
  30. package/bindings/sgx-native/node.manifest.template +0 -59
  31. package/bindings/sgx-native/run_tests.sh +0 -10
  32. package/bindings/sgx-native/test_certs/attestation/cert.der +0 -0
  33. package/bindings/sgx-native/test_certs/attestation/cert.pem +0 -124
  34. package/bindings/sgx-native/test_certs/attestation/cert_maliciously.der +0 -0
  35. package/bindings/sgx-native/test_certs/attestation/cert_maliciously.pem +0 -124
  36. package/bindings/sgx-native/test_certs/attestation/cert_without_quote.der +0 -0
  37. package/bindings/sgx-native/test_certs/attestation/cert_without_quote.pem +0 -20
  38. package/bindings/sgx-native/test_certs/attestation/cert_wrong_hash.der +0 -0
  39. package/bindings/sgx-native/test_certs/attestation/cert_wrong_hash.pem +0 -124
  40. package/bindings/sgx-native/test_certs/ssl/expired.pem +0 -68
  41. package/bindings/sgx-native/test_certs/ssl/hostnameTest.pem +0 -22
  42. package/bindings/sgx-native/test_certs/ssl/multipleHost.pem +0 -62
  43. package/bindings/sgx-native/test_certs/ssl/noHost.pem +0 -61
  44. package/bindings/sgx-native/test_certs/ssl/noIntermidiate.pem +0 -62
  45. package/bindings/sgx-native/test_certs/ssl/revoked.pem +0 -68
  46. package/bindings/sgx-native/test_certs/ssl/untrusted.pem +0 -65
  47. package/bindings/sgx-native/test_certs/ssl/valid.pem +0 -94
  48. package/dist/sgx-native-module/dcap-quote-verify.service.spec.d.ts +0 -1
  49. /package/dist/quote-validator/{sgx-untrasted-validator.d.ts → sgx-untrusted-validator.d.ts} +0 -0
  50. /package/dist/{quote-validator/sgx-untrasted-validator.spec.d.ts → sgx-native-module/sgx-tests.d.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@super-protocol/addons-tee",
3
- "version": "0.8.6",
3
+ "version": "0.8.8",
4
4
  "description": "The TEE trusted loader addons",
5
5
  "tags": [
6
6
  "tee"
@@ -25,8 +25,8 @@
25
25
  "lib": "dist"
26
26
  },
27
27
  "scripts": {
28
- "build": "tsc -p tsconfig.json",
29
- "build:clean": "rm -rf ./dist && tsc -p tsconfig.json",
28
+ "build": "tsc -p tsconfig.build.json",
29
+ "build:clean": "rm -rf ./dist && tsc -p tsconfig.build.json",
30
30
  "lint": "eslint --ext .ts src",
31
31
  "lint:fix": "eslint --ext .ts src --fix",
32
32
  "start": "yarn build",
@@ -43,17 +43,18 @@
43
43
  "axios": "^0.24.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@types/jest": "^27.0.3",
46
+ "@peculiar/x509": "^1.9.3",
47
+ "@types/jest": "^27.5.2",
47
48
  "@types/node": "^17.0.0",
48
49
  "@typescript-eslint/eslint-plugin": "^5.8.0",
49
50
  "@typescript-eslint/parser": "^5.8.0",
50
51
  "eslint": "^8.5.0",
51
52
  "eslint-config-prettier": "^8.3.0",
52
53
  "eslint-plugin-prettier": "^4.0.0",
53
- "jest": "^27.4.5",
54
+ "jest": "^27.5.1",
54
55
  "nodemon": "^2.0.15",
55
56
  "prettier": "^2.5.1",
56
- "ts-jest": "^27.1.2",
57
+ "ts-jest": "^27.1.5",
57
58
  "typescript": "^4.5.4"
58
59
  },
59
60
  "jest": {
@@ -0,0 +1,16 @@
1
+ FROM node:16-buster-slim
2
+
3
+ RUN apt update && apt install -y libcurl4 libcjson1 curl gnupg2 && rm -rf /var/lib/apt/lists/*
4
+ RUN curl -fsSL https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add - \
5
+ && echo 'deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu bionic main' >> /etc/apt/sources.list.d/intel-sgx.list \
6
+ && apt-get update \
7
+ && apt install libsgx-dcap-default-qpl libsgx-urts -y
8
+
9
+ COPY ./sgx_default_qcnl.conf /etc/sgx_default_qcnl.conf
10
+
11
+
12
+ RUN mkdir -p /sp/run
13
+
14
+ WORKDIR /sp/run
15
+
16
+ ENTRYPOINT ["/usr/local/bin/node", "/sp/run/dist/sgx-native-module/sgx-tests.js"]
@@ -0,0 +1,29 @@
1
+ #!/bin/bash
2
+ set -e
3
+ SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )"
4
+
5
+ GSC_FIXED_COMMIT="v1.4"
6
+ BASE_IMAGE_NAME="node16-sgx-tests"
7
+
8
+ docker rmi gsc-${BASE_IMAGE_NAME} -f
9
+ docker rmi gsc-${BASE_IMAGE_NAME}-unsigned -f
10
+ docker rmi ${BASE_IMAGE_NAME} -f
11
+
12
+ docker build -t ${BASE_IMAGE_NAME} --rm .
13
+
14
+ rm -f enclave-key.pem
15
+ openssl genrsa -3 -out enclave-key.pem 3072
16
+
17
+ rm -rf ./gsc
18
+ git clone https://github.com/gramineproject/gsc && cd gsc && git reset --hard "${GSC_FIXED_COMMIT}" && git config user.email "super@user.com" && git config user.name "SuperUser" && git cherry-pick 4bf7976
19
+ curl https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key -o ./keys/intel-sgx-deb.key
20
+ sed -i 's/\(gramine-sgx \/gramine\/app_files\/entrypoint\)/exec \1/g; s/\(gramine-direct \/gramine\/app_files\/entrypoint\)/exec \1/g' ./templates/apploader.common.template
21
+
22
+ ./gsc build ${BASE_IMAGE_NAME} ../node16-base.manifest -c ../gsc-config.yaml
23
+ ./gsc sign-image ${BASE_IMAGE_NAME} ../enclave-key.pem -c ../gsc-config.yaml
24
+
25
+ pushd ${SCRIPT_DIR}/..
26
+ npm install && npm run build
27
+ popd
28
+
29
+ docker run --rm -it --device=/dev/sgx_enclave -v /dev/sgx:/dev/sgx -v ${SCRIPT_DIR}/../:/sp/run -v /var/run/aesmd/aesm.socket:/var/run/aesmd/aesm.socket gsc-${BASE_IMAGE_NAME}
@@ -0,0 +1,14 @@
1
+ # Specify the OS distro. Currently tested distros are Ubuntu 18.04 and Ubuntu 20.04.
2
+ Distro: "ubuntu:20.04"
3
+
4
+ # If you're using your own fork and branch of Gramine, specify the GitHub link and the branch name
5
+ # below; typically, you want to keep the default values though
6
+ Gramine:
7
+ Repository: "https://github.com/Super-Protocol/sp-gramine.git"
8
+ Branch: "v1.4-sp"
9
+
10
+ # Specify the Intel SGX driver installed on your machine (more specifically, on the machine where
11
+ # the graminized Docker container will run); there are several variants of the SGX driver:
12
+ SGXDriver:
13
+ Repository: "https://github.com/intel/SGXDataCenterAttestationPrimitives.git"
14
+ Branch: "DCAP_1.12 && cp -r driver/linux/* ."
@@ -0,0 +1,13 @@
1
+ sgx.nonpie_binary = true
2
+ sgx.enclave_size = "1G"
3
+ sgx.max_threads = 64
4
+
5
+ sys.enable_sigterm_injection = true
6
+ sys.insecure__allow_eventfd = true
7
+
8
+ sgx.allowed_files = [
9
+ "file:/sp/run/",
10
+ ]
11
+
12
+ sgx.remote_attestation = "dcap"
13
+ sgx.isvsvn = 0
@@ -0,0 +1,20 @@
1
+ # PCCS server address
2
+ PCCS_URL=https://intelpccs.svc:8081/sgx/certification/v3/
3
+
4
+ # To accept insecure HTTPS certificate, set this option to FALSE
5
+ USE_SECURE_CERT=TRUE
6
+
7
+ # You can use Intel PCS to get quote verification collateral
8
+ COLLATERAL_SERVICE=https://api.trustedservices.intel.com/sgx/certification/v3/
9
+
10
+ # If you use PCCS service to get quote verification collateral, you can specify which API version is to be used
11
+ # The legacy 3.0 API will return CRLs in HEX encoded DER format, while the new 3.1 API will return raw DER format
12
+ PCCS_API_VERSION=3.1
13
+
14
+ # Maximum retry times for QCNL. If RETRY is not defined or set to 0, no retry will be performed.
15
+ # It will first wait one second and then for all forthcoming retries it will double the waiting time
16
+ # By using RETRY_DELAY you disable this exponential backoff algorithm
17
+ #RETRY_TIMES=6
18
+
19
+ # Sleep this amount of seconds before each retry when a transfer has failed with a transient error
20
+ #RETRY_DELAY=10
@@ -1,9 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
-
4
- docker run --rm --entrypoint /bin/bash -v $PWD/sgx-native:/app/src gramineproject/gramine:v1.3.1 /app/src/docker_build.sh
5
- if [ $? -eq 0 ]; then
6
- echo -e '\033[0;32mBUILD SUCCESS'
7
- else
8
- echo -e '\033[0;31mBUILD FAILED'
9
- fi
@@ -1,78 +0,0 @@
1
- #!/bin/bash
2
- set -e
3
-
4
- # Install deps
5
- apt update
6
- DEBIAN_FRONTEND=noninteractive apt install -y git wget make gcc g++ curl cmake clang meson libssl-dev libsgx-dcap-quote-verify-dev libcurl4-openssl-dev
7
-
8
- # Download and install Intel SDK
9
- cd /opt/intel
10
- wget https://download.01.org/intel-sgx/sgx-linux/2.18/distro/ubuntu20.04-server/sgx_linux_x64_sdk_2.18.100.3.bin
11
- chmod +x sgx_linux_x64_sdk_2.18.100.3.bin
12
- echo yes | ./sgx_linux_x64_sdk_2.18.100.3.bin
13
- rm -f sgx_linux_x64_sdk_2.18.100.3.bin
14
-
15
- # Clone and Build QVL
16
- cd /app
17
- git clone --single-branch -b DCAP_1.15 https://github.com/intel/SGXDataCenterAttestationPrimitives.git
18
- cd /app/SGXDataCenterAttestationPrimitives/QuoteVerification/QVL/Src
19
- ./release
20
-
21
- # Clone and Download mbedtls lib
22
- cd /app
23
- git clone --single-branch -b v1.3.1 https://github.com/gramineproject/gramine.git
24
- cd /app/gramine
25
- meson subprojects download
26
-
27
- # Clone and Build NAPI Stubs
28
- cd /app
29
- git clone --single-branch -b main https://github.com/napi-bindings/node-api-stub.git
30
- cd /app/node-api-stub
31
- git checkout a253cf6
32
- mkdir ./build
33
- cmake -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" -S ./ -B ./build
34
- cmake --build ./build
35
-
36
- # Install nodejs
37
- curl -sL https://deb.nodesource.com/setup_16.x | bash -
38
- DEBIAN_FRONTEND=noninteractive apt install -y nodejs
39
-
40
- # Build addon
41
- cd /app/src/
42
- export GRAMINE_PATH=/app/gramine
43
- export SGX_PRIMITIVES=/app/SGXDataCenterAttestationPrimitives
44
- export NODE_API_STUB=/app/node-api-stub/build
45
-
46
- npm i -g node-addon-api node-gyp nan
47
- MBEDTLS=$(find ${GRAMINE_PATH}/subprojects/mbedtls* -maxdepth 0 -type d)
48
- if [ $? -eq 0 ]; then
49
- MBEDTLS=$(find ${MBEDTLS}/mbedtls* -maxdepth 0 -type d)
50
- if [ $? -eq 0 ]; then
51
- echo "MBEDTLS found in ${MBEDTLS}"
52
- export MBEDTLS=${MBEDTLS}
53
- else
54
- echo "MBEDTLS not found"
55
- exit 1
56
- fi
57
- else
58
- echo "MBEDTLS not found"
59
- exit 1
60
- fi
61
-
62
- export NODE_PATH=$(npm root -g)
63
-
64
- rm -rf /app/src/build
65
- npx node-gyp configure build
66
- strip ./build/Release/sgx_native.node
67
-
68
- BUILD_DIR=/app/src/build/Release
69
- cp /usr/lib/x86_64-linux-gnu/libmbedcrypto_gramine.so.12 ${BUILD_DIR}
70
- cp /usr/lib/x86_64-linux-gnu/libmbedx509_gramine.so.4 ${BUILD_DIR}
71
- cp /usr/lib/x86_64-linux-gnu/libsgx_dcap_quoteverify.so.1 ${BUILD_DIR}
72
- cp /usr/lib/x86_64-linux-gnu/libsgx_util.so ${BUILD_DIR}
73
- cp /usr/lib/x86_64-linux-gnu/libcjson.so.1 ${BUILD_DIR} #only for tests
74
-
75
- # libsgx_default_qcnl_wrapper.so.1 and libdcap_quoteprov.so.1 installed with the package libsgx_dcap_default_qpl
76
-
77
- #TODO: CHECK NEXT LIBS
78
- #libsgx_urts.so.1
@@ -1,59 +0,0 @@
1
- # node manifest template
2
-
3
- loader.preload = "file:{{ gramine.libos }}" # for compatibility with v1.0
4
-
5
- loader.entrypoint = "file:{{ gramine.libos }}"
6
- libos.entrypoint = "/usr/bin/node"
7
- loader.log_level = "{{ log_level }}"
8
- loader.argv0_override = "node"
9
- loader.insecure__use_cmdline_argv = true
10
-
11
-
12
- loader.env.LD_LIBRARY_PATH = "/lib:/lib/x86_64-linux-gnu/"
13
-
14
- fs.mount.lib.type = "chroot"
15
- fs.mount.lib.path = "/lib"
16
- fs.mount.lib.uri = "file:{{ gramine.runtimedir() }}"
17
-
18
- fs.mount.usr.type = "chroot"
19
- fs.mount.usr.path = "/usr"
20
- fs.mount.usr.uri = "file:/usr"
21
-
22
- fs.mount.lib2.type = "chroot"
23
- fs.mount.lib2.path = "/lib/x86_64-linux-gnu"
24
- fs.mount.lib2.uri = "file:/lib/x86_64-linux-gnu"
25
-
26
- fs.mount.etc.type = "chroot"
27
- fs.mount.etc.path = "/etc"
28
- fs.mount.etc.uri = "file:/etc"
29
-
30
- sys.insecure__allow_eventfd = true
31
-
32
- sgx.debug = true
33
- sgx.nonpie_binary = true
34
- sgx.thread_num = 256
35
- sgx.enclave_size = "8G"
36
- sgx.remote_attestation = true
37
-
38
- sgx.trusted_files = [
39
- "file:{{ gramine.libos }}",
40
- "file:/usr/bin/node",
41
- "file:{{ gramine.runtimedir() }}/",
42
- "file:/lib/x86_64-linux-gnu/",
43
- "file:./",
44
- ]
45
-
46
- sgx.allowed_files = [
47
- "file:/etc/nsswitch.conf",
48
- "file:/etc/host.conf",
49
- "file:/etc/resolv.conf",
50
- "file:/etc/ethers",
51
- "file:/etc/hosts",
52
- "file:/etc/group",
53
- "file:/etc/passwd",
54
- "file:/etc/gai.conf",
55
- "file:/etc/ssl/certs/ca-certificates.crt",
56
- "file:/etc/sgx_default_qcnl.conf",
57
- "file:/etc/ssl/certs/"
58
- ]
59
-
@@ -1,10 +0,0 @@
1
- #!/bin/sh -ex
2
-
3
- # Before run test generate or specify another enclave-key.pem manually
4
- npm install binding
5
-
6
- gramine-manifest -Dlog_level=error node.manifest.template > node.manifest
7
- gramine-sgx-sign --manifest node.manifest --output node.manifest.sgx
8
- gramine-sgx-get-token --output node.token --sig node.sig
9
-
10
- gramine-sgx node test.js
@@ -1,124 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- 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
- 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
- MDEwMTAwMDAwMFoXDTMwMTIzMTIzNTk1OVowOTEOMAwGA1UEAwwFUkFUTFMxGjAY
5
- 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
- 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
- bITTxcRyO8RRJMBgDcEByKCU9kGwTNP7Q7vEJWaaKP0Q2EHDVxreanY+lebR21GY
8
- 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
- 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
- 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
- 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
- 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
- ns2FTl1quElpubUk170uZjgfSgmvUVAvx/ZFBGYJoBPopdpGP9u2RSATxw4ioQMp
14
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- BJWby3xSdoypGc2EdS/ZgIwpzTp9G9ywPOl4bQ/MZEWgTuALMbled5uArViuBdb1
27
- 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
- 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
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAOcAAAAAAAAArhI8v6lsJoVg
30
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
38
- BwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwUAXA4AAC0tLS0tQkVHSU4gQ0VSVElG
39
- SUNBVEUtLS0tLQpNSUlFOGpDQ0JKbWdBd0lCQWdJVkFMancxQm5hbmNxeWN0aE9Q
40
- UFFKY0xEOFZKd09NQW9HQ0NxR1NNNDlCQU1DTUhBeElqQWdCZ05WCkJBTU1HVWx1
41
- ZEdWc0lGTkhXQ0JRUTBzZ1VHeGhkR1p2Y20wZ1EwRXhHakFZQmdOVkJBb01FVWx1
42
- ZEdWc0lFTnZjbkJ2Y21GMGFXOXUKTVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdG
43
- eVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSkJnTlZCQVlUQWxWVE1CNFhEVEl4TVRF
44
- eQpNakUwTXpBd05sb1hEVEk0TVRFeU1qRTBNekF3Tmxvd2NERWlNQ0FHQTFVRUF3
45
- d1pTVzUwWld3Z1UwZFlJRkJEU3lCRFpYSjBhV1pwClkyRjBaVEVhTUJnR0ExVUVD
46
- Z3dSU1c1MFpXd2dRMjl5Y0c5eVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJ
47
- RU5zWVhKaE1Rc3cKQ1FZRFZRUUlEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdXVEFU
48
- QmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUW1DU3dXSTRtdAp5MzNWZ2Jp
49
- Umg0NjlvTUd0ZDdRS08va3RPY3hKeWlpWXdTWnB2SDVPbTR4SGVCajUrNEo1QkVa
50
- bWtNSXFBcktkaUlHYldaSXgraEpkCm80SUREakNDQXdvd0h3WURWUjBqQkJnd0Zv
51
- QVVsVzlkemIwYjRlbEFTY25VOURQT0FWY0wzbFF3YXdZRFZSMGZCR1F3WWpCZ29G
52
- NmcKWElaYWFIUjBjSE02THk5aGNHa3VkSEoxYzNSbFpITmxjblpwWTJWekxtbHVk
53
- R1ZzTG1OdmJTOXpaM2d2WTJWeWRHbG1hV05oZEdsdgpiaTkyTXk5d1kydGpjbXcv
54
- WTJFOWNHeGhkR1p2Y20wbVpXNWpiMlJwYm1jOVpHVnlNQjBHQTFVZERnUVdCQlNB
55
- VmpXWHJ1M3NPRWVwCnZ2ZENBMUFmdEZjTXNqQU9CZ05WSFE4QkFmOEVCQU1DQnNB
56
- d0RBWURWUjBUQVFIL0JBSXdBRENDQWpzR0NTcUdTSWI0VFFFTkFRU0MKQWl3d2dn
57
- SW9NQjRHQ2lxR1NJYjRUUUVOQVFFRUVNMTVHZklzRG1ZMWwyR1gzTE9kS0R3d2dn
58
- RmxCZ29xaGtpRytFMEJEUUVDTUlJQgpWVEFRQmdzcWhraUcrRTBCRFFFQ0FRSUJC
59
- REFRQmdzcWhraUcrRTBCRFFFQ0FnSUJCREFRQmdzcWhraUcrRTBCRFFFQ0F3SUJB
60
- ekFRCkJnc3Foa2lHK0UwQkRRRUNCQUlCQXpBUkJnc3Foa2lHK0UwQkRRRUNCUUlD
61
- QVA4d0VRWUxLb1pJaHZoTkFRMEJBZ1lDQWdEL01CQUcKQ3lxR1NJYjRUUUVOQVFJ
62
- SEFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJSUFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJ
63
- SkFnRUFNQkFHQ3lxRwpTSWI0VFFFTkFRSUtBZ0VBTUJBR0N5cUdTSWI0VFFFTkFR
64
- SUxBZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSU1BZ0VBTUJBR0N5cUdTSWI0ClRRRU5B
65
- UUlOQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlPQWdFQU1CQUdDeXFHU0liNFRRRU5B
66
- UUlQQWdFQU1CQUdDeXFHU0liNFRRRU4KQVFJUUFnRUFNQkFHQ3lxR1NJYjRUUUVO
67
- QVFJUkFnRUxNQjhHQ3lxR1NJYjRUUUVOQVFJU0JCQUVCQU1ELy84QUFBQUFBQUFB
68
- QUFBQQpNQkFHQ2lxR1NJYjRUUUVOQVFNRUFnQUFNQlFHQ2lxR1NJYjRUUUVOQVFR
69
- RUJqQmdhZ0FBQURBUEJnb3Foa2lHK0UwQkRRRUZDZ0VCCk1CNEdDaXFHU0liNFRR
70
- RU5BUVlFRUJTSnhtYjlkdGkrTm5jMHBCYnFpVTB3UkFZS0tvWklodmhOQVEwQkJ6
71
- QTJNQkFHQ3lxR1NJYjQKVFFFTkFRY0JBUUgvTUJBR0N5cUdTSWI0VFFFTkFRY0NB
72
- UUgvTUJBR0N5cUdTSWI0VFFFTkFRY0RBUUgvTUFvR0NDcUdTTTQ5QkFNQwpBMGNB
73
- TUVRQ0lDUFo4VXRJQ25IL2FQVUJYc3dnSXlvWHFCYnBTVG43OUJPc21zRkJzWDhD
74
- QWlBK2pzZXFDNS80Z0UvanRFTGZ1eHViCmFERUZLOHBMb0g1TGIvbVNGTU0rMWc9
75
- PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tLS0tLS1CRUdJTiBDRVJUSUZJQ0FU
76
- RS0tLS0tCk1JSUNsakNDQWoyZ0F3SUJBZ0lWQUpWdlhjMjlHK0hwUUVuSjFQUXp6
77
- Z0ZYQzk1VU1Bb0dDQ3FHU000OUJBTUMKTUdneEdqQVlCZ05WQkFNTUVVbHVkR1Zz
78
- SUZOSFdDQlNiMjkwSUVOQk1Sb3dHQVlEVlFRS0RCRkpiblJsYkNCRApiM0p3YjNK
79
- aGRHbHZiakVVTUJJR0ExVUVCd3dMVTJGdWRHRWdRMnhoY21FeEN6QUpCZ05WQkFn
80
- TUFrTkJNUXN3CkNRWURWUVFHRXdKVlV6QWVGdzB4T0RBMU1qRXhNRFV3TVRCYUZ3
81
- MHpNekExTWpFeE1EVXdNVEJhTUhBeElqQWcKQmdOVkJBTU1HVWx1ZEdWc0lGTkhX
82
- Q0JRUTBzZ1VHeGhkR1p2Y20wZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWcwpJRU52
83
- Y25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtH
84
- QTFVRUNBd0NRMEV4CkN6QUpCZ05WQkFZVEFsVlRNRmt3RXdZSEtvWkl6ajBDQVFZ
85
- SUtvWkl6ajBEQVFjRFFnQUVOU0IvN3QyMWxYU08KMkN1enB4dzc0ZUpCNzJFeURH
86
- Z1c1clhDdHgydFZUTHE2aEtrNnorVWlSWkNucVI3cHNPdmdxRmVTeGxtVGxKbApl
87
- VG1pMldZejNxT0J1ekNCdURBZkJnTlZIU01FR0RBV2dCUWlaUXpXV3AwMGlmT0R0
88
- SlZTdjFBYk9TY0dyREJTCkJnTlZIUjhFU3pCSk1FZWdSYUJEaGtGb2RIUndjem92
89
- TDJObGNuUnBabWxqWVhSbGN5NTBjblZ6ZEdWa2MyVnkKZG1salpYTXVhVzUwWld3
90
- dVkyOXRMMGx1ZEdWc1UwZFlVbTl2ZEVOQkxtUmxjakFkQmdOVkhRNEVGZ1FVbFc5
91
- ZAp6YjBiNGVsQVNjblU5RFBPQVZjTDNsUXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01C
92
- SUdBMVVkRXdFQi93UUlNQVlCCkFmOENBUUF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdS
93
- QUlnWHNWa2kwdytpNlZZR1czVUYvMjJ1YVhlMFlKRGoxVWUKbkErVGpEMWFpNWND
94
- SUNZYjFTQW1ENXhrZlRWcHZvNFVveWlTWXhyRFdMbVVSNENJOU5LeWZQTisKLS0t
95
- LS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0t
96
- LS0KTUlJQ2p6Q0NBalNnQXdJQkFnSVVJbVVNMWxxZE5JbnpnN1NWVXI5UUd6a25C
97
- cXd3Q2dZSUtvWkl6ajBFQXdJdwphREVhTUJnR0ExVUVBd3dSU1c1MFpXd2dVMGRZ
98
- SUZKdmIzUWdRMEV4R2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52CmNuQnZjbUYwYVc5
99
- dU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBF
100
- eEN6QUoKQmdOVkJBWVRBbFZUTUI0WERURTRNRFV5TVRFd05EVXhNRm9YRFRRNU1U
101
- SXpNVEl6TlRrMU9Wb3dhREVhTUJnRwpBMVVFQXd3UlNXNTBaV3dnVTBkWUlGSnZi
102
- M1FnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1ZzSUVOdmNuQnZjbUYwCmFXOXVNUlF3
103
- RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFQ0F3Q1EwRXhDekFK
104
- QmdOVkJBWVQKQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdB
105
- RUM2bkV3TURJWVpPai9pUFdzQ3phRUtpNwoxT2lPU0xSRmhXR2pibkJWSmZWbmtZ
106
- NHUzSWprRFlZTDBNeE80bXFzeVlqbEJhbFRWWXhGUDJzSkJLNXpsS09CCnV6Q0J1
107
- REFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAwaWZPRHRKVlN2MUFiT1NjR3JEQlNC
108
- Z05WSFI4RVN6QkoKTUVlZ1JhQkRoa0ZvZEhSd2N6b3ZMMk5sY25ScFptbGpZWFJs
109
- Y3k1MGNuVnpkR1ZrYzJWeWRtbGpaWE11YVc1MApaV3d1WTI5dEwwbHVkR1ZzVTBk
110
- WVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZnUVVJbVVNMWxxZE5JbnpnN1NWClVy
111
- OVFHemtuQnF3d0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1B
112
- WUJBZjhDQVFFd0NnWUkKS29aSXpqMEVBd0lEU1FBd1JnSWhBT1cvNVFrUitTOUNp
113
- U0RjTm9vd0x1UFJMc1dHZi9ZaTdHU1g5NEJnd1R3ZwpBaUVBNEowbHJIb01zK1hv
114
- NW8vc1g2TzlRV3hIUkF2WlVHT2RSUTdjdnFSWGFxST0KLS0tLS1FTkQgQ0VSVElG
115
- SUNBVEUtLS0tLQowDQYJKoZIhvcNAQELBQADggGBAC9xfNPdZVpQsh9r16HOhHiO
116
- jdrX2hfbJV1giR1nHop80I/Ayq0AKrohxWwYfq7k/BuAK/hn5zVHkJNRoU+E+GwU
117
- K1rNfIFefJz16HVu17YKsG+aYX292utaV0HqV0PspNhY4g42KPU5JF6R3UjtTetl
118
- f/Zht6dL7bThPLLggKlGbn4RN3OX8pbz3wZ05iwO9IPxHdc0jthQJ/a//aUQYeDg
119
- egcw19sErkMpSh9gDDAPx3DxzH1ZZbiPCUtmKafIgP42VIl2ivtb7S0Kt47Plk4J
120
- 3nxUwyqRU+MotcH/VaUyCDMe3ZNaPPBCUO/53jQCiDFH3qMqBpuZRZjgl47uOvzb
121
- UpUy7Cby6iyxZyjuOaCbmEUs1cntqfbJMUSGYW4hfsXvHNqK7a3BZPSCgWWEECV3
122
- 1lpffnMooT6S/gkTwjOJT7hT0z5ikEEs4zk1AQUqvjGbBWZfYYn9JjfRAms87wZg
123
- ookhpCAf+Re8lgoBBv23o8YdYwfS8WVUJ4Fggj32vg==
124
- -----END CERTIFICATE-----
@@ -1,124 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
38
- BwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwUAXA4AAC0tLS0tQkVHSU4gQ0VSVElG
39
- SUNBVEUtLS0tLQpNSUlFOGpDQ0JKbWdBd0lCQWdJVkFMancxQm5hbmNxeWN0aE9Q
40
- UFFKY0xEOFZKd09NQW9HQ0NxR1NNNDlCQU1DTUhBeElqQWdCZ05WCkJBTU1HVWx1
41
- ZEdWc0lGTkhXQ0JRUTBzZ1VHeGhkR1p2Y20wZ1EwRXhHakFZQmdOVkJBb01FVWx1
42
- ZEdWc0lFTnZjbkJ2Y21GMGFXOXUKTVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdG
43
- eVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSkJnTlZCQVlUQWxWVE1CNFhEVEl4TVRF
44
- eQpNakUwTXpBd05sb1hEVEk0TVRFeU1qRTBNekF3Tmxvd2NERWlNQ0FHQTFVRUF3
45
- d1pTVzUwWld3Z1UwZFlJRkJEU3lCRFpYSjBhV1pwClkyRjBaVEVhTUJnR0ExVUVD
46
- Z3dSU1c1MFpXd2dRMjl5Y0c5eVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJ
47
- RU5zWVhKaE1Rc3cKQ1FZRFZRUUlEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdXVEFU
48
- QmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUW1DU3dXSTRtdAp5MzNWZ2Jp
49
- Umg0NjlvTUd0ZDdRS08va3RPY3hKeWlpWXdTWnB2SDVPbTR4SGVCajUrNEo1QkVa
50
- bWtNSXFBcktkaUlHYldaSXgraEpkCm80SUREakNDQXdvd0h3WURWUjBqQkJnd0Zv
51
- QVVsVzlkemIwYjRlbEFTY25VOURQT0FWY0wzbFF3YXdZRFZSMGZCR1F3WWpCZ29G
52
- NmcKWElaYWFIUjBjSE02THk5aGNHa3VkSEoxYzNSbFpITmxjblpwWTJWekxtbHVk
53
- R1ZzTG1OdmJTOXpaM2d2WTJWeWRHbG1hV05oZEdsdgpiaTkyTXk5d1kydGpjbXcv
54
- WTJFOWNHeGhkR1p2Y20wbVpXNWpiMlJwYm1jOVpHVnlNQjBHQTFVZERnUVdCQlNB
55
- VmpXWHJ1M3NPRWVwCnZ2ZENBMUFmdEZjTXNqQU9CZ05WSFE4QkFmOEVCQU1DQnNB
56
- d0RBWURWUjBUQVFIL0JBSXdBRENDQWpzR0NTcUdTSWI0VFFFTkFRU0MKQWl3d2dn
57
- SW9NQjRHQ2lxR1NJYjRUUUVOQVFFRUVNMTVHZklzRG1ZMWwyR1gzTE9kS0R3d2dn
58
- RmxCZ29xaGtpRytFMEJEUUVDTUlJQgpWVEFRQmdzcWhraUcrRTBCRFFFQ0FRSUJC
59
- REFRQmdzcWhraUcrRTBCRFFFQ0FnSUJCREFRQmdzcWhraUcrRTBCRFFFQ0F3SUJB
60
- ekFRCkJnc3Foa2lHK0UwQkRRRUNCQUlCQXpBUkJnc3Foa2lHK0UwQkRRRUNCUUlD
61
- QVA4d0VRWUxLb1pJaHZoTkFRMEJBZ1lDQWdEL01CQUcKQ3lxR1NJYjRUUUVOQVFJ
62
- SEFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJSUFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJ
63
- SkFnRUFNQkFHQ3lxRwpTSWI0VFFFTkFRSUtBZ0VBTUJBR0N5cUdTSWI0VFFFTkFR
64
- SUxBZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSU1BZ0VBTUJBR0N5cUdTSWI0ClRRRU5B
65
- UUlOQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlPQWdFQU1CQUdDeXFHU0liNFRRRU5B
66
- UUlQQWdFQU1CQUdDeXFHU0liNFRRRU4KQVFJUUFnRUFNQkFHQ3lxR1NJYjRUUUVO
67
- QVFJUkFnRUxNQjhHQ3lxR1NJYjRUUUVOQVFJU0JCQUVCQU1ELy84QUFBQUFBQUFB
68
- QUFBQQpNQkFHQ2lxR1NJYjRUUUVOQVFNRUFnQUFNQlFHQ2lxR1NJYjRUUUVOQVFR
69
- RUJqQmdhZ0FBQURBUEJnb3Foa2lHK0UwQkRRRUZDZ0VCCk1CNEdDaXFHU0liNFRR
70
- RU5BUVlFRUJTSnhtYjlkdGkrTm5jMHBCYnFpVTB3UkFZS0tvWklodmhOQVEwQkJ6
71
- QTJNQkFHQ3lxR1NJYjQKVFFFTkFRY0JBUUgvTUJBR0N5cUdTSWI0VFFFTkFRY0NB
72
- UUgvTUJBR0N5cUdTSWI0VFFFTkFRY0RBUUgvTUFvR0NDcUdTTTQ5QkFNQwpBMGNB
73
- TUVRQ0lDUFo4VXRJQ25IL2FQVUJYc3dnSXlvWHFCYnBTVG43OUJPc21zRkJzWDhD
74
- QWlBK2pzZXFDNS80Z0UvanRFTGZ1eHViCmFERUZLOHBMb0g1TGIvbVNGTU0rMWc9
75
- PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tLS0tLS1CRUdJTiBDRVJUSUZJQ0FU
76
- RS0tLS0tCk1JSUNsakNDQWoyZ0F3SUJBZ0lWQUpWdlhjMjlHK0hwUUVuSjFQUXp6
77
- Z0ZYQzk1VU1Bb0dDQ3FHU000OUJBTUMKTUdneEdqQVlCZ05WQkFNTUVVbHVkR1Zz
78
- SUZOSFdDQlNiMjkwSUVOQk1Sb3dHQVlEVlFRS0RCRkpiblJsYkNCRApiM0p3YjNK
79
- aGRHbHZiakVVTUJJR0ExVUVCd3dMVTJGdWRHRWdRMnhoY21FeEN6QUpCZ05WQkFn
80
- TUFrTkJNUXN3CkNRWURWUVFHRXdKVlV6QWVGdzB4T0RBMU1qRXhNRFV3TVRCYUZ3
81
- MHpNekExTWpFeE1EVXdNVEJhTUhBeElqQWcKQmdOVkJBTU1HVWx1ZEdWc0lGTkhX
82
- Q0JRUTBzZ1VHeGhkR1p2Y20wZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWcwpJRU52
83
- Y25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtH
84
- QTFVRUNBd0NRMEV4CkN6QUpCZ05WQkFZVEFsVlRNRmt3RXdZSEtvWkl6ajBDQVFZ
85
- SUtvWkl6ajBEQVFjRFFnQUVOU0IvN3QyMWxYU08KMkN1enB4dzc0ZUpCNzJFeURH
86
- Z1c1clhDdHgydFZUTHE2aEtrNnorVWlSWkNucVI3cHNPdmdxRmVTeGxtVGxKbApl
87
- VG1pMldZejNxT0J1ekNCdURBZkJnTlZIU01FR0RBV2dCUWlaUXpXV3AwMGlmT0R0
88
- SlZTdjFBYk9TY0dyREJTCkJnTlZIUjhFU3pCSk1FZWdSYUJEaGtGb2RIUndjem92
89
- TDJObGNuUnBabWxqWVhSbGN5NTBjblZ6ZEdWa2MyVnkKZG1salpYTXVhVzUwWld3
90
- dVkyOXRMMGx1ZEdWc1UwZFlVbTl2ZEVOQkxtUmxjakFkQmdOVkhRNEVGZ1FVbFc5
91
- ZAp6YjBiNGVsQVNjblU5RFBPQVZjTDNsUXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01C
92
- SUdBMVVkRXdFQi93UUlNQVlCCkFmOENBUUF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdS
93
- QUlnWHNWa2kwdytpNlZZR1czVUYvMjJ1YVhlMFlKRGoxVWUKbkErVGpEMWFpNWND
94
- SUNZYjFTQW1ENXhrZlRWcHZvNFVveWlTWXhyRFdMbVVSNENJOU5LeWZQTisKLS0t
95
- LS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0t
96
- LS0KTUlJQ2p6Q0NBalNnQXdJQkFnSVVJbVVNMWxxZE5JbnpnN1NWVXI5UUd6a25C
97
- cXd3Q2dZSUtvWkl6ajBFQXdJdwphREVhTUJnR0ExVUVBd3dSU1c1MFpXd2dVMGRZ
98
- SUZKdmIzUWdRMEV4R2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52CmNuQnZjbUYwYVc5
99
- dU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBF
100
- eEN6QUoKQmdOVkJBWVRBbFZUTUI0WERURTRNRFV5TVRFd05EVXhNRm9YRFRRNU1U
101
- SXpNVEl6TlRrMU9Wb3dhREVhTUJnRwpBMVVFQXd3UlNXNTBaV3dnVTBkWUlGSnZi
102
- M1FnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1ZzSUVOdmNuQnZjbUYwCmFXOXVNUlF3
103
- RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFQ0F3Q1EwRXhDekFK
104
- QmdOVkJBWVQKQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdB
105
- RUM2bkV3TURJWVpPai9pUFdzQ3phRUtpNwoxT2lPU0xSRmhXR2pibkJWSmZWbmtZ
106
- NHUzSWprRFlZTDBNeE80bXFzeVlqbEJhbFRWWXhGUDJzSkJLNXpsS09CCnV6Q0J1
107
- REFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAwaWZPRHRKVlN2MUFiT1NjR3JEQlNC
108
- Z05WSFI4RVN6QkoKTUVlZ1JhQkRoa0ZvZEhSd2N6b3ZMMk5sY25ScFptbGpZWFJs
109
- Y3k1MGNuVnpkR1ZrYzJWeWRtbGpaWE11YVc1MApaV3d1WTI5dEwwbHVkR1ZzVTBk
110
- WVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZnUVVJbVVNMWxxZE5JbnpnN1NWClVy
111
- OVFHemtuQnF3d0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1B
112
- WUJBZjhDQVFFd0NnWUkKS29aSXpqMEVBd0lEU1FBd1JnSWhBT1cvNVFrUitTOUNp
113
- U0RjTm9vd0x1UFJMc1dHZi9ZaTdHU1g5NEJnd1R3ZwpBaUVBNEowbHJIb01zK1hv
114
- NW8vc1g2TzlRV3hIUkF2WlVHT2RSUTdjdnFSWGFxST0KLS0tLS1FTkQgQ0VSVElG
115
- SUNBVEUtLS0tLQowDQYJKoZIhvcNAQELBQADggGBAC9xfNPdZVpQsh9r16HOhHiO
116
- jdrX2hfbJV1giR1nHop80I/Ayq0AKrohxWwYfq7k/BuAK/hn5zVHkJNRoU+E+GwU
117
- K1rNfIFefJz16HVu17YKsG+aYX292utaV0HqV0PspNhY4g42KPU5JF6R3UjtTetl
118
- f/Zht6dL7bThPLLggKlGbn4RN3OX8pbz3wZ05iwO9IPxHdc0jthQJ/a//aUQYeDg
119
- egcw19sErkMpSh9gDDAPx3DxzH1ZZbiPCUtmKafIgP42VIl2ivtb7S0Kt47Plk4J
120
- 3nxUwyqRU+MotcH/VaUyCDMe3ZNaPPBCUO/53jQCiDFH3qMqBpuZRZjgl47uOvzb
121
- UpUy7Cby6iyxZyjuOaCbmEUs1cntqfbJMUSGYW4hfsXvHNqK7a3BZPSCgWWEECV3
122
- 1lpffnMooT6S/gkTwjOJT7hT0z5ikEEs4zk1AQUqvjGbBWZfYYn9JjfRAms87wZg
123
- ookhpCAf+Re8lgoBBv23o8YdYwfS8WVUJ4Fggj32vg==
124
- -----END CERTIFICATE-----
@@ -1,20 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDNzCCAh+gAwIBAgIBAjANBgkqhkiG9w0BAQsFADA7MQswCQYDVQQGEwJOTDER
3
- MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN
4
- MTkwMjEwMTQ0NDA2WhcNMjkwMjEwMTQ0NDA2WjA0MQswCQYDVQQGEwJOTDERMA8G
5
- A1UECgwIUG9sYXJTU0wxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN
6
- AQEBBQADggEPADCCAQoCggEBAMFNo93nzR3RBNdJcriZrA545Do8Ss86ExbQWuTN
7
- owCIp+4ea5anUrSQ7y1yej4kmvy2NKwk9XfgJmSMnLAofaHa6ozmyRyWvP7BBFKz
8
- NtSj+uGxdtiQwWG0ZlI2oiZTqqt0Xgd9GYLbKtgfoNkNHC1JZvdbJXNG6AuKT2kM
9
- tQCQ4dqCEGZ9rlQri2V5kaHiYcPNQEkI7mgM8YuG0ka/0LiqEQMef1aoGh5EGA8P
10
- hYvai0Re4hjGYi/HZo36Xdh98yeJKQHFkA4/J/EwyEoO79bex8cna8cFPXrEAjya
11
- HT4P6DSYW8tzS1KW2BGiLICIaTla0w+w3lkvEcf36hIBMJcCAwEAAaNNMEswCQYD
12
- VR0TBAIwADAdBgNVHQ4EFgQUpQXoZLjc32APUBJNYKhkr02LQ5MwHwYDVR0jBBgw
13
- FoAUtFrkpbPe0lL2udWmlQ/rPrzH/f8wDQYJKoZIhvcNAQELBQADggEBAC465FJh
14
- Pqel7zJngHIHJrqj/wVAxGAFOTF396XKATGAp+HRCqJ81Ry60CNK1jDzk8dv6M6U
15
- HoS7RIFiM/9rXQCbJfiPD5xMTejZp5n5UYHAmxsxDaazfA5FuBhkfokKK6jD4Eq9
16
- 1C94xGKb6X4/VkaPF7cqoBBw/bHxawXc0UEPjqayiBpCYU/rJoVZgLqFVP7Px3sv
17
- a1nOrNx8rPPI1hJ+ZOg8maiPTxHZnBVLakSSLQy/sWeWyazO1RnrbxjrbgQtYKz0
18
- e3nwGpu1w13vfckFmUSBhHXH7AAS/HpKC4IH7G2GAk3+n8iSSN71sZzpxonQwVbo
19
- pMZqLmbBm/7WPLc=
20
- -----END CERTIFICATE-----