diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index acac37663d8b370ee88a320c3e2b6b948634f4ad..cc22feaa8c31e240cfb9c65d8899f6f476821887 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -79,6 +79,28 @@ test_create_dummy_script: - python manage.py makemigrations web && python manage.py migrate - python db_scripts/create_dummy_data.py +test_docker_compose: + image: docker:19.03.0 + stage: test + only: + - tags + services: + - name: docker:19.03.0-dind + command: ["--mtu=1458", "--registry-mirror", "https://docker-registry.lcsb.uni.lu"] + tags: + - privileged + script: + - apk add --no-cache docker-compose curl + - docker-compose up --build -d + - sleep 30 + - docker-compose down + variables: + DOCKER_HOST: tcp://docker:2375/ + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + artifacts: + expire_in: 1 week + build_debian: stage: build only: diff --git a/Dockerfile b/Dockerfile index d2ffe2cafd779475d2650a20d88e6747a9fce3d8..004e1badefa4b7c850c542ae27affb4fe0e7db6b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,25 +1,23 @@ -FROM python:3.6.9-buster +FROM node:12.6.0 as builder +RUN mkdir -p /code/smash +WORKDIR /code +ADD ./smash/package* /code/smash/ +WORKDIR /code/smash +RUN node --version +RUN npm --version +RUN npm install +FROM python:3.6.15-buster RUN mkdir /code WORKDIR /code -RUN apt-get update && apt-get install -y --allow-unauthenticated libsasl2-dev libssl-dev locales locales-all +RUN apt-get update && apt-get install -y --allow-unauthenticated libsasl2-dev python-dev libldap2-dev libssl-dev locales locales-all ADD requirements* /code/ +RUN pip install --upgrade pip RUN pip install -r requirements.txt --default-timeout=180 -i https://pypi.lcsb.uni.lu/simple/ && pip install -r requirements-dev.txt --default-timeout=180 -i https://pypi.lcsb.uni.lu/simple/ # --use-feature=2020-resolver ADD . /code/ RUN cp local_settings_ci.py smash/smash/local_settings.py WORKDIR /code/smash -ENV NODE_VERSION=12.6.0 -RUN apt install -y curl -RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash -ENV NVM_DIR=/root/.nvm -RUN . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION} -RUN . "$NVM_DIR/nvm.sh" && nvm use v${NODE_VERSION} -RUN . "$NVM_DIR/nvm.sh" && nvm alias default v${NODE_VERSION} -ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}" -RUN node --version -RUN npm --version -RUN npm install - +COPY --from=builder /code/smash/node_modules /code/smash/node_modules ENTRYPOINT [ "/bin/sh" ] CMD [ "manage.py runserver 0.0.0.0:8888" ] EXPOSE 8888 diff --git a/docker-compose.yml b/docker-compose.yml index 69626143ef79e033c97b29df520078d225859c31..c04e728b9ef42212b83d5fc0a6093ba9ac3b3617 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: postgres: - image: postgres:13 + image: postgres:13.4-alpine restart: always environment: POSTGRES_DB: smash diff --git a/docker/nginx/dhparam.pem b/docker/nginx/dhparam.pem index 69e32d48d356f417f626f9b0faa619fcf7d5c7c7..780f4d1f6c13dfa0bb74230fd0fdddce1a0186ad 100644 --- a/docker/nginx/dhparam.pem +++ b/docker/nginx/dhparam.pem @@ -1,24 +1,25 @@ ------BEGIN DH PARAMETERS----- -MIIEDQKCAgEAk54StojmfMVm4IbMreiHzR7v167BIQwwJXBU/V7OAMxlrRx/DraQ -JK7f1YSu3YOW44feFQAgKRO+D0+yJi4qGHN3y5mkiYWh3og+/owYsFP8hI7fKd8n -ZpscVZpn9G8cIsMvw8VBhw0+gNf+Vf6WAOjpHZCm6HXHxOBUQiOW6IXHMcG0/FGu -V3TZHV8xCM0gSbBSoWqv7to3dD6fGMM57NSXPg8NHAO1ijKkcOGx2LfYDEUEiK7S -maDST5VSGU+uc4LC/otZ6S6FcTNKse9+DUWTnHy0Ji2j6rqHnZFfmC2vlPQxPx0G -kAixDqqtYgI06u6u7WlgZm6ZiPEBosRyuFU6t3SWdLNZ9XJn4xNbZd4/SBXOOtfN -Q4kGcc0kGIvreZ9pOSwRl9GOK/oP3aqUB3Aj6h6va9vB9Gg2dvmfyuOCpCcfNE1M -00diRy2sb60ax6laL1ArY5/14t2m52vFbkmWSN9R8cjgZ24WLKdG8FWJzSG5i4UM -h/Spq15XzaAI/TU2c71wHa8PkD245z0hsOHW16m7zJ+QcMVeMc6mc47gwf1axsgh -fU0a2fVbJfiuha0Ck63ZPtSGTPuSD/vlp/ozlZAz/r2vhlW534kzMc0YV6HkIJgs -MMIXIdxKR6g06aPVyzt1bIY5lo5QLYFSksted/GF6ludn2XvjD8wERMCggIAJIs5 -XN+sehp+lvQ3nrL/sdz/3P5WoSZ+8Gx5w84veF5JRLExxflpQM5qw+g0ouDb9Daq -Crt/oEDBIF3+EngZHJImHSRwdXARma5MVMFf+ty8Nq1Zur5e1/ll4HLrFlEkkgFB -t84x4iyypzoYqgj7Q51tkEd44AYhdCWal2UZJS+YPqcnAO2AiajOOS3kbS1F87h1 -ABYJ67S7HBU8lLwdSDS77jJe4Qpmfjgg8SyTc7oDkqxh05l0ZG8swrylSjk40hqT -XEmQWeWwcd0QaxqhFoSKq8HdUohSN9kfgVGe+0WLY3+EKgQ2O2SD8/pWqmnn+yPv -Xd7QeqonQ7K/Kqj7LTRJvGpBK6xtdBqWOAxcgd9R3fsKnofNt7o70bS8Oe2zyHkc -1CA3qG27FIu/UeWwPlFlRlYMsnDJ8L7ZgnjD/yB0kBys25JGMY5OkyI10GItFdJV -duVWoUX7AWxDpr84eiYAePHWosw+k3Ke3TRA8VFy2Iq0jup9WuQFcOJoVKxsDZ8F -fSLR6mUP9HJeeLV4tmEuYHC8D1rsEHZThhgr0usUib15KcAI4tXVntPQtf6RiecP -jLcmzjLDBwJ5SjMkh9EGGk86Uin6sUe1fr4EEcnolEKgxEvPWp1zKFJXf9PQ+J+C -X4/zYUu53ymg5xi41BYwSqWsf+O54GOe4R3YchECAgEA ------END DH PARAMETERS----- +-----BEGIN X9.42 DH PARAMETERS----- +MIIEKQKCAgEAzwck71JXO+6SK456Kqq7JRGxFxYkSIMpl9WqSYj0wfUaxmeMiQyo +80SzuTbilwlZ8c76nmKXdbfT4HcKmaifZxN4uHFSlZklMO9r/n+9bWkKvBfogRra +VqyOIz28QzX40Gbr6ctgBFebHSZ3aZH9EfWc0TgzPrdgT8pIzgo3UOuHLb0+Dfso +fT/2YoPXZpof+bCaowmsmGBfaQ8GGX/Y8N92OhMVy86iTZPFvHM5gcXrPsqEQELw +KK+6rV2egcTD/gliytg4OWCeNl25+lV2PMN4A6ZN+a7NHk0SxojK+izQVnyWPwLq +GGQ1fCqsqr3K2SoQIa/xcr9tdIy6OMkicsX3erV7bOpbGBJkgUd0zulWOjiROxB0 +tOVs2NQDETUCB+chgHLcM6rBB8YbI21abxfyfLUUQg9MTH5wJGYaDFBKb0V9KZPA +9WxHT9Hz47S+uzwa2zU9z1bdyGTvUexoXa9ISwxyoULkyFS4d5LI3dGluDnZvu5q +PHdgnKBe5ovntBLYQo5XLJZm/zGix1lBzXd7PdWDxNfi+WBQWPchrMsOkOZQ0wrJ +gQ5h/5Yz4ou0vdDvQozi9WhcF8l11K21oNMc0kukOPPwQvHgMfI6IhL2RV5MIe2A +gs50ErWiKfxhZ/UYPN5E3uiu2PY1PN2rqjlLQmd4XN1R6WV0M+aXhL0CggIBAIgJ +zJ6/tMXI17K1mk7sd/w5xMxnacWFwPi79cJMIj15aAVZasAYWxvk7A4oYYO/VEen +X69GypKMqUFe9yfjeR59cnBhDGe2CdZSdAA1HVCmJcdWxPOKAWLpFOZoh1y2KqbQ +zEzsjW5Tk+KnRq6LIDOuFtgJeRFnjpsfJXZWHAq5V1btneID+U+rhYCCMtVrFMZU +tLpt5+JtOmse2a1vD1uBFmhusI8y/NanFhO3UCnJW6hRzNV5g7Z2Hv0ETnauLCdw +hhMxSOx7+W5rNbpAQJQTdUkj+gqYlJARVIUCjouqvgmTmQL/XT360RBXJNCv9Ydv +NHIyb9PqVCQtPSboiUs/qy8DXDMj++9hp5H49L0EzFRQX49o6YfSnlaGuyqXL+kO +csDtuPP8AJWSiJWvpa4rhVSaWz9jHSZmVMsNL28f3z5J2ZUSwJiGVzUvrd7IDgsR +Ewmyt6l33GJJyAY5TrceRLcXLKPS8T0cmUE0QThRDF6TR50OqH8AsQSlGuId9pj/ +lNVz6vuwgK6Jigfoac4uVbJt11byS3gJfFDoP7YvRkTaTosihJWNA0iQxSQp+NP0 +zbikENi2wqyZkKe/TzJ5B4NEgKmgs8xNNf9K0MoQ/tDpm2+MzRPSZdheo6b3Kq/A +AhKyseDkR1p/0ujJYBJNpSap7NeW+smH/WYrs8dBAh0A/VJJvHG+vQ84O1oQX3sj +nklRLCcJNX4iNS3nbQ== +-----END X9.42 DH PARAMETERS----- diff --git a/docker/nginx/nginx-selfsigned.crt b/docker/nginx/nginx-selfsigned.crt index ec57e60c41002baa7f7743fd0c9c7a1159d7207b..84f6ad4745cae869926f42e6911cd50fe6f1222d 100644 --- a/docker/nginx/nginx-selfsigned.crt +++ b/docker/nginx/nginx-selfsigned.crt @@ -1,22 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIDnjCCAoYCCQCMhnBJPKSvjDANBgkqhkiG9w0BAQsFADCBkDELMAkGA1UEBhMC -bHUxGTAXBgNVBAgMEEVzY2gtc3VyLUFsemV0dGUxDzANBgNVBAcMBkJlbHZhbDEP -MA0GA1UECgwGdW5pLmx1MQ0wCwYDVQQLDARMQ1NCMRAwDgYDVQQDDAdCaW9Db3Jl -MSMwIQYJKoZIhvcNAQkBFhRqYWNlay5sZWJpb2RhQHVuaS5sdTAeFw0yMDEwMDYx -MTE2MDlaFw0yMTEwMDYxMTE2MDlaMIGQMQswCQYDVQQGEwJsdTEZMBcGA1UECAwQ -RXNjaC1zdXItQWx6ZXR0ZTEPMA0GA1UEBwwGQmVsdmFsMQ8wDQYDVQQKDAZ1bmku -bHUxDTALBgNVBAsMBExDU0IxEDAOBgNVBAMMB0Jpb0NvcmUxIzAhBgkqhkiG9w0B -CQEWFGphY2VrLmxlYmlvZGFAdW5pLmx1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEA2EmC0FnGf6dXw1sLUCksS86dWDSBgLi1aBQzYYNC2MztJmhMe+mO -oP34eKbbId4bVWiOp3XDrSdWf10q/viwOk8ApdNsZ1WbaKG5rLl5QwXQ/RAoEYAb -pws67FGw1zZynoYt/RwEgwme38d6TuiBhD5V8OF1Ri6dXC5hC0YoQ3lf4fqj+X9u -RnsbWUP5Q+EOi9tcZ98PRvBL2wcQajl56AUCNP30d7fuyZPjRc0cx60w4veWASzz -A2G4BFPYQww7VWbsWtts+1SXzgue+6yyCtD0R5iE4nlTWT9N5SwpBj2YURFKC5PM -P+zyLrER8KeA9XC1nG+7obFRRtYnJVswYwIDAQABMA0GCSqGSIb3DQEBCwUAA4IB -AQAfUOMPaaf1Yzk/IYiuGw7VO7roNO8vaePnAP0UmxaHgbZrKnwj0y+GOxnco7D1 -Ty94MiyoCfS4BhdLoIwON+BTW7UgJMyMi7fJ6/+UbcWr2Rq6iAzB0lyU+rmreBGm -FU4hdvqSRsiLtVuHbpURZNQeJoZ5VKYv8NqOJ7cYYtlJORCzIfTqVhoLoTalbn+n -NsRLdHY2Edue50ilwt1IBToeRkn+fw9wNJSrxZoEHRVHL5UFwIqacr1i9eDR41N9 -PSnEei4y2uT4csfGqoRTmo++P3tzwOuGLpcmB0OD55/G6J3p2ZCVT7CT3b6ln1FJ -urcT2wFIC9ay116JEB8J+3PB +MIIEKTCCAxGgAwIBAgIUPttME2hC7HTQw0TdqGZIfMuaX4kwDQYJKoZIhvcNAQEL +BQAwgaMxCzAJBgNVBAYTAmx1MRkwFwYDVQQIDBBFc2NoLXN1ci1BbHpldHRlMRAw +DgYDVQQHDAdCZWx2YXV4MQ0wCwYDVQQKDARMQ1NCMRAwDgYDVQQLDAdCaW9Db3Jl +MSEwHwYDVQQDDBhTTUFTQ0ggZHVtbXkgY2VydGlmaWNhdGUxIzAhBgkqhkiG9w0B +CQEWFGphY2VrLmxlYmlvZGFAdW5pLmx1MB4XDTIxMTEwMjEwMzUyNloXDTIyMTEw +MjEwMzUyNlowgaMxCzAJBgNVBAYTAmx1MRkwFwYDVQQIDBBFc2NoLXN1ci1BbHpl +dHRlMRAwDgYDVQQHDAdCZWx2YXV4MQ0wCwYDVQQKDARMQ1NCMRAwDgYDVQQLDAdC +aW9Db3JlMSEwHwYDVQQDDBhTTUFTQ0ggZHVtbXkgY2VydGlmaWNhdGUxIzAhBgkq +hkiG9w0BCQEWFGphY2VrLmxlYmlvZGFAdW5pLmx1MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA32Bp3HgHn+f3wXjgw7d1FpGCenX8RNJBtbsUsJoov6o6 +lzgRUQtfeWre3d8a8qCMmV0Icf/FeU2cvSj5ePjA+bAxLzDXipQ5VCyh/aLHE40E +JXmkkFa8aMzjZcXUwT9rnIBoW4ydJsbHfG62jEzYXPBzTnI6XFP+tHc1OfGm7y+Z +zfwtEggWnVOe36REXdY3kIHnMYZp90wT42R1b66Wmvo/lIEmuQ78Gm9u7UblQR/I +tusMZASnOQ648e70hUnNwUorM0cx3ZJkId8h4TjjhgL4O+fw8ttXvW1v2UjoWpdn +O/FcfZzqlr138puCxF7VllwvUa0hcgioaIggeXpb7wIDAQABo1MwUTAdBgNVHQ4E +FgQUX1NgY2YKZ4Eb7r14zv184V4zuQEwHwYDVR0jBBgwFoAUX1NgY2YKZ4Eb7r14 +zv184V4zuQEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEACfuK +Z+Z4zOCiwRmq4ekL0JTS4eP1RUDd2E3dRY4BwEswNfGxgNJeRfv2wTLBPQYmoqws +UNtW+uS+Hv64RkmxPA27Fk+PN8NXMLom8HJ9jYY1TH/vTYTbxY1Ds/C3s6vjo3EX +L7WLDpuJsgxWAHnMR0Jfj+MD43zvG0SalyZUVTAPwnGBopoS4YrQbu7+Cd3kJQFQ +k24uu71y0JfHOfo51XmV2rZA2X0Kc8S6Y4pUpe6LzaYVheXWeAZ5ELSLHZyNSq14 +iLfdN/aFImMaia+D6F+fNGPgnZD4yQZs0Kpv3DIuI4FQ9m5GOTt4Dm3GuXQEH+zA +qYgzXiERZgtxhTacIw== -----END CERTIFICATE----- diff --git a/docker/nginx/nginx-selfsigned.key b/docker/nginx/nginx-selfsigned.key index 3972be7f84c6eb5e005051c84d73c88d608dd1bd..c624aad51b54701154869f877817e55b83375237 100644 --- a/docker/nginx/nginx-selfsigned.key +++ b/docker/nginx/nginx-selfsigned.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDYSYLQWcZ/p1fD -WwtQKSxLzp1YNIGAuLVoFDNhg0LYzO0maEx76Y6g/fh4ptsh3htVaI6ndcOtJ1Z/ -XSr++LA6TwCl02xnVZtoobmsuXlDBdD9ECgRgBunCzrsUbDXNnKehi39HASDCZ7f -x3pO6IGEPlXw4XVGLp1cLmELRihDeV/h+qP5f25GextZQ/lD4Q6L21xn3w9G8Evb -BxBqOXnoBQI0/fR3t+7Jk+NFzRzHrTDi95YBLPMDYbgEU9hDDDtVZuxa22z7VJfO -C577rLIK0PRHmITieVNZP03lLCkGPZhREUoLk8w/7PIusRHwp4D1cLWcb7uhsVFG -1iclWzBjAgMBAAECggEAMbwFpp9eM7BpT/S5jz9Ifk4OhF/ef5j5resnPX8Pegb1 -aWWGYN/9+issXaIQtaL7KhKW6w77Ze+rxjHIV0UcUOwlu/v363MV/2Ng7MThi3Xk -7qwuaofI1AqTDBBk17gfdzBnltJAf1lQ/ShDia2RSrWC0ZcmfnLtoGrRyePiElGE -bYqOgJE46A38abau+uz2gW3lJ6LtbbCjlLbUqSEZ+9fqSj65z3XtlcKRVLdyQIby -xntH8dCTd64dULqe3oJH2M0mpv5QIbOdvmr1u+VqMJ0L8rud9D8K541pFlHPxMqz -vVs7q+mRGUQKsbBsFp3MQmsgANw9uv0Yb8dpwskz0QKBgQDvGIh8ZYlBLpwGI468 -5b0OFEoNESQjmRXUGP7n8d4dY18IxKiOkJ9e7AFpue/6Y+7kZdm9IsjV5aku5GN7 -9YHOrnMoEfyPwDkJ8DWk4i3UYD5BbLRYcD2C9+rEGYJd8Zg+fSwpebzXbcV1S82z -jKQiHfMjK9vRYs300vugcAHwxQKBgQDnlCgfcFxY5iaxmdAhzlw9YI9UV05ryZwR -ie64uk5UhJ23WumG9P7+w7b6qaWAS99m7kkfsAGzcz4S2B4HjPO9fmdBnXxAEDOm -1mIngmPjcQhgtS/KMYdatyUqowOfAU5mf9Mry77ij/O2AKGQNstu38pzJjPtHNTU -ZxTnF2rfBwKBgA5A9SoNV5BmOfD3v7OtMocbWIrM4c2pe66oStIDDk3MNcctCitt -ncKn6TGnXxIbUQuWstNetoBh76MXBINIUJPEvKK/58GeIQhhpKEOxtKpZiy6UUoQ -bupW400LhEUbeQsIpVBXrJVfOu1SNpIkqUhLZspK/BDQhhy5UzzuUH9NAoGAdi0h -HIoWVjd8330CvX21jIzOF9hF6LOFtV2SOSq59l+GrJ70NS6pQhFWOyx/jK0rYDeR -kV4cQBs7PhqTmH7Rk44B23Ymhfq+oREeHdNobhSslc1gieokjKKRkOSHYIkmHSB1 -/w+GZc/YKrS/vfx4bChAA+sm7IWeBpZkEFne69kCgYAn6DVkQe3FoUuike01elND -3cO85M38bCUgr6o1ZqMF5Jfe1lwciucS2T1NnH93W5/NC6bOvr51n89+C7DITx6U -UQCrW7ZUUslWvSrbrPiV2ZqSBAba878zFiJD8fFW3TOjqJB7Zep7R3MBCg/Q960o -3VF4xf+hLPWLr9A+ZgFaMQ== +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDfYGnceAef5/fB +eODDt3UWkYJ6dfxE0kG1uxSwmii/qjqXOBFRC195at7d3xryoIyZXQhx/8V5TZy9 +KPl4+MD5sDEvMNeKlDlULKH9oscTjQQleaSQVrxozONlxdTBP2ucgGhbjJ0mxsd8 +braMTNhc8HNOcjpcU/60dzU58abvL5nN/C0SCBadU57fpERd1jeQgecxhmn3TBPj +ZHVvrpaa+j+UgSa5Dvwab27tRuVBH8i26wxkBKc5Drjx7vSFSc3BSiszRzHdkmQh +3yHhOOOGAvg75/Dy21e9bW/ZSOhal2c78Vx9nOqWvXfym4LEXtWWXC9RrSFyCKho +iCB5elvvAgMBAAECggEAGfD9elAqOoTa/goGuFQG8g8GAyjOmkN8xBks5vGQR+oC +Eeu9/xZ+CQDDTysI2yKQEYN/ZpXYniTITiODDWx+JME0hRF8Bqj+G2tviKAt1HRt +Bdkhpm2cReN9iSU3dxXhbnRvKiqjWYx+QFIvOw31lp2KFpMnee97RgQOF2OcCmza +Ob7mOrM2HlCjJsQcoasnEBInJsYte5843tfhY8Ttr0Y+BLfiVVLmgK38OvyXH72F +mupoAGHvXxEAw0xCsd8ixQGcj375ISsW+O3Owj0uP6qk8POgoRF07SDxl8RrKfk+ +P/54wBDp2qYFh+zvBRcDC7LQDftRrs63CTxGSOgeeQKBgQDvqqGaXsFPBPvCVdky +ESttthThdtgk7BFRXURsc73rlQqbfr/KJ5NqvtCIZ/EZC7J0abNVmrzPcsiTJXLG +QDZHtfkmBoxArj2o/hK655JPVC+vD3TemdRuLqT4xBEHStBzqPeSmYBekHQRrmMr ++L3ESF3gI4BNDf1YLOpdBdhzlQKBgQDumZQXNEEAHmOVp5XhXf8nyiwzAU3lMHlW +yYFm8KC8Gmwu96eg8Tw0TXGYsG2kPRMBnFyU0kwOOvoJRAZjrbjaszZUA0X4aWmD +Vn6dIHfXvWqXdQQODXqNLMYE5mWxa6fdXd/l25RTZaXKTOHlx32tr5vD+EdHSRa4 +mwehcKiwcwKBgH5tuMpCah9RNa4Ss3zh6dL6VpGJrAPuNESDuvCrLej0up/EgVAX +CIErH76Vdm4L6ZvXlq717dxRZNWaz60deoThzgjtM1d7kzNutFq8hkYq1uy2bqRu +6c0l9gj1BTaflM8ut0syhrFb6p7ZK5+qnBDLTBpNIAWF97toFkn0J3bxAoGAZmIs +c9COW9iubtdcrzpAdPiCAtj6bfBhAOayylNTBaRo67aFjcA2T1Mz/YsnYSR79WL9 +LzcWP7z68eLowvkWq3HfTCmjarcA+cSxzAbUphS3moox1T3fapjd19htprZFb+4K +V33jpe2mOKrI/Gqf+Vmzg2IUY/hu8YREv/exyxUCgYBOu38G/zLX8/MMLLqrXfCu +0nYJq/8zvTleGydT2/3zEH8H8xlW/0Tgrj/O6N/2ALz5ElczeZgvWVPk7do8z/2g +SyIzUOGecG0HTrilLYuY/iE34TXr/9lEIYwjcBUvfxUv7lSF7f67FkY5CbShZYWs +arThOd0YbGbJU409JmKa/g== -----END PRIVATE KEY-----