Compare commits
121 Commits
Author | SHA1 | Date | |
---|---|---|---|
fb75dd57b1 | |||
bab0100b1e | |||
455e3832ac | |||
b71d5971d3 | |||
c5da8111b8 | |||
ef7233075a | |||
deafb52e21 | |||
2d300e02c0 | |||
02843243ee | |||
bb5c50abc7 | |||
2763eb9c2e | |||
af511923c6 | |||
da0c0f0583 | |||
4bff3e78cf | |||
470004b152 | |||
472298bb2b | |||
47a564f1dd | |||
452e5bf697 | |||
5730f99080 | |||
e466b300b5 | |||
46f9698c87 | |||
d5b5db5e0b | |||
cbf137dd73 | |||
07ba60e643 | |||
8c75ba1df6 | |||
f5956740c0 | |||
33c204ab54 | |||
d25e5ffd36 | |||
b9adcabe7d | |||
c959146238 | |||
59095d22c3 | |||
2a675eaf25 | |||
2ca3477258 | |||
4a57845c36 | |||
a2bbaf019b | |||
5b87ceb9f2 | |||
db4bdccdb1 | |||
c40dc037b3 | |||
1a66a0f170 | |||
aec1b98e9a | |||
1674df1a94 | |||
015df30fa6 | |||
7574bb4b89 | |||
bbf0846861 | |||
5549fa8f37 | |||
9f51803b6d | |||
f5460bb271 | |||
da5a5353e6 | |||
266eff3766 | |||
4e6013c99f | |||
32ec703d72 | |||
e4c5780322 | |||
35af4c7af1 | |||
b5268e1863 | |||
6ed8e5bae3 | |||
a86b4befcc | |||
fe6b84cf28 | |||
2505324eb7 | |||
fc74464ea8 | |||
1dffe52c7a | |||
46f8585cc3 | |||
90a22fcc51 | |||
189e7cd645 | |||
8cde331079 | |||
0ec5cdc9a3 | |||
071c6c5179 | |||
4b7802e3a6 | |||
b0fbe31cbe | |||
a4bce7ed49 | |||
546bc11ad2 | |||
0b8df9edb2 | |||
e0de8665fe | |||
eb32851d32 | |||
0c539a23c3 | |||
a290aa79ba | |||
016f566dbf | |||
29eee4b0c4 | |||
b63e55db0f | |||
4ed51277a2 | |||
84385dc389 | |||
92fb084ca6 | |||
37b15f90d2 | |||
f1eb1a8cba | |||
4b28e8aa64 | |||
2551d764d8 | |||
e36d1387b6 | |||
f75cf83e9a | |||
20392be05a | |||
a816041cff | |||
ad67140571 | |||
d0121f60ba | |||
47ae7aa9e1 | |||
70f0facb11 | |||
53d5d3ff62 | |||
71d10e1d79 | |||
272da7e776 | |||
f5b317bcad | |||
3c9c819a55 | |||
054b38a4a7 | |||
765bae0e07 | |||
2eef305f0e | |||
3ef36f49e8 | |||
b9529feaba | |||
c2fe3bb7f0 | |||
c19d097b28 | |||
228b57804e | |||
67b9379fe7 | |||
4c6e73254a | |||
8b50d28aab | |||
185a095829 | |||
52b9466568 | |||
927a97c913 | |||
bbb639634b | |||
0c3a878cfa | |||
7632a515ab | |||
3e1e8886ef | |||
466f6e8632 | |||
d0719e356d | |||
f14b17c3b0 | |||
1a6fc5a814 | |||
59999e09e3 |
4
.cz.yaml
@ -2,6 +2,6 @@ commitizen:
|
||||
bump_message: "build(version): bump version $current_version \u2192 $new_version"
|
||||
changelog_incremental: false
|
||||
name: cz_conventional_commits
|
||||
tag_format: v$major.$minor.$patch$prerelease
|
||||
tag_format: $major.$minor.$patch$prerelease
|
||||
update_changelog_on_bump: true
|
||||
version: 1.0.0rc1
|
||||
version: 1.0.0rc3
|
||||
|
7
.gitignore
vendored
@ -5,9 +5,16 @@ aux/
|
||||
# ignore dev env
|
||||
dev_env
|
||||
__pycache__
|
||||
package*json
|
||||
|
||||
# ignore junit
|
||||
*.junit.xml
|
||||
.markdownlint-cli2.jsonc
|
||||
|
||||
# ignore log files
|
||||
*.log
|
||||
|
||||
#gitlab temp files
|
||||
artifacts.zip
|
||||
artifacts/
|
||||
public/
|
422
.gitlab-ci.yml
@ -1,33 +1,207 @@
|
||||
stages:
|
||||
- validation
|
||||
- build
|
||||
- deploy
|
||||
- test
|
||||
- release
|
||||
- publish
|
||||
---
|
||||
|
||||
variables:
|
||||
GIT_SUBMODULE_STRATEGY: recursive
|
||||
MY_PROJECT_ID: "13001358"
|
||||
|
||||
|
||||
include:
|
||||
- project: nofusscomputing/projects/gitlab-ci
|
||||
ref: ce1cc017e26ff7f6cee586cc7d98e4d292275672
|
||||
ref: development
|
||||
file:
|
||||
- conventional_commits/.gitlab-ci.yml
|
||||
- mkdocs/.gitlab-ci.yml
|
||||
- validation/.gitlab-ci.yml
|
||||
- gitlab_release/.gitlab-ci.yml
|
||||
- .gitlab-ci_common.yaml
|
||||
- template/automagic.gitlab-ci.yaml
|
||||
|
||||
|
||||
Lint Markdown:
|
||||
extends: .Lint_Markdown
|
||||
Website.Lint:
|
||||
extends: .Lint_Markdown_Docs
|
||||
variables:
|
||||
MDLINT_PATHS: "pages/*.md pages/**/*.md pages/**/**/*.md pages/**/**/**/*.md pages/**/**/**/**/**/*.md #CHANGELOG.md !gitlab-ci !website-template"
|
||||
|
||||
|
||||
Static Pages:
|
||||
Website.Build:
|
||||
extends: .MKDocs_Build
|
||||
needs: [ 'Lint Markdown' ]
|
||||
needs: [ 'Website.Lint' ]
|
||||
resource_group: build
|
||||
|
||||
|
||||
Assemble.Website.Prepare:
|
||||
# extends: .MKDocs_Build
|
||||
stage: prepare
|
||||
# image: python:3.7.5-buster
|
||||
# turn mkdocs build template script section to a command template so that customizations can be added.
|
||||
script:
|
||||
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/source"
|
||||
# - mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build"
|
||||
- echo "fetch artifacts from child repo's"
|
||||
- echo "copy static pages source to" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/source"
|
||||
- echo "copy sub-repo source to (merge)" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/source"
|
||||
- echo "mkdocs build source dir"
|
||||
# - mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/full-site"
|
||||
- mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/"
|
||||
#- ls -laR $CI_PROJECT_DIR
|
||||
# remove ops placeholder index.html
|
||||
|
||||
|
||||
- echo "[DEBUG] fetch operations docs"
|
||||
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/32419575/jobs/artifacts/development/download?job=Documentation%2EBuild")'
|
||||
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
|
||||
- |
|
||||
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
|
||||
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
|
||||
# exit 1;
|
||||
else
|
||||
curl --location --output operations-artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/32419575/jobs/artifacts/development/download?job=Documentation%2EBuild";
|
||||
unzip operations-artifacts.zip;
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/operations/index.html";
|
||||
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/operations" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/";
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
|
||||
fi
|
||||
|
||||
|
||||
- echo "[DEBUG] fetch gitlab-ci project docs"
|
||||
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/28543717/jobs/artifacts/development/download?job=Documentation%2EBuild")'
|
||||
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
|
||||
- |
|
||||
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
|
||||
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
|
||||
# exit 1;
|
||||
else
|
||||
curl --location --output gitlab-ci-artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/28543717/jobs/artifacts/development/download?job=Documentation%2EBuild";
|
||||
unzip gitlab-ci-artifacts.zip;
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/gitlab-ci";
|
||||
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/projects/gitlab-ci" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/gitlab-ci/";
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
|
||||
fi
|
||||
|
||||
|
||||
- echo "[DEBUG] fetch git_configuration project docs"
|
||||
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/45705596/jobs/artifacts/development/download?job=Documentation%2EBuild")'
|
||||
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
|
||||
- |
|
||||
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
|
||||
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
|
||||
# exit 1;
|
||||
else
|
||||
curl --location --output git_configuration-artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/45705596/jobs/artifacts/development/download?job=Documentation%2EBuild";
|
||||
unzip git_configuration-artifacts.zip;
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/git_configuration";
|
||||
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/projects/git_configuration" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/git_configuration/";
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
|
||||
fi
|
||||
|
||||
|
||||
- echo "[DEBUG] fetch docker-mail project docs"
|
||||
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/33611657/jobs/artifacts/development/download?job=Documentation%2EBuild")'
|
||||
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
|
||||
- |
|
||||
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
|
||||
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
|
||||
# exit 1;
|
||||
else
|
||||
curl --location --output docker-mail-artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/33611657/jobs/artifacts/development/download?job=Documentation%2EBuild";
|
||||
unzip docker-mail-artifacts.zip;
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/docker-mail";
|
||||
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/projects/docker-mail" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/docker-mail/";
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
|
||||
fi
|
||||
|
||||
|
||||
- echo "[DEBUG] fetch execution_environment project docs"
|
||||
- 'HTTP_STATUS_FILE=$(curl --location -o /dev/null --silent --head --write-out "%{http_code}" --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/45741845/jobs/artifacts/development/download?job=Documentation%2EBuild")'
|
||||
- echo "[DEBUG] HTTP_STATUS_FILE=$HTTP_STATUS_FILE"
|
||||
- |
|
||||
if [ "0$HTTP_STATUS_FILE" != "0200" ]; then
|
||||
echo "[ERROR] Unable to fetch Job Artifacts due to HTTP status of $HTTP_STATUS_FILE";
|
||||
# exit 1;
|
||||
else
|
||||
curl --location --output execution_environment-artifacts.zip --header "PRIVATE-TOKEN: ${GIT_COMMIT_TOKEN}" "https://gitlab.com/api/v4/projects/45741845/jobs/artifacts/development/download?job=Documentation%2EBuild";
|
||||
unzip execution_environment-artifacts.zip;
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/execution_environment";
|
||||
cp -rvf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build/build/projects/execution_environment" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/projects/execution_environment/";
|
||||
rm -Rf "$CI_PROJECT_DIR/artifacts/build/Documentation.Build";
|
||||
fi
|
||||
|
||||
|
||||
# # below 2 lines commented out as need to ffigure out how to download artifacts.
|
||||
# - rm -Rf "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/operations/index.html"
|
||||
# - echo "cp -rvn" "$CI_PROJECT_DIR/artifacts/build/Website.Build/build/operations" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/"
|
||||
|
||||
|
||||
# # copy ops pages into main site, not overwriting
|
||||
# #- cp -rvn "$CI_PROJECT_DIR/artifacts/build/Static Pages/build/"* "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/"
|
||||
|
||||
|
||||
# # below line commented out as need to ffigure out how to download artifacts.
|
||||
# - cp -rvf "$CI_PROJECT_DIR/artifacts/build/Website.Build/build/operations" "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/build/"
|
||||
|
||||
- echo "copy prepare files (sitemap, search file) to fullsite (overwrite)"
|
||||
- echo "copy each sub-repo build to fullsite (merge)"
|
||||
# - echo mv "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/full-site" public
|
||||
needs:
|
||||
- 'Website.Build'
|
||||
# only available in gitlab premium
|
||||
# use: - "curl -O --header 'PRIVATE-TOKEN: ${GITLAB_API_TOKEN}' https://gitlab.example.com/api/v4/projects/${PROJECT_A_ID}/jobs/${REMOTE_JOB_ID}/artifacts/${REMOTE_FILENAME}"
|
||||
# - project: nofusscomputing/ops
|
||||
# job: Static Pages
|
||||
# ref: development
|
||||
# artifacts: true
|
||||
artifacts:
|
||||
expire_in: 24 hrs
|
||||
when: always
|
||||
paths:
|
||||
- "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/*"
|
||||
resource_group: build
|
||||
rules:
|
||||
# - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master" && $CI_PIPELINE_SOURCE == "push"'
|
||||
# when: always
|
||||
|
||||
# Build docs on tag so they can be downloaded from the tag job and are always available.
|
||||
- if: # condition_git_tag
|
||||
$CI_COMMIT_TAG != null &&
|
||||
$CI_COMMIT_BRANCH == null
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
when: always
|
||||
|
||||
- if: # condition_master_branch_push
|
||||
$CI_COMMIT_BRANCH == "master" &&
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
when: always
|
||||
|
||||
- if: # condition_dev_branch_push
|
||||
$CI_COMMIT_BRANCH == "development" &&
|
||||
(
|
||||
$CI_PIPELINE_SOURCE == "pipeline"
|
||||
||
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
||
|
||||
$CI_PIPELINE_SOURCE == "schedule"
|
||||
)
|
||||
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
# No changes check # See nofusscomputing/projects/gitlab-ci#34
|
||||
# changes:
|
||||
# paths:
|
||||
# - '{docs/**,pages/**}/*.md'
|
||||
# compare_to: 'master'
|
||||
when: always
|
||||
|
||||
- if: # condition_not_master_or_dev_push
|
||||
$CI_COMMIT_BRANCH != "master" &&
|
||||
$CI_COMMIT_BRANCH != "development" &&
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
changes:
|
||||
paths:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
compare_to: 'development'
|
||||
when: always
|
||||
|
||||
- when: never
|
||||
|
||||
|
||||
pages:
|
||||
@ -35,8 +209,8 @@ pages:
|
||||
variables:
|
||||
GIT_STRATEGY: none
|
||||
script:
|
||||
- mv "$CI_PROJECT_DIR/artifacts/build/Static Pages/build" public
|
||||
needs: [ 'Static Pages' ]
|
||||
- mv "$CI_PROJECT_DIR/artifacts/prepare/Assemble.Website.Prepare/build" public
|
||||
needs: [ 'Assemble.Website.Prepare' ]
|
||||
environment:
|
||||
name: staging
|
||||
url: $CI_PAGES_URL
|
||||
@ -44,8 +218,55 @@ pages:
|
||||
paths:
|
||||
- public
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master"'
|
||||
# - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master" && $CI_PIPELINE_SOURCE == "push"'
|
||||
# when: on_success
|
||||
|
||||
# Build docs on tag so they can be downloaded from the tag job and are always available.
|
||||
- if: # condition_git_tag
|
||||
$CI_COMMIT_TAG != null &&
|
||||
$CI_COMMIT_BRANCH == null
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
when: always
|
||||
|
||||
- if: # condition_master_branch_push
|
||||
$CI_COMMIT_BRANCH == "master" &&
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
when: always
|
||||
|
||||
- if: # condition_dev_branch_push
|
||||
$CI_COMMIT_BRANCH == "development" &&
|
||||
(
|
||||
$CI_PIPELINE_SOURCE == "pipeline"
|
||||
||
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
||
|
||||
$CI_PIPELINE_SOURCE == "schedule"
|
||||
)
|
||||
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
# No changes check # See nofusscomputing/projects/gitlab-ci#34
|
||||
# changes:
|
||||
# paths:
|
||||
# - '{docs/**,pages/**}/*.md'
|
||||
# compare_to: 'master'
|
||||
when: always
|
||||
|
||||
- if: # condition_not_master_or_dev_push
|
||||
$CI_COMMIT_BRANCH != "master" &&
|
||||
$CI_COMMIT_BRANCH != "development" &&
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
changes:
|
||||
paths:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
compare_to: 'development'
|
||||
when: always
|
||||
|
||||
- when: never
|
||||
|
||||
|
||||
@ -69,16 +290,64 @@ pages:
|
||||
junit:
|
||||
- "*.junit.xml"
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH'
|
||||
when: always
|
||||
# - if: '$CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "push"'
|
||||
# when: on_success
|
||||
|
||||
# Build docs on tag so they can be downloaded from the tag job and are always available.
|
||||
- if: # condition_git_tag
|
||||
$CI_COMMIT_TAG != null &&
|
||||
$CI_COMMIT_BRANCH == null
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
when: on_success
|
||||
|
||||
- if: # condition_master_branch_push
|
||||
$CI_COMMIT_BRANCH == "master" &&
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
when: on_success
|
||||
|
||||
- if: # condition_dev_branch_push
|
||||
$CI_COMMIT_BRANCH == "development" &&
|
||||
(
|
||||
$CI_PIPELINE_SOURCE == "pipeline"
|
||||
||
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
||
|
||||
$CI_PIPELINE_SOURCE == "schedule"
|
||||
)
|
||||
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
|
||||
# No changes check # See nofusscomputing/projects/gitlab-ci#34
|
||||
# changes:
|
||||
# paths:
|
||||
# - '{docs/**,pages/**}/*.md'
|
||||
# compare_to: 'master'
|
||||
when: on_success
|
||||
|
||||
- if: # condition_not_master_or_dev_push
|
||||
$CI_COMMIT_BRANCH != "master" &&
|
||||
$CI_COMMIT_BRANCH != "development" &&
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
changes:
|
||||
paths:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
compare_to: 'development'
|
||||
when: on_success
|
||||
|
||||
- when: never
|
||||
|
||||
|
||||
Unit Tests:
|
||||
extends: .Pytest_template
|
||||
needs: [ 'Static Pages' ]
|
||||
needs: [ 'Website.Build' ]
|
||||
script:
|
||||
- mv "$CI_PROJECT_DIR/artifacts/build/Static Pages/build" build
|
||||
- mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" build
|
||||
- pytest --verbose --junitxml=unit_test.junit.xml --tb=line test/unit
|
||||
- cp *.junit.xml "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/"
|
||||
- echo "[DEBUG] python_exit[$python_exit]"
|
||||
@ -92,8 +361,107 @@ Unit Tests:
|
||||
# script:
|
||||
# - echo "placeholder job for integration tests" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/DETEMEME.txt"
|
||||
|
||||
Gitlab Release:
|
||||
extends:
|
||||
- .gitlab_release
|
||||
|
||||
|
||||
.Add_SSHKey: &Add_SSHKey_Before_Script |
|
||||
mkdir -p ~/.ssh
|
||||
chmod 700 ~/.ssh
|
||||
eval $(ssh-agent -s)
|
||||
SSH_KEY_NAME=SSH_PRIVATE_KEY_${ANSIBLE_USER}
|
||||
echo "Debug SSH_KEY_NAME[$SSH_KEY_NAME]"
|
||||
chmod 700 "${!SSH_KEY_NAME}"
|
||||
ssh-add "${!SSH_KEY_NAME}"
|
||||
#update next line so that ca key can be obtained. original source is ansible repo
|
||||
#HOST_SSH_ID=$(cat roles/openssh-server/files/nww-nl/host_ca.pub)
|
||||
HOST_SSH_ID=$(cat ${SSH_HOST_CA})
|
||||
echo DEBUG HOST_SSH_ID[$HOST_SSH_ID]
|
||||
echo "@cert-authority *.networkedweb.com $HOST_SSH_ID" > ~/.ssh/known_hosts
|
||||
chmod 700 ~/.ssh/known_hosts
|
||||
ls -la ~/.ssh
|
||||
|
||||
|
||||
public_website:
|
||||
stage: publish
|
||||
image: debian:buster-slim
|
||||
variables:
|
||||
GIT_STRATEGY: none
|
||||
before_script:
|
||||
- if [ "0$ANSIBLE_USER" == "0" ]; then ANSIBLE_USER=deploy; fi
|
||||
- echo Debug ANSIBLE_USER[$ANSIBLE_USER]
|
||||
- apt update
|
||||
- apt install --no-install-recommends -y ssh
|
||||
- ls -la "$CI_PROJECT_DIR/artifacts/prepare/Assemble.Website.Prepare/build"
|
||||
- mv "$CI_PROJECT_DIR/artifacts/prepare/Assemble.Website.Prepare/build" "$CI_PROJECT_DIR/public"
|
||||
- rm -Rf "$CI_PROJECT_DIR/public/build"
|
||||
- ls -la "$CI_PROJECT_DIR"
|
||||
- ls -la "$CI_PROJECT_DIR/public"
|
||||
- *Add_SSHKey_Before_Script
|
||||
script:
|
||||
- ssh ${ANSIBLE_USER}@${HOST_PUBLIC_WEBSITE} sudo rm -Rf ${PUBLIC_WEBSITE_PATH}/*
|
||||
- scp -r public/* ${ANSIBLE_USER}@${HOST_PUBLIC_WEBSITE}:${PUBLIC_WEBSITE_PATH}
|
||||
needs: [ 'Assemble.Website.Prepare', 'Unit Tests']
|
||||
resource_group: production
|
||||
environment:
|
||||
name: production
|
||||
url: https://nofusscomputing.com
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
rules:
|
||||
# - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH == "master" && $CI_PIPELINE_SOURCE == "push"'
|
||||
# when: on_success
|
||||
# - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH == "development" && $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_PIPELINE_SOURCE == "push"'
|
||||
# when: manual
|
||||
# - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "development" && $CI_COMMIT_BRANCH != "master" && $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_PIPELINE_SOURCE == "push"'
|
||||
# when: manual
|
||||
# allow_failure: true
|
||||
|
||||
# Build docs on tag so they can be downloaded from the tag job and are always available.
|
||||
# - if: # condition_git_tag
|
||||
# $CI_COMMIT_TAG != null &&
|
||||
# $CI_COMMIT_BRANCH == null
|
||||
# exists:
|
||||
# - '{docs/**,pages/**}/*.md'
|
||||
# when: always
|
||||
|
||||
- if: # condition_master_branch_push
|
||||
$CI_COMMIT_BRANCH == "master" &&
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
when: on_success
|
||||
|
||||
- if: # condition_dev_branch_push
|
||||
$CI_COMMIT_BRANCH == "development" &&
|
||||
(
|
||||
$CI_PIPELINE_SOURCE == "pipeline"
|
||||
||
|
||||
$CI_PIPELINE_SOURCE == "push"
|
||||
||
|
||||
$CI_PIPELINE_SOURCE == "schedule"
|
||||
)
|
||||
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
|
||||
exists:
|
||||
- '{docs/**,pages/**}/*.md'
|
||||
# No changes check # See nofusscomputing/projects/gitlab-ci#34
|
||||
# changes:
|
||||
# paths:
|
||||
# - '{docs/**,pages/**}/*.md'
|
||||
# compare_to: 'master'
|
||||
when: manual
|
||||
|
||||
# - if: # condition_not_master_or_dev_push
|
||||
# $CI_COMMIT_BRANCH != "master" &&
|
||||
# $CI_COMMIT_BRANCH != "development" &&
|
||||
# $CI_PIPELINE_SOURCE == "push"
|
||||
# exists:
|
||||
# - '{docs/**,pages/**}/*.md'
|
||||
# changes:
|
||||
# paths:
|
||||
# - '{docs/**,pages/**}/*.md'
|
||||
# compare_to: 'development'
|
||||
# when: manual
|
||||
# allow_failure: true
|
||||
|
||||
- when: never
|
||||
|
||||
|
6
.gitmodules
vendored
@ -1,4 +1,8 @@
|
||||
[submodule "gitlab-ci"]
|
||||
path = gitlab-ci
|
||||
url = https://gitlab.com/nofusscomputing/projects/gitlab-ci.git
|
||||
branch = master
|
||||
branch = development
|
||||
[submodule "website-template"]
|
||||
path = website-template
|
||||
url = https://gitlab.com/nofusscomputing/infrastructure/website-template.git
|
||||
branch = development
|
||||
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"line-length": false,
|
||||
"MD007": {
|
||||
"indent": 4
|
||||
},
|
||||
"MD033": {
|
||||
"allowed_elements": [ "div", "s", "span", "u" ]
|
||||
}
|
||||
}
|
8
.nfc_automation.yaml
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
|
||||
role_git_conf:
|
||||
gitlab:
|
||||
submodule_branch: "development"
|
||||
default_branch: development
|
||||
mr_labels: ~"type::automation" ~"impact::0" ~"priority::0"
|
||||
auto_merge: true
|
8
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"gitlab.gitlab-workflow",
|
||||
"ms-python.python",
|
||||
"njpwerner.autodocstring",
|
||||
"davidanson.vscode-markdownlint"
|
||||
]
|
||||
}
|
2
.vscode/tasks.json
vendored
@ -9,7 +9,7 @@
|
||||
{
|
||||
"suppressTaskName": true,
|
||||
"args": [
|
||||
"cd ${workspaceFolder}; . dev_env/bin/activate; pip install -r gitlab-ci/mkdocs/requirements.txt; pip install -r requirements.txt; mkdocs build --clean --strict"
|
||||
"cd ${workspaceFolder}; . dev_env/bin/activate; pip install -r gitlab-ci/mkdocs/requirements.txt; pip install -r requirements.txt; mkdocs build --clean"
|
||||
],
|
||||
"problemMatcher": [],
|
||||
"label": "MKDocs Build Static Site",
|
||||
|
87
CHANGELOG.md
@ -1,3 +1,90 @@
|
||||
## 1.0.0rc3 (2023-05-31)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **ci**: [c40dc037](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/c40dc037b3b7e0e0be97e9421c7c0097c8c494fe) - website.lint paths updated [ [!13](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/13) ]
|
||||
|
||||
### Continious Integration
|
||||
|
||||
- **chore**: [aec1b98e](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/aec1b98e9a6f466d18981f84902964446ba50b88) - add nfc automation config [ [!12](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/12) ]
|
||||
|
||||
## 1.0.0rc2 (2023-05-29)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **cz**: [32ec703d](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/32ec703d720c3230728cd220fe76f0efacbc5c05) - remove 'v' suffix from tag [ [!10](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/10) [#10](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/10) ]
|
||||
- **unit_test**: [b5268e18](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/b5268e18638499fa14c61066ab11e44ea346deb8) - ignore gitlab ide links for alive checks [ [!9](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/9) ]
|
||||
- **ci**: [6ed8e5ba](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/6ed8e5bae3159ad9575f8c630bf34cf2f42214b1) - only deploy when assemble site success [ [!9](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/9) ]
|
||||
- **assemble_site**: [46f8585c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/46f8585cc3fa1ca8cbe60762bb8f476fcb31554a) - remove downloaded artifacts [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **ci**: [90a22fcc](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/90a22fcc515383d1031fb6bba95327ba3d24e1c8) - url encode artifact path for assemble [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **build**: [8cde3310](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/8cde331079e9701962879c0d78e60bcd05938543) - use correct gitlab-ci index page [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!26](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/26) ]
|
||||
- **ci**: [b0fbe31c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/b0fbe31cbe0d0a4057c3ebc53d1c25bcdbfe96d7) - typo in includes [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- [eb32851d](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/eb32851d32e7e4136c114616b15a11303ec78d81) - use relative path [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- [f1eb1a8c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/f1eb1a8cba32d6378dd68d81e21e93e5ab740007) - set ssh user [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- [4b28e8aa](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/4b28e8aa64d2be6e62cf8b88bb48953a987e05bb) - typo [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **artifacts**: [2551d764](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/2551d764d87b63248a46be1a68c4a4c193d03fe6) - fix fetching ops artifacts and allow publish [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **ssh**: [f75cf83e](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/f75cf83e9a819694db54fd1f384fbaddaaadfd4c) - ssh key set to file var [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **ci**: [ad671405](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/ad67140571f41eb2e01b3b7de44602401e8fc5ac) - fix pages job to run [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **website-template**: [d0121f60](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/d0121f60bae36cb1bd685d9ed393dfef3fb1acac) - update module to fixed template commit [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!2](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/2) ]
|
||||
- **vscode**: [0c3a878c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/0c3a878cfa35bd43cd381e89b54785b95f40d1ee) - don't force mkdocs strict [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **mobile_display**: [3e1e8886](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/3e1e8886efd50d948d4b66434063c08d6b0228d3) - added padding between sections [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
|
||||
- **article**: [d0719e35](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/d0719e356d4e56db8d2b4c6191484326c9701a03) - add required metadata. [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
|
||||
|
||||
### Code Refactor
|
||||
|
||||
- **assemble_site**: [5549fa8f](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/5549fa8f37f6c060dd26de446c8e56d460c71093) - use new job name [ [!11](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/11) [!34](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/34) ]
|
||||
- **ci**: [546bc11a](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/546bc11ad23e410ccc2e073d3288d0c1f875cc2c) - use new build job name `Website.Build` [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!25](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/25) [!11](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/11) ]
|
||||
- [2eef305f](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/2eef305f0e9ffe2ededb3e19c7ce5a99238103ed) - ad copy holder to article [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- [c2fe3bb7](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/c2fe3bb7f051a67c47f555c6039d421761cdadd0) - clear up MD linting errors [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **blog_post**: [67b9379f](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/67b9379fe7eed288d00d8451678d338f2ad2a835) - renamed to article to reflect direction [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **home_page**: [8b50d28a](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/8b50d28aabdb1361036c137329695c29edf04f62) - added nfc logo [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **gitlab_templates**: [59999e09](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/59999e09e37450faee13387f0cc1154d8a9ee1c5) - changed to use correct path [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
|
||||
|
||||
### Continious Integration
|
||||
|
||||
- **automagic**: [7574bb4b](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/7574bb4b89fac79310fdfe21ef79e17af9dbf1f1) - use gitlab-ci project template [ [!11](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/11) [#30](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/30) [#11](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/11) ]
|
||||
- [a290aa79](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/a290aa79ba0a0681182f05a21dda0344af50718d) - fix path
|
||||
- [016f566d](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/016f566dbf2fb2474c31fc7edae3c6c8818d218f) - debugging [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- [29eee4b0](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/29eee4b0c481164c6522e943c1268964a4957a73) - fix scp command [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **publish**: [b63e55db](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/b63e55db0ff81ec66b7fecade358e0430947a550) - fix path [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- [4ed51277](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/4ed51277a2f9bfdb2c3077e0afc9e72b06274964) - now???? [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- [84385dc3](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/84385dc3898d34ecb9e66f8bd5339d751f1b2901) - for fucks sake [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- [92fb084c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/92fb084ca6cf2d4d87ea92df9a43f34ae3b80188) - fix file [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **publish**: [37b15f90](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/37b15f90d2b8d67b75034c73a4c6a1ea015553c7) - fix ssh must be installed to deploy [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- [e36d1387](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/e36d1387b64d5c705a5f53cc351cfdfde43b669f) - removed cross-repo build see change notes [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **gitlab-ci**: [a816041c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/a816041cffc8f64deec087bfe354faf12cbc0260) - updated to latest dev [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **public_website**: [47ae7aa9](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/47ae7aa9e1ace97ee0083229faaa5a509823ed49) - only enable manual publish on dev branch [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **publish**: [53d5d3ff](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/53d5d3ff62e3dd70a450803c93087d6018fa835e) - add placeholder publish job [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [#3](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/3) ]
|
||||
- **pages**: [71d10e1d](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/71d10e1d79e2802c43de23f9a4b93db6c307b42f) - use the sub-pages repo for pages [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [#3](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/3) ]
|
||||
- **sub-repo-pages**: [272da7e7](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/272da7e77655eedadcd0d0737ddf20da2672d95d) - add placeholder sub-pages job [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [#3](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/3) ]
|
||||
- [f5b317bc](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/f5b317bcada125f696101b565fb94f39ce110185) - add prepare stage [ [#3](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/3) [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **markdown_lint**: [228b5780](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/228b57804efcdcbbffca5cf99a8da2d5f02ba44f) - updated for mkdocs md files clarity. [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **gitlab-ci**: [927a97c9](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/927a97c9136aef1aa6f0524a473fea7171df409b) - updated to new commit for markdown lint to work [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
|
||||
### Features
|
||||
|
||||
- **ci**: [bbf08468](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/bbf084686176451db843947fb818ae9e374dad50) - assemble job now does check for sub-site dependencies [ [!11](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/11) ]
|
||||
- **ci**: [266eff37](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/266eff376668a2bf5f5fcf7926dcd7b38e476179) - use automagic gitlab-ci template [ [!10](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/10) [!33](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/33) [#11](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/11) ]
|
||||
- **ci**: [a86b4bef](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/a86b4befcc7696a00575fe8303934b5c6cd4abf8) - enable publishing docker-mail docs [ [!9](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/9) [!10](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/10) [!27](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/27) ]
|
||||
- **website**: [fe6b84cf](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/fe6b84cf28f845162714569749a2ef82b95647ea) - enable edit button [ [!9](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/9) ]
|
||||
- **ci**: [fc74464e](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/fc74464ea852b9b71ceb9f11ec8cfc243d667d7c) - add resource groups to prevent dup jobs [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **publish**: [1dffe52c](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/1dffe52c7a7ceb2930a7533108e44447f67ad2ae) - on publish website on success [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **build**: [189e7cd6](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/189e7cd64557471d0609dd59c95edbf14771444c) - include project gitlab-ci docs [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!26](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/26) ]
|
||||
- **requirements.txt**: [0ec5cdc9](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/0ec5cdc9a33b7083e51e172b3402a9808279aa19) - removed as part of template [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!26](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/26) [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **md_lint_config**: [e0de8665](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/e0de8665fe18003a504dd1ecc3e045ecc5844cd3) - moved to website-template repo [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **publish**: [0c539a23](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/0c539a23c3dcd22bef702915aa70974dbf04eb0b) - clean remote dir first anduse correct source [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) ]
|
||||
- **operations**: [20392be0](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/20392be05a30f4bc9496237c0a3f71689f433f8e) - Pull Operations website pages job artifacts. [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [#41](https://gitlab.com/nofusscomputing/infrastructure/website/-/issues/41) ]
|
||||
- **website_template**: [70f0facb](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/70f0facb118a9e54bcf20648f69c73469483cf56) - Added website template as submodule [ [!8](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/8) [!2](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/2) ]
|
||||
- **mkdocs**: [054b38a4](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/054b38a4a7b62e54b582d50be64bfd25f467516b) - enabled tabbed content [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **wiki**: [765bae0e](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/765bae0e0750f46b7a82fd2ff57cd75571c188b6) - remove wiki as it wont be used. [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **article**: [3ef36f49](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/3ef36f49e82e1fcff6e49b25ac9dacc9f564a1ac) - added microdata to the article. [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **article**: [b9529fea](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/b9529feaba842ed76212b945730ac574ddcf60c8) - articles must have a type [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **markdown_lint**: [c19d097b](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/c19d097b28123692610bf29857cdf1f9c4170985) - allow html p in markdown [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **vscode**: [bbb63963](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/bbb639634b166b4f36a771c13bff430d38b6953b) - extension recommendations added. [ [!7](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/7) ]
|
||||
- **article**: [466f6e86](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/466f6e8632c8392cae26f4ba0871c5fff4f2f0d6) - migrate mdt setup article [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
|
||||
- **home_page**: [f14b17c3](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/f14b17c3b00dde626083bcb4c5bb84ab599fdff5) - created template for homepage [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
|
||||
- **home_page**: [1a6fc5a8](https://gitlab.com/nofusscomputing/infrastructure/website/-/commit/1a6fc5a814c7dc1ceb8a13c5db806a23db53073d) - add metadata [ [!6](https://gitlab.com/nofusscomputing/infrastructure/website/-/merge_requests/6) ]
|
||||
|
||||
## v1.0.0rc1 (2022-01-29)
|
||||
|
||||
### Bug Fixes
|
||||
|
125
custom-plugins/mkdocs-plugin-tags/.gitignore
vendored
@ -1,125 +0,0 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
pip-wheel-metadata/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
# docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# celery beat schedule file
|
||||
celerybeat-schedule
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
@ -1,7 +0,0 @@
|
||||
# License
|
||||
|
||||
Copyright (C) 2021 No Fuss Computing
|
||||
|
||||
All Rights Reserved.
|
||||
|
||||
Not yet suitable for public release.
|
@ -1,2 +0,0 @@
|
||||
include versioneer.py
|
||||
include tags/_version.py
|
@ -1,128 +0,0 @@
|
||||
# No Fuss Computing's Tags Plugin for MKDocs
|
||||
|
||||
Modified version from: [github.com/ginsburgnm/mkdocs-plugin-tags](https://github.com/ginsburgnm/mkdocs-plugin-tags)
|
||||
|
||||
## Previous Readme below - tags
|
||||
|
||||
Support for tags in the yaml-metadata in the header of markdown files.
|
||||
|
||||
Extracts this metadata and creates a "Tags" page which lists all tags
|
||||
and all pages for each tag.
|
||||
|
||||
## Quick Demo
|
||||
|
||||
Install this plugin (it will also install mkdocs if required)
|
||||
|
||||
```bash
|
||||
pip install mkdocs-plugin-tags
|
||||
```
|
||||
|
||||
Create a new documentation folder:
|
||||
|
||||
```bash
|
||||
mkdocs new demo
|
||||
```
|
||||
|
||||
Edit the `.md` files to add initial metadata. Currently, the metadata has to be
|
||||
enclosed in `---` lines, and must include a `title:` property
|
||||
(otherwise the page will appear as "untitled" in the tags page). So, for example:
|
||||
|
||||
```bash
|
||||
cd demo
|
||||
cd docs
|
||||
cat > index.md
|
||||
---
|
||||
title: Welcome
|
||||
tags:
|
||||
- testing
|
||||
- unimportant
|
||||
---
|
||||
# Welcome to MkDocs
|
||||
|
||||
For full documentation visit [mkdocs.org](https://mkdocs.org).
|
||||
|
||||
^D
|
||||
```
|
||||
|
||||
Edit `mkdocs.yml` to include this plugin:
|
||||
|
||||
```yaml
|
||||
plugins:
|
||||
- tags:
|
||||
```
|
||||
|
||||
Run the server:
|
||||
|
||||
```bash
|
||||
mkdocs serve --livereload
|
||||
```
|
||||
|
||||
Visit the URL `/tags` (it should appear in the nav panel).
|
||||
This is an auto-generated page which contains the tags as level 2 headers,
|
||||
and under each tag, a listing of the pages which declare that tag in the
|
||||
metadata section.
|
||||
|
||||

|
||||
|
||||
## How it works
|
||||
|
||||
On each build (even with `--livereload`), all the `.md` files composing the
|
||||
site are scanned, their "triple-dash-delimted" yaml header is extracted and
|
||||
parsed, and the list of tags is collected.
|
||||
|
||||
After that, a new temporal file is created (by default in `aux/tags.md`, but
|
||||
this is customizable) which contains the generated tags page, in markdown
|
||||
format. This file is not in the documents folder to avoid retriggering a
|
||||
build, but it is added to the list of files to be converted to HTML by mkdocs.
|
||||
|
||||
## Customization
|
||||
|
||||
The layout of the tags page is a markdown file with jinja2 embedded contents.
|
||||
The package provides such a template by default, with the following content:
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: Tags
|
||||
---
|
||||
# Contents grouped by tag
|
||||
|
||||
{% for tag, pages in tags %}
|
||||
|
||||
## <span class="tag">{{tag}}</span>
|
||||
{% for page in pages %}
|
||||
* [{{page.title}}]({{page.filename}})
|
||||
{% endfor %}
|
||||
|
||||
{% endfor %}
|
||||
```
|
||||
|
||||
You can style the `h2.tag` element via CSS, if you want.
|
||||
|
||||
You can also provide your own markdown template, in case that you want a
|
||||
different layout or metadata. The `page` object contains all the metadata
|
||||
in a mkdocs page, and in addition a `.filename` attribute, which contains
|
||||
the file name of the source of the page (relative to the docs folder),
|
||||
which can be used to link to that page.
|
||||
|
||||
The full customizable options for the plugin are:
|
||||
|
||||
* `tags_folder`: Folder in which the auxiliar tags markdown file will be written
|
||||
(`aux` by default, relative to the folder in which `mkdocs` is invoked).
|
||||
It can be set to an absolute path, such as `/tmp/mysite/aux`.
|
||||
The required folders are created.
|
||||
* `tags_template`: path to the file which contains the markdown-jinja template
|
||||
for the tags page. It is `None` by default, which means that the
|
||||
package-provided template is used. It can be an absolute path,
|
||||
or relative to the folder in which `mkdocs` is run.
|
||||
* `css_name`: this allows you to pick what name styles the tag that appears on
|
||||
the top of the page that contains a tag. This way things won't be overloaded
|
||||
|
||||
For example, this can be put at `mkdocs.yaml`:
|
||||
|
||||
```yaml
|
||||
plugins:
|
||||
- search
|
||||
- tags:
|
||||
tags_folder: /tmp/mysite/aux
|
||||
tags_template: docs/theme/tags.md.template
|
||||
```
|
@ -1 +0,0 @@
|
||||
mkdocs==1.2.3
|
@ -1,27 +0,0 @@
|
||||
[metadata]
|
||||
name = mkdocs-plugin-tags
|
||||
author = No Fuss Computing
|
||||
author_email = helpdesk@nofusscomputing.com
|
||||
url = https://gitlab.com/nofusscomputing/infrastructure/website
|
||||
description = "Create tags in mkdocs"
|
||||
long_description_content_type = text/markdown
|
||||
long_description = file: README.md
|
||||
license = MIT
|
||||
keywords = "mkdocs python markdown tags"
|
||||
classifiers =
|
||||
Intended Audience :: Developers
|
||||
License :: OSI Approved :: MIT License
|
||||
Operating System :: OS Independent
|
||||
Intended Audience :: Information Technology
|
||||
Programming Language :: Python :: 3.6
|
||||
Programming Language :: Python :: 3.7
|
||||
Programming Language :: Python :: 3.8
|
||||
Topic :: Security :: Cryptography
|
||||
|
||||
[versioneer]
|
||||
VCS = git
|
||||
style = pep440
|
||||
versionfile_source = tags/_version.py
|
||||
versionfile_build = tags/_version.py
|
||||
tag_prefix =
|
||||
parentdir_prefix = tags-
|
@ -1,19 +0,0 @@
|
||||
"""
|
||||
Setup the plugin
|
||||
"""
|
||||
from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
version='0.0.1',
|
||||
python_requires='>=3.6',
|
||||
install_requires=[
|
||||
'mkdocs==1.2.3',
|
||||
],
|
||||
packages=find_packages(exclude=['*.tests']),
|
||||
package_data={'tags': ['templates/*.md.template']},
|
||||
entry_points={
|
||||
'mkdocs.plugins': [
|
||||
'tags = tags.plugin:TagsPlugin'
|
||||
]
|
||||
}
|
||||
)
|
@ -1,3 +0,0 @@
|
||||
|
||||
from . import _version
|
||||
__version__ = _version.get_versions()['version']
|
@ -1,644 +0,0 @@
|
||||
|
||||
# This file helps to compute a version number in source trees obtained from
|
||||
# git-archive tarball (such as those provided by githubs download-from-tag
|
||||
# feature). Distribution tarballs (built by setup.py sdist) and build
|
||||
# directories (produced by setup.py build) will contain a much shorter file
|
||||
# that just contains the computed version number.
|
||||
|
||||
# This file is released into the public domain. Generated by
|
||||
# versioneer-0.21 (https://github.com/python-versioneer/python-versioneer)
|
||||
|
||||
"""Git implementation of _version.py."""
|
||||
|
||||
import errno
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
from typing import Callable, Dict
|
||||
|
||||
|
||||
def get_keywords():
|
||||
"""Get the keywords needed to look up the version information."""
|
||||
# these strings will be replaced by git during git-archive.
|
||||
# setup.py/versioneer.py will grep for the variable names, so they must
|
||||
# each be defined on a line of their own. _version.py will just call
|
||||
# get_keywords().
|
||||
git_refnames = "$Format:%d$"
|
||||
git_full = "$Format:%H$"
|
||||
git_date = "$Format:%ci$"
|
||||
keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
|
||||
return keywords
|
||||
|
||||
|
||||
class VersioneerConfig:
|
||||
"""Container for Versioneer configuration parameters."""
|
||||
|
||||
|
||||
def get_config():
|
||||
"""Create, populate and return the VersioneerConfig() object."""
|
||||
# these strings are filled in when 'setup.py versioneer' creates
|
||||
# _version.py
|
||||
cfg = VersioneerConfig()
|
||||
cfg.VCS = "git"
|
||||
cfg.style = "pep440"
|
||||
cfg.tag_prefix = ""
|
||||
cfg.parentdir_prefix = "tags-"
|
||||
cfg.versionfile_source = "tags/_version.py"
|
||||
cfg.verbose = False
|
||||
return cfg
|
||||
|
||||
|
||||
class NotThisMethod(Exception):
|
||||
"""Exception raised if a method is not valid for the current scenario."""
|
||||
|
||||
|
||||
LONG_VERSION_PY: Dict[str, str] = {}
|
||||
HANDLERS: Dict[str, Dict[str, Callable]] = {}
|
||||
|
||||
|
||||
def register_vcs_handler(vcs, method): # decorator
|
||||
"""Create decorator to mark a method as the handler of a VCS."""
|
||||
def decorate(f):
|
||||
"""Store f in HANDLERS[vcs][method]."""
|
||||
if vcs not in HANDLERS:
|
||||
HANDLERS[vcs] = {}
|
||||
HANDLERS[vcs][method] = f
|
||||
return f
|
||||
return decorate
|
||||
|
||||
|
||||
def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
|
||||
env=None):
|
||||
"""Call the given command(s)."""
|
||||
assert isinstance(commands, list)
|
||||
process = None
|
||||
for command in commands:
|
||||
try:
|
||||
dispcmd = str([command] + args)
|
||||
# remember shell=False, so use git.cmd on windows, not just git
|
||||
process = subprocess.Popen([command] + args, cwd=cwd, env=env,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=(subprocess.PIPE if hide_stderr
|
||||
else None))
|
||||
break
|
||||
except OSError:
|
||||
e = sys.exc_info()[1]
|
||||
if e.errno == errno.ENOENT:
|
||||
continue
|
||||
if verbose:
|
||||
print("unable to run %s" % dispcmd)
|
||||
print(e)
|
||||
return None, None
|
||||
else:
|
||||
if verbose:
|
||||
print("unable to find command, tried %s" % (commands,))
|
||||
return None, None
|
||||
stdout = process.communicate()[0].strip().decode()
|
||||
if process.returncode != 0:
|
||||
if verbose:
|
||||
print("unable to run %s (error)" % dispcmd)
|
||||
print("stdout was %s" % stdout)
|
||||
return None, process.returncode
|
||||
return stdout, process.returncode
|
||||
|
||||
|
||||
def versions_from_parentdir(parentdir_prefix, root, verbose):
|
||||
"""Try to determine the version from the parent directory name.
|
||||
|
||||
Source tarballs conventionally unpack into a directory that includes both
|
||||
the project name and a version string. We will also support searching up
|
||||
two directory levels for an appropriately named parent directory
|
||||
"""
|
||||
rootdirs = []
|
||||
|
||||
for _ in range(3):
|
||||
dirname = os.path.basename(root)
|
||||
if dirname.startswith(parentdir_prefix):
|
||||
return {"version": dirname[len(parentdir_prefix):],
|
||||
"full-revisionid": None,
|
||||
"dirty": False, "error": None, "date": None}
|
||||
rootdirs.append(root)
|
||||
root = os.path.dirname(root) # up a level
|
||||
|
||||
if verbose:
|
||||
print("Tried directories %s but none started with prefix %s" %
|
||||
(str(rootdirs), parentdir_prefix))
|
||||
raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
|
||||
|
||||
|
||||
@register_vcs_handler("git", "get_keywords")
|
||||
def git_get_keywords(versionfile_abs):
|
||||
"""Extract version information from the given file."""
|
||||
# the code embedded in _version.py can just fetch the value of these
|
||||
# keywords. When used from setup.py, we don't want to import _version.py,
|
||||
# so we do it with a regexp instead. This function is not used from
|
||||
# _version.py.
|
||||
keywords = {}
|
||||
try:
|
||||
with open(versionfile_abs, "r") as fobj:
|
||||
for line in fobj:
|
||||
if line.strip().startswith("git_refnames ="):
|
||||
mo = re.search(r'=\s*"(.*)"', line)
|
||||
if mo:
|
||||
keywords["refnames"] = mo.group(1)
|
||||
if line.strip().startswith("git_full ="):
|
||||
mo = re.search(r'=\s*"(.*)"', line)
|
||||
if mo:
|
||||
keywords["full"] = mo.group(1)
|
||||
if line.strip().startswith("git_date ="):
|
||||
mo = re.search(r'=\s*"(.*)"', line)
|
||||
if mo:
|
||||
keywords["date"] = mo.group(1)
|
||||
except OSError:
|
||||
pass
|
||||
return keywords
|
||||
|
||||
|
||||
@register_vcs_handler("git", "keywords")
|
||||
def git_versions_from_keywords(keywords, tag_prefix, verbose):
|
||||
"""Get version information from git keywords."""
|
||||
if "refnames" not in keywords:
|
||||
raise NotThisMethod("Short version file found")
|
||||
date = keywords.get("date")
|
||||
if date is not None:
|
||||
# Use only the last line. Previous lines may contain GPG signature
|
||||
# information.
|
||||
date = date.splitlines()[-1]
|
||||
|
||||
# git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant
|
||||
# datestamp. However we prefer "%ci" (which expands to an "ISO-8601
|
||||
# -like" string, which we must then edit to make compliant), because
|
||||
# it's been around since git-1.5.3, and it's too difficult to
|
||||
# discover which version we're using, or to work around using an
|
||||
# older one.
|
||||
date = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
|
||||
refnames = keywords["refnames"].strip()
|
||||
if refnames.startswith("$Format"):
|
||||
if verbose:
|
||||
print("keywords are unexpanded, not using")
|
||||
raise NotThisMethod("unexpanded keywords, not a git-archive tarball")
|
||||
refs = {r.strip() for r in refnames.strip("()").split(",")}
|
||||
# starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
|
||||
# just "foo-1.0". If we see a "tag: " prefix, prefer those.
|
||||
TAG = "tag: "
|
||||
tags = {r[len(TAG):] for r in refs if r.startswith(TAG)}
|
||||
if not tags:
|
||||
# Either we're using git < 1.8.3, or there really are no tags. We use
|
||||
# a heuristic: assume all version tags have a digit. The old git %d
|
||||
# expansion behaves like git log --decorate=short and strips out the
|
||||
# refs/heads/ and refs/tags/ prefixes that would let us distinguish
|
||||
# between branches and tags. By ignoring refnames without digits, we
|
||||
# filter out many common branch names like "release" and
|
||||
# "stabilization", as well as "HEAD" and "master".
|
||||
tags = {r for r in refs if re.search(r'\d', r)}
|
||||
if verbose:
|
||||
print("discarding '%s', no digits" % ",".join(refs - tags))
|
||||
if verbose:
|
||||
print("likely tags: %s" % ",".join(sorted(tags)))
|
||||
for ref in sorted(tags):
|
||||
# sorting will prefer e.g. "2.0" over "2.0rc1"
|
||||
if ref.startswith(tag_prefix):
|
||||
r = ref[len(tag_prefix):]
|
||||
# Filter out refs that exactly match prefix or that don't start
|
||||
# with a number once the prefix is stripped (mostly a concern
|
||||
# when prefix is '')
|
||||
if not re.match(r'\d', r):
|
||||
continue
|
||||
if verbose:
|
||||
print("picking %s" % r)
|
||||
return {"version": r,
|
||||
"full-revisionid": keywords["full"].strip(),
|
||||
"dirty": False, "error": None,
|
||||
"date": date}
|
||||
# no suitable tags, so version is "0+unknown", but full hex is still there
|
||||
if verbose:
|
||||
print("no suitable tags, using unknown + full revision id")
|
||||
return {"version": "0+unknown",
|
||||
"full-revisionid": keywords["full"].strip(),
|
||||
"dirty": False, "error": "no suitable tags", "date": None}
|
||||
|
||||
|
||||
@register_vcs_handler("git", "pieces_from_vcs")
|
||||
def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command):
|
||||
"""Get version from 'git describe' in the root of the source tree.
|
||||
|
||||
This only gets called if the git-archive 'subst' keywords were *not*
|
||||
expanded, and _version.py hasn't already been rewritten with a short
|
||||
version string, meaning we're inside a checked out source tree.
|
||||
"""
|
||||
GITS = ["git"]
|
||||
TAG_PREFIX_REGEX = "*"
|
||||
if sys.platform == "win32":
|
||||
GITS = ["git.cmd", "git.exe"]
|
||||
TAG_PREFIX_REGEX = r"\*"
|
||||
|
||||
_, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root,
|
||||
hide_stderr=True)
|
||||
if rc != 0:
|
||||
if verbose:
|
||||
print("Directory %s not under git control" % root)
|
||||
raise NotThisMethod("'git rev-parse --git-dir' returned error")
|
||||
|
||||
# if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
|
||||
# if there isn't one, this yields HEX[-dirty] (no NUM)
|
||||
describe_out, rc = runner(GITS, ["describe", "--tags", "--dirty",
|
||||
"--always", "--long",
|
||||
"--match",
|
||||
"%s%s" % (tag_prefix, TAG_PREFIX_REGEX)],
|
||||
cwd=root)
|
||||
# --long was added in git-1.5.5
|
||||
if describe_out is None:
|
||||
raise NotThisMethod("'git describe' failed")
|
||||
describe_out = describe_out.strip()
|
||||
full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root)
|
||||
if full_out is None:
|
||||
raise NotThisMethod("'git rev-parse' failed")
|
||||
full_out = full_out.strip()
|
||||
|
||||
pieces = {}
|
||||
pieces["long"] = full_out
|
||||
pieces["short"] = full_out[:7] # maybe improved later
|
||||
pieces["error"] = None
|
||||
|
||||
branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"],
|
||||
cwd=root)
|
||||
# --abbrev-ref was added in git-1.6.3
|
||||
if rc != 0 or branch_name is None:
|
||||
raise NotThisMethod("'git rev-parse --abbrev-ref' returned error")
|
||||
branch_name = branch_name.strip()
|
||||
|
||||
if branch_name == "HEAD":
|
||||
# If we aren't exactly on a branch, pick a branch which represents
|
||||
# the current commit. If all else fails, we are on a branchless
|
||||
# commit.
|
||||
branches, rc = runner(GITS, ["branch", "--contains"], cwd=root)
|
||||
# --contains was added in git-1.5.4
|
||||
if rc != 0 or branches is None:
|
||||
raise NotThisMethod("'git branch --contains' returned error")
|
||||
branches = branches.split("\n")
|
||||
|
||||
# Remove the first line if we're running detached
|
||||
if "(" in branches[0]:
|
||||
branches.pop(0)
|
||||
|
||||
# Strip off the leading "* " from the list of branches.
|
||||
branches = [branch[2:] for branch in branches]
|
||||
if "master" in branches:
|
||||
branch_name = "master"
|
||||
elif not branches:
|
||||
branch_name = None
|
||||
else:
|
||||
# Pick the first branch that is returned. Good or bad.
|
||||
branch_name = branches[0]
|
||||
|
||||
pieces["branch"] = branch_name
|
||||
|
||||
# parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty]
|
||||
# TAG might have hyphens.
|
||||
git_describe = describe_out
|
||||
|
||||
# look for -dirty suffix
|
||||
dirty = git_describe.endswith("-dirty")
|
||||
pieces["dirty"] = dirty
|
||||
if dirty:
|
||||
git_describe = git_describe[:git_describe.rindex("-dirty")]
|
||||
|
||||
# now we have TAG-NUM-gHEX or HEX
|
||||
|
||||
if "-" in git_describe:
|
||||
# TAG-NUM-gHEX
|
||||
mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe)
|
||||
if not mo:
|
||||
# unparsable. Maybe git-describe is misbehaving?
|
||||
pieces["error"] = ("unable to parse git-describe output: '%s'"
|
||||
% describe_out)
|
||||
return pieces
|
||||
|
||||
# tag
|
||||
full_tag = mo.group(1)
|
||||
if not full_tag.startswith(tag_prefix):
|
||||
if verbose:
|
||||
fmt = "tag '%s' doesn't start with prefix '%s'"
|
||||
print(fmt % (full_tag, tag_prefix))
|
||||
pieces["error"] = ("tag '%s' doesn't start with prefix '%s'"
|
||||
% (full_tag, tag_prefix))
|
||||
return pieces
|
||||
pieces["closest-tag"] = full_tag[len(tag_prefix):]
|
||||
|
||||
# distance: number of commits since tag
|
||||
pieces["distance"] = int(mo.group(2))
|
||||
|
||||
# commit: short hex revision ID
|
||||
pieces["short"] = mo.group(3)
|
||||
|
||||
else:
|
||||
# HEX: no tags
|
||||
pieces["closest-tag"] = None
|
||||
count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
|
||||
pieces["distance"] = int(count_out) # total number of commits
|
||||
|
||||
# commit date: see ISO-8601 comment in git_versions_from_keywords()
|
||||
date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip()
|
||||
# Use only the last line. Previous lines may contain GPG signature
|
||||
# information.
|
||||
date = date.splitlines()[-1]
|
||||
pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
|
||||
|
||||
return pieces
|
||||
|
||||
|
||||
def plus_or_dot(pieces):
|
||||
"""Return a + if we don't already have one, else return a ."""
|
||||
if "+" in pieces.get("closest-tag", ""):
|
||||
return "."
|
||||
return "+"
|
||||
|
||||
|
||||
def render_pep440(pieces):
|
||||
"""Build up version string, with post-release "local version identifier".
|
||||
|
||||
Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you
|
||||
get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty
|
||||
|
||||
Exceptions:
|
||||
1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty]
|
||||
"""
|
||||
if pieces["closest-tag"]:
|
||||
rendered = pieces["closest-tag"]
|
||||
if pieces["distance"] or pieces["dirty"]:
|
||||
rendered += plus_or_dot(pieces)
|
||||
rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dirty"
|
||||
else:
|
||||
# exception #1
|
||||
rendered = "0+untagged.%d.g%s" % (pieces["distance"],
|
||||
pieces["short"])
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dirty"
|
||||
return rendered
|
||||
|
||||
|
||||
def render_pep440_branch(pieces):
|
||||
"""TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
|
||||
|
||||
The ".dev0" means not master branch. Note that .dev0 sorts backwards
|
||||
(a feature branch will appear "older" than the master branch).
|
||||
|
||||
Exceptions:
|
||||
1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
|
||||
"""
|
||||
if pieces["closest-tag"]:
|
||||
rendered = pieces["closest-tag"]
|
||||
if pieces["distance"] or pieces["dirty"]:
|
||||
if pieces["branch"] != "master":
|
||||
rendered += ".dev0"
|
||||
rendered += plus_or_dot(pieces)
|
||||
rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dirty"
|
||||
else:
|
||||
# exception #1
|
||||
rendered = "0"
|
||||
if pieces["branch"] != "master":
|
||||
rendered += ".dev0"
|
||||
rendered += "+untagged.%d.g%s" % (pieces["distance"],
|
||||
pieces["short"])
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dirty"
|
||||
return rendered
|
||||
|
||||
|
||||
def pep440_split_post(ver):
|
||||
"""Split pep440 version string at the post-release segment.
|
||||
|
||||
Returns the release segments before the post-release and the
|
||||
post-release version number (or -1 if no post-release segment is present).
|
||||
"""
|
||||
vc = str.split(ver, ".post")
|
||||
return vc[0], int(vc[1] or 0) if len(vc) == 2 else None
|
||||
|
||||
|
||||
def render_pep440_pre(pieces):
|
||||
"""TAG[.postN.devDISTANCE] -- No -dirty.
|
||||
|
||||
Exceptions:
|
||||
1: no tags. 0.post0.devDISTANCE
|
||||
"""
|
||||
if pieces["closest-tag"]:
|
||||
if pieces["distance"]:
|
||||
# update the post release segment
|
||||
tag_version, post_version = pep440_split_post(pieces["closest-tag"])
|
||||
rendered = tag_version
|
||||
if post_version is not None:
|
||||
rendered += ".post%d.dev%d" % (post_version+1, pieces["distance"])
|
||||
else:
|
||||
rendered += ".post0.dev%d" % (pieces["distance"])
|
||||
else:
|
||||
# no commits, use the tag as the version
|
||||
rendered = pieces["closest-tag"]
|
||||
else:
|
||||
# exception #1
|
||||
rendered = "0.post0.dev%d" % pieces["distance"]
|
||||
return rendered
|
||||
|
||||
|
||||
def render_pep440_post(pieces):
|
||||
"""TAG[.postDISTANCE[.dev0]+gHEX] .
|
||||
|
||||
The ".dev0" means dirty. Note that .dev0 sorts backwards
|
||||
(a dirty tree will appear "older" than the corresponding clean one),
|
||||
but you shouldn't be releasing software with -dirty anyways.
|
||||
|
||||
Exceptions:
|
||||
1: no tags. 0.postDISTANCE[.dev0]
|
||||
"""
|
||||
if pieces["closest-tag"]:
|
||||
rendered = pieces["closest-tag"]
|
||||
if pieces["distance"] or pieces["dirty"]:
|
||||
rendered += ".post%d" % pieces["distance"]
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dev0"
|
||||
rendered += plus_or_dot(pieces)
|
||||
rendered += "g%s" % pieces["short"]
|
||||
else:
|
||||
# exception #1
|
||||
rendered = "0.post%d" % pieces["distance"]
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dev0"
|
||||
rendered += "+g%s" % pieces["short"]
|
||||
return rendered
|
||||
|
||||
|
||||
def render_pep440_post_branch(pieces):
|
||||
"""TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
|
||||
|
||||
The ".dev0" means not master branch.
|
||||
|
||||
Exceptions:
|
||||
1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
|
||||
"""
|
||||
if pieces["closest-tag"]:
|
||||
rendered = pieces["closest-tag"]
|
||||
if pieces["distance"] or pieces["dirty"]:
|
||||
rendered += ".post%d" % pieces["distance"]
|
||||
if pieces["branch"] != "master":
|
||||
rendered += ".dev0"
|
||||
rendered += plus_or_dot(pieces)
|
||||
rendered += "g%s" % pieces["short"]
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dirty"
|
||||
else:
|
||||
# exception #1
|
||||
rendered = "0.post%d" % pieces["distance"]
|
||||
if pieces["branch"] != "master":
|
||||
rendered += ".dev0"
|
||||
rendered += "+g%s" % pieces["short"]
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dirty"
|
||||
return rendered
|
||||
|
||||
|
||||
def render_pep440_old(pieces):
|
||||
"""TAG[.postDISTANCE[.dev0]] .
|
||||
|
||||
The ".dev0" means dirty.
|
||||
|
||||
Exceptions:
|
||||
1: no tags. 0.postDISTANCE[.dev0]
|
||||
"""
|
||||
if pieces["closest-tag"]:
|
||||
rendered = pieces["closest-tag"]
|
||||
if pieces["distance"] or pieces["dirty"]:
|
||||
rendered += ".post%d" % pieces["distance"]
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dev0"
|
||||
else:
|
||||
# exception #1
|
||||
rendered = "0.post%d" % pieces["distance"]
|
||||
if pieces["dirty"]:
|
||||
rendered += ".dev0"
|
||||
return rendered
|
||||
|
||||
|
||||
def render_git_describe(pieces):
|
||||
"""TAG[-DISTANCE-gHEX][-dirty].
|
||||
|
||||
Like 'git describe --tags --dirty --always'.
|
||||
|
||||
Exceptions:
|
||||
1: no tags. HEX[-dirty] (note: no 'g' prefix)
|
||||
"""
|
||||
if pieces["closest-tag"]:
|
||||
rendered = pieces["closest-tag"]
|
||||
if pieces["distance"]:
|
||||
rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
|
||||
else:
|
||||
# exception #1
|
||||
rendered = pieces["short"]
|
||||
if pieces["dirty"]:
|
||||
rendered += "-dirty"
|
||||
return rendered
|
||||
|
||||
|
||||
def render_git_describe_long(pieces):
|
||||
"""TAG-DISTANCE-gHEX[-dirty].
|
||||
|
||||
Like 'git describe --tags --dirty --always -long'.
|
||||
The distance/hash is unconditional.
|
||||
|
||||
Exceptions:
|
||||
1: no tags. HEX[-dirty] (note: no 'g' prefix)
|
||||
"""
|
||||
if pieces["closest-tag"]:
|
||||
rendered = pieces["closest-tag"]
|
||||
rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
|
||||
else:
|
||||
# exception #1
|
||||
rendered = pieces["short"]
|
||||
if pieces["dirty"]:
|
||||
rendered += "-dirty"
|
||||
return rendered
|
||||
|
||||
|
||||
def render(pieces, style):
|
||||
"""Render the given version pieces into the requested style."""
|
||||
if pieces["error"]:
|
||||
return {"version": "unknown",
|
||||
"full-revisionid": pieces.get("long"),
|
||||
"dirty": None,
|
||||
"error": pieces["error"],
|
||||
"date": None}
|
||||
|
||||
if not style or style == "default":
|
||||
style = "pep440" # the default
|
||||
|
||||
if style == "pep440":
|
||||
rendered = render_pep440(pieces)
|
||||
elif style == "pep440-branch":
|
||||
rendered = render_pep440_branch(pieces)
|
||||
elif style == "pep440-pre":
|
||||
rendered = render_pep440_pre(pieces)
|
||||
elif style == "pep440-post":
|
||||
rendered = render_pep440_post(pieces)
|
||||
elif style == "pep440-post-branch":
|
||||
rendered = render_pep440_post_branch(pieces)
|
||||
elif style == "pep440-old":
|
||||
rendered = render_pep440_old(pieces)
|
||||
elif style == "git-describe":
|
||||
rendered = render_git_describe(pieces)
|
||||
elif style == "git-describe-long":
|
||||
rendered = render_git_describe_long(pieces)
|
||||
else:
|
||||
raise ValueError("unknown style '%s'" % style)
|
||||
|
||||
return {"version": rendered, "full-revisionid": pieces["long"],
|
||||
"dirty": pieces["dirty"], "error": None,
|
||||
"date": pieces.get("date")}
|
||||
|
||||
|
||||
def get_versions():
|
||||
"""Get version information or return default if unable to do so."""
|
||||
# I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have
|
||||
# __file__, we can work backwards from there to the root. Some
|
||||
# py2exe/bbfreeze/non-CPython implementations don't do __file__, in which
|
||||
# case we can only use expanded keywords.
|
||||
|
||||
cfg = get_config()
|
||||
verbose = cfg.verbose
|
||||
|
||||
try:
|
||||
return git_versions_from_keywords(get_keywords(), cfg.tag_prefix,
|
||||
verbose)
|
||||
except NotThisMethod:
|
||||
pass
|
||||
|
||||
try:
|
||||
root = os.path.realpath(__file__)
|
||||
# versionfile_source is the relative path from the top of the source
|
||||
# tree (where the .git directory might live) to this file. Invert
|
||||
# this to find the root from __file__.
|
||||
for _ in cfg.versionfile_source.split('/'):
|
||||
root = os.path.dirname(root)
|
||||
except NameError:
|
||||
return {"version": "0+unknown", "full-revisionid": None,
|
||||
"dirty": None,
|
||||
"error": "unable to find root of source tree",
|
||||
"date": None}
|
||||
|
||||
try:
|
||||
pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose)
|
||||
return render(pieces, cfg.style)
|
||||
except NotThisMethod:
|
||||
pass
|
||||
|
||||
try:
|
||||
if cfg.parentdir_prefix:
|
||||
return versions_from_parentdir(cfg.parentdir_prefix, root, verbose)
|
||||
except NotThisMethod:
|
||||
pass
|
||||
|
||||
return {"version": "0+unknown", "full-revisionid": None,
|
||||
"dirty": None,
|
||||
"error": "unable to compute version", "date": None}
|
@ -1,151 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
This plugin generates tags file as well as inserts markdown
|
||||
at the beginning of a file that has tags
|
||||
|
||||
@Adopted from
|
||||
JL Diaz (c) 2019
|
||||
MIT License
|
||||
"""
|
||||
from collections import defaultdict
|
||||
from pathlib import Path
|
||||
from re import search, DOTALL, MULTILINE
|
||||
from yaml import load, FullLoader, YAMLError
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
from mkdocs.structure.files import File
|
||||
from mkdocs.plugins import BasePlugin
|
||||
from mkdocs.config.config_options import Type
|
||||
from mkdocs.__main__ import log
|
||||
|
||||
class TagsPlugin(BasePlugin):
|
||||
"""
|
||||
Creates "tags.md" file containing a list of the pages grouped by tags
|
||||
|
||||
It uses the info in the YAML metadata of each page, for the pages which
|
||||
provide a "tags" keyword (whose value is a list of strings)
|
||||
"""
|
||||
config_scheme = (
|
||||
('filename', Type(str, default='tags.md')),
|
||||
('folder', Type(str, default='aux')),
|
||||
('template', Type(str)),
|
||||
('css_name', Type(str, default='.button')),
|
||||
)
|
||||
|
||||
def __init__(self):
|
||||
self.metadata = []
|
||||
self.tag_dict = None
|
||||
self.filename = "tags.md"
|
||||
self.folder = "aux"
|
||||
self.template = None
|
||||
self.css_name = ".button"
|
||||
self.templ = None
|
||||
|
||||
#pylint: disable=unused-argument
|
||||
def on_page_markdown(self, markdown, page, config, files):
|
||||
"""
|
||||
takes markdown, page, config, and files
|
||||
currently modifies the markdown to add a button to click to get related tag info
|
||||
tag is customizeable by adding css that keys off the `self.css_name`
|
||||
"""
|
||||
|
||||
page_url = page.url.split("/")
|
||||
tags_link = ''
|
||||
|
||||
for i in range(len(page_url) - 1):
|
||||
tags_link = tags_link + '../'
|
||||
|
||||
tags_link = tags_link + str(self.filename).strip('.md')
|
||||
|
||||
if tags_link[-1] != '/':
|
||||
tags_link = tags_link + '/'
|
||||
|
||||
if 'tags' in page.meta:
|
||||
swap_mark = [f"[{x}]({tags_link}#{x.lower()}){{{self.css_name}}}"
|
||||
for x in page.meta['tags']]
|
||||
swap_mark.append('\n')
|
||||
return f'{" ".join(swap_mark)}{markdown}'
|
||||
return markdown
|
||||
|
||||
def on_config(self, config):
|
||||
"""Load config options"""
|
||||
self.filename = Path(self.config.get("filename") or self.filename)
|
||||
self.folder = Path(self.config.get("folder") or self.folder)
|
||||
self.css_name = self.config.get("css_name")
|
||||
# Make sure that the tags folder is absolute, and exists
|
||||
if not self.folder.is_absolute():
|
||||
self.folder = Path(config["docs_dir"]) / ".." / self.folder
|
||||
if not self.folder.exists():
|
||||
self.folder.mkdir(parents=True)
|
||||
|
||||
if self.config.get("template"):
|
||||
self.template = Path(self.config.get("template"))
|
||||
if self.template is None:
|
||||
self.template = Path(__file__).parent.joinpath(
|
||||
"templates"
|
||||
).joinpath("tags.md.template")
|
||||
environment = Environment(
|
||||
loader=FileSystemLoader(searchpath=str(self.template.parent))
|
||||
)
|
||||
self.templ = environment.get_template(str(self.template.name))
|
||||
|
||||
def on_files(self, files, config):
|
||||
"""Load files to check for tags"""
|
||||
self.metadata = [
|
||||
get_metadata(x.src_path, config['docs_dir'])
|
||||
for x in files if x.src_path.endswith(".md")
|
||||
]
|
||||
# Create new file with tags
|
||||
self.generate_tags_file()
|
||||
# New file to add to the build
|
||||
newfile = File(
|
||||
path=str(self.filename),
|
||||
src_dir=str(self.folder),
|
||||
dest_dir=config["site_dir"],
|
||||
use_directory_urls=False
|
||||
)
|
||||
files.append(newfile)
|
||||
|
||||
def generate_tags_page(self, data):
|
||||
"""Generate the tags to be populated on the
|
||||
mkdocs tag page"""
|
||||
|
||||
css_name = self.css_name
|
||||
|
||||
if css_name[0:1] == '.':
|
||||
css_name = css_name[1:len(css_name)]
|
||||
return self.templ.render(
|
||||
tags=sorted(data.items(), key=lambda t: t[0].lower()),
|
||||
css_name = css_name,
|
||||
)
|
||||
|
||||
def generate_tags_file(self):
|
||||
"""Generate a file to be stored on the mkdocs page"""
|
||||
sorted_meta = sorted(self.metadata, key=lambda e: e.get("year", 5000) if e else 0)
|
||||
self.tag_dict = defaultdict(list)
|
||||
for meta in sorted_meta:
|
||||
if not meta:
|
||||
continue
|
||||
if "title" not in meta:
|
||||
meta["title"] = meta['filename'].split("/")[-1].strip('.md')
|
||||
tags = meta.get("tags", [])
|
||||
for tag in tags:
|
||||
self.tag_dict[tag].append(meta)
|
||||
|
||||
with open(str(self.folder / self.filename), "w", encoding='utf-8') as fname:
|
||||
fname.write(self.generate_tags_page(self.tag_dict))
|
||||
|
||||
# Helper functions
|
||||
def get_metadata(name, path):
|
||||
"""Get the metadata off of a file"""
|
||||
filename = Path(path) / Path(name)
|
||||
with filename.open() as fname:
|
||||
match_string = search(r"\A\s*---\n.*?\n---", fname.read(), flags=DOTALL | MULTILINE)
|
||||
if match_string:
|
||||
try:
|
||||
metadata = match_string.group(0).strip('---')
|
||||
meta = load(metadata, Loader=FullLoader)
|
||||
meta.update(filename=name)
|
||||
return meta
|
||||
except YAMLError as err:
|
||||
log.error("Couldn't parse %s yaml due to %s", fname, err)
|
||||
return None
|
@ -1,6 +0,0 @@
|
||||
# Contents grouped by tag
|
||||
{% for tag, pages in tags %}
|
||||
## <span class="{{css_name}}">{{tag}}</span>
|
||||
{% for page in pages %}
|
||||
* [{{page.title}}]({{page.filename}})
|
||||
{% endfor %}{% endfor %}
|
162
mkdocs.yml
@ -1,125 +1,9 @@
|
||||
site_name: No Fuss Computing
|
||||
site_description: A wiki with random bits of information you may find useful.
|
||||
site_url: https://nofusscomputing.com
|
||||
|
||||
site_author: No Fuss Computing
|
||||
copyright: Copyright © No Fuss Computing 2021
|
||||
|
||||
#site_favicon: favicon.ico
|
||||
# site_dir: 'docs/static/mkdocs_build'
|
||||
|
||||
docs_dir: 'pages'
|
||||
site_dir: build
|
||||
INHERIT: website-template/mkdocs.yml
|
||||
|
||||
repo_name: Website
|
||||
#repo_url: https://gitlab.com/nofusscomputing/infrastructure/website
|
||||
repo_url: https://gitlab.com/nofusscomputing/infrastructure/website
|
||||
#edit_uri: '-/blob/pages'
|
||||
#edit_uri: '-/blob/master/pages/'
|
||||
edit_uri: ''
|
||||
edit_uri: '/-/ide/project/nofusscomputing/projects/docker-mail/edit/development/-/pages/'
|
||||
|
||||
theme:
|
||||
name: material
|
||||
logo: assets/logo.png
|
||||
custom_dir: theme-overrides
|
||||
icon:
|
||||
repo: fontawesome/brands/gitlab # (1)!
|
||||
locale: en
|
||||
font: false
|
||||
features:
|
||||
- navigation.tracking
|
||||
- navigation.tabs
|
||||
- navigation.tabs.sticky
|
||||
- navigation.expand
|
||||
- navigation.indexes
|
||||
- toc.integrate
|
||||
- navigation.top
|
||||
- header.autohide
|
||||
- navigation.sections
|
||||
|
||||
palette:
|
||||
- scheme: default
|
||||
primary: indigo
|
||||
accent: indigo
|
||||
toggle:
|
||||
icon: material/lightbulb-outline
|
||||
name: Switch to dark mode
|
||||
- scheme: slate
|
||||
primary: indigo
|
||||
accent: indigo
|
||||
toggle:
|
||||
icon: material/lightbulb
|
||||
name: Switch to light mode
|
||||
|
||||
|
||||
plugins:
|
||||
- tags:
|
||||
filename: tags.md
|
||||
folder: pages
|
||||
css_name: ".tags"
|
||||
- search:
|
||||
lang: en
|
||||
|
||||
- git-revision-date-localized:
|
||||
type: iso_date
|
||||
enable_creation_date: true
|
||||
exclude:
|
||||
- index.md
|
||||
- tags.md
|
||||
# - minify:
|
||||
# minify_html: true
|
||||
|
||||
extra:
|
||||
homepage: https://nofusscomputing.com
|
||||
version: 1.0
|
||||
social:
|
||||
- link: https://hub.docker.com/u/nofusscomputing
|
||||
name: DockerHub
|
||||
icon: fontawesome/brands/docker
|
||||
|
||||
- link: https://facebook.com/NoFussComputing
|
||||
name: Facebook
|
||||
icon: fontawesome/brands/facebook
|
||||
|
||||
- link: https://gitlab.com/nofusscomputing
|
||||
name: Gitlab
|
||||
icon: fontawesome/brands/gitlab
|
||||
|
||||
- link: https://github.com/NoFussComputing
|
||||
name: Github
|
||||
icon: fontawesome/brands/github
|
||||
|
||||
# - link: https://readthedocs.org/profiles/nofusscomputing/
|
||||
# nane: ReadTheDocs
|
||||
# icon: fontawesome/brands/readthedocs
|
||||
# link: https://
|
||||
blog:
|
||||
dir: articles
|
||||
author: jon_nfc
|
||||
author_image: https://gitlab.com/uploads/-/system/user/avatar/4125177/avatar.png
|
||||
words_read_per_minute: 300
|
||||
list_length: 25
|
||||
extended_preview: true
|
||||
|
||||
extra_css:
|
||||
- stylesheets/extra.css
|
||||
|
||||
|
||||
markdown_extensions:
|
||||
- def_list
|
||||
- pymdownx.tasklist:
|
||||
custom_checkbox: true
|
||||
- meta
|
||||
- attr_list
|
||||
- admonition
|
||||
- pymdownx.details
|
||||
- pymdownx.superfences
|
||||
# - pymdownx.emoji:
|
||||
# emoji_index: !!python/name:materialx.emoji.twemoji
|
||||
# emoji_generator: !!python/name:materialx.emoji.to_svg
|
||||
# options:
|
||||
# custom_icons:
|
||||
# - .icons
|
||||
nav:
|
||||
- Home: index.md
|
||||
|
||||
@ -127,19 +11,49 @@ nav:
|
||||
|
||||
- articles/index.md
|
||||
|
||||
- 2022:
|
||||
|
||||
- articles/2022/gitlab_pipeline_from_github_actions.md
|
||||
|
||||
- articles/2022/fail2ban_running_considerations.md
|
||||
|
||||
- articles/2022/fail2ban_permanent_whitelist.md
|
||||
|
||||
- articles/2022/fail2ban_permanent_ban_closed_port_access.md
|
||||
|
||||
- articles/2022/fail2ban_block_suspisious_activity.md
|
||||
|
||||
- articles/2022/gitlab_piplines_vscode.md
|
||||
|
||||
- articles/2022/local_gitlab_pipeline.md
|
||||
|
||||
- 2015:
|
||||
|
||||
- articles/2015/choose_internet_service.md
|
||||
|
||||
- 2014:
|
||||
|
||||
- articles/2014/mdt_setup.md
|
||||
|
||||
- Content Tags: tags.md
|
||||
|
||||
- Projects:
|
||||
|
||||
- projects/index.md
|
||||
|
||||
- Ansible Roles: projects/ansible-roles/README.md
|
||||
- Ansible Execution Environment:
|
||||
|
||||
- Gitlab CI Templates: projects/gitlab-ci/README.md
|
||||
- projects/execution_environment/index.md
|
||||
|
||||
- Ansible Roles:
|
||||
|
||||
- Git Configuration:
|
||||
|
||||
- projects/git_configuration/index.md
|
||||
|
||||
- Docker Mail: projects/docker-mail/index.md
|
||||
|
||||
- Gitlab CI: projects/gitlab-ci/index.md
|
||||
|
||||
- Python Gitlab Management: projects/python-gitlab-management/README.md
|
||||
|
||||
@ -147,13 +61,5 @@ nav:
|
||||
|
||||
- operations/index.md
|
||||
|
||||
- Development:
|
||||
|
||||
- operations/syntax.md
|
||||
|
||||
- Wiki:
|
||||
|
||||
- wiki/index.md
|
||||
|
||||
- Contact Us: contact.md
|
||||
|
||||
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
108
pages/articles/2014/mdt_setup.md
Normal file
@ -0,0 +1,108 @@
|
||||
---
|
||||
title: How I use Microsoft Deployment Toolkit
|
||||
description: This article is a record of how I setup my Microsoft Deployment Toolkit. There are many ways to set it up. However this is how I do it.
|
||||
date: 2014-09-01
|
||||
template: article.html
|
||||
type: blog
|
||||
author: jon
|
||||
copyrightHolder: jon
|
||||
about: https://en.wikipedia.org/wiki/Microsoft_Deployment_Toolkit
|
||||
tags:
|
||||
- Administration
|
||||
- Microsoft
|
||||
- Microsoft Deployment Toolkit
|
||||
- Windows
|
||||
---
|
||||
|
||||
!!! info
|
||||
This information has been created as a record of how I do something, if you decide to follow anything within this set of pages and stuff up, you're on your own!!
|
||||
|
||||
I use Microsoft Deployment Tool Kit (MDT) to reduce the time it takes to install/update and to deploy a working Windows OS. The setup of MDT and time taken to test and get it right far outweighs deploying an OS by hand. Below you will find how I have setup my MDT structure and why. Most of my setup has been chopped and changed due to trial and error and to ease the burden.
|
||||
|
||||
My goals for MDT are:
|
||||
|
||||
- Deploy any Windows OS quickly
|
||||
- Easily update Applications / Drivers / Operating System
|
||||
- make deployment media that could be used by a less savvy computer user.
|
||||
|
||||
I currently use MDT to Deploy windows on my own network (Active Directory Domain), Stand alone machines and family and friends computers. I also use MDT to install applications and force a computer to update using my WSUS Server.
|
||||
|
||||
|
||||
## Folder Layout
|
||||
|
||||

|
||||
|
||||
|
||||
## Applications
|
||||
|
||||
I not only use MDT to deploy applications during OS deployment but I also have a 'Post OS Install' task sequence to install applications as well.
|
||||
|
||||
Application folders Layout is pretty straight forward.
|
||||
|
||||
- Client Software Suite - Standard Suite
|
||||
|
||||
All Freeware applications that I install is under this structure
|
||||
|
||||
- Client Software Suite - Domain
|
||||
|
||||
Local Domain only Applications
|
||||
|
||||
- Server Software Suite - Domain
|
||||
|
||||
Software for use on domain Servers
|
||||
|
||||
Each suite folder is setup as follows.
|
||||
|
||||
| Folder | Description |
|
||||
|:----|:----|
|
||||
| Suite | Applications listed here are only Application Bundles. The dependent applications for these Application bundles are selected from the AppTree folder. They are visible from the deployment wizard. |
|
||||
| Suite\AppTree | Applications here are 'Applications with Source files' these applications are contain the acutual installers for the application in question. They are not visible from the deployment wizard. |
|
||||
| Suite\Archive | Applications here are old versions, they are visible from the deployment wizard. |
|
||||
|
||||

|
||||
**Figure 1. AppTree Folder Structure** This is where new applications are imported to they are imported as an application with source files.
|
||||
|
||||
|
||||

|
||||
**Figure 2. Suite Application bundles** These applications are application bundles with the application under the app tree folder added as a dependency.
|
||||
|
||||
|
||||
### Add New Application
|
||||
|
||||
To add a new application the following process is followed.
|
||||
|
||||
- Import an application with source files into the AppTree Folder ensuring you hide it from the deployment wizard.
|
||||
|
||||
- Create an application Bundle under the Suite root folder and set its dependency to the application you wish to install, from the AppTree folder.
|
||||
|
||||
- if the application you wish to install has dependent applications, select the dependent application bundle from the suite root folder making sure it is set to install before the application that requires it does.
|
||||
|
||||
|
||||
### Update an Application
|
||||
|
||||
- Import an application with source files into the AppTree Folder ensuring you hide it from the deployment wizard.
|
||||
|
||||
- goto the application Bundle under the Suite root folder and set its dependency to the application you just added to the AppTree folder and remove the old version of that application.
|
||||
|
||||
- return to the AppTree folder and move the old app to the Archive directory making sure you 'uncheck' the 'hide from deployment wizard'.
|
||||
|
||||
|
||||
### other useful info
|
||||
|
||||
- utilize the uninstall key, within each application it will prevent the app from trying to install again.
|
||||
|
||||
|
||||
### Reasoning
|
||||
|
||||
This structure was adopted for the following reasons:
|
||||
|
||||
- Create Deployment media based on suites (Departments / Groups / ETC.)
|
||||
|
||||
- If you have mandatory applications in your config file providing you have used the Suit 'Application Bundle' you don't have to leave the GUI/Edit the config file to update the application.
|
||||
|
||||
- clarity
|
||||
|
||||
!!! attention
|
||||
This post is considered an archived post.
|
||||
|
||||
This article was originally posted on 01 Sep 2014. It has been migrated from its original source http://nofusscomputing.com/wiki/public/help/mdt/home and http://nofusscomputing.com/wiki/public/help/mdt/applications to here.
|
@ -1,8 +1,11 @@
|
||||
---
|
||||
template: blog_post.html
|
||||
title: Choosing an Internet Service
|
||||
description: The Internet has now become a mainstream item within the average Australian home. The Internet has become so ingrained within our daily lives that for those of us that were around when the Internet was born have actually forgotten what life was like without it. I remember when I was growing up that if we wanted to learn about something you would go to the local library or to a family/friends house to look through their Encyclopaedia Britannica which more often than not was at least five years out of date. Believe it or not that was only 15 to 20 years ago. Now if I haven't lost you already and hopefully by the end of this article I have been able to provide you with more insight on being able to choose an Internet service from an ISP with a little more of an understanding of the technology behind that Internet connection.
|
||||
date: 2015-02-25
|
||||
template: article.html
|
||||
type: blog
|
||||
author: jon
|
||||
copyrightHolder: jon
|
||||
tags:
|
||||
- ADSL
|
||||
- Archive
|
||||
@ -24,15 +27,18 @@ Below I will cover a little of the technical details and hopefully bringing into
|
||||
|
||||
<p hidden>#more</p>
|
||||
|
||||
|
||||
## Bandwidth
|
||||
|
||||
Bandwidth is the actual speed of your Internet connection and its unit of measure is bits per second. So basically if you think water pipe, only so much water will flow through a water pipe but if you increase it’s pressure you will receive more water. For the actual Internet connection different technology is used to essentially achieve the same
|
||||
thing.
|
||||
|
||||
|
||||
## Quota
|
||||
|
||||
This is how much you can download and/or upload from the Internet. Its unit of measure is bytes. Think of a water tank, larger the tank the more quota you have available. This will be set by your ISP and 9 times out of 10 will be limited. Every Time you connect to the Internet you are using this available quota.
|
||||
|
||||
|
||||
## Theory
|
||||
|
||||
Now to fully understand the quota and bandwidth I will have to cover a little bit of computer theory. Computers compute information by doing mathematical equations. The only numbers a computer recognizes are Base 2. Base 2 numbering means it uses the first 2 numbers, being zero and one. In common computer terms this is called binary which is always in the computer world as a minimum 8 bits wide i.e. 01010101. Each digit of the number is a bit, four bits to a nibble and 2 nibbles to a byte. Unlike the English language; Binary is read from right to left and each one or zero, within a binary number is actually counting from 1 through to 255, which takes 8 bits of information. Binary is a notational reference system, so starting from right to left each digit represents another number, the first number being one, each number after that is double the number before it so the next number would be two, then four, eight, 16, 32, 64 finishing with the leftmost digit as 128. Confusing? Not really, when the bit is zero you don't add each notated number, you only add if the bit is one. So 0001 would be one, 0010 would be two, 0011 is three and so on.
|
||||
@ -41,26 +47,32 @@ Communication between different components or computers (network or The Internet
|
||||
|
||||
So why use different units of measure for the same data? simply put, computers are electronic devices which communicate with an electronic signal with 1 being on and zero being off; basically the signal is either on or off. So the transmission of data is serial or singular and storage is in parallel or stored in octets which is a group of bits. Hence bits and bytes. generally you will find lowercase letters are used to represent bits and uppercase letters are used for bytes.
|
||||
|
||||
|
||||
### Connection types
|
||||
|
||||
The common Internet connection types in Australia are ADSL or via the Mobile network. Very rarely used but still available if you look hard enough dial-up. and the newest and greatest is the National Broadband Network or NBN. With the exception of the NBN all of the above connection types will have a max speed. This max speed is a theoretical maximum speed and there are many factors which generally slow down your connection. All connection methods have a technological peak, which basically means there is no known way to improve that technology any further.
|
||||
|
||||
|
||||
### Dial-Up
|
||||
|
||||
Dial-UpInternet was the first mainstream way to connect to the Internet. For this to happen you needed an active phone line, a computer with a MODEM (short for modulator/demodulator) and you would plug a phone cable into your computer, which would dial a number to connect to the Internet. At its technological peak the max theoretical download speed was 56kb and approx 33kb up. Dial-up modems are generally part of the computer. The downside to Dial-up is that it relies on good quality phone cables, basically if you have a bad phone line you will have unstable and slower Internet. Dial-up also suffers from signal attenuation which means the further away from the telephone exchange the lower the speed your Internet is going to be. The biggest downside to having Dial-up Internet is that you can either be connected to the Internet or on the phone, not both.
|
||||
|
||||
|
||||
### ADSL
|
||||
|
||||
Asynchronous Digital Subscriber Line or ADSL is the most common Internet in Australia. This is also commonly referred to as broadband Internet, the biggest difference between ADSL and Dial-up is that it is always on. When ADSL first arrived it had a speed of 1.5mb, which was a massive increase over Dial-up. As ADSL evolved its speed increased, when this occurred its name slightly changed to suit the technological level, ADSL1, ADSL2 and finishing with ADSL2+ which has a maximum theoretical download speed of 24Mb and 2Mb Up. An ADSL connection like dial-up Internet requires a modem and suffers with the same line issues. Where ADSL is an improvement over Dial-up is that you can still make telephone calls when you are have an active Internet connection for this you will need a line filter. To utilise an ADSL connection you require an ADSL modem.
|
||||
|
||||
|
||||
### Mobile Network
|
||||
|
||||
Again this method of connecting to the Internet has been around for a while and with the invention of the smartphone has become quite a common way to “surf the Web”. 4th generation or 4G being the current technology has a max theoretical speed of 50Mb. The connection speed is shared amongst all users utilizing that mobile tower to connect to the Internet, and if you don’t have good mobile reception you will not have a stable Internet connection.
|
||||
|
||||
|
||||
### NBN
|
||||
|
||||
The National broadband network or NBN as it is known is the new way to connect to the Internet. The NBN unlike Dial-up or ADSL does not use a phone line to connect to the Internet. The NBN uses fiber optic cable, which uses light not electricity to communicate. Fiber optic cable can be thinner than a human hair. Fiber Optic cable, or fiber networks have one purpose; transmit data, not voice or electronic signals like a copper cable Since fiber is designed for networking you require a router to connect to it. A router looks very similar to an ADSL modem. Unlike the other Internet connection methods above, communication in either direction is the same. Within Australia this is not the case, and for whatever reason you will find most NBN capable ISPs will still have packages with different upload and download speeds. Fiber networks are very mature and their speed is actual, not theoretical maximums and are capable of transmitting data at 10gbps. Using that speed for connecting to the Internet is overkill and you will find that most ISPs offer no connection speed above 100mbps at the moment.
|
||||
|
||||
|
||||
## Choosing a suitable Internet service
|
||||
|
||||
Now hopefully by now I have given you a little better understanding of the connection types and terminology in relation to choosing an Internet service; believe me it is still a cumbersome task. Yes there are a lot of things to consider. From a technical standpoint the following should be taken into account:
|
||||
@ -71,14 +83,17 @@ Now hopefully by now I have given you a little better understanding of the conne
|
||||
|
||||
- bang for buck
|
||||
|
||||
|
||||
### Availability in Your Area
|
||||
|
||||
For a majority of Australians, ADSL is the best Internet service you will have available. The most annoying thing when trying to connect an ADSL service is the wait time. This wait time is due to the requirement for a technician to have to go to your local telephone exchange to actually connect you, that is if there are spare ports available in the exchange. If though, you can get the NBN, go for it. Seriously you are being foolish if you don't. Why? the NBN is an actual data network and the speed you pay for is what you get, overall the NBN is more reliable.
|
||||
|
||||
|
||||
### What You Will be Using the Internet For?
|
||||
|
||||
Most website designers will aim for a page load time of within one-two seconds; Even now how website technology is becoming more media focused, I would not recommend any speed lower that ADSL2+(24mbps) or 12mbps for the NBN. Why the different speeds? Remember that ADSL is a theoretical maximum, on average. Most ADSL users will have an actual connection speed of between 8mbps-22mbps and the NBN is actual speed. Anything faster than this for just “surfing the web” is overkill, and a waste of money. Where would you require a faster connection speed? if you start to use services like netflix and/or Foxtel IPTV to stream videos. Having more than ~5 users, may also be a consideration for a speed increase. How much quota do you need? if you have had the Internet before, go look at your previous bills, most of the time you will see what you used for the billing period, use this figure as a basis to guesstimate how much quota you are going to need. If you have never had an Internet package before then as a guide I would recommend nothing less than 10GB quota per month for the average light Internet user. I can't emphasize this enough, please do your research before you take this as gospel. Most people do know someone who <s>“knows boats”</s> would be able to assist in assessing how much quota you may require.
|
||||
|
||||
|
||||
### Bang for Buck
|
||||
|
||||
Read the fine print………. READ THE FINE PRINT……… oh, did I mention fine print? Every Internet package has fine print. This fine print will cover things like:
|
||||
@ -101,6 +116,7 @@ Read the fine print………. READ THE FINE PRINT……… oh, did I mention fin
|
||||
|
||||
- your responsibilities
|
||||
|
||||
|
||||
### Further Considerations
|
||||
|
||||
- "**Unlimited Packages"** Some ISPs do offer "unlimited packages". Please read the fine print so you can get the definition of unlimited as sometimes unlimited does not exactly mean unlimited. Some ISPs have been know to use peak and off-peak times, during peak you will have a quota and off peak is “unlimited”. A big consideration for unlimited or large packages with lower download speeds is calculating what you could actually download in that billing period. This is a simple task and would use the following formula.
|
||||
@ -126,6 +142,7 @@ Read the fine print………. READ THE FINE PRINT……… oh, did I mention fin
|
||||
|
||||
There are however some ISPs who are old school. they will give you a callback after being on hold for a few minutes and if your assistance call needs to be escalated will either call you back or give a detailed handover to the next person you need to speak to. bottom line if you are not technically minded than ask around to find a good ISP who can assist you and be wary of outsourced tech support.
|
||||
|
||||
|
||||
## Conclusion
|
||||
|
||||
Lets face it, The Internet has made our lives easier. You can now sit in your lounge room and read this long, very mind numbing article on how to choose a better Internet Service, do your Banking, Pay Bills, Buy Goods, <s>look at porn</s> and best of all place video calls to family and friends. What will the future hold? Who knows but given how far technology has evolved in the last 50 years, I think the next 50 will yield even more from this simple little invention courtesy of DARPA.
|
||||
|
194
pages/articles/2022/fail2ban_block_suspisious_activity.md
Normal file
@ -0,0 +1,194 @@
|
||||
---
|
||||
title: Setting up Fail2ban to Monitor Common TCP and UDP Ports for suspicious activity
|
||||
description: An explanation on how to configure fail2ban to block suspisious activity.
|
||||
date: 2022-06-12
|
||||
template: article.html
|
||||
type: blog
|
||||
author: jon
|
||||
about: https://www.fail2ban.org/
|
||||
tags:
|
||||
- Security
|
||||
- Firewall
|
||||
- Fail2ban
|
||||
|
||||
---
|
||||
|
||||
In this article, we'll explore how to set up an existing installation of Fail2ban to monitor common TCP and UDP ports. Fail2ban is a powerful tool that scans log files, detects suspicious activity, and automatically blocks the IP addresses of the offending hosts. By implementing Fail2ban to monitor common ports, we can enhance the security of our system and mitigate potential risks.
|
||||
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- An existing installation of Fail2ban
|
||||
|
||||
- Basic knowledge of working with the command line
|
||||
|
||||
|
||||
## Step 1: Set up iptables Rules
|
||||
|
||||
1. Open the iptables configuration file in a text editor using root privileges:
|
||||
|
||||
```bash
|
||||
sudo nano /etc/iptables/log_closed_ports.v4
|
||||
```
|
||||
|
||||
2. Add the following rules for each specified port to log access to that port:
|
||||
|
||||
```bash
|
||||
-A INPUT -p tcp --dport 80 -j LOG --log-prefix "[http-blocked-port-80] "
|
||||
-A INPUT -p tcp --dport 443 -j LOG --log-prefix "[https-blocked-port-443] "
|
||||
-A INPUT -p udp --dport 53 -j LOG --log-prefix "[dns-blocked-port-53] "
|
||||
-A INPUT -p tcp --dport 22 -j LOG --log-prefix "[ssh-blocked-port-22] "
|
||||
-A INPUT -p tcp --dport 3306 -j LOG --log-prefix "[mysql-blocked-port-3306] "
|
||||
-A INPUT -p tcp --dport 5432 -j LOG --log-prefix "[postgresql-blocked-port-5432] "
|
||||
```
|
||||
|
||||
Adjust the port numbers and log prefixes as needed for each port.
|
||||
|
||||
3. Save and exit the file (`Ctrl+O`, `Enter`, `Ctrl+X` in nano).
|
||||
|
||||
4. Restart the iptables service to apply the changes:
|
||||
|
||||
```bash
|
||||
sudo service iptables restart
|
||||
```
|
||||
|
||||
|
||||
## Step 2: Configure Fail2ban Filters
|
||||
|
||||
1. Open the Fail2ban filters directory in a text editor:
|
||||
|
||||
```bash
|
||||
sudo nano /etc/fail2ban/filter.d/iptables-port.conf
|
||||
```
|
||||
|
||||
2. Add the following content to the file:
|
||||
|
||||
```ini
|
||||
[Definition]
|
||||
failregex = ^.*\[.*\] .* <HOST> .*$
|
||||
ignoreregex =
|
||||
|
||||
actionban = iptables-multiport[logpath="/var/log/fail2ban_blocked_port_access.log", logprefix="[%(date)s] [%(name)s] [%(ip)s] "]
|
||||
```
|
||||
|
||||
3. Save and exit the file (`Ctrl+O`, `Enter`, `Ctrl+X` in nano).
|
||||
|
||||
|
||||
## Step 3: Configure Fail2ban Jail
|
||||
|
||||
1. Open the Fail2ban jail configuration file in a text editor:
|
||||
|
||||
```bash
|
||||
sudo nano /etc/fail2ban/jail.d/custom.conf
|
||||
```
|
||||
|
||||
2. Add the following configuration to the file:
|
||||
|
||||
```ini
|
||||
[http-blocked-port-80]
|
||||
enabled = true
|
||||
filter = iptables-port
|
||||
logpath = /var/log/iptables.log
|
||||
maxretry = 3
|
||||
banaction = iptables-multiport
|
||||
|
||||
[https-blocked-port-443]
|
||||
enabled = true
|
||||
filter = iptables-port
|
||||
logpath = /var/log/iptables.log
|
||||
maxretry = 3
|
||||
banaction = iptables-multiport
|
||||
|
||||
[dns-blocked-port-53]
|
||||
enabled = true
|
||||
filter = iptables-port
|
||||
logpath = /var/log/iptables.log
|
||||
maxretry = 3
|
||||
banaction = iptables-multiport
|
||||
|
||||
[ssh-blocked-port-22]
|
||||
enabled = true
|
||||
filter = iptables-port
|
||||
logpath = /var/log/iptables.log
|
||||
maxretry = 3
|
||||
banaction = iptables-multiport
|
||||
|
||||
[mysql-blocked-port-3306]
|
||||
enabled = true
|
||||
filter = iptables-port
|
||||
logpath = /var/log/iptables.log
|
||||
maxretry = 3
|
||||
banaction = iptables-multiport
|
||||
|
||||
[postgresql-blocked-port-5432]
|
||||
enabled = true
|
||||
filter = iptables-port
|
||||
logpath = /var/log/iptables.log
|
||||
maxretry = 3
|
||||
banaction = iptables-multiport
|
||||
```
|
||||
|
||||
Adjust the configuration as needed for each port.
|
||||
|
||||
3. Save and exit the file (`Ctrl+O`, `Enter`, `Ctrl+X` in nano).
|
||||
|
||||
|
||||
## Step 4: Restart Fail2ban Service
|
||||
|
||||
1. Restart the Fail2ban service to apply the configuration changes:
|
||||
|
||||
```bash
|
||||
sudo service fail2ban restart
|
||||
```
|
||||
|
||||
Congratulations! You have successfully set up Fail2ban to monitor common TCP and UDP ports. Fail2ban will now log access attempts to the specified ports and automatically ban IP addresses that exceed the maximum number of allowed retries. The ban events will be logged in the `/var/log/fail2ban_blocked_port_access.log` file with the date, rule name, and IP address information.
|
||||
|
||||
!!! Alert
|
||||
Please note that the provided configurations are examples, and you may need to modify them based on your specific needs and environment.
|
||||
|
||||
|
||||
## Common Ports
|
||||
|
||||
Within this table you will find some common ports that maybe useful to include additional rules for.
|
||||
|
||||
| Port | Protocol | Description |
|
||||
|------|----------|------------------------------|
|
||||
| 20 | TCP | FTP Data |
|
||||
| 21 | TCP | FTP Control |
|
||||
| 22 | TCP | SSH |
|
||||
| 23 | TCP | Telnet |
|
||||
| 25 | TCP | SMTP |
|
||||
| 53 | TCP/UDP | DNS |
|
||||
| 67 | UDP | DHCP Server |
|
||||
| 68 | UDP | DHCP Client |
|
||||
| 69 | UDP | TFTP |
|
||||
| 80 | TCP | HTTP |
|
||||
| 110 | TCP | POP3 |
|
||||
| 115 | TCP | SFTP |
|
||||
| 123 | UDP | NTP |
|
||||
| 137 | UDP | NetBIOS Name Service |
|
||||
| 138 | UDP | NetBIOS Datagram Service |
|
||||
| 139 | TCP | NetBIOS Session Service |
|
||||
| 143 | TCP | IMAP |
|
||||
| 161 | UDP | SNMP |
|
||||
| 389 | TCP/UDP | LDAP |
|
||||
| 443 | TCP | HTTPS |
|
||||
| 445 | TCP/UDP | SMB |
|
||||
| 465 | TCP | SMTPS |
|
||||
| 514 | TCP/UDP | Syslog |
|
||||
| 587 | TCP | SMTP (Submission) |
|
||||
| 636 | TCP/UDP | LDAPS |
|
||||
| 993 | TCP | IMAPS |
|
||||
| 995 | TCP | POP3S |
|
||||
| 1433 | TCP | MS SQL Server |
|
||||
| 1434 | UDP | MS SQL Server (UDP) |
|
||||
| 1521 | TCP | Oracle Database |
|
||||
| 2049 | TCP/UDP | NFS |
|
||||
| 3306 | TCP | MySQL |
|
||||
| 3389 | TCP | Remote Desktop Protocol (RDP) |
|
||||
| 5432 | TCP | PostgreSQL |
|
||||
| 5900 | TCP | VNC |
|
||||
| 5985 | TCP | WinRM |
|
||||
| 6379 | TCP | Redis |
|
||||
| 8080 | TCP | HTTP (Alternate) |
|
||||
```
|
154
pages/articles/2022/fail2ban_permanent_ban_closed_port_access.md
Normal file
@ -0,0 +1,154 @@
|
||||
---
|
||||
title: Managing Permanent Bans in Fail2ban
|
||||
description: An explanation on how to configure fail2ban to permanently ban closed ports access as suspisious activity.
|
||||
date: 2022-06-12
|
||||
template: article.html
|
||||
type: blog
|
||||
author: jon
|
||||
about: https://www.fail2ban.org/
|
||||
tags:
|
||||
- Security
|
||||
- Firewall
|
||||
- Fail2ban
|
||||
|
||||
---
|
||||
|
||||
In this article, we'll continue from where we left off in the article "[Setting up Fail2ban to Monitor Common TCP and UDP Ports for suspicious activity](fail2ban_block_suspisious_activity.md)" and explore how to manage permanent bans in Fail2ban on Debian/Ubuntu. We'll specifically focus on checking the closed port log file, `/var/log/fail2ban_blocked_port_access.log`, and adding hosts to a permanent ban list if they are found three times. This additional step will further enhance the security of your system by permanently blocking repeat offenders.
|
||||
|
||||
When an attacker targets a system, they often perform port scanning to identify open ports that can be exploited. Accessing a closed port, on the other hand, is considered suspicious and indicative of potentially malicious activity. Fail2ban helps detect and respond to such behavior by monitoring the system's log files, including the closed port log. By examining this log, we can identify hosts that repeatedly attempt to access closed ports, indicating a persistent threat.
|
||||
|
||||
In this article, we'll cover the steps to check the closed port log, create a permanent ban list, and configure Fail2ban to add IP addresses to the ban list when they are found three times in the log. By doing so, we can effectively protect our system from attackers who repeatedly attempt to access closed ports.
|
||||
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- An existing installation of Fail2ban on Debian/Ubuntu
|
||||
|
||||
- Basic knowledge of working with the command line
|
||||
|
||||
|
||||
## Step 1: Checking the Closed Port Log
|
||||
|
||||
1. Open the closed port log file, `/var/log/fail2ban_blocked_port_access.log`, using a text editor:
|
||||
|
||||
```bash
|
||||
sudo nano /var/log/fail2ban_blocked_port_access.log
|
||||
```
|
||||
|
||||
2. Inside the log file, you will see entries in the following format:
|
||||
|
||||
```
|
||||
[2023-06-12] [http-blocked-port-80] [192.168.0.1] Host banned permanently.
|
||||
```
|
||||
|
||||
3. Each entry consists of the date, rule name, IP address, and the indication of a permanent ban.
|
||||
|
||||
|
||||
## Step 2: Creating the Permanent Ban List
|
||||
|
||||
1. Open the Fail2ban jail local configuration file in a text editor:
|
||||
|
||||
```bash
|
||||
sudo nano /etc/fail2ban/jail.local
|
||||
```
|
||||
|
||||
2. Scroll to the end of the file and add the following section to create a permanent ban list:
|
||||
|
||||
```ini
|
||||
[permanent-bans]
|
||||
enabled = true
|
||||
filter = permanent-bans
|
||||
logpath = /var/log/fail2ban_blocked_port_access.log
|
||||
maxretry = 1
|
||||
bantime = -1
|
||||
action = iptables-allports
|
||||
```
|
||||
|
||||
Adjust the `filter` parameter and `logpath` as per your system configuration.
|
||||
|
||||
3. Save and exit the file (`Ctrl+O`, `Enter`, `Ctrl+X` in nano).
|
||||
|
||||
|
||||
## Step 3: Creating the Filter for Permanent Bans
|
||||
|
||||
1. Open the Fail2ban filter file for permanent bans in a text editor:
|
||||
|
||||
```bash
|
||||
sudo nano /etc/fail2ban/filter.d/permanent-bans.conf
|
||||
```
|
||||
|
||||
2. Add the following content to the file:
|
||||
|
||||
```ini
|
||||
[Definition]
|
||||
failregex = ^\[\d{4}-\d{2}-\d{2}\] \[.*\] \[(?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\].*Host banned permanently\.$
|
||||
ignoreregex =
|
||||
```
|
||||
|
||||
3. Save and exit the file (`Ctrl+O`, `Enter`, `Ctrl+X` in nano).
|
||||
|
||||
|
||||
## Step 4: Restarting Fail2ban Service
|
||||
|
||||
1. Restart the Fail2ban service to apply the configuration changes:
|
||||
|
||||
```bash
|
||||
sudo service fail2ban restart
|
||||
```
|
||||
|
||||
2. Fail2ban will now read the closed port log file and permanently ban any IP address that appears three times in the log.
|
||||
|
||||
Congratulations! You have successfully set up permanent bans in Fail2ban on Debian/Ubuntu. By monitoring the closed port log and adding repeat offenders to a permanent ban list, you have added an extra layer of security to your system.
|
||||
|
||||
!!! Tip
|
||||
Please note that while permanent bans provide increased protection, they should be used judiciously. Review the closed port log entries carefully before applying permanent bans to avoid unintended consequences. It's recommended to test and fine-tune the configuration in a controlled environment before applying it to production systems.
|
||||
|
||||
If you have any questions or encounter any issues, feel free to reach out. Stay secure!
|
||||
|
||||
## Common Network Ports
|
||||
|
||||
| Port | Protocol | Description |
|
||||
|------|----------|------------------------------|
|
||||
| 20 | TCP | FTP Data |
|
||||
| 21 | TCP | FTP Control |
|
||||
| 22 | TCP | SSH |
|
||||
| 23 | TCP | Telnet |
|
||||
| 25 | TCP | SMTP |
|
||||
| 53 | TCP/UDP | DNS |
|
||||
| 67 | UDP | DHCP Server |
|
||||
| 68 | UDP | DHCP Client |
|
||||
| 69 | UDP | TFTP |
|
||||
| 80 | TCP | HTTP |
|
||||
| 110 | TCP | POP3 |
|
||||
| 115 | TCP | SFTP |
|
||||
| 123 | UDP | NTP |
|
||||
| 137 | UDP | NetBIOS Name Service |
|
||||
| 138 | UDP | NetBIOS Datagram Service |
|
||||
| 139 | TCP | NetBIOS Session Service |
|
||||
| 143 | TCP | IMAP |
|
||||
| 161 | UDP | SNMP |
|
||||
| 389 | TCP/UDP | LDAP |
|
||||
| 443 | TCP | HTTPS |
|
||||
| 445 | TCP/UDP | SMB |
|
||||
| 465 | TCP | SMTPS |
|
||||
| 514 | TCP/UDP | Syslog |
|
||||
| 587 | TCP | SMTP (Submission) |
|
||||
| 636 | TCP/UDP | LDAPS |
|
||||
| 993 | TCP | IMAPS |
|
||||
| 995 | TCP | POP3S |
|
||||
| 1433 | TCP | MS SQL Server |
|
||||
| 1434 | UDP | MS SQL Server (UDP) |
|
||||
| 1521 | TCP | Oracle Database |
|
||||
| 2049 | TCP/UDP | NFS |
|
||||
| 3306 | TCP | MySQL |
|
||||
| 3389 | TCP | Remote Desktop Protocol (RDP) |
|
||||
| 5432 | TCP | PostgreSQL |
|
||||
| 5900 | TCP | VNC |
|
||||
| 5985 | TCP | WinRM |
|
||||
| 6379 | TCP | Redis |
|
||||
| 8080 | TCP | HTTP (Alternate) |
|
||||
|
||||
Feel free to reach out if you have any questions or encounter any issues along the way. Stay secure!
|
||||
|
||||
!!! Note
|
||||
Please note that the provided configurations and port table are examples, and you may need to modify them based on your specific needs and environment.
|
68
pages/articles/2022/fail2ban_permanent_whitelist.md
Normal file
@ -0,0 +1,68 @@
|
||||
---
|
||||
title: Configuring a Permanent Whitelist in Fail2ban
|
||||
description: An explanation on how to configure fail2ban to permanently allow hosts specified on a whitelist.
|
||||
date: 2022-06-12
|
||||
template: article.html
|
||||
type: blog
|
||||
author: jon
|
||||
about: https://www.fail2ban.org/
|
||||
tags:
|
||||
- Security
|
||||
- Firewall
|
||||
- Fail2ban
|
||||
|
||||
---
|
||||
|
||||
In this article, we will explore how to configure a permanent whitelist in Fail2ban. A whitelist allows specific IP addresses or DNS names to bypass any blocking rules enforced by Fail2ban. This can be useful when you want to ensure uninterrupted access for trusted hosts while still benefiting from the protection provided by Fail2ban against suspicious activity.
|
||||
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- An existing installation of Fail2ban on your system
|
||||
|
||||
- Basic knowledge of working with the command line
|
||||
|
||||
|
||||
## Step 1: Open Fail2ban Configuration
|
||||
|
||||
1. Open the Fail2ban configuration file in a text editor using root privileges:
|
||||
|
||||
```bash
|
||||
sudo nano /etc/fail2ban/jail.local
|
||||
```
|
||||
|
||||
2. Locate the `[DEFAULT]` section in the file.
|
||||
|
||||
|
||||
## Step 2: Configure the Permanent Whitelist
|
||||
|
||||
1. Add the `ignoreip` parameter under the `[DEFAULT]` section to specify the IP addresses or DNS names to be whitelisted. You can whitelist multiple entries by separating them with a space.
|
||||
|
||||
```ini
|
||||
[DEFAULT]
|
||||
ignoreip = 192.168.1.100 example.com
|
||||
```
|
||||
|
||||
Replace `192.168.1.100` with the desired IP address or add more IP addresses as needed. You can also include DNS names like `example.com` to whitelist specific domains.
|
||||
|
||||
2. Save and exit the file (`Ctrl+O`, `Enter`, `Ctrl+X` in nano).
|
||||
|
||||
|
||||
## Step 3: Restart Fail2ban Service
|
||||
|
||||
1. Restart the Fail2ban service to apply the configuration changes:
|
||||
|
||||
```bash
|
||||
sudo service fail2ban restart
|
||||
```
|
||||
|
||||
Congratulations! You have successfully configured a permanent whitelist in Fail2ban. The IP addresses or DNS names specified in the `ignoreip` parameter will now be exempted from any blocking rules enforced by Fail2ban.
|
||||
|
||||
It's important to regularly review and update the whitelist to ensure it remains accurate and secure. Remember that introducing DNS names in the whitelist adds a dependency on DNS resolution, so ensure that DNS resolution is functioning properly on your system.
|
||||
|
||||
By configuring a permanent whitelist, you can allow trusted hosts to access your system without being affected by Fail2ban's blocking mechanisms. This helps strike a balance between security and accessibility.
|
||||
|
||||
Feel free to reach out if you have any questions or encounter any issues along the way. Stay secure!
|
||||
|
||||
!!! Note
|
||||
The provided instructions are based on the assumption that you have Fail2ban installed and have administrative privileges on your system. Modify the configuration as per your specific requirements and system configuration.
|
59
pages/articles/2022/fail2ban_running_considerations.md
Normal file
@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Running Fail2ban Considerations
|
||||
description: A food for thought article on running fail2ban and some considerations.
|
||||
date: 2022-06-12
|
||||
template: article.html
|
||||
type: blog
|
||||
author: jon
|
||||
about: https://www.fail2ban.org/
|
||||
tags:
|
||||
- Security
|
||||
- Firewall
|
||||
- Fail2ban
|
||||
|
||||
---
|
||||
|
||||
Fail2ban is a powerful tool for enhancing the security of your system by automatically detecting and blocking suspicious activities. While Fail2ban can be installed and run in various environments, it's important to consider the best practices and potential challenges associated with running Fail2ban effectively. In this article, we will explore different methods of installing and running Fail2ban, and discuss why running Fail2ban within a Docker container may not be the optimal approach.
|
||||
|
||||
|
||||
## Methods of Installing and Running Fail2ban
|
||||
|
||||
There are multiple methods available to install and run Fail2ban, including:
|
||||
|
||||
1. **Package Manager**: Many Linux distributions provide Fail2ban packages through their package managers. This method simplifies the installation process by automatically handling dependencies and providing system integration.
|
||||
|
||||
2. **Source Code**: Installing Fail2ban from source code gives you more control over the installation process and allows for customization. This method involves manually compiling and configuring Fail2ban on your system.
|
||||
|
||||
Now, let's delve into the reasons why running Fail2ban within a Docker container may not be a good idea.
|
||||
|
||||
## Reasons for Not Running Fail2ban within a Docker Container
|
||||
|
||||
While there may be scenarios where running Fail2ban within a Docker container seems appealing, it's important to consider the following reasons why it's generally not recommended:
|
||||
|
||||
1. **Limited Visibility**: Docker containers have their own isolated network stack, which can limit Fail2ban's visibility into the host system's network traffic. This can hinder Fail2ban's ability to accurately monitor and respond to malicious activities.
|
||||
|
||||
2. **Log File Monitoring**: Fail2ban relies on monitoring log files to detect and respond to malicious activities. When running within a Docker container, Fail2ban may have limited access to the host's log files, making it less effective in identifying and blocking malicious behavior.
|
||||
|
||||
3. **Network Filtering Limitations**: Fail2ban utilizes firewall rules to block malicious hosts. Running Fail2ban within a Docker container may limit its ability to apply firewall rules directly on the host system, reducing its effectiveness in mitigating threats.
|
||||
|
||||
4. **Complexity and Configuration Challenges**: Running Fail2ban within a Docker container introduces an additional layer of complexity and potential configuration challenges. It may require custom networking setups, log file sharing between the container and host, and intricate container-to-host communication mechanisms.
|
||||
|
||||
5. **Dependency on Docker Service**: When Fail2ban is running inside a Docker container, it becomes dependent on the Docker service itself. If the Docker service stops or encounters issues, Fail2ban will also be affected and may cease to function properly. This dependency introduces a single point of failure, potentially leaving your system vulnerable to malicious activities.
|
||||
|
||||
6. **Restart and Recovery Challenges**: When the Docker service restarts or if the host system reboots, Docker containers are typically not automatically started in a specific order. This can lead to a delay in Fail2ban being operational, leaving your system exposed to potential threats during that time.
|
||||
|
||||
Considering these reasons, it is generally recommended to install and run Fail2ban directly on the host system. By doing so, you ensure full visibility into the network traffic, unrestricted access to log files, seamless integration with firewall rules, simpler configuration setup, and avoid the potential issues associated with running Fail2ban within a Docker container.
|
||||
|
||||
|
||||
## Conclusion
|
||||
|
||||
Installing and running Fail2ban using the package manager or from source code are common methods to enhance the security of your system. However, when it comes to running Fail2ban within a Docker container, reasons such as limited visibility, log file monitoring challenges, network filtering limitations, increased complexity, and the dependency on the Docker service indicate that it's not the optimal approach.
|
||||
|
||||
By following best practices and running Fail2ban directly on the host system, you can maximize its effectiveness in detecting and blocking malicious activities. Choose the installation method that best suits your needs and ensure regular updates to keep your system secure.
|
||||
|
||||
Remember to consider the reasons, including the scenario of Docker service stopping, presented here and evaluate the trade-offs before deciding to run Fail2ban within a Docker container. Prioritize the security of your system while maintaining simplicity and effectiveness.
|
||||
|
||||
If you have any questions or encounter any issues along the way, feel free to reach out. Stay secure!
|
||||
|
||||
!!! Note
|
||||
The installation methods mentioned in this article are general guidelines. Refer to the official Fail2ban documentation and consult your specific Linux distribution's documentation for detailed instructions and any distribution-specific nuances.
|
245
pages/articles/2022/gitlab_pipeline_from_github_actions.md
Normal file
@ -0,0 +1,245 @@
|
||||
---
|
||||
title: Running GitLab Pipeline from GitHub Actions
|
||||
description: An explanation on how to run a GitLab Pipeline or job from GitHub Actions.
|
||||
date: 2022-06-12
|
||||
template: article.html
|
||||
type: blog
|
||||
author: jon
|
||||
about: https://www.fail2ban.org/
|
||||
tags:
|
||||
- Gitlab
|
||||
- Github
|
||||
- Docker
|
||||
- CD/CI
|
||||
- Pipeline
|
||||
---
|
||||
|
||||
Migrating from GitLab to GitHub or having existing GitLab configurations in your repository? No worries! In this article, we will explore how to seamlessly execute GitLab pipelines using GitHub Actions, enabling you to leverage the power of GitHub's CI/CD capabilities while maintaining your existing GitLab configurations.
|
||||
|
||||
If you already have a GitLab CI/CD pipeline defined in your repository, this guide will help you execute it without the need for major modifications. By configuring a self-hosted GitLab Runner Docker container in GitHub Actions and utilizing the .gitlab-ci.yml file, you can easily trigger your GitLab pipeline and benefit from GitHub's collaborative features.
|
||||
|
||||
Let's dive into the steps required to configure GitHub Actions, execute the GitLab Runner Docker container, and seamlessly run your GitLab pipeline from within your GitHub repository.
|
||||
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Access to a GitHub repository with the desired project code.
|
||||
|
||||
- Basic knowledge of GitLab CI/CD and GitHub Actions concepts.
|
||||
|
||||
|
||||
## Step 1: Configure GitHub Actions Workflow and Execute GitLab Runner Docker Container
|
||||
|
||||
1. Open your workflow configuration file (e.g., `.github/workflows/main.yml`) in your GitHub repository.
|
||||
|
||||
2. Specify the runner using the `runs-on` field:
|
||||
|
||||
```yaml
|
||||
jobs:
|
||||
build:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
```
|
||||
|
||||
The `runs-on` field is set to `self-hosted`, instructing GitHub Actions to use a self-hosted runner.
|
||||
|
||||
3. Update the workflow file to include the following step for executing the GitLab Runner Docker container:
|
||||
|
||||
```yaml
|
||||
jobs:
|
||||
build:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Start GitLab Runner Docker Container
|
||||
run: |
|
||||
docker run -d --name gitlab-runner \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v /path/to/runner/config:/etc/gitlab-runner \
|
||||
-v ${{ github.workspace }}:/${{ github.workspace }} \
|
||||
-w /${{ github.workspace }} \
|
||||
gitlab/gitlab-runner:latest
|
||||
```
|
||||
|
||||
Replace `/path/to/runner/config` with the actual path where you want to store the GitLab Runner configuration files.
|
||||
|
||||
4. Commit and push your workflow configuration file to your GitHub repository.
|
||||
|
||||
|
||||
## Step 2: Use .gitlab-ci.yml for Jobs and Pipelines
|
||||
|
||||
1. Create or update the `.gitlab-ci.yml` file in your GitHub repository to define the jobs and pipelines for your GitLab Runner.
|
||||
|
||||
```yaml
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
- deploy
|
||||
|
||||
build:
|
||||
stage: build
|
||||
script:
|
||||
- echo "Running build job"
|
||||
|
||||
test:
|
||||
stage: test
|
||||
script:
|
||||
- echo "Running test job"
|
||||
|
||||
deploy:
|
||||
stage: deploy
|
||||
script:
|
||||
- echo "Running deploy job"
|
||||
```
|
||||
|
||||
Customize the jobs and their respective scripts according to your specific CI/CD requirements.
|
||||
|
||||
2. Commit and push the `.gitlab-ci.yml` file to your GitHub repository.
|
||||
|
||||
|
||||
## Step 3: Execute GitLab Pipeline using GitHub Actions
|
||||
|
||||
1. With the changes pushed to your GitHub repository, the self-hosted GitLab Runner Docker container will utilize the `.gitlab-ci.yml` file to execute the defined jobs and pipelines.
|
||||
|
||||
2. To run a specific job, add the job name as a parameter to the GitLab Runner command. For example, to run only the `test` job, modify the workflow configuration file as follows:
|
||||
|
||||
```yaml
|
||||
jobs:
|
||||
build:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
test:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Run GitLab Runner job
|
||||
run: |
|
||||
docker exec gitlab-runner gitlab-runner exec docker test
|
||||
```
|
||||
|
||||
In this example, the `test` job
|
||||
|
||||
is executed using the `docker exec` command.
|
||||
|
||||
3. To run the entire pipeline defined in `.gitlab-ci.yml`, remove the specific job parameter from the `docker exec` command:
|
||||
|
||||
```yaml
|
||||
jobs:
|
||||
build:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
test:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Run GitLab Runner pipeline
|
||||
run: |
|
||||
docker exec gitlab-runner gitlab-runner exec docker
|
||||
```
|
||||
|
||||
By removing the job parameter, the entire pipeline will be executed.
|
||||
|
||||
|
||||
## Conclusion
|
||||
|
||||
By configuring a self-hosted GitLab Runner Docker container in GitHub Actions and utilizing the `.gitlab-ci.yml` file, you can seamlessly execute GitLab pipelines from within your GitHub repositories. This enables you to leverage the powerful CI/CD capabilities of GitLab while still benefiting from the collaborative features of GitHub.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
I apologize for the confusion. If you want to focus solely on running GitLab pipelines from GitHub Actions and exclude any other methods, here's the revised article:
|
||||
|
||||
# Article 7: Running GitLab Pipeline from GitHub Actions
|
||||
|
||||
## Introduction
|
||||
If you're looking to migrate from GitLab to GitHub or have existing GitLab configurations in your repository, this article is for you. We'll explore how to seamlessly execute GitLab pipelines using GitHub Actions, leveraging GitHub's CI/CD capabilities while maintaining your GitLab configurations.
|
||||
|
||||
By configuring GitHub Actions to trigger your GitLab pipeline, you can take advantage of GitHub's collaborative features while running your pipeline in a familiar environment.
|
||||
|
||||
## Prerequisites
|
||||
Before we get started, make sure you have the following:
|
||||
|
||||
- A GitHub repository with your GitLab project code
|
||||
- A `.gitlab-ci.yml` file defining your GitLab pipeline jobs
|
||||
|
||||
## Step 1: Configure GitHub Actions Workflow
|
||||
1. In your GitHub repository, navigate to the **Actions** tab.
|
||||
|
||||
2. Click on **Set up a workflow yourself** to create a new workflow file.
|
||||
|
||||
3. Replace the contents of the workflow file with the following:
|
||||
|
||||
```yaml
|
||||
name: Run GitLab Pipeline
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
run-gitlab-pipeline:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Set up GitLab Runner
|
||||
uses: docker://gitlab/gitlab-runner:latest
|
||||
|
||||
- name: Execute GitLab pipeline
|
||||
run: |
|
||||
# Customize this command to match your GitLab Runner configuration
|
||||
gitlab-runner exec docker <your-pipeline-name>
|
||||
```
|
||||
|
||||
Note: Replace `<your-pipeline-name>` with the name of your GitLab pipeline defined in `.gitlab-ci.yml`.
|
||||
|
||||
4. Commit and push the workflow file to your GitHub repository.
|
||||
|
||||
## Step 2: Customize GitLab Runner Configuration
|
||||
1. In your GitHub repository, navigate to the **Settings** tab.
|
||||
|
||||
2. Click on **Secrets** in the left sidebar.
|
||||
|
||||
3. Add any necessary secrets or environment variables required for your GitLab Runner configuration.
|
||||
|
||||
For example, you may need to set the `CI_JOB_TOKEN` secret to authenticate with your GitLab repository.
|
||||
|
||||
## Step 3: Trigger GitLab Pipeline
|
||||
Any push or pull request events on the `main` branch will now trigger the GitHub Actions workflow, which in turn executes your GitLab pipeline.
|
||||
|
||||
## Conclusion
|
||||
Congratulations! You've successfully configured GitHub Actions to run your GitLab pipeline. By leveraging GitHub's CI/CD capabilities, you can seamlessly execute your GitLab pipelines and benefit from the collaborative features provided by GitHub.
|
||||
|
||||
Remember to keep your `.gitlab-ci.yml` file up to date with your desired pipeline configurations. Feel free to explore other features of GitHub Actions to further enhance your CI/CD workflows.
|
||||
|
||||
If you have any questions or encounter any issues along the way, don't hesitate to reach out for assistance. Happy automating!
|
||||
|
||||
Please note that this article assumes you already have a working `.gitlab-ci.yml` file and focuses solely on executing the GitLab pipeline using GitHub Actions.
|
||||
|
||||
I hope this revised version of Article 7 meets your requirements.
|
114
pages/articles/2022/gitlab_piplines_vscode.md
Normal file
@ -0,0 +1,114 @@
|
||||
---
|
||||
title: Running GitLab Runner with VS Code Tasks
|
||||
description: An explanation on how to setup VSCode Tasks to run Gitlab Pipelines directly from VSCode.
|
||||
date: 2022-06-12
|
||||
template: article.html
|
||||
type: blog
|
||||
author: jon
|
||||
about: https://hub.docker.com/r/gitlab/gitlab-runner
|
||||
tags:
|
||||
- Gitlab
|
||||
- Docker
|
||||
- CD/CI
|
||||
- Pipeline
|
||||
- VSCode
|
||||
---
|
||||
|
||||
In a previous article, we learned how to run GitLab CI/CD pipelines locally using the GitLab Runner container. In this article, we'll explore how to streamline the process by creating VS Code tasks that allow us to launch the GitLab Runner with a simple keyboard shortcut. This will provide a convenient way to execute our pipelines or specific jobs directly from within the VS Code environment.
|
||||
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- VS Code installed on your machine
|
||||
|
||||
- [Completion of the previous steps](local_gitlab_pipeline.md)
|
||||
|
||||
|
||||
## Step 1: Create a `.vscode` Directory
|
||||
|
||||
First, open your project in VS Code. In the root directory of your project, create a new directory called `.vscode` if it doesn't already exist.
|
||||
|
||||
|
||||
## Step 2: Create a `tasks.json` File
|
||||
|
||||
Inside the `.vscode` directory, create a new file called `tasks.json`. This file will define the tasks we want to create.
|
||||
|
||||
Add the following content to the `tasks.json` file:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Run GitLab CI/CD Pipeline",
|
||||
"type": "shell",
|
||||
"command": "docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v ${workspaceFolder}:/builds/project -w /builds/project gitlab/gitlab-runner:latest gitlab-runner exec docker --docker-privileged"
|
||||
},
|
||||
{
|
||||
"label": "Run Specific Job",
|
||||
"type": "shell",
|
||||
"command": "docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v ${workspaceFolder}:/builds/project -w /builds/project gitlab/gitlab-runner:latest gitlab-runner exec docker --docker-privileged",
|
||||
"args": [
|
||||
"--",
|
||||
"<job-name>"
|
||||
],
|
||||
"problemMatcher": []
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
The `tasks` array contains two tasks: "Run GitLab CI/CD Pipeline" and "Run Specific Job". The commands specified in the `command` field are the same as the ones we used previously to execute the GitLab Runner container.
|
||||
|
||||
For the "Run Specific Job" task, we have an additional `args` field where you should replace `<job-name>` with the name of the specific job you want to execute.
|
||||
|
||||
|
||||
## Step 3: Define Keybindings (Optional)
|
||||
|
||||
To make it even more convenient, you can define keybindings for the tasks. Open the keybindings settings in VS Code by going to **File** -> **Preferences** -> **Keyboard Shortcuts** (or by pressing `Ctrl+K Ctrl+S`).
|
||||
|
||||
Add the following keybindings to the keybindings settings file:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"key": "ctrl+shift+p",
|
||||
"command": "workbench.action.tasks.runTask",
|
||||
"args": "Run GitLab CI/CD Pipeline"
|
||||
},
|
||||
{
|
||||
"key": "ctrl+shift+j",
|
||||
"command": "workbench.action.tasks.runTask",
|
||||
"args": "Run Specific Job"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
These keybindings assign the "Run GitLab CI/CD Pipeline" task to `Ctrl+Shift+P` and the "Run Specific Job" task to `Ctrl+Shift+J`. Feel free to modify the keybindings according to your preference.
|
||||
|
||||
## Step 4: Adjust `.gitignore` File
|
||||
|
||||
To avoid inadvertently including artifacts generated during the local pipeline execution in your git commits, it's
|
||||
|
||||
essential to update your `.gitignore` file.
|
||||
|
||||
Open your project's `.gitignore` file and add the following line to exclude the generated artifacts:
|
||||
|
||||
```
|
||||
# GitLab Runner artifacts
|
||||
/builds/
|
||||
```
|
||||
|
||||
This ensures that any files or directories created within the `/builds/` directory (which is used by the GitLab Runner container) will be ignored by git.
|
||||
|
||||
|
||||
## Step 5: Run the Pipeline or Specific Job
|
||||
|
||||
You're now ready to run your GitLab CI/CD pipeline or specific job using the VS Code tasks. Press the assigned keybinding (`Ctrl+Shift+P` for the pipeline or `Ctrl+Shift+J` for a specific job) to launch the GitLab Runner container and execute the desired task.
|
||||
|
||||
|
||||
## Conclusion
|
||||
|
||||
By creating VS Code tasks, we've made it even easier to run GitLab CI/CD pipelines or specific jobs locally using the GitLab Runner. With a simple keyboard shortcut, we can now execute our pipelines or test individual jobs directly from within the VS Code environment. Additionally, by adjusting the `.gitignore` file, we can ensure that artifacts generated during the local execution are not inadvertently included in git commits.
|
||||
|
||||
That's it! You've learned how to set up VS Code tasks to launch the GitLab Runner and exclude artifacts from being committed. Enjoy the streamlined process of running your pipelines and jobs with ease.
|
65
pages/articles/2022/local_gitlab_pipeline.md
Normal file
@ -0,0 +1,65 @@
|
||||
---
|
||||
title: Running GitLab CI/CD Pipeline Locally with Docker-in-Docker using GitLab Runner Container
|
||||
description: This article details how to use GitLab CI/CD pipelines locally which can be useful for testing and debugging purposes.
|
||||
date: 2022-06-12
|
||||
template: article.html
|
||||
type: blog
|
||||
author: jon
|
||||
about: https://hub.docker.com/r/gitlab/gitlab-runner
|
||||
tags:
|
||||
- Gitlab
|
||||
- Docker
|
||||
- CD/CI
|
||||
- Pipeline
|
||||
- VSCode
|
||||
---
|
||||
|
||||
Running GitLab CI/CD pipelines locally can be useful for testing and debugging purposes. While GitLab provides robust CI/CD capabilities on its platform, there may be scenarios where executing the pipeline locally within your development environment, such as Visual Studio Code (VS Code), can be beneficial. In this blog post, we'll explore how to set up and run a GitLab CI/CD pipeline locally using the GitLab Runner container with Docker-in-Docker (DinD) support.
|
||||
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Docker installed on your machine
|
||||
|
||||
- Basic knowledge of GitLab CI/CD and Docker concepts
|
||||
|
||||
|
||||
## Step 1: Pull the GitLab Runner Image
|
||||
|
||||
To begin, ensure that you have Docker installed on your machine. Open a terminal within VS Code or any command prompt and pull the latest GitLab Runner Docker image by executing the following command:
|
||||
|
||||
```shell
|
||||
docker pull gitlab/gitlab-runner:latest
|
||||
```
|
||||
|
||||
|
||||
## Step 2: Execute the Pipeline or Multiple Jobs with DinD
|
||||
|
||||
Next, navigate to your project's root directory containing the `.gitlab-ci.yml` file. To execute the entire GitLab CI/CD pipeline locally or specific jobs within it with Docker-in-Docker functionality, use the following command:
|
||||
|
||||
```shell
|
||||
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v /path/to/your/project:/builds/project \
|
||||
-w /builds/project gitlab/gitlab-runner:latest \
|
||||
gitlab-runner exec docker --docker-privileged [<job-name1>,<job-name2>,<job-name3>,...]
|
||||
```
|
||||
|
||||
Replace `/path/to/your/project` with the local path to your project directory, and `<job-name1>,<job-name2>,<job-name3>,...` with the comma-separated list of job names you want to execute (optional).
|
||||
|
||||
By mounting the Docker socket (`/var/run/docker.sock`) as a volume inside the container and using the `--docker-privileged` flag, the GitLab Runner container gains access to Docker-in-Docker functionality. This allows the execution of Docker commands within the runner.
|
||||
|
||||
If you don't specify any job names, the GitLab Runner container will execute all the jobs defined in your `.gitlab-ci.yml` file sequentially, providing a local simulation of the GitLab CI/CD pipeline execution.
|
||||
|
||||
If you specify one or more job names, only those specific jobs will be executed within the GitLab Runner container, allowing you to selectively test and debug multiple parts of your pipeline.
|
||||
|
||||
Make sure your project directory contains the necessary files, configurations, and dependencies required for the pipeline or jobs to run successfully.
|
||||
|
||||
Remember to exercise caution when running Docker-in-Docker, as it can have security implications. Ensure that your environment is appropriately secured and follow best practices.
|
||||
|
||||
|
||||
## Conclusion
|
||||
|
||||
Running GitLab CI/CD pipelines locally within your development environment can greatly enhance the development and testing process. By leveraging the GitLab Runner container with Docker-in-Docker support, you can simulate the GitLab CI/CD pipeline execution within tools like VS Code. This enables you to test and validate your pipeline configurations before pushing them to the GitLab platform.
|
||||
|
||||
That's it! You now have the knowledge to run an entire GitLab CI/CD pipeline or multiple jobs locally with Docker-in-Docker using the GitLab Runner container. Happy pipeline testing and debugging!
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
|
||||
template: blog_list.html
|
||||
template: article_list.html
|
||||
title: No Fuss Computing Articles
|
||||
|
||||
---
|
||||
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
@ -12,6 +12,7 @@ We can be found in the following places on the internet:
|
||||
|
||||
- [:books: Read the Docs](https://readthedocs.org/profiles/nofusscomputing/)
|
||||
|
||||
|
||||
## Found an issue with a page on this website?
|
||||
|
||||
On every page of this website that you are able to edit, you will find this icon :material-pencil:. Located in the top right hand corner of the content. After clicking on this icon, you will be taken to the git repository that contains the page in question for you to edit. An understanding of Git and Gitlab is required for the use of this method.
|
||||
|
@ -1,8 +1,13 @@
|
||||
---
|
||||
template: home.html
|
||||
title: No Fuss Computing
|
||||
description: Here at No Fuss Computing we predominately do research and development into, making your computing experience a more enjoyable one. See our projects page to find out what we are working on.
|
||||
|
||||
hide:
|
||||
- navigation
|
||||
- toc
|
||||
---
|
||||
# No Fuss Computing
|
||||
|
||||

|
||||
|
||||
Home Page
|
||||
|
@ -1,15 +0,0 @@
|
||||
---
|
||||
title: Supported Markdown Syntax
|
||||
tags:
|
||||
- Development
|
||||
- Markdown
|
||||
- Website
|
||||
- mkdocs
|
||||
---
|
||||
|
||||
# Supported Markdown Syntax
|
||||
|
||||
!!! Notice
|
||||
This page is still being constructed
|
||||
|
||||
_This website uses markdown documents to create the pages, please see the [reference guide](https://squidfunk.github.io/mkdocs-material/reference/) for further items that can be used._
|
5
pages/projects/docker-mail/index.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Docker E-Mail Server
|
||||
|
||||
| :red_circle: This page is a placeholder for the ansible-roles repo's docs. |
|
||||
|:---|
|
||||
| _If you can see this page there has been an error, please report the issue on gitlab_ |
|
0
pages/projects/execution_environment/index.md
Normal file
0
pages/projects/git_configuration/index.md
Normal file
@ -5,4 +5,5 @@ tags:
|
||||
---
|
||||
# No Fuss Computing Projects
|
||||
|
||||
|
||||
## Our Projects
|
||||
|
@ -7,7 +7,7 @@ Redirect 301 /wiki/public/article/150225_choose_internet_service /articles/2015/
|
||||
Redirect 301 /wiki/syntax /operations/syntax
|
||||
|
||||
|
||||
|
||||
Redirect 301 /wiki/public/help/mdt/* /wiki/info/*
|
||||
Redirect 301 /wiki/public/help/mdt/home /articles/2014/mdt_setup
|
||||
Redirect 301 /wiki/public/help/mdt/applications /articles/2014/mdt_setup
|
||||
|
||||
Redirect 301 /wiki/public/help/mantis/* /wiki/info/*
|
||||
|
@ -70,3 +70,52 @@ a.tags:hover {
|
||||
.mdx-author p > span {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
.container{
|
||||
width: 100%;
|
||||
}
|
||||
.container .row {
|
||||
width: 95%;
|
||||
margin: 0 auto;
|
||||
height: fit-content;
|
||||
}
|
||||
|
||||
.container .row:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
.container .column {
|
||||
float: left;
|
||||
width: 50%;
|
||||
padding-top: 30px;
|
||||
|
||||
}
|
||||
|
||||
.container .column .mdx-author {
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.container .column h2 {
|
||||
margin: 0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.container .column ul {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.container .column h3 {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.container .column img {
|
||||
height: 22px;
|
||||
}
|
||||
@media screen and ( max-width: 700px ) {
|
||||
.container .column {
|
||||
float: none;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +0,0 @@
|
||||
# Welcome to the Wiki
|
||||
|
||||
## Wiki Sections
|
@ -1,43 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHpTCCBY2gAwIBAgIBATANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCQVUx
|
||||
CzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQL
|
||||
EwNOV1cxFDASBgNVBAMMC05XV19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25h
|
||||
dGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3Jr
|
||||
ZWQgV2ViIENlcnRpZmljYXRlMB4XDTE3MTIyMTAwMDAwMFoXDTI3MTIyMDIzNTk1
|
||||
OVowgbAxCzAJBgNVBAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAK
|
||||
BgNVBAoTA05XVzEMMAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTEx
|
||||
MC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNv
|
||||
bTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZI
|
||||
hvcNAQEBBQADggIPADCCAgoCggIBANNh/YQ88bqyR2569AwMnqe+9VjeUoFQcGgr
|
||||
JjcS76lZaAERnbl49PJM6X9xcFBQoCD3S1WnNXL26ZtA+PKdfvZOL8GIkwZQrXNB
|
||||
Ts2f4VP1dahuxuHYlmlwlpdT84JKZlDloUrDOgx0D707Z+ybUrTFjqaQjp/ZfybQ
|
||||
QLiYfK/6v7K7rOh8WyeWWunDo8uYlZWmtmzAQU9IQimYWepZ4/O+yfWnUVRGvYMD
|
||||
daALrNaj5MO41J13Y5sXDdl++yTCbujJ+xTDHKfjoJ+KpEuLa8VzWjJYAjm+TSXK
|
||||
gWObOxpnrb4sW2bB2pPtwQoOKd3tXYW2bRKJHGt2pVzgyGUjZ1yGKFS04+cg9OpP
|
||||
ePFtS4aTKVTMIe7BHwPA1fhu2efqmfP0vSY0EmRHuk9GIqo1r5EiC94xOcAuLkPG
|
||||
RquMQr+moD27JrhhlF9vw/Z9pr6gZ+hUDYGbE0913F1mjdtYp1lBmaLysLwpI0lH
|
||||
PUZdFdejCbnvPfH9EVxNRgbM5J/yzfRB//QRnufpjC2OgB6zTnifsYIOOSYHYgCK
|
||||
4DLrin74j4YiUGm49wuTwdqk52B8bkDzx4cWwIpJWYIeQC2xMrR/RvdrDMxt1Frg
|
||||
k5es0NHMWAzd2C2PRS2fmvuUdq2+QZRe721TvoeFLMI05PnUrxOkz/din8BNWtsN
|
||||
AoBCi3FdAgMBAAGjggHGMIIBwjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRI
|
||||
6WaWbdVLxOTffYdPlqd7zAw+7TCB3QYDVR0jBIHVMIHSgBRI6WaWbdVLxOTffYdP
|
||||
lqd7zAw+7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYD
|
||||
VQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05X
|
||||
V19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3
|
||||
b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRl
|
||||
ggEBMA4GA1UdDwEB/wQEAwIBBjBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vbm9m
|
||||
dXNzY29tcHV0aW5nLmNvbS9DQS9DUkwvTldXX1Jvb3RfQ0EuY3JsMEkGCCsGAQUF
|
||||
BwEBBD0wOzA5BggrBgEFBQcwAoYtaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20v
|
||||
Q0EvTldXX1Jvb3RfQ0EuY3J0MBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0B
|
||||
AQsFAAOCAgEARpj46yWBnbJIfqh7V9c1AWZmbzqogJynp5AqyC2e8Rp59dpPKJ60
|
||||
BC2WVUMsCHqyhl6oZwmn2Ejud+iodGo4IwdgDneFvQQAiF7TVTBnBRHnup3rLtTX
|
||||
zvqIBPyqBmrvZSjSfG0mStb3YWS41yj9bhsqy1qRTdXS+Ghc4I1DcOWu62NbhbP/
|
||||
UHPUEwCyPxEWLtxk0u8N8Hqmlr3qHHM53cKaOUUIn6VMtq2S0o39xWt7QuHWe3Aa
|
||||
COQYaAVQ60f9cZUmw7h31d3oen7nrlaaDAp7i1e4HuTb8+PzetoGjJ8xCt4cbnp0
|
||||
ThQFdVuaLszSiHpmsKPvdazIVjhvT7CTM5EydsDHZFA6cMmWjYYm5f9MXbiCSebC
|
||||
2q+2W2vO92yd/8JE3JCRc8A2Mi4RSw9SziN/MCvueorIFJXfawz3rARgk5KXKPNj
|
||||
DBHcxxaQOTCJHLblGsv+9S/ANnucOihQRPWPGKGr80Yy5wQ8TKnuElvzrOjyR2Cj
|
||||
HGqSX2ar1GnFtmDsfamnJ0kb+2Sbamt3slAxUM/Qc+SIWepVtSNb8IppWPCxmPOd
|
||||
QyUMRayfkkc2qdo3xyUV1zE/alMPK6k0epyZ0+lyTo+sVpyzVq/D1wS63pUXiK/f
|
||||
gB5/XW5AC1ngeN3DBlOc/R5mscyv4o4cHOauxMKjldGgGhqI0QnRSi4=
|
||||
-----END CERTIFICATE-----
|
@ -1,22 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIDjzCCAXcCAQEwDQYJKoZIhvcNAQELBQAwgaoxCzAJBgNVBAYTAkFVMQswCQYD
|
||||
VQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEOMAwGA1UECxMFRWFy
|
||||
dGgxFTATBgNVBAMMDEVhcnRoX1ZQTl9DQTEoMCYGCSqGSIb3DQEJARYZaW50ZXJu
|
||||
YWxAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0
|
||||
aWZpY2F0ZRcNMTcwOTAzMDE0MjAwWhcNMTcxMDAzMDE0MjAwWjCBhzBBAggigeQN
|
||||
UjXbIRcNMTYwNzIzMDMwMDQ3WjAmMBgGA1UdGAQRGA8yMDE2MDcyMzAzMDAwMFow
|
||||
CgYDVR0VBAMKAQQwQgIJAM2h1w1EQ5qtFw0xNjA3MjMwNTU2MjRaMCYwGAYDVR0Y
|
||||
BBEYDzIwMTYwNzIzMDU1NjAwWjAKBgNVHRUEAwoBBaAOMAwwCgYDVR0UBAMCAQUw
|
||||
DQYJKoZIhvcNAQELBQADggIBABLLdl2PjX5MlxZ6fhkmKsU47xlpWdG4UUKc2Mcb
|
||||
ioi8HJKH4RgLOhVBEmtV91RsndCNf3TMpAzDH5zySCNhIZk5ZT1m3yk2TEMse34a
|
||||
qTWzfEpCNGPbhDTz2Eu553LZKg8Vem0OEKHjKp0i0vOXG7TN/9SHBs5pOUDYX3Z/
|
||||
iK6Xt6wQ6Ajl4x8mfArivwmVVK0ZIQJpHSSHhv29HzzJpgu8ZuI16ooomGrnEnlF
|
||||
Sv3tNo0UleARmzKd+dlTsSfPq/gmcX1J3bgTB2QqQTyhQRewn5TC74pJ5CC3wGeW
|
||||
wzsI/xovSKWwgrWSKTfaKwAhnamJQ8Ya96zEgPnc+k4UJ0IMNdY47/3OlQIvtCmG
|
||||
D16D6j4T9M6TbdBKSLdNTPZXXU1jXTc5qIUccBAZqJSxOHqp15JTx5x6mVqhx6AT
|
||||
dmL+ydm8UjjG/1kc//qjuXkDc7WoklTPd6vGawBsezoS8T4+okrFIG9domcFVKrL
|
||||
D+JyMe2ZkJpRferxdVOSh773M/mNBI430aL3TKY6oPhvwx7gmpCPX3trUv+gi/Om
|
||||
9f7mHZFk/qUs3pomAffaZzeX9g3+sktMY2l3cTYqsAOZGrUDbFjks+LGbCmHhnVm
|
||||
KTl7QRbEnte2Bpz4GeN0XAf9HntA2A0yfoOWgsH6FEkh8H839fBAErvzpqD0qCDV
|
||||
xY2/
|
||||
-----END X509 CRL-----
|
@ -1,26 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIEWTCCAkECAQEwDQYJKoZIhvcNAQELBQAwgaoxCzAJBgNVBAYTAkFVMQswCQYD
|
||||
VQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEMMAoGA1UECxMDTkZD
|
||||
MRQwEgYDVQQDDAtORkNfUm9vdF9DQTErMCkGCSqGSIb3DQEJARYcaGVscGRlc2tA
|
||||
bm9mdXNzY29tcHV0aW5nLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0
|
||||
aWZpY2F0ZRcNMTgwODA1MDEyNzAwWhcNMTgxMDA0MDEyNzAwWjCCAVAwQQIIDa1c
|
||||
UsioJyoXDTE1MTAzMTA0MzkxN1owJjAYBgNVHRgEERgPMjAxNTEwMzEwNDM5MDBa
|
||||
MAoGA1UdFQQDCgEEMEECCBIR9spKIlyLFw0xNjAxMDkwMDM1NTNaMCYwGAYDVR0Y
|
||||
BBEYDzIwMTYwMTA5MDAzNTAwWjAKBgNVHRUEAwoBBTBBAghovaIOdTUkJhcNMTUx
|
||||
MDMxMDQ0NTM0WjAmMBgGA1UdGAQRGA8yMDE1MTAzMTA0NDUwMFowCgYDVR0VBAMK
|
||||
AQQwQQIIdCmC/xpJTM0XDTE1MTAzMTA0NDMxOFowJjAYBgNVHRgEERgPMjAxNTEw
|
||||
MzEwNDQzMDBaMAoGA1UdFQQDCgEEMEICCQD9Keh+217BPhcNMTUxMDMxMDQzMTE1
|
||||
WjAmMBgGA1UdGAQRGA8yMDE1MTAzMTA0MzEwMFowCgYDVR0VBAMKAQWgDjAMMAoG
|
||||
A1UdFAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAjjuEFC9NS8IatH6V+bXVj+NuA
|
||||
Y6BkDT/u4uOvKecLZjM8OuSAlj+yVPEp5d0QKFGEN/1fmkLyqRK/0vhoLNufwnzL
|
||||
eM14l/aZpTudl8dVf2EeJa2i/whUP9AOf8QH4UQxtWzbmPzcrZbfJdrRe2L8g8xl
|
||||
yyMi/htHszutqIP1ZuwhYFGFHJZNiUHwm/LV8Ht0ZnI05YrqsMY9VFVXOT46qbMH
|
||||
CaL/jx0xd4+nrXcbTSD1aKlagkY/7nHh5JIyK5f0nWiZ6uIc1ZLrXjgvT3mG9oWC
|
||||
fImXfeK/dD0Q8s67Tmcb8EyhuYPabb/h/Vw6IpUAGg5KxjW+fLfpeqS5sivDzp65
|
||||
lkgsYv4PCe7C2lW/sapBVx47ISXIaNLNR0gTA8dE5mTbHIIwaa4rDL3jvtmPkNa5
|
||||
qv/0HXH0oRYKjEQLFgCI77ZNU6bCXPmpCxiD+2s3+fEHxRHYjVn7Tyk0Qdeqrllu
|
||||
8qKA18tP5icF0PXv7sVouXdHCBK4nLfgzHfaLr2zhVfO154evKzLDS1GmDcytCl+
|
||||
MFhA1RM94xfwOxPwiHJ/e4MpdJ3BE7lxRiyVoBQiV0xwP0clhoCadBMvvDvGnkGc
|
||||
AZ7UQDK5YhXh06Pv+ByX3xxE9Vp7Bo/teFxIwYPVH2BmPAowVoMzCLkj36yv1keC
|
||||
laDVPqeP/31+efeFsA==
|
||||
-----END X509 CRL-----
|
@ -1,22 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIDtzCCAZ8CAQEwDQYJKoZIhvcNAQELBQAwgdkxCzAJBgNVBAYTAkFVMRYwFAYD
|
||||
VQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3BlY2lmaWVkMRYwFAYD
|
||||
VQQKEw1OZXR3b3JrZWQgV2ViMRswGQYDVQQLExJOV1cgUGVnYXN1cyBWUE4gQ0Ex
|
||||
FzAVBgNVBAMTDlBlZ2FzdXMgVlBOIENBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5h
|
||||
bEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRp
|
||||
ZmljYXRlFw0xNTEwMjUwMDAwMDBaFw0xNTExMjMyMzU5NTlaMIGAMDoCAQoXDTE1
|
||||
MTAyNTAyMDAxMVowJjAYBgNVHRgEERgPMjAxNTEwMjUwMjAwMDBaMAoGA1UdFQQD
|
||||
CgEJMEICCQC1TE15xf9+yxcNMTUxMDI1MDIwMDE4WjAmMBgGA1UdGAQRGA8yMDE1
|
||||
MTAyNTAyMDAwMFowCgYDVR0VBAMKAQmgDjAMMAoGA1UdFAQDAgEBMA0GCSqGSIb3
|
||||
DQEBCwUAA4ICAQA7ZZfRgAi2b38IqxXLsINcyczWQ8/y8SKVv4xlu0SRkfWBVYF5
|
||||
pqD5lIjwZNKIqIpUzq4AYqV3u7GnkPfQ7WDIMveZZwp6DL2Jc0cjz1gNsU0ezyxt
|
||||
V0JQLppUbH/x3xBR/+NszvZaCVYFOyrlUFSYO06CqXWRgpnJuhk0vJQygU6C9xcO
|
||||
OzM7JlgI0NT/O3IDPC4gh/TPFdKnKVfcNpFimwJ91w1eMvTkpys2BvrKk0/bAuQz
|
||||
PVtCx45kqCyP8WiMb0PZmQKAOdIREHb4sGS2dPocBARYxwFYDwgQ8g3BqnHCLM87
|
||||
Og1+b3QACi2PZ4e3yV8pqJhXnix97N036WkVV11J9VLdOUIPzkXsDFMmkYh4z9Vg
|
||||
GOA5lzRTXYJVk7E7t4BDT7cu6y8ugW2BsLMlh0XrGTDwNhzJ8GBYWAkG2t+H+N/m
|
||||
hLsBqt0tn/8XQvkize7qauado1CaouWMHWwA84ZX811vXW29m3VmYxQl5Q3oJWul
|
||||
Rp1M9xISRVzpRx6GuzVPzN9LEfI4ZvSvHLUva9i6A08hj5aUYDvgtXmyaC+PaxBs
|
||||
SfX06CeylzOf4hm3hubcGu+5Ynke7ZtpECSGxr5I/72oC6zukkiv9i6FXC1oGxuo
|
||||
pBBjuoeG2MmO8HdDKE0T5XqkqmQv7Um4clDYRInMCACSthtW8U0ry7Wamw==
|
||||
-----END X509 CRL-----
|
@ -1,29 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIE5zCCAs8CAQEwDQYJKoZIhvcNAQELBQAwgbAxCzAJBgNVBAYTAkFVMQswCQYD
|
||||
VQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEMMAoGA1UECxMDTldX
|
||||
MRQwEgYDVQQDDAtOV1dfUm9vdF9DQTExMC8GCSqGSIb3DQEJARYiam9uYXRob24u
|
||||
bG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdl
|
||||
YiBDZXJ0aWZpY2F0ZRcNMTgwMjA1MDQ1OTAwWhcNMjAwODA1MDQ1OTAwWjCCAdgw
|
||||
PwIGIBUQJxYnFw0xNTEwMjcwNzQ0NTZaMCYwGAYDVR0YBBEYDzIwMTUxMDI3MDc0
|
||||
NDAwWjAKBgNVHRUEAwoBBDBBAghaYikTObwI4BcNMTUxMDI3MDcxNTAwWjAmMBgG
|
||||
A1UdGAQRGA8yMDE1MTAyNzA3MTQwMFowCgYDVR0VBAMKAQQwQgIJAMXtJgEvbEgG
|
||||
Fw0xNzEyMjEyMzQ2NDFaMCYwGAYDVR0YBBEYDzIwMTcxMjIxMjM0NjAwWjAKBgNV
|
||||
HRUEAwoBBDBCAgkAxe0mAS9sSAcXDTE3MTIyMjAwMDUxMVowJjAYBgNVHRgEERgP
|
||||
MjAxNzEyMjIwMDA1MDBaMAoGA1UdFQQDCgEEMEICCQDF7SYBL2xICBcNMTcxMjIy
|
||||
MDE0OTQ2WjAmMBgGA1UdGAQRGA8yMDE3MTIyMjAxNDkwMFowCgYDVR0VBAMKAQQw
|
||||
QgIJAMXtJgEvbEgKFw0xODAxMDUwNTA3MzlaMCYwGAYDVR0YBBEYDzIwMTgwMTA1
|
||||
MDUwNzAwWjAKBgNVHRUEAwoBBDBCAgkA1bayDE6HOc0XDTE1MTAyNzA3MTAwNlow
|
||||
JjAYBgNVHRgEERgPMjAxNTEwMjcwNzEwMDBaMAoGA1UdFQQDCgEEoA4wDDAKBgNV
|
||||
HRQEAwIBCzANBgkqhkiG9w0BAQsFAAOCAgEAJbVR23uwFuOi4fCQHn/0gLm24PjI
|
||||
xkXeim/Vep9vc3LCH1+r73O3Pf5kWKBmklul9MpywDAyPiV5wU6k2x8EMSKLEe+n
|
||||
IRE+32JKPSGx2nluSn2IUonQKF+ZtG0hW367+D3HShdinzNuUbqfGGlAjZwmgKem
|
||||
zydh7VSkvBxQersvXknPvoIjbTOfw0l10icE4WwbY5PtHdz+SYUH86UrVHPH5MG3
|
||||
tJEMnmZfbyGAs6vYm/NDD4cF4tIF4ziId7nmPBUf7dnFlw75xRUjyem397AnUOez
|
||||
zS+K/j9u3V/um8jfaKkdXFfT8DOaiFv9YBsdwOTsgDFgKTalgWHbibOH2wk/ZrM6
|
||||
k+hfpgoE5/CtZyKKD/s5SuYcBYEfYY1M2g/QzU7RpScjPz+yvIBoOhitk+urHBBq
|
||||
Cx3iM9HW1vNq8trJomeFkqGFSiN+Uv4hq51BThljLxaMoga2tE4hdeO3kIr2Ntv/
|
||||
acoTKbljxX2YxCvkZXombmX2wecORO3uS+TNKolgzU7FE8vRI6E7yC+jjdDpksYL
|
||||
wVL7pa0kL2YtagpmOLFCeSlQ/iWlQMUSqBLbpyEWX/JvgVghUWcwn0n65UEr+zyQ
|
||||
LzhaXpc2MNVRoskN1ONSCCJW34x2IBzG6+Pk/dKKKAna4340zG5txyKKl5jLkh5/
|
||||
YJP4oXLy576q/30=
|
||||
-----END X509 CRL-----
|
@ -1,29 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIFDDCCAvQCAQEwDQYJKoZIhvcNAQEFBQAwgdYxCzAJBgNVBAYTAkFVMRYwFAYD
|
||||
VQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3BlY2lmaWVkMRYwFAYD
|
||||
VQQKEw1OZXR3b3JrZWQgV2ViMRMwEQYDVQQLEwpOV1cgVlBOIENBMRMwEQYDVQQD
|
||||
EwpOV1cgVlBOIENBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBu
|
||||
ZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmlj
|
||||
YXRlFw0xNTA2MDUxMDU3MDBaFw0xNTA3MDUxMDU3MDBaMIIB1zBAAghGwdK73FPg
|
||||
2hcNMTMxMjIzMDgzMjI5WjAlMAkGA1UdFQQCCgAwGAYDVR0YBBEYDzIwMTQwMjAx
|
||||
MjM1NTUwWjBAAghL9H8/00JjmxcNMTMxMjI0MDA0NjQ5WjAlMAkGA1UdFQQCCgAw
|
||||
GAYDVR0YBBEYDzIwMTQwMjAxMjM1NTM1WjBCAgkAgqnPP+Wf1YkXDTE1MDIwNzAx
|
||||
MDgyNlowJjAKBgNVHRUEAwoBBDAYBgNVHRgEERgPMjAxNTAyMDcwMTA4MDBaMEIC
|
||||
CQCF4C80Bu+WxhcNMTUwMjA3MDEwODAyWjAmMAoGA1UdFQQDCgEEMBgGA1UdGAQR
|
||||
GA8yMDE1MDIwNzAxMDcwMFowQgIJAIdWbI4ErRreFw0xNTAyMDcwMTA3MDdaMCYw
|
||||
CgYDVR0VBAMKAQQwGAYDVR0YBBEYDzIwMTUwMjA3MDEwNjAwWjBBAgkAtUQpLTey
|
||||
hp8XDTEzMTIyNDAwNDUwNlowJTAJBgNVHRUEAgoAMBgGA1UdGAQRGA8yMDE0MDIw
|
||||
MTIzNTU1MFowQgIJAMpeaX2ilH7BFw0xNTAyMDcwMTA2NTNaMCYwCgYDVR0VBAMK
|
||||
AQQwGAYDVR0YBBEYDzIwMTUwMjA3MDEwNjAwWqAOMAwwCgYDVR0UBAMCAQ8wDQYJ
|
||||
KoZIhvcNAQEFBQADggIBABUTNIxIswUIcEKCDyF4rQFtB9YLKv4jX5JuR3WAdh+k
|
||||
R3cTDeDut34tvN9WMj9ukqXYcBMceqlVSjGEw2S5yCF9GFfZuwkBKoGw+yqX9obz
|
||||
11GM4+mOGeJzPsWLEMhFjcl53OWIVhkcyko6uVPrQ88JlTJWrligBE8CYsIcDpdu
|
||||
9RyPuo2lzvQ0/cS6FkENnVlp0ILFIV9YExdb/ot486XRmk4EjTwqawea58BwY4+k
|
||||
0g9okPIilDzE7nScvBIW3S1WRY2WCRrLccfJ3x0oCPDbVYxseKJ/SPCmar8KvM5A
|
||||
y7hAhOpQ4nZGATYXcvRyA0pPagKafIWpXpoQiu7kMn38Dlmaeqp3qL7sfLUjj/QJ
|
||||
UVovISWkIQx9RTwx8CixCABJnLXYeiiXycsPc4rvcoxNqU9FdDwlK+kfU8tQkCm6
|
||||
QJI4o5vH4s1cVFcjBnhJWRmK3gARKltKkgkGVxFHedZJ3CziwGHPFA0gySZEzPNt
|
||||
jC1g6auCROVTFQKoQ+nxreIF76ia0siWlYCyS022f4mOaBaR9lzSuNUH5YnF3h8u
|
||||
ZO+lwLpGQ6NPocg3kEOHrlQklw4KMx3ZJha7G2nz5DWTMt4jTFGKU0iLabYkU+HR
|
||||
IgKOdOCqWWCdFuXxOlneCIkagWZXWpPXBHMSBw8IPIyp9ts2o8dzGclErBWh96bz
|
||||
-----END X509 CRL-----
|
@ -1,32 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIFmzCCA4MCAQEwDQYJKoZIhvcNAQELBQAwgbAxCzAJBgNVBAYTAkFVMQswCQYD
|
||||
VQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEMMAoGA1UECxMDTldX
|
||||
MRQwEgYDVQQDDAtOV1dfUm9vdF9DQTExMC8GCSqGSIb3DQEJARYiam9uYXRob24u
|
||||
bG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdl
|
||||
YiBDZXJ0aWZpY2F0ZRcNMTgwODA1MDEyODAwWhcNMTgxMDA0MDEyODAwWjCCAoww
|
||||
PwIGIBUQJxYnFw0xNTEwMjcwNzQ0NTZaMCYwGAYDVR0YBBEYDzIwMTUxMDI3MDc0
|
||||
NDAwWjAKBgNVHRUEAwoBBDBBAghaYikTObwI4BcNMTUxMDI3MDcxNTAwWjAmMBgG
|
||||
A1UdGAQRGA8yMDE1MTAyNzA3MTQwMFowCgYDVR0VBAMKAQQwQgIJAMXtJgEvbEgG
|
||||
Fw0xNzEyMjEyMzQ2NDFaMCYwGAYDVR0YBBEYDzIwMTcxMjIxMjM0NjAwWjAKBgNV
|
||||
HRUEAwoBBDBCAgkAxe0mAS9sSAcXDTE3MTIyMjAwMDUxMVowJjAYBgNVHRgEERgP
|
||||
MjAxNzEyMjIwMDA1MDBaMAoGA1UdFQQDCgEEMEICCQDF7SYBL2xICBcNMTgwNDA0
|
||||
MDExMTExWjAmMBgGA1UdGAQRGA8yMDE4MDQwNDAxMTEwMFowCgYDVR0VBAMKAQQw
|
||||
NgIJAMXtJgEvbEgJFw0xODA0MDMwNzU4MDdaMBowGAYDVR0YBBEYDzIwMTgwNDAz
|
||||
MDc1ODAwWjBCAgkAxe0mAS9sSAoXDTE4MDEwNTA1MDczOVowJjAYBgNVHRgEERgP
|
||||
MjAxODAxMDUwNTA3MDBaMAoGA1UdFQQDCgEEMDYCCQDF7SYBL2xIDRcNMTgwNDA0
|
||||
MDA1ODM4WjAaMBgGA1UdGAQRGA8yMDE4MDQwNDAwNTgwMFowQgIJAMXtJgEvbEgO
|
||||
Fw0xODA0MDQwMTExMDBaMCYwGAYDVR0YBBEYDzIwMTgwNDA0MDExMDAwWjAKBgNV
|
||||
HRUEAwoBBDBCAgkA1bayDE6HOc0XDTE1MTAyNzA3MTAwNlowJjAYBgNVHRgEERgP
|
||||
MjAxNTEwMjcwNzEwMDBaMAoGA1UdFQQDCgEEoA4wDDAKBgNVHRQEAwIBDzANBgkq
|
||||
hkiG9w0BAQsFAAOCAgEAqAPkorhG9ASJ85EebuhVSCQ2FVtceMvbzF7TW9cNcifk
|
||||
pgsfHZOSHWXprmDmDv1KVbjeTIyYUufycyfF4u9g6DMGdH6N8ScV+PItUcyTAy21
|
||||
ZqHxdJxdYtaxcJlkHnrAhOLs4KhwTUAkdivZZUZKnFQHntmZA+hIkvDiVZQ3IP05
|
||||
frf+1UzOZX3MftQLGQtUZ5fM2JHzPwO07eUNjiD3nwcX/N8YcyrxHaZG7aTYUEEq
|
||||
7QIw10ghRrUCZw8TnL5grQYJdmsA8aI152tI+eevjgdECSbt+6uQpnPa/Z0pyRug
|
||||
ahtY0EJUrw/2VPvm4T8aHVTe/E/EkWccyiJFBs9Qe6VOs/uWx572O8q9eOzYOZoY
|
||||
m2YmrDlvqBD5km45JrDfjS1mRRPAHeRyt5JIB9Jf2zFBJUU5SHB+KZP02NvoxEOK
|
||||
/sRPKKZP/54dRhAgCUhAjw9knLjChWlL4RpLn6Vf08saL08Tfh5hbWMsnCGjesyf
|
||||
Cf3aqisHc/5dxCqfKKtn/RjGrXSHsh/y+TtvYP9ssVQdCFc3qvVpxwhex1fms4Mp
|
||||
THCm2JQlZMaMALPgoeaVyTX3K47/oBQaMh7DcN4Eq9j89OpUNHwhXU1bD5CWM2UY
|
||||
BUu5+2wIAj/3Ifuo4JTcOnhCBwuF2sSATiRV7Y3QjgKRmqhuzMBUNRKw3Cc2Z48=
|
||||
-----END X509 CRL-----
|
@ -1,19 +0,0 @@
|
||||
-----BEGIN X509 CRL-----
|
||||
MIIC/TCB5gIBATANBgkqhkiG9w0BAQsFADCBozELMAkGA1UEBhMCQVUxCzAJBgNV
|
||||
BAgTAk5BMQswCQYDVQQHEwJOQTEMMAoGA1UEChMDTldXMRAwDgYDVQQLEwdQZWdh
|
||||
c3VzMRcwFQYDVQQDDA5QZWdhc3VzX1ZQTl9DQTEoMCYGCSqGSIb3DQEJARYZaW50
|
||||
ZXJuYWxAbmV0d29ya2Vkd2ViLmNvbTEXMBUGA1UEDQwOUGVnYXN1c19WUE5fQ0EX
|
||||
DTE1MTAzMTA1MTEwMFoXDTE1MTEzMDA1MTEwMFqgDjAMMAoGA1UdFAQDAgECMA0G
|
||||
CSqGSIb3DQEBCwUAA4ICAQCxo2KoBQ+1IP+ZuiqG78QhjVRLepmxiHzGUw6gkzIz
|
||||
kkCyNSc/V0ZfdaRtWYZ23A7WjNSvdQuwhKp5Nq8SlCVcH0ymb0nvifT4w7TOQxFf
|
||||
0FpK76hYD1Ozx71/prI9q1QyRjD9yqMmxYObAQphrGJVZ8ljpKUYLOvxg6NMO8Ns
|
||||
ZYLlryLYf0+MdID2WejW9KFgBSg/bi49UHxJw4hGnXx98IAVSbnqYmxejiEjwbLQ
|
||||
5C8cgozEn9RUMSdWzL9d2IUOt9ppKfy7VgOH/2io0IMb28RxD/b3RdCCNNelSKFE
|
||||
DJrSuOwhvP32u71CYN/6GEcg3yHif5d88yKnmPkC/iwr79oLe0dQh0SRsO037sUE
|
||||
G53sA+9N69EtwqwXjPFjruns3ngtJye76gJksceI9JJB9Q5qfShCSqVviX5iCcMU
|
||||
tNv5mYtS6yOIjUgPpvBOSuUPwsiegGE6Zgvz2EMgutaxnDdgbkvO/8gEy154kft0
|
||||
1l8W+/ueUEAZPTifoSMWr8Up6PFKAdCO46XSvWEuQ1NcZeWvq1EioBT1U2M65hB3
|
||||
bKtRFWUkCxQJWxye/eLw+SGGGwVpXy3P7sueUWiXFSmtAbfXuWej9LlMju5FUKXY
|
||||
34K6RlI/GkPhwfWN5SAfYnX3qOF3IUiTAxchCQZ2Z6JR1dIEShHX4Ur4FdW45lXM
|
||||
aw==
|
||||
-----END X509 CRL-----
|
@ -1,44 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHrTCCBZWgAwIBAgIJAIF057Inea3QMA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
|
||||
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
|
||||
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
|
||||
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
|
||||
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
|
||||
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
|
||||
EwJOQTEMMAoGA1UEChMDTldXMQ4wDAYDVQQLEwVFYXJ0aDEVMBMGA1UEAwwMRWFy
|
||||
dGhfVlBOX0NBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5hbEBuZXR3b3JrZWR3ZWIu
|
||||
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3H82oeWzt5ZBoyelJhBjp8WrjE5yrR9+
|
||||
/xn118D/WXGeLMPixXmjNe9Ik0tg824DBoc3/ZHOtt8Knk32LZZhF5BF1B5H8Xgg
|
||||
zx46e23tufVzUWPt+tZjV35//T/PikYUZUdCTYbYZFOuR0VwOiJBtCu0TEwQDaLe
|
||||
bT9YJmAiSACKRUAT5WJwmP8mxuwW0qL5gns3Sfldq1Fvqjwa/WZQfI1uvV0GeHdd
|
||||
EWiH5sTe6wtIHjXUwV/YvCsDcqk3e/Jl77QgiYwduovx/jKRCNtpBVH9yA5wsdRk
|
||||
cPhAEdF8SK/8Ti/8SOChYePmIlIpbqZSO5lxyGJB+JP6Lq5gFSLX2xkTx7Z+GrlG
|
||||
hiq7++PyI5S9wOsxzb+yggiX9O09n8L39cQ8t6F48AXEZpdE8jdp+jbrLUhFJ33N
|
||||
HFShms92VGmEL/Hp+o4jzLkKjj8JiZtQVEfTQWiCpU2Iy8SE2soFzx2XrGS4QNkG
|
||||
5Qes39dfJtPzzugXgO9LjeRECfH1o5j5gr8MfV7S0Pa9KiamTRM+qCjyLM6FgboY
|
||||
XtqvGNhjZPspZCL2BePNvXMOuWQY80W2NYwpcmtQWd9NXRTOMCkBSYbaTX2gny0j
|
||||
sAG8OlKz/oNjEFhuS9DYhaB2d9i/7Ye8zFGNxhX/zSXrwSFYB7ew9unACk+UMW4m
|
||||
7oX3ZkaBx50CAwEAAaOCAcwwggHIMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
||||
FHofT+JsVUY8oAVJR3ijj0MxpFq8MIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
|
||||
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
|
||||
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
|
||||
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
|
||||
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
|
||||
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQwYDVR0fBDwwOjA4oDagNIYyaHR0
|
||||
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML0VhcnRoX1ZQTl9DQS5jcmww
|
||||
SQYIKwYBBQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0
|
||||
aW5nLmNvbS9DQS9OV1dfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
|
||||
CSqGSIb3DQEBCwUAA4ICAQA/Esj2AP0oM51YYuPhE1Mmknkx6Xxnn49lZim9BJEr
|
||||
PMe5+M1wxlXnMklHl0AEyf59W1V6PCvlONonsOOZg/Dncm5w4AYdjeUSUxGMr6lw
|
||||
kVViKkPApv1NBzw3kmJDL0CazTR3K+nl4mB9BTbOSnvGX7QUcZZ92mDxqBAiTaRb
|
||||
rk8OzDW4+Lla51hSsBYuQrmRtx1jT/OZxLL6HDfM53HTLMvbFMndC2pnZL78owtp
|
||||
q/V9zyyWC2fjDFGeMAv/7/0BuwfP3Ovir5OIv7C8YMrfcshgZhdt5E4mKX02TENT
|
||||
x0tfNV/T/TeQGjdX85L4uYnViAA+rAlVRjE8Y0rZInnhDahI5ptpUUjSUvF0D3k1
|
||||
ZTXvCqvev4As7k0ci4mCO15LQLcQWOrirzARSR4l1OFWmlxd3zy8CBgjN8RgV0r+
|
||||
qPp1DWO/5hqKgVoBUKKAWX7cVu1FZYlxjiKqYsZHkwq5vy7ibHCSipufCWCVdU1X
|
||||
dkhXhbEaS4FIA1epQNhH+GPyMxVU5uTTieSx0uvEbKvJ9UmLIGQLxBsWSgfmUKjc
|
||||
xST6RlvTmKywV3ansfmYw84IxSZylpm8gT8+r5iod7lHXre1f+hESmE4lQvQ51eM
|
||||
f3RjNf5W+uGtaPTGzZRN+b//kGs1pmn6Mtyr94DQCHp3LJCAVoHpFqy8PqjdlLNo
|
||||
Yg==
|
||||
-----END CERTIFICATE-----
|
@ -1,35 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGFjCCBP6gAwIBAgIIB+I42RMLhBgwDQYJKoZIhvcNAQEFBQAwgdgxCzAJBgNV
|
||||
BAYTAkFVMRYwFAYDVQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3Bl
|
||||
Y2lmaWVkMRYwFAYDVQQKEw1OZXR3b3JrZWQgV2ViMRQwEgYDVQQLEwtOV1cgUm9v
|
||||
dCBDQTEUMBIGA1UEAxMLTldXIFJvb3QgQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0
|
||||
aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtl
|
||||
ZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTMxMjIzMDAwMDAwWhcNMTgxMjIyMjM1OTU5
|
||||
WjCB2DELMAkGA1UEBhMCQVUxFjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNV
|
||||
BAcTDU5vdCBTcGVjaWZpZWQxFjAUBgNVBAoTDU5ldHdvcmtlZCBXZWIxFDASBgNV
|
||||
BAsTC05XVyBSb290IENBMRQwEgYDVQQDEwtORkMgUm9vdCBDQTExMC8GCSqGSIb3
|
||||
DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UE
|
||||
DRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZIhvcNAQEBBQAD
|
||||
ggIPADCCAgoCggIBALrz75sW0VR2qqi6UAtk2z/0GpLxlPsgGawLePfNZXvdYHcB
|
||||
1JzPpAyCZ+PF4VIHz17tmdQFyN+msd2W6Op8SI5CW3MDHwA5HoAGcm6vx+xp95UX
|
||||
96+fbqthL3UPNuOOW3EWXEb3DsF2wtrNXdhq4nyOMGrioe0fQvo8ij7Qg/eiFJSu
|
||||
Sg3zPssa5AjsJ3P4px9kQusm2tkN9oH/1AZmE3CJXkVzqzEPbmnUzt/LD2I4Hd86
|
||||
KweNsSiBeZwrxWN7nQUla+rWE7Al+orLLnQbj14uz5Oeh+y2VnVmXxec23mebUcl
|
||||
Pxy9GhxnKMF2wp6//nJs/soJKt/KEdWaMU4oW1m/rkJejjVQSvBvO89hL+4hi1iK
|
||||
aoxXRnNnX6V5naXPAjlOXzDqZSnmDPk31gWL7uy7eeNY/+dCYKNk/ikstGAhfn0y
|
||||
k70tUAguBf3zAewRL8JM05+HrYGdhCv/qFb+VrZEf0BgnSvq4XpVszNYJY+JePbW
|
||||
smOw0/569aptCHaGtpuuvDO5F5GmtvN10NWYXRJx98txAT4SnfDHuxp/kbqlgXQF
|
||||
Q+I38vVYRWfDOoakxZYESvGNlXZ12aY9RiMKp4191Los9yH16TXoERvg8Q1a1QEQ
|
||||
l+fwM1iTg3RJ1WowCm6QvsU5NqVjrx0GzXCTxkd9OCjyiVwl64X9sDjYZhe3AgMB
|
||||
AAGjgeEwgd4wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwQAYDVR0f
|
||||
BDkwNzA1oDOgMYYvaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05X
|
||||
V1Jvb3RDQS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzAChitodHRwOi8v
|
||||
bm9mdXNzY29tcHV0aW5nLmNvbS9DQS9OV1dSb290Q0EuY3J0MB0GA1UdDgQWBBR6
|
||||
prE+wkxZU+lAqwU04QYbfTVQxjARBglghkgBhvhCAQEEBAMCBkAwDQYJKoZIhvcN
|
||||
AQEFBQADggEBABV0Uw7kioLo/bUf9Bkcjq08v6zAvnjfp22u+P3USDWvjdlyBM1F
|
||||
J39TOf2tAvZJ+33HzDanNL1oDw57IVw7QqIasLJRINa3gojUml6SaOT/DF0HpcJO
|
||||
LN1e1x3oaQHHw5cljCFue4PRdja2z7EgsPY2qZdIdnN5CuaUI29qke8MD4cX0Ezu
|
||||
KtCzkL8TWsc+QKZYodNjSwviOBIEOar1ayGAGfarqszDKHk3jG8W390BJBVtpUgL
|
||||
zOyyv4SmKu+Zu090nAB91ThYYA3vnPV3Ar+tAKl0taSWNQh55jrwSA9BhrFGaRxb
|
||||
huJWadC1O7ILrs72kIExzELUSDcqOhc1Nuk=
|
||||
-----END CERTIFICATE-----
|
@ -1,43 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHrDCCBZSgAwIBAgIJAMXtJgEvbEf7MA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
|
||||
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
|
||||
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
|
||||
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
|
||||
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
|
||||
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
|
||||
EwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNORkMxFDASBgNVBAMMC05GQ19S
|
||||
b290X0NBMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21wdXRpbmcu
|
||||
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtK+L7NLT6f3c0bbmSPAWTtAkPO3W3Myv
|
||||
GlhCPUaNp4Up+/p50CiuBVrZ9hGAJQK1y+7yrmDgM+mTvlnY/m41BLtq8YYcT3Dk
|
||||
CgloEGhaUD/vdTSD6ZYAF1u8yNvueAJ+NybCpEDaDSBxbi4aJnKrcvx6j6T+YG3R
|
||||
ajHpDzQjNH89S9IzsTIrQsOM8e8stVEkjZld78TvtGc/Vl/p/QMAL8XpMJ1KBOWd
|
||||
Wmk9v/x9JiBDrdJIMFl/Zdeb9VMjbabNqjLV8uCz6Iv2E3Rii+xYghcRPF+Y1zD7
|
||||
gcOy6aaLmITFbusf1cuzZUlY/XzYs/3KNiQwENS68Mpd0v4NaPL21sip0Zys/Jbu
|
||||
mwQ8X3RQLWvlDh6l+Z3TKM6QZK1oPB2a51IsNwGBFgOMr4JbEDwlbA1QcyIzdoE8
|
||||
i/CGIKUPoaYOmmAxMuOKS1pjO+BeiQ7i+jDMX4Yip3wIGViXm6oK5uzPUUC9YeOn
|
||||
Jti9iFb/InNToaEFaNKNj8ihE9PvWWmty85J0rxFpHUMth+bANCWSxUDvzmfhAgA
|
||||
NQepApTdArzguh2t2F4CANNSeJU6gze40XMd4H3dggVVohs5GC3Aj/RbFiJADtmo
|
||||
A8a1T8sobrDKj0veapEw/eRzqlUW8z9dBLFk1+MNGOWz6p3TjoWxdjE8loShD90Z
|
||||
KeqasY/t2g0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
||||
FMcOta68Bn/QtEwcLCCyoJvOSmSNMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
|
||||
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
|
||||
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
|
||||
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
|
||||
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
|
||||
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQgYDVR0fBDswOTA3oDWgM4YxaHR0
|
||||
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJ
|
||||
BggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRp
|
||||
bmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJ
|
||||
KoZIhvcNAQELBQADggIBAJQM7UeDaXM0/jl1PLJ/UUFGmBhCy3pDLc2JIeRifLTo
|
||||
NzJ0RmBzF6OQGriXXKiKmZKTAwFvuYjks1Hm/hjFSTbhmNFsU3sx8qXe0h4xj9Op
|
||||
bvDDJaiXl+HIEl2BQkJ6Rnr7b56M6Y+W6cAtuCwQkZGAO1ip0pF7WbPv1OFaL1pN
|
||||
/OCe8wiXDIkyH87GFESsQG7VypAp8u5vlKkxFeISCo7FYRhfhEV0hv62gaWb0zjE
|
||||
QcW6Pgnj4KHfDKThoWwWUC+5kJuGd81dWmbgJ1+AUc5kNHl7f3w8yr6YkM24yji8
|
||||
HSpQ0yZzN3kK8JN0E+DJk0OVMD5aiBQjb+UkMIVwBWnoCixNAv0ni51eyrCJ49va
|
||||
E57RTYfPCLJurHpm+kP66V9vSKNiyBOwbmf5KSWeyG3p6YZ+ywSvypsdw21eXpOf
|
||||
Uu1GYA+UDoZE7g8KcCwM9H2T12Da8mHRlXJubeY0YrInlc5hQwgllzzYqbzrh15n
|
||||
2YU6OvfInyXwjPc6m5Ktn+lObOqFrTYBDIf5spaC5MJuMNcMIzloFtHjgStAQxds
|
||||
CKUIyVWJx/bVAdc42VcQVNU/G9df5Q8+XLJknetfa5ZU3drob2fdi4O6SwowOvv4
|
||||
UjGxZKIJBvI9J/D0Sda8vh96NJ5Q1VTW+V9pseG+r6sEb2YXt601jNxifjOY0Fiu
|
||||
-----END CERTIFICATE-----
|
@ -1,29 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE3TCCA8WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCB2DELMAkGA1UEBhMCQVUx
|
||||
FjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNVBAcTDU5vdCBTcGVjaWZpZWQx
|
||||
FjAUBgNVBAoTDU5ldHdvcmtlZCBXZWIxFDASBgNVBAsTC05XVyBSb290IENBMRQw
|
||||
EgYDVQQDEwtOV1cgUm9vdCBDQTExMC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9j
|
||||
a3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBD
|
||||
ZXJ0aWZpY2F0ZTAeFw0xMzEyMjMwNTA1MDBaFw0yMzEyMjMwNTA1MDBaMIHYMQsw
|
||||
CQYDVQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UEBxMNTm90
|
||||
IFNwZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjEUMBIGA1UECxMLTldX
|
||||
IFJvb3QgQ0ExFDASBgNVBAMTC05XVyBSb290IENBMTEwLwYJKoZIhvcNAQkBFiJq
|
||||
b25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3
|
||||
b3JrZWQgV2ViIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||
CgKCAQEAyQqO2ehMgJt7/smhusiPQn183w//y9ZE6IZ8ylVsQ45HEI8svadYbKay
|
||||
Vj4XzOl6h91asi3mGKllRq1fj7/Tekid641ew1Emt0yMbMbxCj7NW7jM3UeTNP4+
|
||||
0OtNjXKGI6A2/ciS4lQoSC7TQc37L5tr3qN6TzbtxLKfvyOIPczDbDBBtfAicw70
|
||||
71ICWjeMGJ/MASAO0RR+c77TcNFqNPkzMztyJpucQy4D+iGMDDfNfltcjd+NA5Y7
|
||||
YSUyx4hl05IIjY2FlmBwC1nLTYtEV4hWN+lDM8W0A736zo+kiP/SbryqYVUgJZoC
|
||||
aJV38NRB3ksNDHELwbJAE5WDdP8KlwIDAQABo4GvMIGsMA8GA1UdEwEB/wQFMAMB
|
||||
Af8wDgYDVR0PAQH/BAQDAgEGMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9ub2Z1
|
||||
c3Njb21wdXRpbmcuY29tL0NBL0NSTC9OV1dSb290Q0EuY3JsMEcGCCsGAQUFBwEB
|
||||
BDswOTA3BggrBgEFBQcwAoYraHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0Ev
|
||||
TldXUm9vdENBLmNydDANBgkqhkiG9w0BAQUFAAOCAQEAL1+9V99RaFuqyzb20E9/
|
||||
DKoByMK2Q+1Mepw7CdbEQbnOtj4CiWnNA4Nw2rMOcV1dsd0WoExlW/bBHXWqS33x
|
||||
x/XCODiJtmVMDqPU01DSQy74y7cQxOh2qetvsDfbdVHQryeMSZbEvvlranXkmZOB
|
||||
/VgrXbrFBC8rJ5LxY+GdC93qUpyhZ/ON9iWMzq5b1nkqLSy4b8OR+gHINBWAu4Rj
|
||||
fByKj3QerFf+272ADRndJXZRf376TY5DSFdolyvPVO9/S+ussnlpZP10dtlLsJ5H
|
||||
rEfq+VCmSwC2YTkJNUTQvq2iOlgAQUl5UDkd2LvthO3NsZaRgVObLudfRQzV5UHO
|
||||
Pg==
|
||||
-----END CERTIFICATE-----
|
@ -1,35 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGADCCBOigAwIBAgIJAOdfyaftuP41MA0GCSqGSIb3DQEBBQUAMIHYMQswCQYD
|
||||
VQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UEBxMNTm90IFNw
|
||||
ZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjEUMBIGA1UECxMLTldXIFJv
|
||||
b3QgQ0ExFDASBgNVBAMTC05XVyBSb290IENBMTEwLwYJKoZIhvcNAQkBFiJqb25h
|
||||
dGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3Jr
|
||||
ZWQgV2ViIENlcnRpZmljYXRlMB4XDTEzMTIyMzAwMDAwMFoXDTE4MTIyMjIzNTk1
|
||||
OVowgdYxCzAJBgNVBAYTAkFVMRYwFAYDVQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYD
|
||||
VQQHEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQKEw1OZXR3b3JrZWQgV2ViMRMwEQYD
|
||||
VQQLEwpOV1cgVlBOIENBMRMwEQYDVQQDEwpOV1cgVlBOIENBMTEwLwYJKoZIhvcN
|
||||
AQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQN
|
||||
ExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkqhkiG9w0BAQEFAAOC
|
||||
Ag8AMIICCgKCAgEAwZz2VgcS6fxoPnwUV3RjCUQbtSsZA9tFN9OuB60lQ82g70py
|
||||
lBiX1oM46tCMADtogri4N1QVNvqpn2ibpfmSof4+0u5OLU0TD8t50MaVit2r74g0
|
||||
lHFxPungIFaXcaONQzdXkyvUOkuOQyLZWsOZT7rvt23ojZWeHyqZYeLjHRLeM8Pd
|
||||
Hht+S/07PMiEirt5ah61qEr5tm1Q15BS9RMMhqyd0tDacX4mn/cKPwiTx8gwVh2I
|
||||
hw+sEco6pZezmPO6pZjYboz1SviWGNVlHa08+hn+MvbSBqiUVy4Ebvg0YBiobudH
|
||||
6mW86n6k0Fbhl/Nx80J6w6kY12GKoOmLWH3F4xW7+t12knGc/pBwA6A0bjS0VxUN
|
||||
OXxHhvA7BF04QtG80l4HfZqMKVZzotj2pL7WG64DGARMjRO4U5+o7Slry0R+iI47
|
||||
wsvkGvkq5MMdB7AEeSFH4+ykowyYAmL1lqjW+3W7NKAWIvRmGn6Z4pbKvvo0nS7J
|
||||
dMcrpu57MBwJ88ExnLhLfgq0K+8hBBf8OKuYferXMRZmrcQGZIG46rxYkS4fTxiP
|
||||
kk0o6VOqg3YcgH5euLk83v0xPy4pb1YE3s1bfe23bq5NEpEOJynqMCk0T8dUGybG
|
||||
SbuxfXAEZuVxr33WcmlSokDz9H/fk30I6Rnb3mV5C8ab8LUtuXt55333musCAwEA
|
||||
AaOBzDCByTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjA/BgNVHR8E
|
||||
ODA2MDSgMqAwhi5odHRwOi8vbm9mdXNzY29tcHV0aW5nLmNvbS9DQS9DUkwvTldX
|
||||
VlBOQ0EuY3JsMEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcwAoYqaHR0cDovL25v
|
||||
ZnVzc2NvbXB1dGluZy5jb20vQ0EvTldXVlBOQ0EuY3J0MB0GA1UdDgQWBBS6auHS
|
||||
OpuvAE/jfGPgdfc3+cLFGDANBgkqhkiG9w0BAQUFAAOCAQEAt+TemCvfM7MwTQ9G
|
||||
EroZKi5Pr40UEvs0J+jZ8N/NtpOStZUDeH3gUjWZhr+iMKJVu/GtAX/IWP6IBbBo
|
||||
wH8xJCuWoZV6H2MdKc8YEoaEiwZ9N3THrYqOrqDO7nw3ORNZ4O+sEd3u/IRa63Ha
|
||||
uXmBMEdn+Llinpn6IKJMBCP1nYDfQ4A57O5G+KgBw0Hpx1BZQaluKFW1phTx2feZ
|
||||
lbaXY2TzWtCtdUciMiFbaeTvBLzKpThdOXwrzmw06Y4ZfR2Lp8JIlb6NO6mQzooV
|
||||
liiufiQGSjvl+y+jPe6ml/f6uFYVBenP1MhLneCZQC+xvReXpG1L0MCMwqz4Ixhe
|
||||
y2LnYw==
|
||||
-----END CERTIFICATE-----
|
@ -1,43 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHpTCCBY2gAwIBAgIBATANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCQVUx
|
||||
CzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQL
|
||||
EwNOV1cxFDASBgNVBAMMC05XV19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25h
|
||||
dGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3Jr
|
||||
ZWQgV2ViIENlcnRpZmljYXRlMB4XDTE3MTIyMTAwMDAwMFoXDTI3MTIyMDIzNTk1
|
||||
OVowgbAxCzAJBgNVBAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAK
|
||||
BgNVBAoTA05XVzEMMAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTEx
|
||||
MC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNv
|
||||
bTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZI
|
||||
hvcNAQEBBQADggIPADCCAgoCggIBANNh/YQ88bqyR2569AwMnqe+9VjeUoFQcGgr
|
||||
JjcS76lZaAERnbl49PJM6X9xcFBQoCD3S1WnNXL26ZtA+PKdfvZOL8GIkwZQrXNB
|
||||
Ts2f4VP1dahuxuHYlmlwlpdT84JKZlDloUrDOgx0D707Z+ybUrTFjqaQjp/ZfybQ
|
||||
QLiYfK/6v7K7rOh8WyeWWunDo8uYlZWmtmzAQU9IQimYWepZ4/O+yfWnUVRGvYMD
|
||||
daALrNaj5MO41J13Y5sXDdl++yTCbujJ+xTDHKfjoJ+KpEuLa8VzWjJYAjm+TSXK
|
||||
gWObOxpnrb4sW2bB2pPtwQoOKd3tXYW2bRKJHGt2pVzgyGUjZ1yGKFS04+cg9OpP
|
||||
ePFtS4aTKVTMIe7BHwPA1fhu2efqmfP0vSY0EmRHuk9GIqo1r5EiC94xOcAuLkPG
|
||||
RquMQr+moD27JrhhlF9vw/Z9pr6gZ+hUDYGbE0913F1mjdtYp1lBmaLysLwpI0lH
|
||||
PUZdFdejCbnvPfH9EVxNRgbM5J/yzfRB//QRnufpjC2OgB6zTnifsYIOOSYHYgCK
|
||||
4DLrin74j4YiUGm49wuTwdqk52B8bkDzx4cWwIpJWYIeQC2xMrR/RvdrDMxt1Frg
|
||||
k5es0NHMWAzd2C2PRS2fmvuUdq2+QZRe721TvoeFLMI05PnUrxOkz/din8BNWtsN
|
||||
AoBCi3FdAgMBAAGjggHGMIIBwjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRI
|
||||
6WaWbdVLxOTffYdPlqd7zAw+7TCB3QYDVR0jBIHVMIHSgBRI6WaWbdVLxOTffYdP
|
||||
lqd7zAw+7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYD
|
||||
VQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05X
|
||||
V19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3
|
||||
b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRl
|
||||
ggEBMA4GA1UdDwEB/wQEAwIBBjBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vbm9m
|
||||
dXNzY29tcHV0aW5nLmNvbS9DQS9DUkwvTldXX1Jvb3RfQ0EuY3JsMEkGCCsGAQUF
|
||||
BwEBBD0wOzA5BggrBgEFBQcwAoYtaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20v
|
||||
Q0EvTldXX1Jvb3RfQ0EuY3J0MBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0B
|
||||
AQsFAAOCAgEARpj46yWBnbJIfqh7V9c1AWZmbzqogJynp5AqyC2e8Rp59dpPKJ60
|
||||
BC2WVUMsCHqyhl6oZwmn2Ejud+iodGo4IwdgDneFvQQAiF7TVTBnBRHnup3rLtTX
|
||||
zvqIBPyqBmrvZSjSfG0mStb3YWS41yj9bhsqy1qRTdXS+Ghc4I1DcOWu62NbhbP/
|
||||
UHPUEwCyPxEWLtxk0u8N8Hqmlr3qHHM53cKaOUUIn6VMtq2S0o39xWt7QuHWe3Aa
|
||||
COQYaAVQ60f9cZUmw7h31d3oen7nrlaaDAp7i1e4HuTb8+PzetoGjJ8xCt4cbnp0
|
||||
ThQFdVuaLszSiHpmsKPvdazIVjhvT7CTM5EydsDHZFA6cMmWjYYm5f9MXbiCSebC
|
||||
2q+2W2vO92yd/8JE3JCRc8A2Mi4RSw9SziN/MCvueorIFJXfawz3rARgk5KXKPNj
|
||||
DBHcxxaQOTCJHLblGsv+9S/ANnucOihQRPWPGKGr80Yy5wQ8TKnuElvzrOjyR2Cj
|
||||
HGqSX2ar1GnFtmDsfamnJ0kb+2Sbamt3slAxUM/Qc+SIWepVtSNb8IppWPCxmPOd
|
||||
QyUMRayfkkc2qdo3xyUV1zE/alMPK6k0epyZ0+lyTo+sVpyzVq/D1wS63pUXiK/f
|
||||
gB5/XW5AC1ngeN3DBlOc/R5mscyv4o4cHOauxMKjldGgGhqI0QnRSi4=
|
||||
-----END CERTIFICATE-----
|
@ -1,43 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHpzCCBY+gAwIBAgIINsj7HlzAfYswDQYJKoZIhvcNAQELBQAwgbAxCzAJBgNV
|
||||
BAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEM
|
||||
MAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTExMC8GCSqGSIb3DQEJ
|
||||
ARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZ
|
||||
TmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTAeFw0xNTEwMjcwMDAwMDBaFw0yMDEw
|
||||
MjYyMzU5NTlaMIGjMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcT
|
||||
Ak5BMQwwCgYDVQQKEwNOV1cxEDAOBgNVBAsTB1BlZ2FzdXMxFzAVBgNVBAMMDlBl
|
||||
Z2FzdXNfVlBOX0NBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5hbEBuZXR3b3JrZWR3
|
||||
ZWIuY29tMRcwFQYDVQQNDA5QZWdhc3VzX1ZQTl9DQTCCAiIwDQYJKoZIhvcNAQEB
|
||||
BQADggIPADCCAgoCggIBAMjkj6nShoH9YfKCa8MbQFV0dqkoHuuv11W7IcvL4isR
|
||||
NrLshe8zlB3v9cGsaWot9zu+tbcX71SW+2vdlCTuNerdlOQIiMntjkbHPG8iwjZu
|
||||
WHpu/DqZv9BJjfIuCWWb3eTw6DuvQTo3Lwauh7z/Vp8IKPmoloAVnj8rZizVqWxV
|
||||
cJwPD3vKJAKtbtZkfC7dgWFPRWTtX26DVV/EmhICinE/KmkfckLxKdkpuyejiHz8
|
||||
uduweS9Wfj21mgsWKeSYkzONGr04YmYxCLWGqyqwQ+ZsNRJWdRFBHKwKwH3k01I8
|
||||
Ce6/tpNZYQLYykUHTCpjHW4UuvkXFo2SK9ilJ5bUze5qedYrFMXsGJoWgw+xCYtZ
|
||||
QkFQmFNXFk1oplVwK/8Jnn3mfEpsbtQBW4RAyOTETRlWpe+n+/BgZNPdncODXWN0
|
||||
Gvtg4guxftdNesXd+6e4R7tC2GX8sqxOzNji64KxAoiMPK0qwhyFKegD7iuMC/LC
|
||||
D2KhFNxjRHkJIe1MfvPAZPygiQYPbNatVLzRSaS8Uj132IUfqqCPyrKNg/rJb6Yh
|
||||
Ovlf/jEMUaEzH9xUmlOEiKf2yyXrw6vTWhtkYCNCyronLblFc+NiwSzCxcINMlX+
|
||||
hj8zg49wQC/80QjwdHbz2KP9sLzFtuURFjRdpfYFaiI7iWapo+eHYq6OKq4nH1Z1
|
||||
AgMBAAGjggHOMIIByjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRBbMbXhzlI
|
||||
dbRsB2xNIPbP2kCbETCB4gYDVR0jBIHaMIHXgBRI6WaWbdVLxOTffYdPlqd7zAw+
|
||||
7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJO
|
||||
QTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05XV19Sb290
|
||||
X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3
|
||||
ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlggYgFRAn
|
||||
FiYwDgYDVR0PAQH/BAQDAgEGMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9ub2Z1
|
||||
c3Njb21wdXRpbmcuY29tL0NBL0NSTC9QZWdhc3VzX1ZQTl9DQS5jcmwwSQYIKwYB
|
||||
BQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0aW5nLmNv
|
||||
bS9DQS9OV1dfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3
|
||||
DQEBCwUAA4ICAQCGuevjkXLiEC03sX0Iu1oV8IgrRv76agQseJs/s+xBJ2NznjT8
|
||||
xsZX7QmpAJ1tdOtiwQwggF04KHj6rlt0PbA2MHjz1uB148pep8DpF/z+iCW8exA8
|
||||
iIBjRK9A339Q8gM8jJRBoz6I3Ipwkx+06+DWs73fwW2Y1PgHg445GB1ToN3cKS54
|
||||
YomZUA1yagdBiDXriPReFQPBTk18dyA8ZIoVse1J4HgGr5i+5for6IK1C7w2UoTh
|
||||
55sEP44VskYpAZCaCd531OVgruw+SixhOJbHS/j/smN1WinLEptBKi7LY+nLJtiE
|
||||
BEDiexeXwlfZWBTSs34yDIn8JBtOLYd1Ur/kB/j4Wbs7xT9RJ1VhTDFZcOB3rREj
|
||||
comhcuWsbQegdt9M0DWZdriZzgzGQBm5dqFnp6FAG4tOjAGr24TP6tsq9sbS1Eyk
|
||||
5snwE70mTQ9bCDFU4Re+bVfAIFDfY9HF822ZgMdy1BQw/S5a2YoRMZtYaZFGYidp
|
||||
VNk/ICnl6ELlg6ZlPAiAn2PaBICTtzlt/TpznAFEvxlvc7tsc0HsDKVT0n+T8wv3
|
||||
yp0rbgrQrJlI+Z9nl+g3ZHDc9mQXbcIWBkUFUoIsTUwdGExXypWDIlQ86pqyLFnl
|
||||
42BzmL9mpf862aHybxCBOEre2uBUhFGWTTjNm7kjItM5SGQGUq7EAd1p6w==
|
||||
-----END CERTIFICATE-----
|
@ -1,44 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHrzCCBZegAwIBAgIGIBUQJxYmMA0GCSqGSIb3DQEBCwUAMIGwMQswCQYDVQQG
|
||||
EwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAK
|
||||
BgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEW
|
||||
ImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5l
|
||||
dHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjUxMDI2
|
||||
MjM1OTU5WjCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJO
|
||||
QTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05XV19Sb290
|
||||
X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3
|
||||
ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjAN
|
||||
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA02H9hDzxurJHbnr0DAyep771WN5S
|
||||
gVBwaCsmNxLvqVloARGduXj08kzpf3FwUFCgIPdLVac1cvbpm0D48p1+9k4vwYiT
|
||||
BlCtc0FOzZ/hU/V1qG7G4diWaXCWl1PzgkpmUOWhSsM6DHQPvTtn7JtStMWOppCO
|
||||
n9l/JtBAuJh8r/q/srus6HxbJ5Za6cOjy5iVlaa2bMBBT0hCKZhZ6lnj877J9adR
|
||||
VEa9gwN1oAus1qPkw7jUnXdjmxcN2X77JMJu6Mn7FMMcp+Ogn4qkS4trxXNaMlgC
|
||||
Ob5NJcqBY5s7GmetvixbZsHak+3BCg4p3e1dhbZtEokca3alXODIZSNnXIYoVLTj
|
||||
5yD06k948W1LhpMpVMwh7sEfA8DV+G7Z5+qZ8/S9JjQSZEe6T0YiqjWvkSIL3jE5
|
||||
wC4uQ8ZGq4xCv6agPbsmuGGUX2/D9n2mvqBn6FQNgZsTT3XcXWaN21inWUGZovKw
|
||||
vCkjSUc9Rl0V16MJue898f0RXE1GBszkn/LN9EH/9BGe5+mMLY6AHrNOeJ+xgg45
|
||||
JgdiAIrgMuuKfviPhiJQabj3C5PB2qTnYHxuQPPHhxbAiklZgh5ALbEytH9G92sM
|
||||
zG3UWuCTl6zQ0cxYDN3YLY9FLZ+a+5R2rb5BlF7vbVO+h4UswjTk+dSvE6TP92Kf
|
||||
wE1a2w0CgEKLcV0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
|
||||
BBYEFEjpZpZt1UvE5N99h0+Wp3vMDD7tMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE
|
||||
5N99h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkEx
|
||||
CzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UE
|
||||
AwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29k
|
||||
QG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlm
|
||||
aWNhdGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQYwQgYDVR0fBDswOTA3oDWgM4Yx
|
||||
aHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05XV19Sb290X0NBLmNy
|
||||
bDBJBggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21w
|
||||
dXRpbmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCAAcw
|
||||
DQYJKoZIhvcNAQELBQADggIBAEp6g8NTXc89vngaI6Hu3FcLcsYwfcC3UvqUPCXS
|
||||
W7qqc8GqR0p+n6FZWrMyAGVSjT/CXPZH6GZoTgkJK9g46YcWc1LhUIwnzj7dl3Gb
|
||||
FAU1VRnc2PNYI2VxUbDLjAzxDPO5q93L1F/N4JYgamCCRDYqcUcg9uUrDxS9fz0G
|
||||
JZaKDtmxelAb/TOo9jfRYzXmdCdzaZUi838UwfLYDoovBn+CTpWeKg+qs36ViK4H
|
||||
qMRaHbPBAappJoxzWOQq9CBv9HGZ7GYpMrtE9Cwg0RyJyH6CHDTum6A3O9oa7Buu
|
||||
zh36WAl1tXbJ/waW5RkS7/SIosWzi+SbASEeOY3X5jnvjFkSVZlQbNDfOzQkDAMW
|
||||
3JXfBBWG0fCXFSBJxPpVUV4dSkhZFyFZUDmKTnbqyM10DFEh+MFpEIOShXDoqbdx
|
||||
1hvaBlBzgbi46xQPRptdsw+Eo6LiYSBUJIuSB7WBzNxpcIqZDiNZgXC4useuBdOm
|
||||
QEGT3KPPpRfhneEz5f7v4e8YGHbbkvv/F7OcHXNX3tQ8T7u7d8cCsiGDoFtpEISQ
|
||||
qs68fxeGNUdnA13INl5G5iGkXlVLh+hiTdlObFO2lqHXzv8RL3+ZtSkzbsVEC1CK
|
||||
p4AlmeUn6vRoUvLtrm5REF7GVKB1NjyKJV8JP+DGyoiR9JUVmsqvFj5eCejANGEs
|
||||
Nwdl
|
||||
-----END CERTIFICATE-----
|
@ -1,29 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE3TCCA8WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCB2DELMAkGA1UEBhMCQVUx
|
||||
FjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNVBAcTDU5vdCBTcGVjaWZpZWQx
|
||||
FjAUBgNVBAoTDU5ldHdvcmtlZCBXZWIxFDASBgNVBAsTC05XVyBSb290IENBMRQw
|
||||
EgYDVQQDEwtOV1cgUm9vdCBDQTExMC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9j
|
||||
a3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBD
|
||||
ZXJ0aWZpY2F0ZTAeFw0xMzEyMjMwNTA1MDBaFw0yMzEyMjMwNTA1MDBaMIHYMQsw
|
||||
CQYDVQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UEBxMNTm90
|
||||
IFNwZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjEUMBIGA1UECxMLTldX
|
||||
IFJvb3QgQ0ExFDASBgNVBAMTC05XVyBSb290IENBMTEwLwYJKoZIhvcNAQkBFiJq
|
||||
b25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3
|
||||
b3JrZWQgV2ViIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
||||
CgKCAQEAyQqO2ehMgJt7/smhusiPQn183w//y9ZE6IZ8ylVsQ45HEI8svadYbKay
|
||||
Vj4XzOl6h91asi3mGKllRq1fj7/Tekid641ew1Emt0yMbMbxCj7NW7jM3UeTNP4+
|
||||
0OtNjXKGI6A2/ciS4lQoSC7TQc37L5tr3qN6TzbtxLKfvyOIPczDbDBBtfAicw70
|
||||
71ICWjeMGJ/MASAO0RR+c77TcNFqNPkzMztyJpucQy4D+iGMDDfNfltcjd+NA5Y7
|
||||
YSUyx4hl05IIjY2FlmBwC1nLTYtEV4hWN+lDM8W0A736zo+kiP/SbryqYVUgJZoC
|
||||
aJV38NRB3ksNDHELwbJAE5WDdP8KlwIDAQABo4GvMIGsMA8GA1UdEwEB/wQFMAMB
|
||||
Af8wDgYDVR0PAQH/BAQDAgEGMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9ub2Z1
|
||||
c3Njb21wdXRpbmcuY29tL0NBL0NSTC9OV1dSb290Q0EuY3JsMEcGCCsGAQUFBwEB
|
||||
BDswOTA3BggrBgEFBQcwAoYraHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0Ev
|
||||
TldXUm9vdENBLmNydDANBgkqhkiG9w0BAQUFAAOCAQEAL1+9V99RaFuqyzb20E9/
|
||||
DKoByMK2Q+1Mepw7CdbEQbnOtj4CiWnNA4Nw2rMOcV1dsd0WoExlW/bBHXWqS33x
|
||||
x/XCODiJtmVMDqPU01DSQy74y7cQxOh2qetvsDfbdVHQryeMSZbEvvlranXkmZOB
|
||||
/VgrXbrFBC8rJ5LxY+GdC93qUpyhZ/ON9iWMzq5b1nkqLSy4b8OR+gHINBWAu4Rj
|
||||
fByKj3QerFf+272ADRndJXZRf376TY5DSFdolyvPVO9/S+ussnlpZP10dtlLsJ5H
|
||||
rEfq+VCmSwC2YTkJNUTQvq2iOlgAQUl5UDkd2LvthO3NsZaRgVObLudfRQzV5UHO
|
||||
Pg==
|
||||
-----END CERTIFICATE-----
|
@ -1,127 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHDTCCBPWgAwIBAgIJAMTrJAQHdlFyMA0GCSqGSIb3DQEBCwUAMIGqMQswCQYD
|
||||
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
|
||||
DDAKBgNVBAsTA05GQzEUMBIGA1UEAwwLTkZDX1Jvb3RfQ0ExKzApBgkqhkiG9w0B
|
||||
CQEWHGhlbHBkZXNrQG5vZnVzc2NvbXB1dGluZy5jb20xIjAgBgNVBA0TGU5ldHdv
|
||||
cmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTYwMTA5MDAzNjAwWhcNMTgwMTA5MDAz
|
||||
NjAwWjCBxjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEM
|
||||
MAoGA1UEChMDTkZDMRAwDgYDVQQLEwdXZWJzaXRlMRwwGgYDVQQDExNub2Z1c3Nj
|
||||
b21wdXRpbmcuY29tMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21w
|
||||
dXRpbmcuY29tMTIwMAYDVQQNEylObyBGdXNzIENvbXB1dGluZyBXZWJzaXRlIFNT
|
||||
TCBDZXJ0aWZpY2F0ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANAw
|
||||
LqkN8ck9UoYApC1yNYXmq3kydkb8JwmbzbEZ7H6ZBffVzx6D7lBiyLwzS5nClYpM
|
||||
F89q/D9q0x2k0oVckpNA8CqDjH69CojBtCAbTDM/tHBjrKir3pyg66rgCn5PIAJF
|
||||
TEWTilLyDxXewiD6rNoxYChVvQYWjV3eV2IcnmwU6Yv9s5HvNzu2iMbJTxfFyeE0
|
||||
vgkRLBkqTBpYiTnc4m9OgPYJB7f4drQ0cibZ7ySDBlDvQM792PLtBokTAikQ+Uu6
|
||||
UkOpBVaeP/mnbF3WogL3ntjcXpX4JieMG2YAaKb3RynqZeX+oUvgz9K5hOjDgpGp
|
||||
hswm8w677iAah1kaSYkCAwEAAaOCAhYwggISMAkGA1UdEwQCMAAwHQYDVR0OBBYE
|
||||
FPOkMiFouKGtFmcsI4HvmWydR/hEMIHlBgNVHSMEgd0wgdqAFMcOta68Bn/QtEwc
|
||||
LCCyoJvOSmSNoYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
|
||||
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
|
||||
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
|
||||
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
|
||||
dGWCCQDF7SYBL2xH+zALBgNVHQ8EBAMCA+gwEwYDVR0lBAwwCgYIKwYBBQUHAwEw
|
||||
OgYDVR0RBDMwMYIaZGVwbG95Lm5vZnVzc2NvbXB1dGluZy5jb22CE25vZnVzc2Nv
|
||||
bXB1dGluZy5jb20wQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL25vZnVzc2NvbXB1
|
||||
dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJBggrBgEFBQcBAQQ9MDsw
|
||||
OQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRpbmcuY29tL0NBL05GQ19S
|
||||
b290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJKoZIhvcNAQELBQADggIB
|
||||
AEC5mlLoGmAvFEf6dQ0yR+W/YPrW2qmZfIEtcfGq0u4Ik0W2pgBbHiXI4hhXLx3F
|
||||
fMxwzFI69ab2qWhl37VrwViLtPDLp7f3nJbN+cURJfbYTXbt5ktqxAq5JpUO8caL
|
||||
hJpJLuslcKCzb9Vpw6FbojLhWu44v0gcYiPemROrwbcTtaDo1qRHpxHN6am/GnY6
|
||||
+hZBtQV0STRHw+BESVAyjmuurMBGCTKIZ5SZ2oGkqWrGoNgRsIN1e1nE5rsJDHG0
|
||||
7mPMRfSa7Ll3B5tYXZ7M3H2MWDWtOg2AKrB6U1WoA7cEuHg8lV8PFpIvfjkqu6DJ
|
||||
wx4X1NUBi8D5x/VCGpopvyZBSFkqeQTEZ+vQ3NfC1pOw6f8iwhdJGBqQeCY8AWFU
|
||||
XKljEjSm8zleCsSLa24tOL+1WvcAZqjtoeN/E2VYMmHi2UdyIFFiZz3P2M5hL/dp
|
||||
PgokHF0d/LuoEmdFv9ki5fj61VrldUsX8eg0CKgd+BiwobjlJFmPRKJX2d9ZE+rU
|
||||
rJT8uHehioXmW1NK43QiBCgd3H54IpDl9HByNpF343sjvGX0Y0a+6D6pa1BJhVPw
|
||||
9vLCeSKSUuI6XDtLGhGpkc5c4m6pChITzjCPQld/LvbxnQ6mhTtylBy8edixDRld
|
||||
0bPU2pK43UcWEWQwOQG53Te5XVBmQ312WRuwp7U8Sfi0
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHrDCCBZSgAwIBAgIJAMXtJgEvbEf7MA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
|
||||
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
|
||||
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
|
||||
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
|
||||
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
|
||||
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
|
||||
EwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNORkMxFDASBgNVBAMMC05GQ19S
|
||||
b290X0NBMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21wdXRpbmcu
|
||||
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtK+L7NLT6f3c0bbmSPAWTtAkPO3W3Myv
|
||||
GlhCPUaNp4Up+/p50CiuBVrZ9hGAJQK1y+7yrmDgM+mTvlnY/m41BLtq8YYcT3Dk
|
||||
CgloEGhaUD/vdTSD6ZYAF1u8yNvueAJ+NybCpEDaDSBxbi4aJnKrcvx6j6T+YG3R
|
||||
ajHpDzQjNH89S9IzsTIrQsOM8e8stVEkjZld78TvtGc/Vl/p/QMAL8XpMJ1KBOWd
|
||||
Wmk9v/x9JiBDrdJIMFl/Zdeb9VMjbabNqjLV8uCz6Iv2E3Rii+xYghcRPF+Y1zD7
|
||||
gcOy6aaLmITFbusf1cuzZUlY/XzYs/3KNiQwENS68Mpd0v4NaPL21sip0Zys/Jbu
|
||||
mwQ8X3RQLWvlDh6l+Z3TKM6QZK1oPB2a51IsNwGBFgOMr4JbEDwlbA1QcyIzdoE8
|
||||
i/CGIKUPoaYOmmAxMuOKS1pjO+BeiQ7i+jDMX4Yip3wIGViXm6oK5uzPUUC9YeOn
|
||||
Jti9iFb/InNToaEFaNKNj8ihE9PvWWmty85J0rxFpHUMth+bANCWSxUDvzmfhAgA
|
||||
NQepApTdArzguh2t2F4CANNSeJU6gze40XMd4H3dggVVohs5GC3Aj/RbFiJADtmo
|
||||
A8a1T8sobrDKj0veapEw/eRzqlUW8z9dBLFk1+MNGOWz6p3TjoWxdjE8loShD90Z
|
||||
KeqasY/t2g0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
||||
FMcOta68Bn/QtEwcLCCyoJvOSmSNMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
|
||||
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
|
||||
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
|
||||
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
|
||||
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
|
||||
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQgYDVR0fBDswOTA3oDWgM4YxaHR0
|
||||
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJ
|
||||
BggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRp
|
||||
bmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJ
|
||||
KoZIhvcNAQELBQADggIBAJQM7UeDaXM0/jl1PLJ/UUFGmBhCy3pDLc2JIeRifLTo
|
||||
NzJ0RmBzF6OQGriXXKiKmZKTAwFvuYjks1Hm/hjFSTbhmNFsU3sx8qXe0h4xj9Op
|
||||
bvDDJaiXl+HIEl2BQkJ6Rnr7b56M6Y+W6cAtuCwQkZGAO1ip0pF7WbPv1OFaL1pN
|
||||
/OCe8wiXDIkyH87GFESsQG7VypAp8u5vlKkxFeISCo7FYRhfhEV0hv62gaWb0zjE
|
||||
QcW6Pgnj4KHfDKThoWwWUC+5kJuGd81dWmbgJ1+AUc5kNHl7f3w8yr6YkM24yji8
|
||||
HSpQ0yZzN3kK8JN0E+DJk0OVMD5aiBQjb+UkMIVwBWnoCixNAv0ni51eyrCJ49va
|
||||
E57RTYfPCLJurHpm+kP66V9vSKNiyBOwbmf5KSWeyG3p6YZ+ywSvypsdw21eXpOf
|
||||
Uu1GYA+UDoZE7g8KcCwM9H2T12Da8mHRlXJubeY0YrInlc5hQwgllzzYqbzrh15n
|
||||
2YU6OvfInyXwjPc6m5Ktn+lObOqFrTYBDIf5spaC5MJuMNcMIzloFtHjgStAQxds
|
||||
CKUIyVWJx/bVAdc42VcQVNU/G9df5Q8+XLJknetfa5ZU3drob2fdi4O6SwowOvv4
|
||||
UjGxZKIJBvI9J/D0Sda8vh96NJ5Q1VTW+V9pseG+r6sEb2YXt601jNxifjOY0Fiu
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHrzCCBZegAwIBAgIGIBUQJxYmMA0GCSqGSIb3DQEBCwUAMIGwMQswCQYDVQQG
|
||||
EwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAK
|
||||
BgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEW
|
||||
ImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5l
|
||||
dHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjUxMDI2
|
||||
MjM1OTU5WjCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJO
|
||||
QTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05XV19Sb290
|
||||
X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3
|
||||
ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjAN
|
||||
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA02H9hDzxurJHbnr0DAyep771WN5S
|
||||
gVBwaCsmNxLvqVloARGduXj08kzpf3FwUFCgIPdLVac1cvbpm0D48p1+9k4vwYiT
|
||||
BlCtc0FOzZ/hU/V1qG7G4diWaXCWl1PzgkpmUOWhSsM6DHQPvTtn7JtStMWOppCO
|
||||
n9l/JtBAuJh8r/q/srus6HxbJ5Za6cOjy5iVlaa2bMBBT0hCKZhZ6lnj877J9adR
|
||||
VEa9gwN1oAus1qPkw7jUnXdjmxcN2X77JMJu6Mn7FMMcp+Ogn4qkS4trxXNaMlgC
|
||||
Ob5NJcqBY5s7GmetvixbZsHak+3BCg4p3e1dhbZtEokca3alXODIZSNnXIYoVLTj
|
||||
5yD06k948W1LhpMpVMwh7sEfA8DV+G7Z5+qZ8/S9JjQSZEe6T0YiqjWvkSIL3jE5
|
||||
wC4uQ8ZGq4xCv6agPbsmuGGUX2/D9n2mvqBn6FQNgZsTT3XcXWaN21inWUGZovKw
|
||||
vCkjSUc9Rl0V16MJue898f0RXE1GBszkn/LN9EH/9BGe5+mMLY6AHrNOeJ+xgg45
|
||||
JgdiAIrgMuuKfviPhiJQabj3C5PB2qTnYHxuQPPHhxbAiklZgh5ALbEytH9G92sM
|
||||
zG3UWuCTl6zQ0cxYDN3YLY9FLZ+a+5R2rb5BlF7vbVO+h4UswjTk+dSvE6TP92Kf
|
||||
wE1a2w0CgEKLcV0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O
|
||||
BBYEFEjpZpZt1UvE5N99h0+Wp3vMDD7tMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE
|
||||
5N99h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkEx
|
||||
CzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UE
|
||||
AwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29k
|
||||
QG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlm
|
||||
aWNhdGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQYwQgYDVR0fBDswOTA3oDWgM4Yx
|
||||
aHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05XV19Sb290X0NBLmNy
|
||||
bDBJBggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21w
|
||||
dXRpbmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCAAcw
|
||||
DQYJKoZIhvcNAQELBQADggIBAEp6g8NTXc89vngaI6Hu3FcLcsYwfcC3UvqUPCXS
|
||||
W7qqc8GqR0p+n6FZWrMyAGVSjT/CXPZH6GZoTgkJK9g46YcWc1LhUIwnzj7dl3Gb
|
||||
FAU1VRnc2PNYI2VxUbDLjAzxDPO5q93L1F/N4JYgamCCRDYqcUcg9uUrDxS9fz0G
|
||||
JZaKDtmxelAb/TOo9jfRYzXmdCdzaZUi838UwfLYDoovBn+CTpWeKg+qs36ViK4H
|
||||
qMRaHbPBAappJoxzWOQq9CBv9HGZ7GYpMrtE9Cwg0RyJyH6CHDTum6A3O9oa7Buu
|
||||
zh36WAl1tXbJ/waW5RkS7/SIosWzi+SbASEeOY3X5jnvjFkSVZlQbNDfOzQkDAMW
|
||||
3JXfBBWG0fCXFSBJxPpVUV4dSkhZFyFZUDmKTnbqyM10DFEh+MFpEIOShXDoqbdx
|
||||
1hvaBlBzgbi46xQPRptdsw+Eo6LiYSBUJIuSB7WBzNxpcIqZDiNZgXC4useuBdOm
|
||||
QEGT3KPPpRfhneEz5f7v4e8YGHbbkvv/F7OcHXNX3tQ8T7u7d8cCsiGDoFtpEISQ
|
||||
qs68fxeGNUdnA13INl5G5iGkXlVLh+hiTdlObFO2lqHXzv8RL3+ZtSkzbsVEC1CK
|
||||
p4AlmeUn6vRoUvLtrm5REF7GVKB1NjyKJV8JP+DGyoiR9JUVmsqvFj5eCejANGEs
|
||||
Nwdl
|
||||
-----END CERTIFICATE-----
|
@ -1,43 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHrDCCBZSgAwIBAgIJAMXtJgEvbEf7MA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
|
||||
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
|
||||
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
|
||||
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
|
||||
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
|
||||
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
|
||||
EwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNORkMxFDASBgNVBAMMC05GQ19S
|
||||
b290X0NBMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21wdXRpbmcu
|
||||
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtK+L7NLT6f3c0bbmSPAWTtAkPO3W3Myv
|
||||
GlhCPUaNp4Up+/p50CiuBVrZ9hGAJQK1y+7yrmDgM+mTvlnY/m41BLtq8YYcT3Dk
|
||||
CgloEGhaUD/vdTSD6ZYAF1u8yNvueAJ+NybCpEDaDSBxbi4aJnKrcvx6j6T+YG3R
|
||||
ajHpDzQjNH89S9IzsTIrQsOM8e8stVEkjZld78TvtGc/Vl/p/QMAL8XpMJ1KBOWd
|
||||
Wmk9v/x9JiBDrdJIMFl/Zdeb9VMjbabNqjLV8uCz6Iv2E3Rii+xYghcRPF+Y1zD7
|
||||
gcOy6aaLmITFbusf1cuzZUlY/XzYs/3KNiQwENS68Mpd0v4NaPL21sip0Zys/Jbu
|
||||
mwQ8X3RQLWvlDh6l+Z3TKM6QZK1oPB2a51IsNwGBFgOMr4JbEDwlbA1QcyIzdoE8
|
||||
i/CGIKUPoaYOmmAxMuOKS1pjO+BeiQ7i+jDMX4Yip3wIGViXm6oK5uzPUUC9YeOn
|
||||
Jti9iFb/InNToaEFaNKNj8ihE9PvWWmty85J0rxFpHUMth+bANCWSxUDvzmfhAgA
|
||||
NQepApTdArzguh2t2F4CANNSeJU6gze40XMd4H3dggVVohs5GC3Aj/RbFiJADtmo
|
||||
A8a1T8sobrDKj0veapEw/eRzqlUW8z9dBLFk1+MNGOWz6p3TjoWxdjE8loShD90Z
|
||||
KeqasY/t2g0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
||||
FMcOta68Bn/QtEwcLCCyoJvOSmSNMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
|
||||
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
|
||||
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
|
||||
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
|
||||
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
|
||||
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQgYDVR0fBDswOTA3oDWgM4YxaHR0
|
||||
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJ
|
||||
BggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRp
|
||||
bmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJ
|
||||
KoZIhvcNAQELBQADggIBAJQM7UeDaXM0/jl1PLJ/UUFGmBhCy3pDLc2JIeRifLTo
|
||||
NzJ0RmBzF6OQGriXXKiKmZKTAwFvuYjks1Hm/hjFSTbhmNFsU3sx8qXe0h4xj9Op
|
||||
bvDDJaiXl+HIEl2BQkJ6Rnr7b56M6Y+W6cAtuCwQkZGAO1ip0pF7WbPv1OFaL1pN
|
||||
/OCe8wiXDIkyH87GFESsQG7VypAp8u5vlKkxFeISCo7FYRhfhEV0hv62gaWb0zjE
|
||||
QcW6Pgnj4KHfDKThoWwWUC+5kJuGd81dWmbgJ1+AUc5kNHl7f3w8yr6YkM24yji8
|
||||
HSpQ0yZzN3kK8JN0E+DJk0OVMD5aiBQjb+UkMIVwBWnoCixNAv0ni51eyrCJ49va
|
||||
E57RTYfPCLJurHpm+kP66V9vSKNiyBOwbmf5KSWeyG3p6YZ+ywSvypsdw21eXpOf
|
||||
Uu1GYA+UDoZE7g8KcCwM9H2T12Da8mHRlXJubeY0YrInlc5hQwgllzzYqbzrh15n
|
||||
2YU6OvfInyXwjPc6m5Ktn+lObOqFrTYBDIf5spaC5MJuMNcMIzloFtHjgStAQxds
|
||||
CKUIyVWJx/bVAdc42VcQVNU/G9df5Q8+XLJknetfa5ZU3drob2fdi4O6SwowOvv4
|
||||
UjGxZKIJBvI9J/D0Sda8vh96NJ5Q1VTW+V9pseG+r6sEb2YXt601jNxifjOY0Fiu
|
||||
-----END CERTIFICATE-----
|
@ -1,35 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIGFjCCBP6gAwIBAgIIB+I42RMLhBgwDQYJKoZIhvcNAQEFBQAwgdgxCzAJBgNV
|
||||
BAYTAkFVMRYwFAYDVQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3Bl
|
||||
Y2lmaWVkMRYwFAYDVQQKEw1OZXR3b3JrZWQgV2ViMRQwEgYDVQQLEwtOV1cgUm9v
|
||||
dCBDQTEUMBIGA1UEAxMLTldXIFJvb3QgQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0
|
||||
aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtl
|
||||
ZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTMxMjIzMDAwMDAwWhcNMTgxMjIyMjM1OTU5
|
||||
WjCB2DELMAkGA1UEBhMCQVUxFjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNV
|
||||
BAcTDU5vdCBTcGVjaWZpZWQxFjAUBgNVBAoTDU5ldHdvcmtlZCBXZWIxFDASBgNV
|
||||
BAsTC05XVyBSb290IENBMRQwEgYDVQQDEwtORkMgUm9vdCBDQTExMC8GCSqGSIb3
|
||||
DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UE
|
||||
DRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZIhvcNAQEBBQAD
|
||||
ggIPADCCAgoCggIBALrz75sW0VR2qqi6UAtk2z/0GpLxlPsgGawLePfNZXvdYHcB
|
||||
1JzPpAyCZ+PF4VIHz17tmdQFyN+msd2W6Op8SI5CW3MDHwA5HoAGcm6vx+xp95UX
|
||||
96+fbqthL3UPNuOOW3EWXEb3DsF2wtrNXdhq4nyOMGrioe0fQvo8ij7Qg/eiFJSu
|
||||
Sg3zPssa5AjsJ3P4px9kQusm2tkN9oH/1AZmE3CJXkVzqzEPbmnUzt/LD2I4Hd86
|
||||
KweNsSiBeZwrxWN7nQUla+rWE7Al+orLLnQbj14uz5Oeh+y2VnVmXxec23mebUcl
|
||||
Pxy9GhxnKMF2wp6//nJs/soJKt/KEdWaMU4oW1m/rkJejjVQSvBvO89hL+4hi1iK
|
||||
aoxXRnNnX6V5naXPAjlOXzDqZSnmDPk31gWL7uy7eeNY/+dCYKNk/ikstGAhfn0y
|
||||
k70tUAguBf3zAewRL8JM05+HrYGdhCv/qFb+VrZEf0BgnSvq4XpVszNYJY+JePbW
|
||||
smOw0/569aptCHaGtpuuvDO5F5GmtvN10NWYXRJx98txAT4SnfDHuxp/kbqlgXQF
|
||||
Q+I38vVYRWfDOoakxZYESvGNlXZ12aY9RiMKp4191Los9yH16TXoERvg8Q1a1QEQ
|
||||
l+fwM1iTg3RJ1WowCm6QvsU5NqVjrx0GzXCTxkd9OCjyiVwl64X9sDjYZhe3AgMB
|
||||
AAGjgeEwgd4wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwQAYDVR0f
|
||||
BDkwNzA1oDOgMYYvaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05X
|
||||
V1Jvb3RDQS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzAChitodHRwOi8v
|
||||
bm9mdXNzY29tcHV0aW5nLmNvbS9DQS9OV1dSb290Q0EuY3J0MB0GA1UdDgQWBBR6
|
||||
prE+wkxZU+lAqwU04QYbfTVQxjARBglghkgBhvhCAQEEBAMCBkAwDQYJKoZIhvcN
|
||||
AQEFBQADggEBABV0Uw7kioLo/bUf9Bkcjq08v6zAvnjfp22u+P3USDWvjdlyBM1F
|
||||
J39TOf2tAvZJ+33HzDanNL1oDw57IVw7QqIasLJRINa3gojUml6SaOT/DF0HpcJO
|
||||
LN1e1x3oaQHHw5cljCFue4PRdja2z7EgsPY2qZdIdnN5CuaUI29qke8MD4cX0Ezu
|
||||
KtCzkL8TWsc+QKZYodNjSwviOBIEOar1ayGAGfarqszDKHk3jG8W390BJBVtpUgL
|
||||
zOyyv4SmKu+Zu090nAB91ThYYA3vnPV3Ar+tAKl0taSWNQh55jrwSA9BhrFGaRxb
|
||||
huJWadC1O7ILrs72kIExzELUSDcqOhc1Nuk=
|
||||
-----END CERTIFICATE-----
|
@ -1,47 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIIWjCCBkKgAwIBAgIGIBUQJxYoMA0GCSqGSIb3DQEBCwUAMIGqMQswCQYDVQQG
|
||||
EwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAK
|
||||
BgNVBAsTA05GQzEUMBIGA1UEAwwLTkZDX1Jvb3RfQ0ExKzApBgkqhkiG9w0BCQEW
|
||||
HGhlbHBkZXNrQG5vZnVzc2NvbXB1dGluZy5jb20xIjAgBgNVBA0TGU5ldHdvcmtl
|
||||
ZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDU0NjAwWhcNMTYxMDI2MDU0NjAw
|
||||
WjCB3zELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEMMAoG
|
||||
A1UEChMDTkZDMRwwGgYDVQQLExNTb2Z0d2FyZS1EZXBhcnRtZW50MSQwIgYDVQQD
|
||||
ExtEZXZlbG9wZXItam9uYXRob24ubG9ja3dvb2QxKzApBgkqhkiG9w0BCQEWHGhl
|
||||
bHBkZXNrQG5vZnVzc2NvbXB1dGluZy5jb20xNzA1BgNVBA0TLkNlcnRpZmljYXRl
|
||||
IHVzZWQgYnkgZGV2ZWxvcGVyIGZvciBORkMgU29mdHdhcmUwggIiMA0GCSqGSIb3
|
||||
DQEBAQUAA4ICDwAwggIKAoICAQCwEhy6BgG/XCGu1REUIhSHh95flBwiyBxf9yaF
|
||||
KTkkGSY70AfMOvPtzfrf6qdHRySJWhMToVWh/X2gbjuPZUbPQJHEhpk1C154yDVD
|
||||
g6t4Q0pyULBSHxdKxanNm0O6CfrXoDR9EmR6c+Ymy6+aD/KYQork/UKfZRzHPBwV
|
||||
klNiEHE2C7lGScjlW0k9DNChdeO2O7Y5XYMY47NFKDsdMxIankmpiTzGiBGrulQq
|
||||
RwuhJy8r5u26UzBJRQBxfm4Q9jT273ZVKK9cu3+zbb3s0ye4XvOM8zkgz24kXbiF
|
||||
r7RvC4B5GxHoaBDXDUigKqv8g8XkLS+Rs2Ja+6KDZh6XPtvEZYQ48TsTqKmUH1++
|
||||
Tmyri3yg2WLYxOpzs8Qllp/O/1nH47U+2JkOxAI4HwleIg71mb+uF/jVBz/CweQF
|
||||
LPPDo0k5NfYtMvWR+Veq+P9q2UGs6jgGmAghndQZfe01VxHkiaqwOraeTHn/JfXh
|
||||
FlZIfalTap/lDK7aCJA0U0mJP554Vms2KgQK1YksojCxuXShR5A6VLK8CtSWXOh0
|
||||
Iwje5oPPNm2DYgRjbSPl4Q509EOCOMlC6ykUt04cuB1pgYrlXNnv3+oNzcpfOhhT
|
||||
JOsX1rTxYYhZ+EmmQvOUEPWHPPClRqHOPN7PsaxI4EEFCIKfdEVWOEE1KJ8RmBmk
|
||||
6VAoHwIDAQABo4ICTTCCAkkwCQYDVR0TBAIwADAdBgNVHQ4EFgQU9ihwzGTLPCqA
|
||||
4CbMavWmtVLwHlowgeIGA1UdIwSB2jCB14AUxw61rrwGf9C0TBwsILKgm85KZI2h
|
||||
gbakgbMwgbAxCzAJBgNVBAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkEx
|
||||
DDAKBgNVBAoTA05XVzEMMAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9D
|
||||
QTExMC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2Vi
|
||||
LmNvbTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZYIGIBUQJxYn
|
||||
MBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMDMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6
|
||||
Ly9ub2Z1c3Njb21wdXRpbmcuY29tL0NBL0NSTC9ORkNfUm9vdF9DQS5jcmwwSQYI
|
||||
KwYBBQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0aW5n
|
||||
LmNvbS9DQS9ORkNfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgQQMD4GCWCG
|
||||
SAGG+EIBAwQxFi9VUkk6aHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JM
|
||||
L05GQ0NBLmNybDA+BglghkgBhvhCAQQEMRYvVVJJOmh0dHA6Ly9ub2Z1c3Njb21w
|
||||
dXRpbmcuY29tL0NBL0NSTC9ORkNDQS5jcmwwDQYJKoZIhvcNAQELBQADggIBAETg
|
||||
cMO9sC4hm6RIAdcKWlSAPD7+u5I+cxY0k7TRljSxGMu8WbzQU39wkEqK5PCgT0qm
|
||||
Up0qFdc3osO19UfXJj67jI6450dB1LDHGa9ymuaXkTVEOUGeYPJ/a5UpJKN+PJPy
|
||||
liPG3BP+6EvILMm0qd5EIvrmeAJtNtWEi6Y2Kkb8QAliSlovtsjHmbW0Mz1AzeQm
|
||||
l9V/xOXbdQnp7A15T41XUoR5V6AJ9yraCMafFL/GaE2IXkIoUEpVb55hobsdAkwt
|
||||
yjEZBxyv6A81t3v0HEpkEmyn6anmjCi3sLCKWzK0dTLL+8OyxUYXgmFxRHMyXu90
|
||||
ZrtGDInxl/MlSE3/3T8xINiaxhiZSrf5XZqPteRUCKCDPiEdYv19SbsypReguuLA
|
||||
w5B2l0I/2KH2BMYOMy6170MPDiEbbFugDifwokmuGLHQqiz99AVFVwCMu/ThO1Hj
|
||||
rm27HS8bYOMzyTiil+pEyhPpoP23P0aHCyESTsXcgfMBZkeTyWxvdj8dCCaJTGiF
|
||||
GJ6mELEoOnNhLqVhouGzMOZMS0w5vBG/gSQGb76inVqxMFByWKvVzyBm62JJ9P7D
|
||||
AI8aN2WjZ9c0Z0czEz/SKPISxQjGrdoeQvvmn3Qyg4TS7aWt4RVJh67m042pWPdO
|
||||
0+2unR8IoW1J6AeQn7Nuz0PyEx+eCZqBp3tsH8zX
|
||||
-----END CERTIFICATE-----
|
@ -1,44 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHrTCCBZWgAwIBAgIJAIF057Inea3QMA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
|
||||
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
|
||||
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
|
||||
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
|
||||
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
|
||||
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
|
||||
EwJOQTEMMAoGA1UEChMDTldXMQ4wDAYDVQQLEwVFYXJ0aDEVMBMGA1UEAwwMRWFy
|
||||
dGhfVlBOX0NBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5hbEBuZXR3b3JrZWR3ZWIu
|
||||
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA3H82oeWzt5ZBoyelJhBjp8WrjE5yrR9+
|
||||
/xn118D/WXGeLMPixXmjNe9Ik0tg824DBoc3/ZHOtt8Knk32LZZhF5BF1B5H8Xgg
|
||||
zx46e23tufVzUWPt+tZjV35//T/PikYUZUdCTYbYZFOuR0VwOiJBtCu0TEwQDaLe
|
||||
bT9YJmAiSACKRUAT5WJwmP8mxuwW0qL5gns3Sfldq1Fvqjwa/WZQfI1uvV0GeHdd
|
||||
EWiH5sTe6wtIHjXUwV/YvCsDcqk3e/Jl77QgiYwduovx/jKRCNtpBVH9yA5wsdRk
|
||||
cPhAEdF8SK/8Ti/8SOChYePmIlIpbqZSO5lxyGJB+JP6Lq5gFSLX2xkTx7Z+GrlG
|
||||
hiq7++PyI5S9wOsxzb+yggiX9O09n8L39cQ8t6F48AXEZpdE8jdp+jbrLUhFJ33N
|
||||
HFShms92VGmEL/Hp+o4jzLkKjj8JiZtQVEfTQWiCpU2Iy8SE2soFzx2XrGS4QNkG
|
||||
5Qes39dfJtPzzugXgO9LjeRECfH1o5j5gr8MfV7S0Pa9KiamTRM+qCjyLM6FgboY
|
||||
XtqvGNhjZPspZCL2BePNvXMOuWQY80W2NYwpcmtQWd9NXRTOMCkBSYbaTX2gny0j
|
||||
sAG8OlKz/oNjEFhuS9DYhaB2d9i/7Ye8zFGNxhX/zSXrwSFYB7ew9unACk+UMW4m
|
||||
7oX3ZkaBx50CAwEAAaOCAcwwggHIMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
||||
FHofT+JsVUY8oAVJR3ijj0MxpFq8MIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
|
||||
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
|
||||
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
|
||||
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
|
||||
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
|
||||
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQwYDVR0fBDwwOjA4oDagNIYyaHR0
|
||||
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML0VhcnRoX1ZQTl9DQS5jcmww
|
||||
SQYIKwYBBQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0
|
||||
aW5nLmNvbS9DQS9OV1dfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgAHMA0G
|
||||
CSqGSIb3DQEBCwUAA4ICAQA/Esj2AP0oM51YYuPhE1Mmknkx6Xxnn49lZim9BJEr
|
||||
PMe5+M1wxlXnMklHl0AEyf59W1V6PCvlONonsOOZg/Dncm5w4AYdjeUSUxGMr6lw
|
||||
kVViKkPApv1NBzw3kmJDL0CazTR3K+nl4mB9BTbOSnvGX7QUcZZ92mDxqBAiTaRb
|
||||
rk8OzDW4+Lla51hSsBYuQrmRtx1jT/OZxLL6HDfM53HTLMvbFMndC2pnZL78owtp
|
||||
q/V9zyyWC2fjDFGeMAv/7/0BuwfP3Ovir5OIv7C8YMrfcshgZhdt5E4mKX02TENT
|
||||
x0tfNV/T/TeQGjdX85L4uYnViAA+rAlVRjE8Y0rZInnhDahI5ptpUUjSUvF0D3k1
|
||||
ZTXvCqvev4As7k0ci4mCO15LQLcQWOrirzARSR4l1OFWmlxd3zy8CBgjN8RgV0r+
|
||||
qPp1DWO/5hqKgVoBUKKAWX7cVu1FZYlxjiKqYsZHkwq5vy7ibHCSipufCWCVdU1X
|
||||
dkhXhbEaS4FIA1epQNhH+GPyMxVU5uTTieSx0uvEbKvJ9UmLIGQLxBsWSgfmUKjc
|
||||
xST6RlvTmKywV3ansfmYw84IxSZylpm8gT8+r5iod7lHXre1f+hESmE4lQvQ51eM
|
||||
f3RjNf5W+uGtaPTGzZRN+b//kGs1pmn6Mtyr94DQCHp3LJCAVoHpFqy8PqjdlLNo
|
||||
Yg==
|
||||
-----END CERTIFICATE-----
|
@ -1,34 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF5DCCA8ygAwIBAgIIB+I42RMLhBkwDQYJKoZIhvcNAQEFBQAwgdgxCzAJBgNV
|
||||
BAYTAkFVMRYwFAYDVQQIEw1Ob3QgU3BlY2lmaWVkMRYwFAYDVQQHEw1Ob3QgU3Bl
|
||||
Y2lmaWVkMRYwFAYDVQQKEw1OZXR3b3JrZWQgV2ViMRQwEgYDVQQLEwtOV1cgUm9v
|
||||
dCBDQTEUMBIGA1UEAxMLTkZDIFJvb3QgQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0
|
||||
aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtl
|
||||
ZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTMxMjIzMDUyNzAwWhcNMTQxMjIzMDUyNzAw
|
||||
WjCB4zELMAkGA1UEBhMCQVUxFjAUBgNVBAgTDU5vdCBTcGVjaWZpZWQxFjAUBgNV
|
||||
BAcTDU5vdCBTcGVjaWZpZWQxGjAYBgNVBAoTEU5vIEZ1c3MgQ29tcHV0aW5nMQ8w
|
||||
DQYDVQQLEwZORkMgQ0ExHDAaBgNVBAMTE25vZnVzc2NvbXB1dGluZy5jb20xMTAv
|
||||
BgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20x
|
||||
JjAkBgNVBA0THU5vIEZ1c3MgQ29tcHV0aW5nIENlcnRpZmljYXRlMIIBIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyQqO2ehMgJt7/smhusiPQn183w//y9ZE
|
||||
6IZ8ylVsQ45HEI8svadYbKayVj4XzOl6h91asi3mGKllRq1fj7/Tekid641ew1Em
|
||||
t0yMbMbxCj7NW7jM3UeTNP4+0OtNjXKGI6A2/ciS4lQoSC7TQc37L5tr3qN6Tzbt
|
||||
xLKfvyOIPczDbDBBtfAicw7071ICWjeMGJ/MASAO0RR+c77TcNFqNPkzMztyJpuc
|
||||
Qy4D+iGMDDfNfltcjd+NA5Y7YSUyx4hl05IIjY2FlmBwC1nLTYtEV4hWN+lDM8W0
|
||||
A736zo+kiP/SbryqYVUgJZoCaJV38NRB3ksNDHELwbJAE5WDdP8KlwIDAQABo4Gk
|
||||
MIGhMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgXgMDwGA1UdHwQ1MDMwMaAv
|
||||
oC2GK2h0dHA6Ly9ub2Z1c3Njb21wdXRpbmcuY29tL0NBL0NSTC9ORkNDQS5jcmww
|
||||
QwYIKwYBBQUHAQEENzA1MDMGCCsGAQUFBzAChidodHRwOi8vbm9mdXNzY29tcHV0
|
||||
aW5nLmNvbS9DQS9ORkNDQS5jcnQwDQYJKoZIhvcNAQEFBQADggIBAF4LBlQsLtH5
|
||||
uLoe2L5Kbs7QFkBa6Wc6i654yVSVty/pUMp8RDOrrortBruSEQ+bZhX8AfPoMtKD
|
||||
ZKIut9RojJTBuHpDzDZNgNcQdaw/Fx9FAe692OI6maX3bB3On4O5FMiCLegE3i85
|
||||
8sIVF86MicQlyKHDajIpUedBHVuWhIpNDhmBMS6JMIaYP7ix6L/fLPBsum6QkJCX
|
||||
C8QKE0msm9ki3vF/LrM3PwaUvNJ4tQgjBBWsbmLPf8vcLLHaarjksB7ZQdIgXiHj
|
||||
oD41uc28ORi1/xL+AyTYU1q1qVGyfodwttWZ2bFKqdSRf+5YkFfqOjrby67CvCOo
|
||||
YJRjJIIT+1Hug3af7gRNljuoATwPCbeb0uCMvUgR24b8k8UVC2cYXgdN4Qriiq9W
|
||||
9c7gODRmPOt1MqJsR/tsawWpLC9BuIhp915LGc1tZ1fX+toBfyqfQKDKNjazDVPi
|
||||
jFc6U2c/+FOQhyCqVrqATyLeR7RvJTmmNiHCCg5aJdzqo0SstWte3fJ7AWgY/OhO
|
||||
TMZG689C6ZWEQjJBrfm3OfuJFYEePg+gJOnswIM/VSd4QVUBlWt8Q/VlnTkzOF38
|
||||
LeISdO5yJeyXZft2/t4zTR+o6dETzvZYeCSiH74GEnusZ5KVZSe+0lBDIbStvu/A
|
||||
wpcM0mL7IYln8Iyb1Una2R+xS/PIgJO9
|
||||
-----END CERTIFICATE-----
|
@ -1,43 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHrDCCBZSgAwIBAgIJAMXtJgEvbEf7MA0GCSqGSIb3DQEBCwUAMIGwMQswCQYD
|
||||
VQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cx
|
||||
DDAKBgNVBAsTA05XVzEUMBIGA1UEAwwLTldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0B
|
||||
CQEWImpvbmF0aG9uLmxvY2t3b29kQG5ldHdvcmtlZHdlYi5jb20xIjAgBgNVBA0T
|
||||
GU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNhdGUwHhcNMTUxMDI3MDAwMDAwWhcNMjAx
|
||||
MDI2MjM1OTU5WjCBqjELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQH
|
||||
EwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNORkMxFDASBgNVBAMMC05GQ19S
|
||||
b290X0NBMSswKQYJKoZIhvcNAQkBFhxoZWxwZGVza0Bub2Z1c3Njb21wdXRpbmcu
|
||||
Y29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlMIICIjANBgkq
|
||||
hkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtK+L7NLT6f3c0bbmSPAWTtAkPO3W3Myv
|
||||
GlhCPUaNp4Up+/p50CiuBVrZ9hGAJQK1y+7yrmDgM+mTvlnY/m41BLtq8YYcT3Dk
|
||||
CgloEGhaUD/vdTSD6ZYAF1u8yNvueAJ+NybCpEDaDSBxbi4aJnKrcvx6j6T+YG3R
|
||||
ajHpDzQjNH89S9IzsTIrQsOM8e8stVEkjZld78TvtGc/Vl/p/QMAL8XpMJ1KBOWd
|
||||
Wmk9v/x9JiBDrdJIMFl/Zdeb9VMjbabNqjLV8uCz6Iv2E3Rii+xYghcRPF+Y1zD7
|
||||
gcOy6aaLmITFbusf1cuzZUlY/XzYs/3KNiQwENS68Mpd0v4NaPL21sip0Zys/Jbu
|
||||
mwQ8X3RQLWvlDh6l+Z3TKM6QZK1oPB2a51IsNwGBFgOMr4JbEDwlbA1QcyIzdoE8
|
||||
i/CGIKUPoaYOmmAxMuOKS1pjO+BeiQ7i+jDMX4Yip3wIGViXm6oK5uzPUUC9YeOn
|
||||
Jti9iFb/InNToaEFaNKNj8ihE9PvWWmty85J0rxFpHUMth+bANCWSxUDvzmfhAgA
|
||||
NQepApTdArzguh2t2F4CANNSeJU6gze40XMd4H3dggVVohs5GC3Aj/RbFiJADtmo
|
||||
A8a1T8sobrDKj0veapEw/eRzqlUW8z9dBLFk1+MNGOWz6p3TjoWxdjE8loShD90Z
|
||||
KeqasY/t2g0CAwEAAaOCAcswggHHMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
||||
FMcOta68Bn/QtEwcLCCyoJvOSmSNMIHiBgNVHSMEgdowgdeAFEjpZpZt1UvE5N99
|
||||
h0+Wp3vMDD7toYG2pIGzMIGwMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJ
|
||||
BgNVBAcTAk5BMQwwCgYDVQQKEwNOV1cxDDAKBgNVBAsTA05XVzEUMBIGA1UEAwwL
|
||||
TldXX1Jvb3RfQ0ExMTAvBgkqhkiG9w0BCQEWImpvbmF0aG9uLmxvY2t3b29kQG5l
|
||||
dHdvcmtlZHdlYi5jb20xIjAgBgNVBA0TGU5ldHdvcmtlZCBXZWIgQ2VydGlmaWNh
|
||||
dGWCBiAVECcWJjAOBgNVHQ8BAf8EBAMCAQ4wQgYDVR0fBDswOTA3oDWgM4YxaHR0
|
||||
cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JML05GQ19Sb290X0NBLmNybDBJ
|
||||
BggrBgEFBQcBAQQ9MDswOQYIKwYBBQUHMAKGLWh0dHA6Ly9ub2Z1c3Njb21wdXRp
|
||||
bmcuY29tL0NBL05XV19Sb290X0NBLmNydDARBglghkgBhvhCAQEEBAMCBkAwDQYJ
|
||||
KoZIhvcNAQELBQADggIBAJQM7UeDaXM0/jl1PLJ/UUFGmBhCy3pDLc2JIeRifLTo
|
||||
NzJ0RmBzF6OQGriXXKiKmZKTAwFvuYjks1Hm/hjFSTbhmNFsU3sx8qXe0h4xj9Op
|
||||
bvDDJaiXl+HIEl2BQkJ6Rnr7b56M6Y+W6cAtuCwQkZGAO1ip0pF7WbPv1OFaL1pN
|
||||
/OCe8wiXDIkyH87GFESsQG7VypAp8u5vlKkxFeISCo7FYRhfhEV0hv62gaWb0zjE
|
||||
QcW6Pgnj4KHfDKThoWwWUC+5kJuGd81dWmbgJ1+AUc5kNHl7f3w8yr6YkM24yji8
|
||||
HSpQ0yZzN3kK8JN0E+DJk0OVMD5aiBQjb+UkMIVwBWnoCixNAv0ni51eyrCJ49va
|
||||
E57RTYfPCLJurHpm+kP66V9vSKNiyBOwbmf5KSWeyG3p6YZ+ywSvypsdw21eXpOf
|
||||
Uu1GYA+UDoZE7g8KcCwM9H2T12Da8mHRlXJubeY0YrInlc5hQwgllzzYqbzrh15n
|
||||
2YU6OvfInyXwjPc6m5Ktn+lObOqFrTYBDIf5spaC5MJuMNcMIzloFtHjgStAQxds
|
||||
CKUIyVWJx/bVAdc42VcQVNU/G9df5Q8+XLJknetfa5ZU3drob2fdi4O6SwowOvv4
|
||||
UjGxZKIJBvI9J/D0Sda8vh96NJ5Q1VTW+V9pseG+r6sEb2YXt601jNxifjOY0Fiu
|
||||
-----END CERTIFICATE-----
|
@ -1,43 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHpTCCBY2gAwIBAgIBATANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCQVUx
|
||||
CzAJBgNVBAgTAk5BMQswCQYDVQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQL
|
||||
EwNOV1cxFDASBgNVBAMMC05XV19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25h
|
||||
dGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3Jr
|
||||
ZWQgV2ViIENlcnRpZmljYXRlMB4XDTE3MTIyMTAwMDAwMFoXDTI3MTIyMDIzNTk1
|
||||
OVowgbAxCzAJBgNVBAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAK
|
||||
BgNVBAoTA05XVzEMMAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTEx
|
||||
MC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNv
|
||||
bTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZI
|
||||
hvcNAQEBBQADggIPADCCAgoCggIBANNh/YQ88bqyR2569AwMnqe+9VjeUoFQcGgr
|
||||
JjcS76lZaAERnbl49PJM6X9xcFBQoCD3S1WnNXL26ZtA+PKdfvZOL8GIkwZQrXNB
|
||||
Ts2f4VP1dahuxuHYlmlwlpdT84JKZlDloUrDOgx0D707Z+ybUrTFjqaQjp/ZfybQ
|
||||
QLiYfK/6v7K7rOh8WyeWWunDo8uYlZWmtmzAQU9IQimYWepZ4/O+yfWnUVRGvYMD
|
||||
daALrNaj5MO41J13Y5sXDdl++yTCbujJ+xTDHKfjoJ+KpEuLa8VzWjJYAjm+TSXK
|
||||
gWObOxpnrb4sW2bB2pPtwQoOKd3tXYW2bRKJHGt2pVzgyGUjZ1yGKFS04+cg9OpP
|
||||
ePFtS4aTKVTMIe7BHwPA1fhu2efqmfP0vSY0EmRHuk9GIqo1r5EiC94xOcAuLkPG
|
||||
RquMQr+moD27JrhhlF9vw/Z9pr6gZ+hUDYGbE0913F1mjdtYp1lBmaLysLwpI0lH
|
||||
PUZdFdejCbnvPfH9EVxNRgbM5J/yzfRB//QRnufpjC2OgB6zTnifsYIOOSYHYgCK
|
||||
4DLrin74j4YiUGm49wuTwdqk52B8bkDzx4cWwIpJWYIeQC2xMrR/RvdrDMxt1Frg
|
||||
k5es0NHMWAzd2C2PRS2fmvuUdq2+QZRe721TvoeFLMI05PnUrxOkz/din8BNWtsN
|
||||
AoBCi3FdAgMBAAGjggHGMIIBwjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRI
|
||||
6WaWbdVLxOTffYdPlqd7zAw+7TCB3QYDVR0jBIHVMIHSgBRI6WaWbdVLxOTffYdP
|
||||
lqd7zAw+7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYD
|
||||
VQQHEwJOQTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05X
|
||||
V19Sb290X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3
|
||||
b3JrZWR3ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRl
|
||||
ggEBMA4GA1UdDwEB/wQEAwIBBjBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vbm9m
|
||||
dXNzY29tcHV0aW5nLmNvbS9DQS9DUkwvTldXX1Jvb3RfQ0EuY3JsMEkGCCsGAQUF
|
||||
BwEBBD0wOzA5BggrBgEFBQcwAoYtaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20v
|
||||
Q0EvTldXX1Jvb3RfQ0EuY3J0MBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0B
|
||||
AQsFAAOCAgEARpj46yWBnbJIfqh7V9c1AWZmbzqogJynp5AqyC2e8Rp59dpPKJ60
|
||||
BC2WVUMsCHqyhl6oZwmn2Ejud+iodGo4IwdgDneFvQQAiF7TVTBnBRHnup3rLtTX
|
||||
zvqIBPyqBmrvZSjSfG0mStb3YWS41yj9bhsqy1qRTdXS+Ghc4I1DcOWu62NbhbP/
|
||||
UHPUEwCyPxEWLtxk0u8N8Hqmlr3qHHM53cKaOUUIn6VMtq2S0o39xWt7QuHWe3Aa
|
||||
COQYaAVQ60f9cZUmw7h31d3oen7nrlaaDAp7i1e4HuTb8+PzetoGjJ8xCt4cbnp0
|
||||
ThQFdVuaLszSiHpmsKPvdazIVjhvT7CTM5EydsDHZFA6cMmWjYYm5f9MXbiCSebC
|
||||
2q+2W2vO92yd/8JE3JCRc8A2Mi4RSw9SziN/MCvueorIFJXfawz3rARgk5KXKPNj
|
||||
DBHcxxaQOTCJHLblGsv+9S/ANnucOihQRPWPGKGr80Yy5wQ8TKnuElvzrOjyR2Cj
|
||||
HGqSX2ar1GnFtmDsfamnJ0kb+2Sbamt3slAxUM/Qc+SIWepVtSNb8IppWPCxmPOd
|
||||
QyUMRayfkkc2qdo3xyUV1zE/alMPK6k0epyZ0+lyTo+sVpyzVq/D1wS63pUXiK/f
|
||||
gB5/XW5AC1ngeN3DBlOc/R5mscyv4o4cHOauxMKjldGgGhqI0QnRSi4=
|
||||
-----END CERTIFICATE-----
|
@ -1,40 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHBDCCBOygAwIBAgIJALVEKS03soafMA0GCSqGSIb3DQEBBQUAMIHWMQswCQYD
|
||||
VQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UEBxMNTm90IFNw
|
||||
ZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjETMBEGA1UECxMKTldXIFZQ
|
||||
TiBDQTETMBEGA1UEAxMKTldXIFZQTiBDQTExMC8GCSqGSIb3DQEJARYiam9uYXRo
|
||||
b24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZTmV0d29ya2Vk
|
||||
IFdlYiBDZXJ0aWZpY2F0ZTAeFw0xMzEyMjMwMDAwMDBaFw0xODEyMjIyMzU5NTla
|
||||
MIHiMQswCQYDVQQGEwJBVTEWMBQGA1UECBMNTm90IFNwZWNpZmllZDEWMBQGA1UE
|
||||
BxMNTm90IFNwZWNpZmllZDEWMBQGA1UEChMNTmV0d29ya2VkIFdlYjETMBEGA1UE
|
||||
CxMKTldXIFZQTiBDQTEfMB0GA1UEAxMWdnBuLm5ldHdvcmtlZHdlYi5sb2NhbDEx
|
||||
MC8GCSqGSIb3DQEJARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNv
|
||||
bTEiMCAGA1UEDRMZTmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTCCAiIwDQYJKoZI
|
||||
hvcNAQEBBQADggIPADCCAgoCggIBAKE3y+wq5woYZr0rDBXxzJz4dGFPAeQdC7Hg
|
||||
PwUEIvTk6FooNLdnDyf52KQPCsa4HmuM3PbR3oz0Hwn0PL7bNaSzmccAcSQejuij
|
||||
WQHSGvOiYDLKrjNmwGAyVflQDcN7q5hm27A4Ltio+DBqLZkE6MCg958ThysHaHiR
|
||||
dIMiYDeDba9lUv5H4Zaud+8eEAwDa5VJUxr4D+Wbzikc4vsCZFBwdByInWdpGMMC
|
||||
Hyz3dQJmlW988rq3inB7LkMBCn/TOlG/RZb9b2pyoow8A+YiL0tWSa57WqELgSlC
|
||||
YPx66bjZa03Nm8VzDPePgh8zFPlKBp9iXHDYQ+NH4GgPror/Cx0ASMcDl+6Bu4Kg
|
||||
F4pHvOopAplKPPNC8AFBxTjyBzPpK6x5hLRiPGOuu8259QmG7QTya9fBlzF3/uky
|
||||
b+g7CjZ0tSycZdf2wA599p4/ossQab01cnLapqSyx7N2EZNAtWpsNdq0SGaiIvjh
|
||||
xLMmSLlaht5GV7qSRQ2ho+/Rn6JWSnrmVbA39olIqhwwQM+TZVnekKXAQwARDWLF
|
||||
XNBWwueJnU/OivVOkJbHtiCHtq2bJIcQd0ZOix9SWsiXvCNZBxzZS2t4R4m5re5W
|
||||
FkwYxCz+C3NFdCzEF2inaXjRWckMq72HZYHuZUOE7tYRKYZ4pl0d7ejl0zgm2cee
|
||||
Hb2RyuixAgMBAAGjgcYwgcMwDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBaAwPwYD
|
||||
VR0fBDgwNjA0oDKgMIYuaHR0cDovL25vZnVzc2NvbXB1dGluZy5jb20vQ0EvQ1JM
|
||||
L05XV1ZQTkNBLmNybDBGBggrBgEFBQcBAQQ6MDgwNgYIKwYBBQUHMAKGKmh0dHA6
|
||||
Ly9ub2Z1c3Njb21wdXRpbmcuY29tL0NBL05XV1ZQTkNBLmNydDAdBgNVHQ4EFgQU
|
||||
lFo7HaYd3NgW2Z8m3bU2UE/ufk4wDQYJKoZIhvcNAQEFBQADggIBAIEWGvihO55D
|
||||
qusXDmFPNPqd1HQ3pj+MSuxiuWG8DKW5f0Px6Wvhc1jKevPIu7ng1B2COfGcmjDD
|
||||
Os1YKr+r/T7FS+gzT4yDe7kwsehAF/+TrtbIF9cBv3zKqhnlVLHTYgn0td1fZFxT
|
||||
/Q+yfie+fSzOl9Xt149F7HWvikLlqaKDyjTpCnz0q5Mnr2MZvjxgSGEybxS/RvI5
|
||||
j4NY8z1d/JSI5eMeegi4ZKkGTiO6BqLCRvtL4LAFq4WbmrgxMmteBshACtxAy4fq
|
||||
Uofzjx6ZmHic2npRIaTCVHG+WP0bmoDHQEYiwuZLIqFLLMsJ5fa8ovWcyH7EWpfJ
|
||||
8vX053lctyH8ui1ONL+vfjX6WPjBcAfZsuso8TurckzftPDJXPbz1ScpFaaIbfiA
|
||||
F2c2DQwfhF8HU/bnaSKvsb5dqnQqiZxiaWmevs7ZPoj9TCKSIbgund7eLLwRlZno
|
||||
ZY9/Bf292Bn/8vn+utZcx83S9h0VJHZnJgvYqpKdvo/7YEN2yd05SMeXtxHugUfh
|
||||
kzNRXp5yTGfj8NNEJp0ksSPy+Z+5OPgzQzw+VSdXuFI8Tjrjjmbf3hAAi8cCI42O
|
||||
MbsoDUZr9tauqg2jTjNnX728FrkIPWfOTp1yWRnSd2/PA+aPIJNSSd5Q3tzWZZ7r
|
||||
B062YXDRqRM8GzHVoEmSwxQJWNZw9UTJ
|
||||
-----END CERTIFICATE-----
|
@ -1,43 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHpzCCBY+gAwIBAgIINsj7HlzAfYswDQYJKoZIhvcNAQELBQAwgbAxCzAJBgNV
|
||||
BAYTAkFVMQswCQYDVQQIEwJOQTELMAkGA1UEBxMCTkExDDAKBgNVBAoTA05XVzEM
|
||||
MAoGA1UECxMDTldXMRQwEgYDVQQDDAtOV1dfUm9vdF9DQTExMC8GCSqGSIb3DQEJ
|
||||
ARYiam9uYXRob24ubG9ja3dvb2RAbmV0d29ya2Vkd2ViLmNvbTEiMCAGA1UEDRMZ
|
||||
TmV0d29ya2VkIFdlYiBDZXJ0aWZpY2F0ZTAeFw0xNTEwMjcwMDAwMDBaFw0yMDEw
|
||||
MjYyMzU5NTlaMIGjMQswCQYDVQQGEwJBVTELMAkGA1UECBMCTkExCzAJBgNVBAcT
|
||||
Ak5BMQwwCgYDVQQKEwNOV1cxEDAOBgNVBAsTB1BlZ2FzdXMxFzAVBgNVBAMMDlBl
|
||||
Z2FzdXNfVlBOX0NBMSgwJgYJKoZIhvcNAQkBFhlpbnRlcm5hbEBuZXR3b3JrZWR3
|
||||
ZWIuY29tMRcwFQYDVQQNDA5QZWdhc3VzX1ZQTl9DQTCCAiIwDQYJKoZIhvcNAQEB
|
||||
BQADggIPADCCAgoCggIBAMjkj6nShoH9YfKCa8MbQFV0dqkoHuuv11W7IcvL4isR
|
||||
NrLshe8zlB3v9cGsaWot9zu+tbcX71SW+2vdlCTuNerdlOQIiMntjkbHPG8iwjZu
|
||||
WHpu/DqZv9BJjfIuCWWb3eTw6DuvQTo3Lwauh7z/Vp8IKPmoloAVnj8rZizVqWxV
|
||||
cJwPD3vKJAKtbtZkfC7dgWFPRWTtX26DVV/EmhICinE/KmkfckLxKdkpuyejiHz8
|
||||
uduweS9Wfj21mgsWKeSYkzONGr04YmYxCLWGqyqwQ+ZsNRJWdRFBHKwKwH3k01I8
|
||||
Ce6/tpNZYQLYykUHTCpjHW4UuvkXFo2SK9ilJ5bUze5qedYrFMXsGJoWgw+xCYtZ
|
||||
QkFQmFNXFk1oplVwK/8Jnn3mfEpsbtQBW4RAyOTETRlWpe+n+/BgZNPdncODXWN0
|
||||
Gvtg4guxftdNesXd+6e4R7tC2GX8sqxOzNji64KxAoiMPK0qwhyFKegD7iuMC/LC
|
||||
D2KhFNxjRHkJIe1MfvPAZPygiQYPbNatVLzRSaS8Uj132IUfqqCPyrKNg/rJb6Yh
|
||||
Ovlf/jEMUaEzH9xUmlOEiKf2yyXrw6vTWhtkYCNCyronLblFc+NiwSzCxcINMlX+
|
||||
hj8zg49wQC/80QjwdHbz2KP9sLzFtuURFjRdpfYFaiI7iWapo+eHYq6OKq4nH1Z1
|
||||
AgMBAAGjggHOMIIByjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRBbMbXhzlI
|
||||
dbRsB2xNIPbP2kCbETCB4gYDVR0jBIHaMIHXgBRI6WaWbdVLxOTffYdPlqd7zAw+
|
||||
7aGBtqSBszCBsDELMAkGA1UEBhMCQVUxCzAJBgNVBAgTAk5BMQswCQYDVQQHEwJO
|
||||
QTEMMAoGA1UEChMDTldXMQwwCgYDVQQLEwNOV1cxFDASBgNVBAMMC05XV19Sb290
|
||||
X0NBMTEwLwYJKoZIhvcNAQkBFiJqb25hdGhvbi5sb2Nrd29vZEBuZXR3b3JrZWR3
|
||||
ZWIuY29tMSIwIAYDVQQNExlOZXR3b3JrZWQgV2ViIENlcnRpZmljYXRlggYgFRAn
|
||||
FiYwDgYDVR0PAQH/BAQDAgEGMEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly9ub2Z1
|
||||
c3Njb21wdXRpbmcuY29tL0NBL0NSTC9QZWdhc3VzX1ZQTl9DQS5jcmwwSQYIKwYB
|
||||
BQUHAQEEPTA7MDkGCCsGAQUFBzAChi1odHRwOi8vbm9mdXNzY29tcHV0aW5nLmNv
|
||||
bS9DQS9OV1dfUm9vdF9DQS5jcnQwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3
|
||||
DQEBCwUAA4ICAQCGuevjkXLiEC03sX0Iu1oV8IgrRv76agQseJs/s+xBJ2NznjT8
|
||||
xsZX7QmpAJ1tdOtiwQwggF04KHj6rlt0PbA2MHjz1uB148pep8DpF/z+iCW8exA8
|
||||
iIBjRK9A339Q8gM8jJRBoz6I3Ipwkx+06+DWs73fwW2Y1PgHg445GB1ToN3cKS54
|
||||
YomZUA1yagdBiDXriPReFQPBTk18dyA8ZIoVse1J4HgGr5i+5for6IK1C7w2UoTh
|
||||
55sEP44VskYpAZCaCd531OVgruw+SixhOJbHS/j/smN1WinLEptBKi7LY+nLJtiE
|
||||
BEDiexeXwlfZWBTSs34yDIn8JBtOLYd1Ur/kB/j4Wbs7xT9RJ1VhTDFZcOB3rREj
|
||||
comhcuWsbQegdt9M0DWZdriZzgzGQBm5dqFnp6FAG4tOjAGr24TP6tsq9sbS1Eyk
|
||||
5snwE70mTQ9bCDFU4Re+bVfAIFDfY9HF822ZgMdy1BQw/S5a2YoRMZtYaZFGYidp
|
||||
VNk/ICnl6ELlg6ZlPAiAn2PaBICTtzlt/TpznAFEvxlvc7tsc0HsDKVT0n+T8wv3
|
||||
yp0rbgrQrJlI+Z9nl+g3ZHDc9mQXbcIWBkUFUoIsTUwdGExXypWDIlQ86pqyLFnl
|
||||
42BzmL9mpf862aHybxCBOEre2uBUhFGWTTjNm7kjItM5SGQGUq7EAd1p6w==
|
||||
-----END CERTIFICATE-----
|
@ -1,52 +0,0 @@
|
||||
<!doctype html>
|
||||
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title>Home [No Fuss Computing]</title>
|
||||
|
||||
<meta name="robots" content="index,follow"/>
|
||||
<meta name="description" content="Here at No Fuss Computing we predominately do research and development into, making your computing experience a more enjoyable one. See our projects page to find out what we are working on."/>
|
||||
|
||||
<meta property="og:locale" content="en_US"/>
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta property="og:title" content="Home [No Fuss Computing]"/>
|
||||
<meta property="og:description" content="Here at No Fuss Computing we predominately do research and development into, making your computing experience a more enjoyable one. See our projects page to find out what we are working on."/>
|
||||
<meta property="og:url" content="http://nofusscomputing.com/"/>
|
||||
<meta property="og:site_name" content="No Fuss Computing"/>
|
||||
<meta property="og:image" content="images/nfc_header.png"/>
|
||||
|
||||
|
||||
<link rel="canonical" href="http://nofusscomputing.com/"/>
|
||||
|
||||
<style type="text/css">
|
||||
|
||||
.StatusMessage {
|
||||
font-size: 36px;
|
||||
color: #FF0000;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div align="center">
|
||||
<p><img src="images/nfc_header.png" width="300" height="100"></p>
|
||||
<br>
|
||||
<p>View us at other locations</p>
|
||||
<p>
|
||||
<a href="https://hub.docker.com/u/nofusscomputing" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/docker.svg" width="40" height="40" style="background: #2496ED;"> - Docker Hub</a><br>
|
||||
<a href="https://github.com/NoFussComputing" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/github.svg" width="40" height="40" style="background: #FFFFFF;"> - GitHub</a><br>
|
||||
<a href="https://gitlab.com/nofusscomputing" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/gitlab.svg" width="40" height="40" style="background: #FCA121;"> - Gitlab</a><br>
|
||||
<a href="https://www.facebook.com/NoFussComputing" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/facebook.svg" width="40" height="40" style="background: #1877F2;"> - FaceBook</a><br>
|
||||
<a href="https://readthedocs.org/profiles/nofusscomputing/" target="_new"><img height="32" width="32" src="https://simpleicons.org/icons/readthedocs.svg" width="40" height="40" style="background: #8CA1AF;"> - Read the Docs</a><br>
|
||||
</p>
|
||||
<br>
|
||||
<br>
|
||||
<p>© 2007-2021</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,7 +0,0 @@
|
||||
mkdocs-minify-plugin==0.5.0
|
||||
mkdocs-material-extensions==1.0.3
|
||||
wheel
|
||||
mkdocs-material==8.1.7
|
||||
./custom-plugins/mkdocs-plugin-tags
|
||||
mkdocs-git-revision-date-localized-plugin==0.11.1
|
||||
pymdown-extensions==9.1
|
@ -89,18 +89,20 @@ class Data:
|
||||
|
||||
url = link.get_attribute('href')
|
||||
|
||||
link = self.parse_url(url)
|
||||
if 'gitlab.com/-/ide/project' not in url: # ignore gitlab ide links
|
||||
|
||||
hyperlink_source_file = {'name': source_file, 'location': link_location}
|
||||
link = self.parse_url(url)
|
||||
|
||||
if link['url_id'] in data['hyperlinks']:
|
||||
hyperlink_source_file = {'name': source_file, 'location': link_location}
|
||||
|
||||
data['hyperlinks'][link['url_id']]['source_files'].append(hyperlink_source_file)
|
||||
if link['url_id'] in data['hyperlinks']:
|
||||
|
||||
else:
|
||||
data['hyperlinks'][link['url_id']]['source_files'].append(hyperlink_source_file)
|
||||
|
||||
link['source_files'] = [ hyperlink_source_file ]
|
||||
data['hyperlinks'][link['url_id']] = link
|
||||
else:
|
||||
|
||||
link['source_files'] = [ hyperlink_source_file ]
|
||||
data['hyperlinks'][link['url_id']] = link
|
||||
|
||||
|
||||
events = [self.process_browser_log_entry(entry) for entry in self.driver.get_log('performance')]
|
||||
|
@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z"/></svg>
|
Before Width: | Height: | Size: 663 B |
@ -1,31 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{{ page.content }}
|
||||
{% set blog_posts = [] %}
|
||||
{% for page in nav.pages %}
|
||||
{% if page.url.startswith(config.extra.blog.dir) and page.meta.date is defined %}
|
||||
<!-- or "" suppresses "None" output-->
|
||||
{{ blog_posts.append( page ) or "" }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% for page in (blog_posts|sort(attribute="meta.date", reverse=True))[:config.extra.blog.list_length] %}
|
||||
<h2><a href="{{ page.url|url }}">{{ page.title }}</a></h2>
|
||||
<hr>
|
||||
{% include "partials/blog_metadata.html" %}
|
||||
<p>
|
||||
{{ page.meta.description }}
|
||||
</p>
|
||||
<!-- Use a hidden p tag to provide a preview -->
|
||||
{% if config.extra.blog.extended_preview %}
|
||||
<a href="{{ page.url|url }}#more">
|
||||
<span class="twemoji">
|
||||
{% include ".icons/octicons/arrow-right-24.svg" %}
|
||||
</span>
|
||||
Continue reading
|
||||
<hr>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock %}
|
@ -1,8 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{{ page.title }}</h1>
|
||||
{% include "partials/blog_metadata.html" %}
|
||||
<hr>
|
||||
{{ page.content }}
|
||||
{% endblock %}
|
@ -1,7 +0,0 @@
|
||||
<a href="{{ page.url|url }}">
|
||||
<span class="twemoji">
|
||||
{% include ".icons/octicons/arrow-right-24.svg" %}
|
||||
</span>
|
||||
Continue reading
|
||||
<hr>
|
||||
</a>
|
@ -1,32 +0,0 @@
|
||||
<aside class="mdx-author">
|
||||
{% if config.extra.blog.author_image is defined %}
|
||||
<p>
|
||||
<img alt={{ config.extra.blog.author }} src={{ config.extra.blog.author_image }}>
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>
|
||||
<span>
|
||||
{% if config.extra.blog.author %}
|
||||
<strong>{{ config.extra.blog.author }}</strong>
|
||||
·
|
||||
{% endif %}
|
||||
{% include "partials/blog_social.html" %}
|
||||
</span>
|
||||
<span>
|
||||
<span class="twemoji">
|
||||
{% include ".icons/octicons/calendar-24.svg" %}
|
||||
</span>
|
||||
{{ page.meta.date.strftime("%Y-%m-%d") }} ·
|
||||
{% if page.meta.git_revision_date_localized %}Updated {{ page.meta.git_revision_date_localized.replace("\n", "").replace("\r", "") }} <br>{% endif %}
|
||||
<span class="twemoji">
|
||||
{% include ".icons/octicons/clock-24.svg" %}
|
||||
</span>
|
||||
<!--Min reading time is 1 minute-->
|
||||
{% set read_time = page.content | wordcount // config.extra.blog.words_read_per_minute|default(300, true) %}
|
||||
{% if read_time == 0 %}
|
||||
{% set read_time = 1 %}
|
||||
{% endif %}
|
||||
{{ read_time }} min read
|
||||
</span>
|
||||
</p>
|
||||
</aside>
|
@ -1,17 +0,0 @@
|
||||
{% if config.extra.social %}
|
||||
{% set ns = namespace() %}
|
||||
{% for social in config.extra.social %}
|
||||
{% set title = social.name %}
|
||||
{% if not title and "//" in social.link %}
|
||||
{% set _,url = social.link.split("//") %}
|
||||
{% set title = url.split("/")[0] %}
|
||||
{% endif %}
|
||||
{% if ns.line_break is defined %}
|
||||
{{ ns.line_break }}
|
||||
{% endif %}
|
||||
<a href="{{ social.link }}" target="_blank" rel="noopener" title="{{ title | e }}" class="twemoji">
|
||||
{% include ".icons/" ~ social.icon ~ ".svg" %}
|
||||
</a>
|
||||
{% set ns.line_break = " · " %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
@ -1,14 +0,0 @@
|
||||
{#-
|
||||
This file was automatically generated - do not edit
|
||||
-#}
|
||||
<footer class="md-footer">
|
||||
|
||||
<div class="md-footer-meta md-typeset">
|
||||
<div class="md-footer-meta__inner md-grid">
|
||||
{% include "partials/copyright.html" %}
|
||||
{% if config.extra.social %}
|
||||
{% include "partials/social.html" %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
{%- for file in pages -%}
|
||||
{% if not file.page.is_link %}
|
||||
<url>
|
||||
<loc>{% if file.page.canonical_url %}{{ file.page.canonical_url|e }}{% else %}{{ file.page.abs_url|e }}{% endif %}</loc>
|
||||
{% if file.page.meta.git_revision_date_localized %}<lastmod>{{ file.page.meta.git_revision_date_localized.replace("\n", "").replace("\r", "").replace('<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-iso_date">', '').replace('</span>','') }}</lastmod>{% endif %}
|
||||
<changefreq>weekly</changefreq>
|
||||
</url>
|
||||
{%- endif -%}
|
||||
{% endfor %}
|
||||
</urlset>
|
1
website-template
Submodule
@ -1,47 +0,0 @@
|
||||
====== Applications ======
|
||||
return to [[home|Contents]]
|
||||
|
||||
I not only use MDT to deploy applications during OS deployment but I also have a 'Post OS Install' task sequence to install applications as well.
|
||||
|
||||
Application folders Layout is pretty straight forward.
|
||||
* Client Software Suite - Standard Suite
|
||||
* //All Freeware applications that I install is under this structure//
|
||||
* Client Software Suite - Domain
|
||||
* //Local Domain only Applications//
|
||||
* Server Software Suite - Domain
|
||||
* //Software for use on domain Servers//
|
||||
|
||||
Each suite folder is setup as follows.
|
||||
^ Folder ^ Description ^
|
||||
| Suite | Applications listed here are only Application Bundles. The dependent applications for these Application bundles are selected from the AppTree folder. //They are visible from the deployment wizard.// |
|
||||
| Suite\AppTree | Applications here are 'Applications with Source files' these applications are contain the acutual installers for the application in question. //They are not visible from the deployment wizard.// |
|
||||
| Suite\Archive | Applications here are old versions, //they are visible from the deployment wizard.// |
|
||||
|
||||
|
||||
**Figure 1. AppTree Folder Structure**
|
||||
{{ :public:help:mdt:mdtapptree.png?nolink |MDT AppTree Directory Structure}} Fig 1. This is where new applications are imported to they are imported as an application with source files.\\
|
||||
\\
|
||||
|
||||
**Figure 2. Suite Application bundles**
|
||||
{{ :public:help:mdt:mdtapplications.png?nolink |MDT Suite Applications}} Fig 2. These applications are application bundles with the application under the app tree folder added as a dependency.
|
||||
|
||||
===== Add New Application =====
|
||||
To add a new application the following process is followed.
|
||||
- Import an application with source files into the AppTree Folder ensuring you hide it from the deployment wizard.
|
||||
- Create an application Bundle under the Suite root folder and set its dependency to the application you wish to install, from the AppTree folder.
|
||||
- if the application you wish to install has dependent applications, select the dependent application bundle from the suite root folder making sure it is set to install before the application that requires it does.
|
||||
|
||||
===== Update an Application =====
|
||||
- Import an application with source files into the AppTree Folder ensuring you hide it from the deployment wizard.
|
||||
- goto the application Bundle under the Suite root folder and set its dependency to the application you just added to the AppTree folder and remove the old version of that application.
|
||||
- return to the AppTree folder and move the old app to the Archive directory making sure you 'uncheck' the 'hide from deployment wizard'.
|
||||
|
||||
===== other useful info =====
|
||||
- utilize the uninstall key, within each application it will prevent the app from trying to install again.
|
||||
|
||||
===== Reasoning =====
|
||||
This structure was adopted for the following reasons:
|
||||
* Create Deployment media based on suites (Departments / Groups / ETC.)
|
||||
* If you have mandatory applications in your config file providing you have used the Suit 'Application Bundle' you don't have to leave the GUI/Edit the config file to update the application.
|
||||
* clarity
|
||||
|
@ -1,27 +0,0 @@
|
||||
====== My Microsoft Deployment Tool Kit Setup ======
|
||||
<wrap center info>This information has been created as a record of how I do something, if you decide to follow anything within this set of pages and stuff up, your on your own!!</wrap>
|
||||
|
||||
I use Microsoft Deployment Tool Kit (MDT) to reduce the time it takes to install/update and to deploy a working Windows OS. The setup of MDT and time taken to test and get it right far outweighs deploying an OS by hand. Below you will find how I have setup my MDT structure and why. Most of my setup has been chopped and changed due to trial and error and to ease the burden.
|
||||
|
||||
My goals for MDT are:
|
||||
* Deploy any Windows OS quickly
|
||||
* Easily update Applications / Drivers / Operating System
|
||||
* make deployment media that could be used by a less savvy computer user.
|
||||
|
||||
I currently use MDT to Deploy windows on my own network (Active Directory Domain), Stand alone machines and family and friends computers. I also use MDT to install applications and force a computer to update using my WSUS Server.
|
||||
|
||||
===== Contents =====
|
||||
these sub-pages define each section of my setup a little further
|
||||
- [[applications]]
|
||||
- [[operating_system]]
|
||||
- [[out_of_box_drivers]]
|
||||
- [[packages]]
|
||||
- [[task_sequences]]
|
||||
- [[config_file]]
|
||||
- [[customizations]]
|
||||
|
||||
|
||||
|
||||
===== Folder Layout =====
|
||||
|
||||
{{:public:help:mdt:mdtstructure.png?nolink |MDT Folder Structure}}
|
Before Width: | Height: | Size: 13 KiB |