40 Commits
Author SHA1 Message Date
r.didato 69ab1c94b1 Fix env staging 2026-07-12 23:25:46 +02:00
r.didato b550cbda4a aggiornato docker compose v2 2026-07-12 23:15:36 +02:00
r.didato 2ef1efe1c9 Aggiunto letsencrypt 2026-07-12 23:00:46 +02:00
r.didato 58962bb97e Fix certs 2025-09-10 23:18:26 +02:00
r.didato 38bae579e5 Fix chained 2025-09-10 23:16:21 +02:00
r.didato 3633c94366 ssl 2025 2025-09-10 23:10:11 +02:00
r.didato 55b5bb2395 ssk 2025 2025-09-10 23:09:38 +02:00
r.didato ed384b28e7 Fix chained ssl 2024 2024-07-16 23:48:41 +02:00
r.didato d47dba6898 Minor 2024-07-16 23:38:37 +02:00
r.didato cc4bdb2e0f Typo 2024-07-16 23:36:24 +02:00
r.didato e99d00f22f ssl 2024 2024-07-16 23:33:12 +02:00
r.didato 8694ac5224 minor 2023-09-23 11:32:22 +02:00
r.didato 6815e672fd typo 2023-09-23 11:21:21 +02:00
r.didato cd0ced6cf4 ssl cert 2023-09-23 11:18:49 +02:00
r.didato ed69ff4923 nginx logging 2023-09-23 11:18:01 +02:00
r.didato fe355027ea Nginx redirect non www to www 2023-09-23 11:14:40 +02:00
r.didato 45673894af Aggiornamenti https 2023-07-16 11:34:49 +02:00
r.didato 5ab17889f4 minor 2023-07-16 11:20:21 +02:00
r.didato 25a8495c5c Aggiornamenti https 2023-07-16 11:14:18 +02:00
r.didato 0dd8a47c51 Aggiornamenti per https 2023-07-16 11:06:48 +02:00
r.didato 6e07f1ad0b Aggiornamenti per https 2023-07-16 11:03:04 +02:00
r.didato eb643bcb79 Fix aws login 2023-06-27 00:35:40 +02:00
r.didato b1a33940ff Merge branch 'development' of ssh://gogs.didato.ninja:2022/Work/fdn2 into development 2023-06-26 21:34:08 +02:00
r.didato b9be324698 #16 - Inserito nuovo tag 2023-06-26 21:34:06 +02:00
r.didato 40d0e6071a Update 'cicd/environments/production/worker.env' 2022-12-24 00:49:26 +00:00
r.didato 60dfebc676 Update 'cicd/environments/production/webserver.env' 2022-12-24 00:49:13 +00:00
r.didato 0479701b70 Update 'cicd/environments/test/worker.env' 2022-12-24 00:46:05 +00:00
r.didato f80dc6ec64 Update 'cicd/environments/test/webserver.env' 2022-12-24 00:45:53 +00:00
r.didato fc63d04c6b Fix paths 2022-11-16 22:23:00 +01:00
r.didato 0cbf98d43e Ridotto tempo di rotazione banner 2022-11-16 21:15:30 +01:00
r.didato 0359e12555 #15 Rimossi allineamenti non necessari 2022-10-10 21:02:48 +02:00
r.didato 83e17cec7c #15 - Fixed 2022-10-10 20:57:18 +02:00
r.didato 05e4c00b7f asd 2022-10-04 20:45:14 +02:00
r.didato 69eb59b93b Typpo 2022-10-04 20:42:00 +02:00
r.didato 4883c53419 Fix click Banner 2022-10-04 20:41:22 +02:00
r.didato a0bafc453f CICD 2022-10-04 19:56:49 +02:00
r.didato b515760e6d Fix config 2022-10-04 19:47:16 +02:00
r.didato ea4e0c0ec3 FromName email 2022-10-02 19:54:26 +02:00
r.didato 3f04905d22 #12 Backup + fix config email 2022-10-02 19:45:09 +02:00
r.didato 0ab6391bf3 #12 2022-10-02 19:16:59 +02:00
58 changed files with 1360 additions and 100 deletions
+4
View File
@@ -2,6 +2,10 @@
Versione dockerizzata di FDN2 Versione dockerizzata di FDN2
# HTTPS - CSR
> openssl req -new -newkey rsa:2048 -nodes -out www_ifattidinapoli_it.csr -keyout www_ifattidinapoli_it.key -subj "/C=IT/ST=Na/L=Napoli/O=I Fatti di Napoli/CN=www.ifattidinapoli.it"
### Dependencies ### Dependencies
- AWS Cli - AWS Cli
+2 -2
View File
@@ -36,7 +36,7 @@ $currentSystem->apache->user = "var-www";
$currentSystem->apache->group = "var-www"; $currentSystem->apache->group = "var-www";
$currentSystem->apache->workdir = "/var/www"; // Il path in cui inserire la cartella con le pagine html $currentSystem->apache->workdir = "/var/www"; // Il path in cui inserire la cartella con le pagine html
$currentSystem->remoteLocationPath = getenv('ASD_PUBLIC_URL')."/"; $currentSystem->remoteLocationPath = getenv('DDNINJA_PUBLIC_URL')."/";
// Deprecato in quanto CBS2 è stato dismesso // Deprecato in quanto CBS2 è stato dismesso
$backupSystem = new stdClass(); $backupSystem = new stdClass();
@@ -134,7 +134,7 @@ $config->database = $database;
$config->mailer = new stdClass(); $config->mailer = new stdClass();
$config->mailer->address = "email-smtp.eu-west-1.amazonaws.com"; $config->mailer->address = "email-smtp.eu-west-1.amazonaws.com";
$config->mailer->port = "25"; $config->mailer->port = "587";
$config->mailer->username = "AKIASMB7IW2MQPUP5CXS"; $config->mailer->username = "AKIASMB7IW2MQPUP5CXS";
$config->mailer->password = "BHv+82Nns1kIKg99Hx0sjKlEpR+X4+1EgX+ec64n/mBt"; $config->mailer->password = "BHv+82Nns1kIKg99Hx0sjKlEpR+X4+1EgX+ec64n/mBt";
$config->mailer->smtpAuth = true; $config->mailer->smtpAuth = true;
+1 -1
View File
@@ -27,7 +27,7 @@ $currentSystem->apache->user = "var-www";
$currentSystem->apache->group = "var-www"; $currentSystem->apache->group = "var-www";
$currentSystem->apache->workdir = "/var/www"; // Il path in cui inserire la cartella con le pagine html $currentSystem->apache->workdir = "/var/www"; // Il path in cui inserire la cartella con le pagine html
$currentSystem->remoteLocationPath = "http://www.ifattidinapoli.it/"; $currentSystem->remoteLocationPath = "https://www.ifattidinapoli.it/";
$backupSystem = new stdClass(); $backupSystem = new stdClass();
$backupSystem->account = "1582528f056a7ea7f391149fddc75553"; $backupSystem->account = "1582528f056a7ea7f391149fddc75553";
+1 -1
View File
@@ -61,7 +61,7 @@ class BannerHelper {
private static function getBannerImpressions($bannerIds) { private static function getBannerImpressions($bannerIds) {
$time = strtotime("today CET"); $time = strtotime("today");
$stats = GlobalVariables::get("dao")->query( $stats = GlobalVariables::get("dao")->query(
BannerStatsModel::class, BannerStatsModel::class,
[ [
+8 -8
View File
@@ -9,11 +9,11 @@ class FDN_MailHelper {
public static function generateMailFooter(){ public static function generateMailFooter(){
$footer = '<div style="background-color:#14477c;height:177px;margin-top:10px;">'. $footer = '<div style="background-color:#14477c;height:177px;margin-top:10px;">'.
'<div style="text-align:center;color:#2e91d4;padding:10px;">'. '<div style="text-align:center;color:#2e91d4;padding:10px;">'.
'<a style="color:#2e91d4;margin:10px;" href="http://www.ifattidinapoli.it/index.php">Home</a> | <a style="color:#2e91d4;margin:10px;" href="http://www.ifattidinapoli.it/categorySummary.php?category=1>">Politica</a> | <a style="color:#2e91d4;margin:10px;" href="http://www.ifattidinapoli.it/categorySummary.php?category=2>">Cronaca</a> | <a style="color:#2e91d4;margin:10px;" href="http://www.ifattidinapoli.it/categorySummary.php?category=3>">Sport</a> | <a style="color:#2e91d4;margin:10px;" href="http://www.ifattidinapoli.it/categorySummary.php?category=4>">Cultura&Spettacolo</a> | <a style="color:#2e91d4;margin:10px;" href="http://www.ifattidinapoli.it/categorySummary.php?category=5>">Gossip</a>'. '<a style="color:#2e91d4;margin:10px;" href="https://www.ifattidinapoli.it/index.php">Home</a> | <a style="color:#2e91d4;margin:10px;" href="https://www.ifattidinapoli.it/categorySummary.php?category=1>">Politica</a> | <a style="color:#2e91d4;margin:10px;" href="https://www.ifattidinapoli.it/categorySummary.php?category=2>">Cronaca</a> | <a style="color:#2e91d4;margin:10px;" href="https://www.ifattidinapoli.it/categorySummary.php?category=3>">Sport</a> | <a style="color:#2e91d4;margin:10px;" href="https://www.ifattidinapoli.it/categorySummary.php?category=4>">Cultura&Spettacolo</a> | <a style="color:#2e91d4;margin:10px;" href="https://www.ifattidinapoli.it/categorySummary.php?category=5>">Gossip</a>'.
'</div>'. '</div>'.
'<div style="text-align:center;color:white;margin-top:25px;">TESTATA REGISTRATA PRESSO IL TRIBUNALE DI NAPOLI AUT. NR. 8 DEL 27 GENNAIO 2006</div>'. '<div style="text-align:center;color:white;margin-top:25px;">TESTATA REGISTRATA PRESSO IL TRIBUNALE DI NAPOLI AUT. NR. 8 DEL 27 GENNAIO 2006</div>'.
'<div style="text-align:center;color:white;margin-top:20px;">COPYRIGHT &copy 2016 <a href="http://www.ifattidinapoli.it" style="color:white;">www.ifattidinapoli.it</a> - Giornale della Terza Metropoli Italiana</div>'. '<div style="text-align:center;color:white;margin-top:20px;">COPYRIGHT &copy 2016 <a href="https://www.ifattidinapoli.it" style="color:white;">www.ifattidinapoli.it</a> - Giornale della Terza Metropoli Italiana</div>'.
'<div style="text-align:center;color:white;margin-top:20px;"><a href="http://www.ifattidinapoli.it/redazione.php" style="color:white;">REDAZIONE</a> | <a href="http://www.ifattidinapoli.it/archivio.php" style="color:white;">ARCHIVIO STORICO</a></div>'. '<div style="text-align:center;color:white;margin-top:20px;"><a href="https://www.ifattidinapoli.it/redazione.php" style="color:white;">REDAZIONE</a> | <a href="https://www.ifattidinapoli.it/archivio.php" style="color:white;">ARCHIVIO STORICO</a></div>'.
'</div>'; '</div>';
return $footer; return $footer;
} }
@@ -29,7 +29,7 @@ class FDN_MailHelper {
$confirmLink = GUIHandler::getBaseUrl()."admin/confirmAdmin.php?regcode=".$admin->id."&email=".$admin->email; $confirmLink = GUIHandler::getBaseUrl()."admin/confirmAdmin.php?regcode=".$admin->id."&email=".$admin->email;
$mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="http://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>'; $mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="https://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>';
$tmp->body = $mailHead."Per attivare il tuo account clicka sul link riportato in seguito o copialo e incollalo nel tuo browser.<br/><br/>"; $tmp->body = $mailHead."Per attivare il tuo account clicka sul link riportato in seguito o copialo e incollalo nel tuo browser.<br/><br/>";
$tmp->body.='<a href="'.$confirmLink.'">'.$confirmLink.'</a><br/>'.self::generateMailFooter().'</div>'; $tmp->body.='<a href="'.$confirmLink.'">'.$confirmLink.'</a><br/>'.self::generateMailFooter().'</div>';
@@ -49,7 +49,7 @@ class FDN_MailHelper {
$confirmLink = GUIHandler::getBaseUrl()."admin/passwordRecovery.php?req=".$request->id."&u=".$request->target->id; $confirmLink = GUIHandler::getBaseUrl()."admin/passwordRecovery.php?req=".$request->id."&u=".$request->target->id;
$mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="http://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>'; $mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="https://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>';
$tmp->body = $mailHead."Hai ricevuto questo messaggio perchè hai effettuato una richiesta di recupero password dal nostro sito.<br/><br/>"; $tmp->body = $mailHead."Hai ricevuto questo messaggio perchè hai effettuato una richiesta di recupero password dal nostro sito.<br/><br/>";
$tmp->body.= "Se non hai effettuato nessuna richiesta, semplicemente ignora questo messaggio.<br/><br/>"; $tmp->body.= "Se non hai effettuato nessuna richiesta, semplicemente ignora questo messaggio.<br/><br/>";
@@ -70,7 +70,7 @@ class FDN_MailHelper {
$confirmLink = GUIHandler::getBaseUrl()."confirmUser.php?regcode=".$user->id."&email=".$user->email; $confirmLink = GUIHandler::getBaseUrl()."confirmUser.php?regcode=".$user->id."&email=".$user->email;
$mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="http://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>'; $mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="https://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>';
$tmp->body = $mailHead."Per attivare il tuo account clicka sul link riportato in seguito o copialo e incollalo nel tuo browser.<br/><br/>"; $tmp->body = $mailHead."Per attivare il tuo account clicka sul link riportato in seguito o copialo e incollalo nel tuo browser.<br/><br/>";
$tmp->body.='<a href="'.$confirmLink.'">'.$confirmLink.'</a><br/>'.self::generateMailFooter().'</div>'; $tmp->body.='<a href="'.$confirmLink.'">'.$confirmLink.'</a><br/>'.self::generateMailFooter().'</div>';
@@ -90,7 +90,7 @@ class FDN_MailHelper {
$confirmLink = GUIHandler::getBaseUrl()."passwordRecovery.php?req=".$request->id."&u=".$request->target->id; $confirmLink = GUIHandler::getBaseUrl()."passwordRecovery.php?req=".$request->id."&u=".$request->target->id;
$mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="http://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>'; $mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="https://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>';
$tmp->body = $mailHead."Hai ricevuto questo messaggio perchè hai effettuato una richiesta di recupero password dal nostro sito.<br/><br/>"; $tmp->body = $mailHead."Hai ricevuto questo messaggio perchè hai effettuato una richiesta di recupero password dal nostro sito.<br/><br/>";
$tmp->body.= "Se non hai effettuato nessuna richiesta, semplicemente ignora questo messaggio.<br/><br/>"; $tmp->body.= "Se non hai effettuato nessuna richiesta, semplicemente ignora questo messaggio.<br/><br/>";
@@ -111,7 +111,7 @@ class FDN_MailHelper {
$confirmLink = GUIHandler::getBaseUrl()."/admin/validateCommento.php?i=".$commento->id; $confirmLink = GUIHandler::getBaseUrl()."/admin/validateCommento.php?i=".$commento->id;
$mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="http://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>'; $mailHead = '<div style="width:1024px; margin:auto;"><div style="text-align:center;"><img src="https://www.ifattidinapoli.it/images/logo_uff.png" alt="" /><div><br/><br/>';
$tmp->body = $mailHead."Un nuovo commento è stato inserito su I Fatti di Napoli ed è in attesa di essere accettato.<br/><br/>"; $tmp->body = $mailHead."Un nuovo commento è stato inserito su I Fatti di Napoli ed è in attesa di essere accettato.<br/><br/>";
$tmp->body.= "Verifica i contenuti del commento utilizzando il link di seguito.<br/><br/>"; $tmp->body.= "Verifica i contenuti del commento utilizzando il link di seguito.<br/><br/>";
+1 -1
View File
@@ -193,7 +193,7 @@ class PipelineHelper {
'statType'=>StatisticModel::STAT_TYPE_BANNER_IMPRESSION, 'statType'=>StatisticModel::STAT_TYPE_BANNER_IMPRESSION,
'content.position'=>$position, 'content.position'=>$position,
// 'date'=>array( '$gte'=>new MongoDate(strtotime("today")) ) // 'date'=>array( '$gte'=>new MongoDate(strtotime("today")) )
'date'=>array( '$gte'=>new MongoDB\BSON\UTCDateTime(strtotime("today CET") * 1000) ) 'date'=>array( '$gte'=>new MongoDB\BSON\UTCDateTime(strtotime("today") * 1000) )
) )
), ),
array( array(
+1 -3
View File
@@ -49,9 +49,7 @@ class MailModel extends Model implements FDN_MailInterface{
$email->isMail(); $email->isMail();
$email->From = $this->from; $email->From = $this->from;
if ($this->hasProperty("fromName")){ $email->FromName = "I Fatti di Napoli";
$email->FromName = $this->fromName;
}
$email->Subject = $this->subject; $email->Subject = $this->subject;
@@ -28,7 +28,7 @@ class ArticleStatsModel extends Model {
} }
public static function getFilter($articleId, $day, $month, $year) { public static function getFilter($articleId, $day, $month, $year) {
$time = strtotime("$year-$month-$day CET"); $time = strtotime("$year-$month-$day");
return [ return [
'notizia' => $articleId, 'notizia' => $articleId,
'time' => new MongoDB\BSON\UTCDateTime( $time * 1000 ), 'time' => new MongoDB\BSON\UTCDateTime( $time * 1000 ),
@@ -16,7 +16,7 @@ class BannerStatsModel extends Model {
} }
public static function new($bannerId, $day, $month, $year) { public static function new($bannerId, $day, $month, $year) {
$time = strtotime("$year-$month-$day CET"); $time = strtotime("$year-$month-$day");
return new static( return new static(
(object)[ (object)[
'banner' => $bannerId, 'banner' => $bannerId,
@@ -30,7 +30,7 @@ class BannerStatsModel extends Model {
); );
} }
public static function getFilter($bannerId, $day, $month, $year) { public static function getFilter($bannerId, $day, $month, $year) {
$time = strtotime("$year-$month-$day CET"); $time = strtotime("$year-$month-$day");
return [ return [
'banner' => $bannerId, 'banner' => $bannerId,
'time' => new MongoDB\BSON\UTCDateTime( $time * 1000 ), 'time' => new MongoDB\BSON\UTCDateTime( $time * 1000 ),
@@ -15,7 +15,7 @@ class PageViewStatsModel extends Model {
return "pageview_stats"; return "pageview_stats";
} }
public static function new($page, $day, $month, $year) { public static function new($page, $day, $month, $year) {
$time = strtotime("$year-$month-$day CET"); $time = strtotime("$year-$month-$day");
return new static( return new static(
(object)[ (object)[
@@ -33,7 +33,7 @@ class PageViewStatsModel extends Model {
} }
public static function getFilter($page, $day, $month, $year) { public static function getFilter($page, $day, $month, $year) {
$time = strtotime("$year-$month-$day CET"); $time = strtotime("$year-$month-$day");
return [ return [
'page' => $page, 'page' => $page,
'time' => new MongoDB\BSON\UTCDateTime( $time * 1000 ), 'time' => new MongoDB\BSON\UTCDateTime( $time * 1000 ),
+15 -18
View File
@@ -57,7 +57,7 @@ class GUIHandler {
} }
echo "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge,chrome=1\">\n"; echo "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge,chrome=1\">\n";
echo '<link rel="shortcut icon" href="images/favicon.ico">'."\n"; echo '<link rel="shortcut icon" href="images/favicon.ico">'."\n";
echo '<link href="http://fonts.googleapis.com/css?family=Lato&subset=latin,latin-ext" rel="stylesheet" type="text/css">'."\n"; echo '<link href="https://fonts.googleapis.com/css?family=Lato&subset=latin,latin-ext" rel="stylesheet" type="text/css">'."\n";
echo '<META http-equiv="Cache-Control" content="no-cache,no-store" />'."\n"; echo '<META http-equiv="Cache-Control" content="no-cache,no-store" />'."\n";
echo '<META http-equiv="Pragma" content="no-cache" />'."\n"; echo '<META http-equiv="Pragma" content="no-cache" />'."\n";
if (array_key_exists("additionalMetadata", $data) && is_array($data["additionalMetadata"]) && sizeof($data["additionalMetadata"])>0){ if (array_key_exists("additionalMetadata", $data) && is_array($data["additionalMetadata"]) && sizeof($data["additionalMetadata"])>0){
@@ -215,7 +215,7 @@ class GUIHandler {
<div class="leftBanner topBanner mediaContent"> <div class="leftBanner topBanner mediaContent">
<?php BannerHelper::printBanner(BannerModel::POSITION_HEAD);?> <?php BannerHelper::printBanner(BannerModel::POSITION_HEAD);?>
</div> </div>
<div class="logo"><a href="http://ifattidinapoli.it/index.php"><img src="http://ifattidinapoli.it/images/logo_uff.png"></a></div> <div class="logo"><a href="https://www.ifattidinapoli.it/index.php"><img src="https://www.ifattidinapoli.it/images/logo_uff.png"></a></div>
<div class="rightBanner topBanner mediaContent"> <div class="rightBanner topBanner mediaContent">
<?php BannerHelper::printBanner(BannerModel::POSITION_HEAD);?> <?php BannerHelper::printBanner(BannerModel::POSITION_HEAD);?>
</div> </div>
@@ -348,7 +348,7 @@ class GUIHandler {
?> ?>
</div> </div>
<div >TESTATA REGISTRATA PRESSO IL TRIBUNALE DI NAPOLI AUT. NR. 8 DEL 27 GENNAIO 2006</div> <div >TESTATA REGISTRATA PRESSO IL TRIBUNALE DI NAPOLI AUT. NR. 8 DEL 27 GENNAIO 2006</div>
<div >COPYRIGHT &copy 2016 <a href="http://www.ifattidinapoli.it" style="color:white;">www.ifattidinapoli.it</a> - Giornale della Terza Metropoli Italiana</div> <div >COPYRIGHT &copy 2016 <a href="https://www.ifattidinapoli.it" style="color:white;">www.ifattidinapoli.it</a> - Giornale della Terza Metropoli Italiana</div>
<div ><a href="redazione.php" style="color:white;">REDAZIONE</a> | <a href="archivio.php" style="color:white;">ARCHIVIO STORICO</a></div> <div ><a href="redazione.php" style="color:white;">REDAZIONE</a> | <a href="archivio.php" style="color:white;">ARCHIVIO STORICO</a></div>
</div> </div>
@@ -358,22 +358,22 @@ class GUIHandler {
public static function getFacebookShareFunction(NotiziaModel $notizia){ public static function getFacebookShareFunction(NotiziaModel $notizia){
$url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id; $url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id;
return 'window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))'; return 'window.open("https://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))';
} }
public static function getTwitterShareFunction(NotiziaModel $notizia){ public static function getTwitterShareFunction(NotiziaModel $notizia){
$url = self::getBaseUrl()."articolo.php?id=".$notizia->id; $url = self::getBaseUrl()."articolo.php?id=".$notizia->id;
return 'window.open("http://twitter.com/home?source=ifdn&status="+encodeURIComponent("'.$url.'"))'; return 'window.open("https://twitter.com/home?source=ifdn&status="+encodeURIComponent("'.$url.'"))';
} }
public static function getGooglePlusShareFunction(NotiziaModel $notizia){ public static function getGooglePlusShareFunction(NotiziaModel $notizia){
$url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id; $url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id;
return 'window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))'; return 'window.open("https://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))';
} }
public static function getLinkedinShareFunction(NotiziaModel $notizia){ public static function getLinkedinShareFunction(NotiziaModel $notizia){
$url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id; $url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id;
return 'window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))'; return 'window.open("https://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))';
} }
@@ -381,7 +381,7 @@ class GUIHandler {
$stats = GlobalVariables::get("dao")->aggregate( $stats = GlobalVariables::get("dao")->aggregate(
ArticleStatsModel::class, ArticleStatsModel::class,
PipelineHelper::getMostViewedOfLastDays(strtotime("-7 days CET"),5) PipelineHelper::getMostViewedOfLastDays(strtotime("-7 days"),5)
); );
$idArray = array_map(function ($ele){ return new MongoDB\BSON\ObjectID($ele["notizia"]);}, $stats); $idArray = array_map(function ($ele){ return new MongoDB\BSON\ObjectID($ele["notizia"]);}, $stats);
@@ -449,19 +449,16 @@ class GUIHandler {
public static function generateGoogleAnalyticsScripts(){ public static function generateGoogleAnalyticsScripts(){
?> ?>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-5YTMS8G32Q"></script>
<script> <script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ window.dataLayer = window.dataLayer || [];
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), function gtag(){dataLayer.push(arguments);}
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) gtag('js', new Date());
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
// ga('create', 'UA-75287906-1', 'auto');
// ga('send', 'pageview');
ga('create', 'UA-6137905-1', 'auto');
ga('send', 'pageview');
gtag('config', 'G-5YTMS8G32Q');
</script> </script>
<?php <?php
} }
+14 -17
View File
@@ -56,7 +56,7 @@ class GUIHandlerMobile {
} }
echo "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge,chrome=1\">\n"; echo "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge,chrome=1\">\n";
echo '<link rel="shortcut icon" href="images/favicon.ico">'."\n"; echo '<link rel="shortcut icon" href="images/favicon.ico">'."\n";
echo '<link href="http://fonts.googleapis.com/css?family=Lato&subset=latin,latin-ext" rel="stylesheet" type="text/css">'."\n"; echo '<link href="https://fonts.googleapis.com/css?family=Lato&subset=latin,latin-ext" rel="stylesheet" type="text/css">'."\n";
echo '<META http-equiv="Cache-Control" content="no-cache,no-store" />'."\n"; echo '<META http-equiv="Cache-Control" content="no-cache,no-store" />'."\n";
echo '<META http-equiv="Pragma" content="no-cache" />'."\n"; echo '<META http-equiv="Pragma" content="no-cache" />'."\n";
if (array_key_exists("additionalMetadata", $data) && is_array($data["additionalMetadata"]) && sizeof($data["additionalMetadata"])>0){ if (array_key_exists("additionalMetadata", $data) && is_array($data["additionalMetadata"]) && sizeof($data["additionalMetadata"])>0){
@@ -199,7 +199,7 @@ class GUIHandlerMobile {
<div class="upperBar"> <div class="upperBar">
<div class="dateBar"><?php echo $day." ".$mesi[date("n")]." ".date("Y"); ?> - Aggiornato alle <span style="color:#f68235;"><?php echo date("H:i");?></span></div> <div class="dateBar"><?php echo $day." ".$mesi[date("n")]." ".date("Y"); ?> - Aggiornato alle <span style="color:#f68235;"><?php echo date("H:i");?></span></div>
</div> </div>
<div class="logo"><a href="http://ifattidinapoli.com/mobile/index.php"><img src="images/logo_uff.png" /></a></div> <div class="logo"><a href="https://ifattidinapoli.com/mobile/index.php"><img src="images/logo_uff.png" /></a></div>
<div class="bottomBar"> <div class="bottomBar">
<img id="menuMobile" alt="" src="images/menuIcon.png"> <img id="menuMobile" alt="" src="images/menuIcon.png">
<?php <?php
@@ -369,7 +369,7 @@ class GUIHandlerMobile {
</div> </div>
<p>TESTATA REGISTRATA PRESSO IL TRIBUNALE DI NAPOLI AUT. NR. 8 DEL 27 GENNAIO 2006</p> <p>TESTATA REGISTRATA PRESSO IL TRIBUNALE DI NAPOLI AUT. NR. 8 DEL 27 GENNAIO 2006</p>
<p>COPYRIGHT &copy 2016 <a href="http://www.ifattidinapoli.it" style="color:white;">www.ifattidinapoli.it</a> - Giornale della Terza Metropoli Italiana</p> <p>COPYRIGHT &copy 2016 <a href="https://www.ifattidinapoli.it" style="color:white;">www.ifattidinapoli.it</a> - Giornale della Terza Metropoli Italiana</p>
<p><a href="redazione.php" style="color:white;">REDAZIONE</a> | <a href="archivio.php" style="color:white;">ARCHIVIO STORICO</a></p> <p><a href="redazione.php" style="color:white;">REDAZIONE</a> | <a href="archivio.php" style="color:white;">ARCHIVIO STORICO</a></p>
</div> </div>
@@ -379,22 +379,22 @@ class GUIHandlerMobile {
public static function getFacebookShareFunction(NotiziaModel $notizia){ public static function getFacebookShareFunction(NotiziaModel $notizia){
$url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id; $url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id;
return 'window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))'; return 'window.open("https://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))';
} }
public static function getTwitterShareFunction(NotiziaModel $notizia){ public static function getTwitterShareFunction(NotiziaModel $notizia){
$url = self::getBaseUrl()."articolo.php?id=".$notizia->id; $url = self::getBaseUrl()."articolo.php?id=".$notizia->id;
return 'window.open("http://twitter.com/home?source=ifdn&status="+encodeURIComponent("'.$url.'"))'; return 'window.open("https://twitter.com/home?source=ifdn&status="+encodeURIComponent("'.$url.'"))';
} }
public static function getGooglePlusShareFunction(NotiziaModel $notizia){ public static function getGooglePlusShareFunction(NotiziaModel $notizia){
$url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id; $url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id;
return 'window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))'; return 'window.open("https://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))';
} }
public static function getLinkedinShareFunction(NotiziaModel $notizia){ public static function getLinkedinShareFunction(NotiziaModel $notizia){
$url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id; $url = self::getBaseUrl()."fbMetadata.php?id=".$notizia->id;
return 'window.open("http://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))'; return 'window.open("https://www.facebook.com/sharer.php?u="+encodeURIComponent("'.$url.'"))';
} }
@@ -467,19 +467,16 @@ class GUIHandlerMobile {
public static function generateGoogleAnalyticsScripts(){ public static function generateGoogleAnalyticsScripts(){
?> ?>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-5YTMS8G32Q"></script>
<script> <script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ window.dataLayer = window.dataLayer || [];
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), function gtag(){dataLayer.push(arguments);}
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) gtag('js', new Date());
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-75287906-1', 'auto');
ga('send', 'pageview');
ga('create', 'UA-6137905-1', 'auto');
ga('send', 'pageview');
gtag('config', 'G-5YTMS8G32Q');
</script> </script>
<?php <?php
} }
+2 -2
View File
@@ -40,12 +40,12 @@ class HTMLHelper {
$cont = file_get_contents($config->files->meteoCache); $cont = file_get_contents($config->files->meteoCache);
$json = json_decode($cont); $json = json_decode($cont);
$todayImgUrl = " http://openweathermap.org/img/w/".$json->list[0]->weather[0]->icon.".png"; $todayImgUrl = " https://openweathermap.org/img/w/".$json->list[0]->weather[0]->icon.".png";
$todayTemp = $json->list[0]->main->temp; $todayTemp = $json->list[0]->main->temp;
$todayMax = $json->list[0]->main->temp_max; $todayMax = $json->list[0]->main->temp_max;
$todayMin = $json->list[0]->main->temp_min; $todayMin = $json->list[0]->main->temp_min;
$tomorrowImgUrl = " http://openweathermap.org/img/w/".$json->list[1]->weather[0]->icon.".png"; $tomorrowImgUrl = " https://openweathermap.org/img/w/".$json->list[1]->weather[0]->icon.".png";
$tomorrowTemp = $json->list[1]->main->temp; $tomorrowTemp = $json->list[1]->main->temp;
$tomorrowMax = $json->list[1]->main->temp_max; $tomorrowMax = $json->list[1]->main->temp_max;
$tomorrowMin = $json->list[1]->main->temp_min; $tomorrowMin = $json->list[1]->main->temp_min;
@@ -22,7 +22,7 @@ class MediaYoutube extends MediaRenderer{
} }
public function getThumbnailLink(){ public function getThumbnailLink(){
return 'http://i.ytimg.com/vi/'.$this->link.'/0.jpg'; return 'https://i.ytimg.com/vi/'.$this->link.'/0.jpg';
} }
public function getVideoLink(){ public function getVideoLink(){
+2
View File
@@ -4,6 +4,8 @@ Author: Riccardo Di Dato
Creation Date: 04/feb/2013 Creation Date: 04/feb/2013
*/ */
date_default_timezone_set("Europe/Rome");
require_once(dirname(__FILE__)."/common/config.php"); require_once(dirname(__FILE__)."/common/config.php");
require_once(dirname(__FILE__)."/lib/lib.inclusions.php"); require_once(dirname(__FILE__)."/lib/lib.inclusions.php");
+4 -4
View File
@@ -72,15 +72,15 @@ try {
$mailBody = $mail->body; $mailBody = $mail->body;
if (strcmp($mailBody, "")==0){ if (strcmp($mailBody, "")==0){
$mailBody = '<div style="margin:auto;width:1024px;"><div style="text-align:center;"><img src="http://www.ifattidinapoli.it/images/logo_uff.png"></div><div >Testo di prova</div><div></div>'. $mailBody = '<div style="margin:auto;width:1024px;"><div style="text-align:center;"><img src="https://www.ifattidinapoli.it/images/logo_uff.png"></div><div >Testo di prova</div><div></div>'.
'<div style="background-color:#14477c;margin-top:10px;"> '<div style="background-color:#14477c;margin-top:10px;">
<div style="text-align:center;color:#2e91d4;padding:10px;"> <div style="text-align:center;color:#2e91d4;padding:10px;">
<a style="color:#2e91d4;margin:10px;" href="http://www./index.php">Home</a> | <a style="color:#2e91d4;margin:10px;" href="http://www./categorySummary.php?category=1">Politica</a> | <a style="color:#2e91d4;margin:10px;" href="http://www./categorySummary.php?category=2">Cronaca</a> | <a style="color:#2e91d4;margin:10px;" href="http://www./categorySummary.php?category=3">Sport</a> | <a style="color:#2e91d4;margin:10px;" href="http://www./categorySummary.php?category=4">Cultura&amp;Spettacolo</a> <a style="color:#2e91d4;margin:10px;" href="https://www./index.php">Home</a> | <a style="color:#2e91d4;margin:10px;" href="https://www./categorySummary.php?category=1">Politica</a> | <a style="color:#2e91d4;margin:10px;" href="https://www./categorySummary.php?category=2">Cronaca</a> | <a style="color:#2e91d4;margin:10px;" href="https://www./categorySummary.php?category=3">Sport</a> | <a style="color:#2e91d4;margin:10px;" href="https://www./categorySummary.php?category=4">Cultura&amp;Spettacolo</a>
</div> </div>
<div style="text-align:center;color:white;margin-top:25px;">TESTATA REGISTRATA PRESSO IL TRIBUNALE DI NAPOLI AUT. NR. 8 DEL 27 GENNAIO 2006</div> <div style="text-align:center;color:white;margin-top:25px;">TESTATA REGISTRATA PRESSO IL TRIBUNALE DI NAPOLI AUT. NR. 8 DEL 27 GENNAIO 2006</div>
<div style="text-align:center;color:white;margin-top:20px;">COPYRIGHT © 2016 <a href="http://www.ifattidinapoli.it" style="color:white;">www.ifattidinapoli.it</a> - Giornale della Terza Metropoli Italiana</div> <div style="text-align:center;color:white;margin-top:20px;">COPYRIGHT © 2016 <a href="https://www.ifattidinapoli.it" style="color:white;">www.ifattidinapoli.it</a> - Giornale della Terza Metropoli Italiana</div>
<div style="text-align:center;color:white;margin-top:20px;"> <div style="text-align:center;color:white;margin-top:20px;">
<a href="http://www./redazione.php" style="color:white;">REDAZIONE</a> | <a href="http://www./archivio.php" style="color:white;">ARCHIVIO STORICO</a> <a href="https://www./redazione.php" style="color:white;">REDAZIONE</a> | <a href="https://www./archivio.php" style="color:white;">ARCHIVIO STORICO</a>
</div> </div>
</div></div>'; </div></div>';
} }
+4 -4
View File
@@ -72,13 +72,13 @@ try{
<div class="bannerStat"> <div class="bannerStat">
<div> <div>
<div class="statName">Oggi</div> <div class="statName">Oggi</div>
<div>Visualizzazioni: <?php echo AnalyticsHelper::countBannerImpressions($banner->id,strtotime("today CET"));?></div> <div>Visualizzazioni: <?php echo AnalyticsHelper::countBannerImpressions($banner->id,strtotime("today"));?></div>
<div class="toHide">Click: <?php echo AnalyticsHelper::countBannerClicks($banner->id,strtotime("today CET"));?></div> <div class="toHide">Click: <?php echo AnalyticsHelper::countBannerClicks($banner->id,strtotime("today"));?></div>
</div> </div>
<div> <div>
<div class="statName">Ultima settimana</div> <div class="statName">Ultima settimana</div>
<div>Visualizzazioni: <?php echo AnalyticsHelper::countBannerImpressions($banner->id,strtotime("-7 days CET"));?></div> <div>Visualizzazioni: <?php echo AnalyticsHelper::countBannerImpressions($banner->id,strtotime("-7 days"));?></div>
<div class="toHide">Click: <?php echo AnalyticsHelper::countBannerClicks($banner->id,strtotime("-7 days CET"));?></div> <div class="toHide">Click: <?php echo AnalyticsHelper::countBannerClicks($banner->id,strtotime("-7 days"));?></div>
</div> </div>
<div> <div>
<div class="statName">Totali</div> <div class="statName">Totali</div>
+2 -2
View File
@@ -144,11 +144,11 @@ try{
<div class="notiziaStat"> <div class="notiziaStat">
<div> <div>
<div class="statName">Oggi</div> <div class="statName">Oggi</div>
<div><?php echo AnalyticsHelper::countNotiziaImpressions($notizia->id,strtotime("today CET"));?></div> <div><?php echo AnalyticsHelper::countNotiziaImpressions($notizia->id,strtotime("today"));?></div>
</div> </div>
<div> <div>
<div class="statName">Ultima settimana</div> <div class="statName">Ultima settimana</div>
<div><?php echo AnalyticsHelper::countNotiziaImpressions($notizia->id,strtotime("-7 days CET"));?></div> <div><?php echo AnalyticsHelper::countNotiziaImpressions($notizia->id,strtotime("-7 days"));?></div>
</div> </div>
<div> <div>
<div class="statName">Totali</div> <div class="statName">Totali</div>
+24 -2
View File
@@ -1,5 +1,5 @@
const MAX_EXECUTIONS = 12; const MAX_EXECUTIONS = 12;
const ROTATION_INTERVAL = 30000; const ROTATION_INTERVAL = 12000;
const executions = {}; const executions = {};
@@ -41,7 +41,29 @@ function bannerGroup(group, grpName) {
(target) => { (target) => {
if (rval.length > 0) { if (rval.length > 0) {
const ele = rval.shift(); const ele = rval.shift();
$('#'+target).html(ele.media); let mediaHtml = ele.media;
if (ele.link) {
const a = document.createElement('a');
a.href = ele.link;
a.target = "_blank";
a.innerHTML = ele.media;
mediaHtml = a;
}
mediaHtml.addEventListener(
'click',
() => {
$.ajax({
url: "stats/bannerClick.php",
method: "POST",
data: {
banner: ele.id,
source: document.URL
},
dataType: "html"
});
}
);
$('#'+target).html(mediaHtml);
} }
} }
); );
+5 -5
View File
@@ -125,7 +125,7 @@ GUIHandlerMobile::generateHtmlHeaders(array("additionalMetadata"=>$additionalHea
<div class="imagePreviewAfter"><img src="images/rightImage.png" /></div> <div class="imagePreviewAfter"><img src="images/rightImage.png" /></div>
</div> </div>
<div class="clickableImageContainer" onclick="javascript:hidePreview()"></div> --> <div class="clickableImageContainer" onclick="javascript:hidePreview()"></div> -->
<div style="margin-top:32vw;width:100vw;margin-left:auto;margin-right:auto;" itemscope itemtype="http://schema.org/Article"> <div style="margin-top:32vw;width:100vw;margin-left:auto;margin-right:auto;" itemscope itemtype="https://schema.org/Article">
<?php <?php
$categoryName = NotiziaModel::$NOTIZIE_CATEGORY[$articolo->category]["label"]; $categoryName = NotiziaModel::$NOTIZIE_CATEGORY[$articolo->category]["label"];
@@ -219,9 +219,9 @@ GUIHandlerMobile::generateHtmlHeaders(array("additionalMetadata"=>$additionalHea
$twitterCutTitle = substr($twitterCutTitle, 0, 92) . "..."; $twitterCutTitle = substr($twitterCutTitle, 0, 92) . "...";
} }
?> ?>
<a class="socialLink" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=http://www.ifattidinapoli.it/articolo.php?id=<?php echo $articolo->id;?>"><div style="background-image:url(images/fb_round.png);"></div></a> <a class="socialLink" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https://www.ifattidinapoli.it/articolo.php?id=<?php echo $articolo->id;?>"><div style="background-image:url(images/fb_round.png);"></div></a>
<a class="socialLink" target="_blank" href="https://twitter.com/intent/tweet?via=fattidinapoli&url=http://www.ifattidinapoli.it/articolo.php?id=<?php echo $articolo->id;?>&text=<?php echo urlencode($twitterCutTitle." -");?>"><div style="background-image:url(images/twitter_round.png);"></div></a> <a class="socialLink" target="_blank" href="https://twitter.com/intent/tweet?via=fattidinapoli&url=https://www.ifattidinapoli.it/articolo.php?id=<?php echo $articolo->id;?>&text=<?php echo urlencode($twitterCutTitle." -");?>"><div style="background-image:url(images/twitter_round.png);"></div></a>
<a class="socialLink" target="_blank" href="https://www.linkedin.com/shareArticle?mini=true&url=http://www.ifattidinapoli.it/articolo.php?id=<?php echo $articolo->id;?>"><div style="background-image:url(images/linkedin_round.png);"></div></a> <a class="socialLink" target="_blank" href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.ifattidinapoli.it/articolo.php?id=<?php echo $articolo->id;?>"><div style="background-image:url(images/linkedin_round.png);"></div></a>
</div> </div>
</div> </div>
<div style="text-align:center;"> <div style="text-align:center;">
@@ -324,7 +324,7 @@ GUIHandlerMobile::generateHtmlHeaders(array("additionalMetadata"=>$additionalHea
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button> <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR --> <!-- Preloader demo https://codepen.io/dimsemenov/pen/yyBWoR -->
<!-- element will get class pswp__preloader--active when preloader is running --> <!-- element will get class pswp__preloader--active when preloader is running -->
<div class="pswp__preloader"> <div class="pswp__preloader">
<div class="pswp__preloader__icn"> <div class="pswp__preloader__icn">
+1 -1
View File
@@ -31,7 +31,7 @@ try {
<div class="contattiRedazione"> <div class="contattiRedazione">
<div >GERENZA</div> <div >GERENZA</div>
<img alt="" src="images/blueBalls.png"> <img alt="" src="images/blueBalls.png">
<div><a href="http://www.ifattidinapoli.it">www.ifattidinapoli.it</a></div> <div><a href="https://www.ifattidinapoli.it">www.ifattidinapoli.it</a></div>
<img alt="" src="images/blueBalls.png"> <img alt="" src="images/blueBalls.png">
<div >Direttore Responsabile</div> <div >Direttore Responsabile</div>
<div style="font-weight:bold;color:black;">Antonio Pianelli</div> <div style="font-weight:bold;color:black;">Antonio Pianelli</div>
+1 -1
View File
@@ -12,7 +12,7 @@ if (array_key_exists("id", $_GET)){
if (!is_null($notizia)){ if (!is_null($notizia)){
Header( "HTTP/1.1 301 Moved Permanently" ); Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.ifattidinapoli.it/articolo.php?id=".$notizia->id ); Header( "Location: https://www.ifattidinapoli.it/articolo.php?id=".$notizia->id );
// GUIHandler::redirect("articolo.php?id=".$notizia->id); // GUIHandler::redirect("articolo.php?id=".$notizia->id);
} }
+1 -1
View File
@@ -32,7 +32,7 @@ try {
<div class="contattiRedazione"> <div class="contattiRedazione">
<div >GERENZA</div> <div >GERENZA</div>
<img alt="" src="images/blueBalls.png"> <img alt="" src="images/blueBalls.png">
<div><a href="http://www.ifattidinapoli.it">www.ifattidinapoli.it</a></div> <div><a href="https://www.ifattidinapoli.it">www.ifattidinapoli.it</a></div>
<img alt="" src="images/blueBalls.png"> <img alt="" src="images/blueBalls.png">
<div >Direttore Responsabile</div> <div >Direttore Responsabile</div>
<div style="font-weight:bold;color:black;">Antonio Pianelli</div> <div style="font-weight:bold;color:black;">Antonio Pianelli</div>
+1 -1
View File
@@ -3,4 +3,4 @@ Disallow: /admin/
Disallow: /stats/ Disallow: /stats/
Disallow: /mobile/stats/ Disallow: /mobile/stats/
Disallow: /getBanner.php Disallow: /getBanner.php
Sitemap: http://www.ifattidinapoli.it/sitemap.xml Sitemap: https://www.ifattidinapoli.it/sitemap.xml
+1 -1
View File
@@ -17,7 +17,7 @@ try {
if (!is_null($ip) && !is_null($banners) && !is_null($source)){ if (!is_null($ip) && !is_null($banners) && !is_null($source)){
$banners = explode(",", $banners); $banners = explode(",", $banners);
$ts = strtotime('today CET'); $ts = strtotime('today');
foreach ($banners as $banner) { foreach ($banners as $banner) {
AnalyticsHelper::bannerImpression( AnalyticsHelper::bannerImpression(
+13
View File
@@ -0,0 +1,13 @@
FROM alpine:3.6
RUN apk add --no-cache --upgrade bash mongodb-tools
# copy crontabs for root user
COPY crontab /etc/crontabs/root
# copy backup script
COPY backup /myscripts/backup
RUN chmod 0744 /myscripts/backup
# start crond with log level 8 in foreground, output to stderr
CMD ["crond", "-f", "-d", "8"]
+24
View File
@@ -0,0 +1,24 @@
#!/bin/sh
DATE=`date +"%Y-%m-%d_%H:%M"`
echo "Generating backup $DATE"
DATABASE_HOST="fdn2.production.database"
DATABASE_NAME="fdn2"
DATABASE_PORT="27017"
WORKDIR="/workdir"
STORAGE="/backups"
mkdir -p $WORKDIR
mongodump --host $DATABASE_HOST -d $DATABASE_NAME --port $DATABASE_PORT --out "$WORKDIR"
tar -cvzf "$STORAGE/dump-$DATE.tar.gz" "$WORKDIR"
for old in `ls -t $STORAGE | tail -n +7`; do
TOREMOVE="$STORAGE/$old"
echo "Removing '$TOREMOVE'";
rm -r $TOREMOVE
done
+1
View File
@@ -0,0 +1 @@
4 0 * * * /myscripts/backup 2>&1
+23
View File
@@ -0,0 +1,23 @@
version: "3"
services:
backup:
image: cronjob
build: ./
networks:
- backup-network
restart: "unless-stopped"
volumes:
- /home/ddninja/fdn2/backups:/backups
logging:
driver: "json-file"
options:
max-file: 4
max-size: 100m
compress: "true"
networks:
backup-network:
external: true
name:
backup-network
+7
View File
@@ -5,6 +5,9 @@ services:
restart: "on-failure:5" restart: "on-failure:5"
networks: networks:
db-network: db-network:
backup-network:
aliases:
- §PROJECT_BUILDNAME§.§ENVIRONMENT_TYPE§.database
volumes: volumes:
- ./persistence/database/mongodb:/data/db/ - ./persistence/database/mongodb:/data/db/
logging: logging:
@@ -75,6 +78,10 @@ services:
networks: networks:
db-network: db-network:
§PROJECT_BUILDNAME§-network: §PROJECT_BUILDNAME§-network:
backup-network:
external: true
name:
backup-network
nginx-network: nginx-network:
external: true external: true
name: name:
+6 -1
View File
@@ -5,8 +5,9 @@ services:
restart: "no" restart: "no"
networks: networks:
db-network: db-network:
backup-network:
aliases: aliases:
- §PROJECT_BUILDNAME§.§ENVIRONMENT_TYPE§.database - §PROJECT_BUILDNAME§.local.database
volumes: volumes:
- §PROJECT_BUILDNAME§-db-persist:/data/db/ - §PROJECT_BUILDNAME§-db-persist:/data/db/
webserver: webserver:
@@ -53,6 +54,10 @@ services:
networks: networks:
db-network: db-network:
§PROJECT_BUILDNAME§-network: §PROJECT_BUILDNAME§-network:
backup-network:
external: true
name:
backup-network
volumes: volumes:
+2 -2
View File
@@ -2,6 +2,6 @@ DDNINJA_ENVIRONMENT_NAME=production
DDNINJA_IS_PRODUCTION=true DDNINJA_IS_PRODUCTION=true
DDNINJA_MONGO_DBNAME=fdn2 DDNINJA_MONGO_DBNAME=fdn2
DDNINJA_MONGO_LOCATION=database DDNINJA_MONGO_LOCATION=mongo
DDNINJA_PUBLIC_URL=http://preproduction.ifattidinapoli.it DDNINJA_PUBLIC_URL=https://www.ifattidinapoli.it
+2 -2
View File
@@ -2,6 +2,6 @@ DDNINJA_ENVIRONMENT_NAME=production
DDNINJA_IS_PRODUCTION=true DDNINJA_IS_PRODUCTION=true
DDNINJA_MONGO_DBNAME=fdn2 DDNINJA_MONGO_DBNAME=fdn2
DDNINJA_MONGO_LOCATION=database DDNINJA_MONGO_LOCATION=mongo
DDNINJA_PUBLIC_URL=http://preproduction.ifattidinapoli.it DDNINJA_PUBLIC_URL=https://www.ifattidinapoli.it
+2 -2
View File
@@ -2,6 +2,6 @@ DDNINJA_ENVIRONMENT_NAME=test
DDNINJA_IS_PRODUCTION=false DDNINJA_IS_PRODUCTION=false
DDNINJA_MONGO_DBNAME=fdn2_test DDNINJA_MONGO_DBNAME=fdn2_test
DDNINJA_MONGO_LOCATION=database DDNINJA_MONGO_LOCATION=mongo
DDNINJA_PUBLIC_URL=http://test.ifattidinapoli.it DDNINJA_PUBLIC_URL=https://test.ifattidinapoli.it
+2 -2
View File
@@ -2,6 +2,6 @@ DDNINJA_ENVIRONMENT_NAME=test
DDNINJA_IS_PRODUCTION=false DDNINJA_IS_PRODUCTION=false
DDNINJA_MONGO_DBNAME=fdn2_test DDNINJA_MONGO_DBNAME=fdn2_test
DDNINJA_MONGO_LOCATION=database DDNINJA_MONGO_LOCATION=mongo
DDNINJA_PUBLIC_URL=http://test.ifattidinapoli.it DDNINJA_PUBLIC_URL=https://test.ifattidinapoli.it
+2
View File
@@ -0,0 +1,2 @@
# Dati Let's Encrypt gestiti da certbot: contengono chiavi private, NON committare.
certbot/
+63
View File
@@ -0,0 +1,63 @@
# Reverse proxy nginx + Let's Encrypt
Reverse proxy nginx davanti ad Apache per `ifattidinapoli.it`. I certificati SSL
sono gestiti automaticamente da Let's Encrypt tramite certbot (validazione
HTTP-01 via webroot), con **un unico certificato multi-dominio (SAN)** che copre
tutti gli host serviti da questo nginx.
## Domini coperti dal certificato
- `www.ifattidinapoli.it` (primario / CN)
- `ifattidinapoli.it`
- `preproduction.ifattidinapoli.it`
- `test.ifattidinapoli.it`
La lista si definisce nell'array `domains` di [init-letsencrypt.sh](init-letsencrypt.sh).
Il primo dominio e' il primario e da' il nome alla cartella
`/etc/letsencrypt/live/<primario>/` referenziata in [nginx.conf](nginx.conf).
## Primo setup
Prerequisiti:
- Docker con il plugin Compose v2 (comando `docker compose`, non `docker-compose`).
- La rete docker esterna `nginx-network` deve esistere (`docker network create nginx-network`).
- Le porte 80 e 443 dell'host devono essere pubblicamente raggiungibili per
tutti i domini (la validazione HTTP-01 passa dalla porta 80).
- I record DNS di tutti i domini devono puntare a questo server.
```bash
# 1. (consigliato) prova prima in staging: metti staging=1 in init-letsencrypt.sh
./init-letsencrypt.sh
# 2. verifica che tutto funzioni, poi rimetti staging=0 e rilancia
./init-letsencrypt.sh
```
Lo script:
1. scarica i parametri TLS raccomandati,
2. crea un certificato dummy self-signed cosi' nginx puo' partire,
3. avvia nginx,
4. cancella il dummy e richiede il certificato reale a Let's Encrypt,
5. ricarica nginx.
## Rinnovo
Il rinnovo e' automatico. [renew.sh](renew.sh) lancia `certbot renew` (che
rinnova solo se manca meno di 30 giorni alla scadenza) e ricarica nginx.
Schedularlo in crontab sull'host (`crontab -e`):
```
0 3 * * * cd /percorso/di/cicd/nginx && ./renew.sh > /tmp/renew.log 2>&1 || logger -t CRON_RENEW -f /tmp/renew.log
```
Se lo script fallisce, l'output finisce in syslog; altrimenti nessun output.
## Note sulla migrazione da Sectigo
- I vecchi certificati Sectigo sono in `ssl/`. Il mount `./ssl:/etc/ssl:ro` in
[docker-compose.yml](docker-compose.yml) e i file in `ssl/` possono essere
rimossi una volta verificato che Let's Encrypt funziona.
- La cartella `certbot/` (chiavi private incluse) e' in `.gitignore` e **non va
committata**. Le vecchie chiavi Sectigo sono invece presenti nella history git:
valutare con il fornitore se revocarle.
+15
View File
@@ -10,6 +10,21 @@ services:
restart: always restart: always
volumes: volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro - ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/ssl:ro
- ./certbot/conf:/etc/letsencrypt
- ./certbot/www:/var/www/certbot
logging:
driver: "json-file"
options:
max-file: 4
max-size: 100m
compress: "true"
certbot:
image: certbot/certbot
volumes:
- ./certbot/conf:/etc/letsencrypt
- ./certbot/www:/var/www/certbot
networks: networks:
+114
View File
@@ -0,0 +1,114 @@
#!/bin/bash
# Bootstrap del certificato Let's Encrypt unico (multi-dominio / SAN) per il
# reverse proxy di ifattidinapoli.it.
#
# A differenza del progetto Gogs-Reverse (un certificato separato per dominio),
# qui si richiede UN SOLO certificato che copre tutti i domini serviti da questo
# nginx. Il primo dominio dell'array e' il primario (CN) e da' il nome alla
# cartella /etc/letsencrypt/live/<primario>/ referenziata in nginx.conf.
#
# Lanciarlo una volta sola, al primo setup. Per i rinnovi usare renew.sh.
#
# NB: usa il plugin "docker compose" (v2). Con questo plugin --entrypoint accetta
# solo un eseguibile: i comandi con piu' token o con && vanno wrappati in
# `--entrypoint sh <service> -c "..."`, altrimenti gli argomenti oltre il primo
# vengono scartati silenziosamente.
set -e
if ! docker compose version >/dev/null 2>&1; then
echo 'Error: "docker compose" (plugin v2) is not available.' >&2
exit 1
fi
# Domini coperti dal certificato. Il PRIMO e' il primario (CN) e da' il nome
# alla cartella live/. Se lo cambi, aggiorna anche i path in nginx.conf.
domains=(
"www.ifattidinapoli.it"
"ifattidinapoli.it"
"preproduction.ifattidinapoli.it"
"test.ifattidinapoli.it"
)
primary_domain="${domains[0]}"
rsa_key_size=4096
data_path="./certbot"
email="riccardo.didato@gmail.com"
# Metti a 1 per usare l'ambiente di STAGING di Let's Encrypt (test senza
# consumare i rate limit). Passato il test, rimetti a 0 e rilancia.
staging=0
# Costruisce la sequenza di argomenti -d per certbot
domain_args=()
for domain in "${domains[@]}"; do
domain_args+=(-d "$domain")
done
# ---------------------------------------------------------------------------
# FASE 0: parametri TLS raccomandati (una tantum)
# ---------------------------------------------------------------------------
if [ ! -e "$data_path/conf/options-ssl-nginx.conf" ] || [ ! -e "$data_path/conf/ssl-dhparams.pem" ]; then
echo "### Downloading recommended TLS parameters ..."
mkdir -p "$data_path/conf"
curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf > "$data_path/conf/options-ssl-nginx.conf"
curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem > "$data_path/conf/ssl-dhparams.pem"
echo
fi
# ---------------------------------------------------------------------------
# FASE 1: certificato dummy self-signed
# nginx non parte se i path ssl_certificate non esistono. Creiamo un cert
# temporaneo cosi' nginx si avvia e puo' servire la validazione ACME su :80.
# ---------------------------------------------------------------------------
if [ -d "$data_path/conf/live/$primary_domain" ]; then
echo "### Existing certificate found for $primary_domain. Skipping dummy generation."
else
echo "### Creating dummy certificate for $primary_domain ..."
path="/etc/letsencrypt/live/$primary_domain"
mkdir -p "$data_path/conf/live/$primary_domain"
docker compose run --rm --entrypoint sh certbot -c "\
openssl req -x509 -nodes -newkey rsa:$rsa_key_size -days 1 \
-keyout '$path/privkey.pem' \
-out '$path/fullchain.pem' \
-subj '/CN=localhost'"
echo
fi
echo "### Starting nginx ..."
docker compose up --force-recreate -d nginx
echo
# ---------------------------------------------------------------------------
# FASE 2: richiesta del certificato REALE
# ---------------------------------------------------------------------------
echo "### Deleting dummy certificate ..."
docker compose run --rm --entrypoint sh certbot -c "\
rm -Rf /etc/letsencrypt/live/$primary_domain && \
rm -Rf /etc/letsencrypt/archive/$primary_domain && \
rm -Rf /etc/letsencrypt/renewal/$primary_domain.conf"
echo
email_arg=()
case "$email" in
"") email_arg=(--register-unsafely-without-email) ;;
*) email_arg=(--email "$email") ;;
esac
staging_arg=()
if [ "$staging" != "0" ]; then staging_arg=(--staging); fi
echo "### Requesting Let's Encrypt certificate for: ${domains[*]} ..."
# L'immagine certbot/certbot ha gia' "certbot" come entrypoint: passiamo solo
# gli argomenti come comando (niente --entrypoint da sovrascrivere).
docker compose run --rm certbot certonly --webroot -w /var/www/certbot \
"${staging_arg[@]}" \
"${email_arg[@]}" \
"${domain_args[@]}" \
--rsa-key-size "$rsa_key_size" \
--agree-tos \
--force-renewal
echo
echo "### Reloading nginx ..."
docker compose exec nginx nginx -s reload
+60
View File
@@ -5,10 +5,54 @@ events { worker_connections 1024; }
http { http {
client_max_body_size 5M; client_max_body_size 5M;
# Path del certificato Let's Encrypt unico multi-dominio (SAN).
# Il nome della cartella live/ corrisponde al primo -d passato a certbot
# in init-letsencrypt.sh (dominio primario / CN).
# ssl_certificate /etc/letsencrypt/live/www.ifattidinapoli.it/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/www.ifattidinapoli.it/privkey.pem;
server { server {
listen 80; listen 80;
server_name ifattidinapoli.it;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://www.ifattidinapoli.it$request_uri;
}
}
server {
listen 443 ssl;
server_name ifattidinapoli.it;
ssl_certificate /etc/letsencrypt/live/www.ifattidinapoli.it/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.ifattidinapoli.it/privkey.pem;
return 301 https://www.ifattidinapoli.it$request_uri;
}
server {
listen 80;
server_name www.ifattidinapoli.it preproduction.ifattidinapoli.it;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name www.ifattidinapoli.it preproduction.ifattidinapoli.it default_server; server_name www.ifattidinapoli.it preproduction.ifattidinapoli.it default_server;
ssl_certificate /etc/letsencrypt/live/www.ifattidinapoli.it/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.ifattidinapoli.it/privkey.pem;
location / { location / {
proxy_pass http://fdn2.production.webserver/; proxy_pass http://fdn2.production.webserver/;
proxy_redirect off; proxy_redirect off;
@@ -21,6 +65,22 @@ http {
listen 80; listen 80;
server_name test.ifattidinapoli.it; server_name test.ifattidinapoli.it;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name test.ifattidinapoli.it;
ssl_certificate /etc/letsencrypt/live/www.ifattidinapoli.it/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.ifattidinapoli.it/privkey.pem;
location / { location / {
proxy_pass http://fdn2.test.webserver/; proxy_pass http://fdn2.test.webserver/;
proxy_redirect off; proxy_redirect off;
+10
View File
@@ -0,0 +1,10 @@
#!/bin/bash
# Rinnova il certificato SSL e ricarica nginx.
# Schedulato via crontab sull'host (vedi README). certbot renew rinnova solo se
# il certificato scade entro 30 giorni, quindi e' sicuro lanciarlo ogni giorno.
#
# NB: usa il plugin "docker compose" (v2). L'immagine certbot/certbot ha gia'
# "certbot" come entrypoint, quindi passiamo "renew" come comando.
docker compose run --rm certbot renew
docker compose exec -T nginx nginx -s reload
+17
View File
@@ -0,0 +1,17 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICnzCCAYcCAQAwWjELMAkGA1UEBhMCSVQxDzANBgNVBAgMBk5hcGxlczEaMBgG
A1UECgwRSSBGYXR0aSBkaSBOYXBvbGkxHjAcBgNVBAMMFXd3dy5pZmF0dGlkaW5h
cG9saS5pdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJbB2nqLRej
fzPoY2QOaW4cOq3QT2Jgv3hE3m8D81P0eFmy3t3iW9mlpmdY/Exe0wMzl7+gc8/z
JoXN70AsiMyGDjMYIvt6AodgP6HhWiH2KLVW2HvhQExh8M1L9HQlKkb0ief0pZ2c
e0GhmpLi08scGYzVoZO3u5lkHuiXNiYfTjwHxl2CaZCGX7zLLAphr+BtgZeDhRUY
MpsZdZCkKNYQWY5rE0tpI22pL9HEN8Vk2QvhlzWd+YE+dME/G9LgqOxi9BtysfF/
JKHwWp2J5OWLMBptcVeC3jCnf41pfvGihh5yLfJfTK33nLYJTWKXdZxT/OqCMM29
RqHk1Y96g3kCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQBZUlT7XLVBiMxwD/JZ
FFYMzKHNmZFfrHdQgxlnbRTIjM4Fo5zQ8hF8EgeIN13dguEd52akdfF7NNbfMjEO
BK9Efk2Te+Pvue/C7fDN7oIpU86IDbCa6J324er/d2lC3PFO6Cj63ypsFSNfDYbG
zHZlohleyaqmSlFufwJaLvUyWCAIZLhDSGTvyThIWNmUAO/G4CxzR1KuOnA+vgd1
zf0rilk98wKvtbN9gbSNagcXZWXjLdwnAzoNbn7zG3fl0aiTSC8TUpyFwSXFIgMC
XEgEmaCqwpazW9JFUoDkxB8E/CIk1bjSuKioCabI/QHNam+5ckrRnXRf4dBtD56u
FUOJ
-----END CERTIFICATE REQUEST-----
+28
View File
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCyWwdp6i0Xo38z
6GNkDmluHDqt0E9iYL94RN5vA/NT9HhZst7d4lvZpaZnWPxMXtMDM5e/oHPP8yaF
ze9ALIjMhg4zGCL7egKHYD+h4Voh9ii1Vth74UBMYfDNS/R0JSpG9Inn9KWdnHtB
oZqS4tPLHBmM1aGTt7uZZB7olzYmH048B8ZdgmmQhl+8yywKYa/gbYGXg4UVGDKb
GXWQpCjWEFmOaxNLaSNtqS/RxDfFZNkL4Zc1nfmBPnTBPxvS4KjsYvQbcrHxfySh
8FqdieTlizAabXFXgt4wp3+NaX7xooYeci3yX0yt95y2CU1il3WcU/zqgjDNvUah
5NWPeoN5AgMBAAECggEAYWdDOj2QmLtKib+dIBSa0W6LQUdlQzXQ+06pJ3nB1pTJ
cTs1aXnobYmAwiofx1l15ea0Ngvbk7KX1DUuNx7bKs7/TDofSLVOUj5nIfIfNjLn
8njWS3ktk0ldp9CWVSPC3fNIqSu7ksLVsXcfIp7Lyb2z2m0FC9YoltHN63pBMTm3
NvDN4qdCfH1Vx2/bAKYLdk35RSLhFmcd533BEbVsPxXnia05Y1fBaK6R+/Wh+ccb
AhJAAB4MjtWxDyKdK0VDzfXgu/r+zVMMQP4vnL2+NLy/A3LOCulNy/VFs4Y5akw3
y3sXR1RFaiFdBUO82mlZWZzqv5Nfoar59IpsSXNbnQKBgQDp9Jv5VcJdO4geDbm8
Gdnmrp/OtceiBSXD7QsEgegSQ0DGKiN6lEyb24FBHDu7FR/ZkZdFJCsM8F5TJtqm
nKBOMepva7mMMg8hFVC6bDZYXZekgYQo3HrEI4xTKRYtTlTG0Plh59vwqjbiTdRH
K1rycfGldRuiu4EKeXuYXsUMYwKBgQDDKUIfrPtxUmXnTDFT5ctBhVYGHcApoqVn
RcfTqRXIVZVMe8VIPnsweFtIm1fK2YD+7PlNWhkPiTaX1Iux7nUPyA5PnWhChUQo
K6bwRix7TAM5xQ8CgFChr0yAG5kWDX6OY01yVjvxM5Ozg7txY8noSjCkfSy1yh45
qGtLBj0xcwKBgDxOFgpeJbychMiiZxbqXvWMW5sP1kaYJxTqvCVMSwKyHTc3U2/c
XCbsnNOosGjX2B7f3WswGHy8VMQARuodg2DEkxZnYSuXF7lCYk27aQK8FUONMwDJ
XEfElf41oAbLoySgZzfqaRIO/hi1URuLPGU0I8KvfhEjXe7SQ56SBx7bAoGAJd0c
Wh7qjbrp0G1E6L0dqTGgVgFxpeJLavTr5xHYCw0nsTYWOYT9y5KeS0DwUIfQciUx
3SMM16nMcLqo+7WC+rPaqvGkJ7vJVG3brqQ+vxEpUwz7c4XHnwbutbAlDFVD54Y2
oWc/q/VQw7RcKoyswKecNl2ezgpPwOn/Hwgv2ScCgYEAykI57UdyhY8ZQM6WerOK
YM+hZW3+3EOY6dkELT9hjR1jG5ShYpgAM0rnj53/Aj0W2aGC7B6SP6oKjTZj3zwq
OWR/N/4CrJb/tD+Wrdywz17ApPMamyv8QHi4igYzQrLk6Gesx16X/2HVdgZGAMYk
j1e8LTX2iuu1251sl4x0vtU=
-----END PRIVATE KEY-----
@@ -0,0 +1,67 @@
-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx
MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV
BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE
ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g
VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N
TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj
eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E
oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk
Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY
uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j
BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb
+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw
CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0
LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr
BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv
bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov
L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H
ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH
7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi
H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx
RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv
xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38
sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL
l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq
6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY
LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5
yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI
s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG
vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ
Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb
IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0
tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E
xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV
icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5
D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ
WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ
5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG
KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg
EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID
ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG
BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t
L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA
A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+
rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+
/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA
CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F
zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA
vGp4z7h/jnZymQyd/teRCBaho1+V
-----END CERTIFICATE-----
@@ -0,0 +1,103 @@
-----BEGIN CERTIFICATE-----
MIIGRjCCBS6gAwIBAgIQG6xJJKZ9lKNxKxeUUr9jkjANBgkqhkiG9w0BAQsFADCB
jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB
MB4XDTIzMDcxNjAwMDAwMFoXDTI0MDcxNTIzNTk1OVowIDEeMBwGA1UEAxMVd3d3
LmlmYXR0aWRpbmFwb2xpLml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAslsHaeotF6N/M+hjZA5pbhw6rdBPYmC/eETebwPzU/R4WbLe3eJb2aWmZ1j8
TF7TAzOXv6Bzz/Mmhc3vQCyIzIYOMxgi+3oCh2A/oeFaIfYotVbYe+FATGHwzUv0
dCUqRvSJ5/SlnZx7QaGakuLTyxwZjNWhk7e7mWQe6Jc2Jh9OPAfGXYJpkIZfvMss
CmGv4G2Bl4OFFRgymxl1kKQo1hBZjmsTS2kjbakv0cQ3xWTZC+GXNZ35gT50wT8b
0uCo7GL0G3Kx8X8kofBanYnk5YswGm1xV4LeMKd/jWl+8aKGHnIt8l9MrfectglN
Ypd1nFP86oIwzb1GoeTVj3qDeQIDAQABo4IDCjCCAwYwHwYDVR0jBBgwFoAUjYxe
xFStiuF36Zv5mwXhuAGNYeEwHQYDVR0OBBYEFLGF834raf283GA9pFOjRI267ZFa
MA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUF
BwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYB
BQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1Nl
Y3RpZ29SU0FEb21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EuY3J0MCMGCCsG
AQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAzBgNVHREELDAqghV3d3cu
aWZhdHRpZGluYXBvbGkuaXSCEWlmYXR0aWRpbmFwb2xpLml0MIIBfgYKKwYBBAHW
eQIEAgSCAW4EggFqAWgAdgB2/4g/Crb7lVHCYcz1h7o0tKTNuyncaEIKn+ZnTFo6
dAAAAYld4GjHAAAEAwBHMEUCIQDqnPLPzDT6f45fD/xq76S70zCDjLS5WwW1MzNl
GvFrJQIgQLF7dF1K2jKZpl5BC3w/CSacLx7s43tJ9DmmS25APz4AdwDatr9rP7W2
Ip+bwrtca+hwkXFsu1GEhTS9pD0wSNf7qwAAAYld4GkTAAAEAwBIMEYCIQDbrYll
rrh9QXqjtuiaIQtAdr254lWThoC44N4f0grxnAIhAMQZghRkyI/ewSRaa3RDK+C1
I1ajIxlSV2S67/y+BounAHUA7s3QZNXbGs7FXLedtM0TojKHRny87N7DUUhZRnEf
tZsAAAGJXeBo9gAABAMARjBEAiAlWDAaLGjH1sM0xQIY7H2rOFmrfwZEC16rol7i
mUSoiAIgbT5EfzeXmMegnpPaZTMG+TcbX4STS+JFSbwX5HcWM+IwDQYJKoZIhvcN
AQELBQADggEBAFKU20+ZeL6cdExSU5lHYUH+X4qP01jyLKQCtnKueEJE+5bZSoVz
ArLT+ob8UKeDK//fXAdVC7ULf6y9GmEgjVefuCg5bRpdyEXilfsmo3/9Bp9c//KY
7eO9l2PZljlXuFSvsGjj29mnX87oBEqUlNpWFPXewBYmQfVEHLvukHaRlrZ8BUbv
nTFhdqy6taf6tAYFmJy6TBWsu2OiTBa3lanad/XwtK7nn3F62HLUBKTQd/ZlLexu
J3tI3vFR/ph4UaSyv9tz6sCVnGnysFDO9OJZ2TsomPFwXQwzrebodsdOH+eaOtbj
SrU3Nn67sz7LQKsqBsvUMm8N/PdhsQLzf00=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx
MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV
BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE
ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g
VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N
TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj
eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E
oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk
Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY
uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j
BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb
+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw
CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0
LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr
BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv
bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov
L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H
ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH
7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi
H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx
RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv
xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38
sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL
l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq
6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY
LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5
yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI
s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG
vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ
Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb
IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0
tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E
xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV
icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5
D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ
WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ
5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG
KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg
EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID
ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG
BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t
L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA
A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+
rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+
/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA
CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F
zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA
vGp4z7h/jnZymQyd/teRCBaho1+V
-----END CERTIFICATE-----
@@ -0,0 +1,36 @@
-----BEGIN CERTIFICATE-----
MIIGRjCCBS6gAwIBAgIQG6xJJKZ9lKNxKxeUUr9jkjANBgkqhkiG9w0BAQsFADCB
jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB
MB4XDTIzMDcxNjAwMDAwMFoXDTI0MDcxNTIzNTk1OVowIDEeMBwGA1UEAxMVd3d3
LmlmYXR0aWRpbmFwb2xpLml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAslsHaeotF6N/M+hjZA5pbhw6rdBPYmC/eETebwPzU/R4WbLe3eJb2aWmZ1j8
TF7TAzOXv6Bzz/Mmhc3vQCyIzIYOMxgi+3oCh2A/oeFaIfYotVbYe+FATGHwzUv0
dCUqRvSJ5/SlnZx7QaGakuLTyxwZjNWhk7e7mWQe6Jc2Jh9OPAfGXYJpkIZfvMss
CmGv4G2Bl4OFFRgymxl1kKQo1hBZjmsTS2kjbakv0cQ3xWTZC+GXNZ35gT50wT8b
0uCo7GL0G3Kx8X8kofBanYnk5YswGm1xV4LeMKd/jWl+8aKGHnIt8l9MrfectglN
Ypd1nFP86oIwzb1GoeTVj3qDeQIDAQABo4IDCjCCAwYwHwYDVR0jBBgwFoAUjYxe
xFStiuF36Zv5mwXhuAGNYeEwHQYDVR0OBBYEFLGF834raf283GA9pFOjRI267ZFa
MA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUF
BwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYB
BQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1Nl
Y3RpZ29SU0FEb21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EuY3J0MCMGCCsG
AQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAzBgNVHREELDAqghV3d3cu
aWZhdHRpZGluYXBvbGkuaXSCEWlmYXR0aWRpbmFwb2xpLml0MIIBfgYKKwYBBAHW
eQIEAgSCAW4EggFqAWgAdgB2/4g/Crb7lVHCYcz1h7o0tKTNuyncaEIKn+ZnTFo6
dAAAAYld4GjHAAAEAwBHMEUCIQDqnPLPzDT6f45fD/xq76S70zCDjLS5WwW1MzNl
GvFrJQIgQLF7dF1K2jKZpl5BC3w/CSacLx7s43tJ9DmmS25APz4AdwDatr9rP7W2
Ip+bwrtca+hwkXFsu1GEhTS9pD0wSNf7qwAAAYld4GkTAAAEAwBIMEYCIQDbrYll
rrh9QXqjtuiaIQtAdr254lWThoC44N4f0grxnAIhAMQZghRkyI/ewSRaa3RDK+C1
I1ajIxlSV2S67/y+BounAHUA7s3QZNXbGs7FXLedtM0TojKHRny87N7DUUhZRnEf
tZsAAAGJXeBo9gAABAMARjBEAiAlWDAaLGjH1sM0xQIY7H2rOFmrfwZEC16rol7i
mUSoiAIgbT5EfzeXmMegnpPaZTMG+TcbX4STS+JFSbwX5HcWM+IwDQYJKoZIhvcN
AQELBQADggEBAFKU20+ZeL6cdExSU5lHYUH+X4qP01jyLKQCtnKueEJE+5bZSoVz
ArLT+ob8UKeDK//fXAdVC7ULf6y9GmEgjVefuCg5bRpdyEXilfsmo3/9Bp9c//KY
7eO9l2PZljlXuFSvsGjj29mnX87oBEqUlNpWFPXewBYmQfVEHLvukHaRlrZ8BUbv
nTFhdqy6taf6tAYFmJy6TBWsu2OiTBa3lanad/XwtK7nn3F62HLUBKTQd/ZlLexu
J3tI3vFR/ph4UaSyv9tz6sCVnGnysFDO9OJZ2TsomPFwXQwzrebodsdOH+eaOtbj
SrU3Nn67sz7LQKsqBsvUMm8N/PdhsQLzf00=
-----END CERTIFICATE-----
@@ -0,0 +1,95 @@
-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx
MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV
BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE
ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g
VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N
TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj
eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E
oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk
Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY
uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j
BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb
+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw
CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0
LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr
BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv
bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov
L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H
ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH
7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi
H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx
RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv
xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38
sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL
l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq
6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY
LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5
yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI
s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG
vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ
Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb
IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0
tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E
xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV
icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5
D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ
WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ
5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG
KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg
EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID
ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG
BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t
L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA
A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+
rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+
/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA
CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F
zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA
vGp4z7h/jnZymQyd/teRCBaho1+V
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
-----END CERTIFICATE-----
@@ -0,0 +1,131 @@
-----BEGIN CERTIFICATE-----
MIIGRjCCBS6gAwIBAgIQDmiNiQcqn6CDIZGjppn6KzANBgkqhkiG9w0BAQsFADCB
jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB
MB4XDTI0MDcxNjAwMDAwMFoXDTI1MDgxNTIzNTk1OVowIDEeMBwGA1UEAxMVd3d3
LmlmYXR0aWRpbmFwb2xpLml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAsBFPMTPfJbaeu+H3s636scQY+g6/S7PutDSi85n99mOpZ1vyS8MwvjCcI2xb
/emXJaLRkJLN2sTBe64B9woUxtKFnE1UbWYosLFemZaxHpoWwa0Bd0PjfrBlvkZS
9DzYjfuI6WiEpcixh/QuiM7i1g+sESyf29iQX+N58TwSvlgoKbRqMT1g7bRhGBqj
DqL61gRAr1RIOH6kEfXkRnhcUDx/RjmLztqSmf7ekgEBYE3+w0F/Zh94FpDTSxgT
IZwLMbYx9PNXrBM0XWpvz4GAMfW8vjOwME8tqLGSrpmjJ7ab9tzo1wg1hpHiD2Rp
hzvtpnSl9D1XGQdFsNmWmQHQkwIDAQABo4IDCjCCAwYwHwYDVR0jBBgwFoAUjYxe
xFStiuF36Zv5mwXhuAGNYeEwHQYDVR0OBBYEFB7NZPF2+r+LiCEHjHt7FkgmoGWt
MA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUF
BwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYB
BQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1Nl
Y3RpZ29SU0FEb21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EuY3J0MCMGCCsG
AQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAzBgNVHREELDAqghV3d3cu
aWZhdHRpZGluYXBvbGkuaXSCEWlmYXR0aWRpbmFwb2xpLml0MIIBfgYKKwYBBAHW
eQIEAgSCAW4EggFqAWgAdgDd3Mo0ldfhFgXnlTL6x5/4PRxQ39sAOhQSdgosrLvI
KgAAAZC9caREAAAEAwBHMEUCIQDNQ2H9khQWi+YXHC66xYRaDvXb+rfD4i69SnXG
1INomgIgOHV6MiOK3aU5ksfsKojnCDPpomdCifeos00VVYeEz+EAdQAN4fIwK9MN
wUBiEgnqVS78R3R8sdfpMO8OQh60fk6qNAAAAZC9caQnAAAEAwBGMEQCICIPNGUb
kKZhft508hghzSXCTePsjYc7j0PWMVQubZe2AiA6tikN4RVWFp/SF3HJnf2eDr/7
H8LSgH6p6NqqqwDzmQB3ABLxTjS9U3JMhAYZw48/ehP457Vih4icbTAFhOvlhiY6
AAABkL1xpCQAAAQDAEgwRgIhANIepxh9QFxQT8hjkwrrxN60rOLgNS804SuDlJ8N
ygHIAiEA/fU3ieZMSFHEFwpr8u+QJtElHE4q7CYVJsZgdVqbbbswDQYJKoZIhvcN
AQELBQADggEBAI46dTeoonSiqQ5OYx+R4zAwMVz0PyBWSKajmaexlsrmhNEbBw7K
gnUPIxnN/TJ3Nr+wbIvzUuarjlj3fiJcctmX5RbvNLx2sR/KpjiBvZ9MSX4d2SgF
qp78xlkp2bWPEwtgxlvzm6NksxcUXeE6VhQu3rr1K1BPcm4HIBeia31rS5v0r+m1
TrBEqhpzXLbk8zqcNLUX8v9yp021KIUP7AqbDo8qSlWlwtD94Bi6rWuChH6fEQhr
neLw8nhoow/8vRlX69i4nRmuE5uM3Oe6foHsNKxFJwG1skbw1GltTsMnY4/NnlYj
fkO2JcemruDM+XwIiVBnIaMqSgz87kbePS4=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx
MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV
BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE
ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g
VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N
TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj
eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E
oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk
Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY
uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j
BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb
+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw
CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0
LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr
BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv
bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov
L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H
ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH
7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi
H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx
RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv
xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38
sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL
l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq
6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY
LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5
yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K
00u/I5sUKUErmgQfky3xxzlIPK1aEn8=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7
MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE
AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4
MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5
MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO
ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0
aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI
s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG
vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ
Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb
IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0
tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E
xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV
icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5
D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ
WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ
5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG
KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg
EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID
ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG
BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t
L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr
BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA
A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+
rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+
/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA
CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F
zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA
vGp4z7h/jnZymQyd/teRCBaho1+V
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb
MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow
GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj
YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL
MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM
GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua
BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe
3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4
YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR
rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm
ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU
oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v
QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t
b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF
AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q
GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2
G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi
l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3
smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
-----END CERTIFICATE-----
@@ -0,0 +1,36 @@
-----BEGIN CERTIFICATE-----
MIIGRjCCBS6gAwIBAgIQDmiNiQcqn6CDIZGjppn6KzANBgkqhkiG9w0BAQsFADCB
jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB
MB4XDTI0MDcxNjAwMDAwMFoXDTI1MDgxNTIzNTk1OVowIDEeMBwGA1UEAxMVd3d3
LmlmYXR0aWRpbmFwb2xpLml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAsBFPMTPfJbaeu+H3s636scQY+g6/S7PutDSi85n99mOpZ1vyS8MwvjCcI2xb
/emXJaLRkJLN2sTBe64B9woUxtKFnE1UbWYosLFemZaxHpoWwa0Bd0PjfrBlvkZS
9DzYjfuI6WiEpcixh/QuiM7i1g+sESyf29iQX+N58TwSvlgoKbRqMT1g7bRhGBqj
DqL61gRAr1RIOH6kEfXkRnhcUDx/RjmLztqSmf7ekgEBYE3+w0F/Zh94FpDTSxgT
IZwLMbYx9PNXrBM0XWpvz4GAMfW8vjOwME8tqLGSrpmjJ7ab9tzo1wg1hpHiD2Rp
hzvtpnSl9D1XGQdFsNmWmQHQkwIDAQABo4IDCjCCAwYwHwYDVR0jBBgwFoAUjYxe
xFStiuF36Zv5mwXhuAGNYeEwHQYDVR0OBBYEFB7NZPF2+r+LiCEHjHt7FkgmoGWt
MA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUF
BwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYB
BQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1Nl
Y3RpZ29SU0FEb21haW5WYWxpZGF0aW9uU2VjdXJlU2VydmVyQ0EuY3J0MCMGCCsG
AQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAzBgNVHREELDAqghV3d3cu
aWZhdHRpZGluYXBvbGkuaXSCEWlmYXR0aWRpbmFwb2xpLml0MIIBfgYKKwYBBAHW
eQIEAgSCAW4EggFqAWgAdgDd3Mo0ldfhFgXnlTL6x5/4PRxQ39sAOhQSdgosrLvI
KgAAAZC9caREAAAEAwBHMEUCIQDNQ2H9khQWi+YXHC66xYRaDvXb+rfD4i69SnXG
1INomgIgOHV6MiOK3aU5ksfsKojnCDPpomdCifeos00VVYeEz+EAdQAN4fIwK9MN
wUBiEgnqVS78R3R8sdfpMO8OQh60fk6qNAAAAZC9caQnAAAEAwBGMEQCICIPNGUb
kKZhft508hghzSXCTePsjYc7j0PWMVQubZe2AiA6tikN4RVWFp/SF3HJnf2eDr/7
H8LSgH6p6NqqqwDzmQB3ABLxTjS9U3JMhAYZw48/ehP457Vih4icbTAFhOvlhiY6
AAABkL1xpCQAAAQDAEgwRgIhANIepxh9QFxQT8hjkwrrxN60rOLgNS804SuDlJ8N
ygHIAiEA/fU3ieZMSFHEFwpr8u+QJtElHE4q7CYVJsZgdVqbbbswDQYJKoZIhvcN
AQELBQADggEBAI46dTeoonSiqQ5OYx+R4zAwMVz0PyBWSKajmaexlsrmhNEbBw7K
gnUPIxnN/TJ3Nr+wbIvzUuarjlj3fiJcctmX5RbvNLx2sR/KpjiBvZ9MSX4d2SgF
qp78xlkp2bWPEwtgxlvzm6NksxcUXeE6VhQu3rr1K1BPcm4HIBeia31rS5v0r+m1
TrBEqhpzXLbk8zqcNLUX8v9yp021KIUP7AqbDo8qSlWlwtD94Bi6rWuChH6fEQhr
neLw8nhoow/8vRlX69i4nRmuE5uM3Oe6foHsNKxFJwG1skbw1GltTsMnY4/NnlYj
fkO2JcemruDM+XwIiVBnIaMqSgz87kbePS4=
-----END CERTIFICATE-----
@@ -0,0 +1,17 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICrDCCAZQCAQAwZzELMAkGA1UEBhMCSVQxCzAJBgNVBAgMAk5hMQ8wDQYDVQQH
DAZOYXBvbGkxGjAYBgNVBAoMEUkgRmF0dGkgZGkgTmFwb2xpMR4wHAYDVQQDDBV3
d3cuaWZhdHRpZGluYXBvbGkuaXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQCwEU8xM98ltp674fezrfqxxBj6Dr9Ls+60NKLzmf32Y6lnW/JLwzC+MJwj
bFv96ZclotGQks3axMF7rgH3ChTG0oWcTVRtZiiwsV6ZlrEemhbBrQF3Q+N+sGW+
RlL0PNiN+4jpaISlyLGH9C6IzuLWD6wRLJ/b2JBf43nxPBK+WCgptGoxPWDttGEY
GqMOovrWBECvVEg4fqQR9eRGeFxQPH9GOYvO2pKZ/t6SAQFgTf7DQX9mH3gWkNNL
GBMhnAsxtjH081esEzRdam/PgYAx9by+M7AwTy2osZKumaMntpv23OjXCDWGkeIP
ZGmHO+2mdKX0PVcZB0Ww2ZaZAdCTAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA
Nyh3lja1avb8UoPOER+dJp2P+CJFNWTHpD77zeOC3JX12u7j6t2JnpQp4jTgFCaa
jGxM7VkFhuIRtOf5YfJdXkPMKCwuRuqdNgGdWo4xzLapzgjChpMntx9LI9NBqh8E
pFohssCH7YB8SPtSnaNydRdQKL4yqw2DlnzuH4x4XP6WEDAgPCXaygsk4LpJiOje
hGq+GO7cy/pWVJ4bXC4CMA3Ej0EK+2l+HYC3kbJOU+hA4YCtx81FMC8kf5PGJSq+
u51HlDUERBzSfPyhXjcXxshO5W9yCgV4vZsbIt8uOqiuDyN+KO2c4QCDIv+XETjj
BIvh5ycUUqP475jOiPv8yg==
-----END CERTIFICATE REQUEST-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCwEU8xM98ltp67
4fezrfqxxBj6Dr9Ls+60NKLzmf32Y6lnW/JLwzC+MJwjbFv96ZclotGQks3axMF7
rgH3ChTG0oWcTVRtZiiwsV6ZlrEemhbBrQF3Q+N+sGW+RlL0PNiN+4jpaISlyLGH
9C6IzuLWD6wRLJ/b2JBf43nxPBK+WCgptGoxPWDttGEYGqMOovrWBECvVEg4fqQR
9eRGeFxQPH9GOYvO2pKZ/t6SAQFgTf7DQX9mH3gWkNNLGBMhnAsxtjH081esEzRd
am/PgYAx9by+M7AwTy2osZKumaMntpv23OjXCDWGkeIPZGmHO+2mdKX0PVcZB0Ww
2ZaZAdCTAgMBAAECggEBAJMO8hlDnSev3+dH9w+xykm+Y6pAtRDzCfakXFKhlZi9
Z1o4VylmsAi7Kz7/G9r5x1AdLXLW22/VlVHLZkLDvdTPM9/4SwNRJ71leIFKd0f7
JfTAnw/RuWswxNpnfJQZWjtFE/b4YIrkFTxb/J4yRw7Kakqx/hevS+97XXfbWEB4
mPGNu+dpXWHLgSNl0vBX8GdjSocF/gB+OtIim2kdlmf06Rv7RB4KzheHNY3VqLMW
P9vkr0CNCsSUg8susI7Ea0eF1J0qBRaqSaZZMjCxkDRuHZ75SQsG8aPUxoYHagbl
p9LKpr19mMCqUsgcOKLWH2yWgjG3S7T4aEexiMEL4jECgYEA1aqCI+h87P1UESaU
sCiSmVXiniHoSqMpf/oBpvNLvGYqonvw7ebv05ReZaHh2Crc8EqZR1V/+cJ6W0Ap
2zpEFCC/0PvjJ+Vz1EPMkYE2a2IL4jZxRM/vswMkRT/2oFVmTj+5rxHq+YR/s831
SHA0q0vvQaBWAXYJByqdKAKH7NsCgYEA0vO/NLe5j3Jhd74yOpxrgh+4ytAg32bt
zDFLmTXH8P9BAPEeFzzf/mUYrG7vZ3/afAhY7JmYDlO3jE70xFuorREFz7fVc0Wk
GiND+DcpzVZsojs3OI2JSmqh6URGcHwkPs3I6lSJ8a3w2PRchsCsasCrszko5oG8
f1pTuFUjnKkCgYB1OnDerK7mA/O82TMZF5mfQWztn+LoGG8rhQqlA7WY72ES9vdw
P5Vzu2KzVkcoKBRCTluctL9bVCV3rVOJsYUqmfFEAv9Vo2GSo4Q4jPFDp26ntYEd
5Qw5Zk7fI8H3pANWiUYiVK1cKyM5jpW2IcHz/dyOYB7v/Eflw66oBgN3owKBgQCV
bxd+p7tqM1N6OKBqRo4d0ozcFs2Ck+5WHIF6Gc/2F0ub+DIhsfzWwBTXaYpr3fUO
sfcUO8WsOH+og/H9+xQk7Q8Z0xcAnk+eOGcYuTMCg3tW/O2kQRcFQT5K+ROQ8U/X
sXznClXhfx9DAO9egbRhtvSqdA5WI4c9C+aMiLs+aQKBgD0ukpti+Hvu9yaMD5Dl
+Jw8ShaOnXitawMPfMllt3FRz+Olz7DADfMEGmPVSVzehs0UQcDPtcIwgSLoBy74
FYbzYckViKequY4j/v5bF8/GFM2YZSwqwAOrTlFep5gbSuHtHw4QHV5iW1TqcpVU
G9EECMVtD/xN/tZuwzD6XNho
-----END PRIVATE KEY-----
+111
View File
@@ -0,0 +1,111 @@
-----BEGIN CERTIFICATE-----
MIIGTDCCBDSgAwIBAgIQOXpmzCdWNi4NqofKbqvjsTANBgkqhkiG9w0BAQwFADBf
MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD
Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw
HhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5WjBgMQswCQYDVQQGEwJHQjEY
MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFB1Ymxp
YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2MIIBojANBgkqhkiG9w0B
AQEFAAOCAY8AMIIBigKCAYEAljZf2HIz7+SPUPQCQObZYcrxLTHYdf1ZtMRe7Yeq
RPSwygz16qJ9cAWtWNTcuICc++p8Dct7zNGxCpqmEtqifO7NvuB5dEVexXn9RFFH
12Hm+NtPRQgXIFjx6MSJcNWuVO3XGE57L1mHlcQYj+g4hny90aFh2SCZCDEVkAja
EMMfYPKuCjHuuF+bzHFb/9gV8P9+ekcHENF2nR1efGWSKwnfG5RawlkaQDpRtZTm
M64TIsv/r7cyFO4nSjs1jLdXYdz5q3a4L0NoabZfbdxVb+CUEHfB0bpulZQtH1Rv
38e/lIdP7OTTIlZh6OYL6NhxP8So0/sht/4J9mqIGxRFc0/pC8suja+wcIUna0HB
pXKfXTKpzgis+zmXDL06ASJf5E4A2/m+Hp6b84sfPAwQ766rI65mh50S0Di9E3Pn
2WcaJc+PILsBmYpgtmgWTR9eV9otfKRUBfzHUHcVgarub/XluEpRlTtZudU5xbFN
xx/DgMrXLUAPaI60fZ6wA+PTAgMBAAGjggGBMIIBfTAfBgNVHSMEGDAWgBRWc1hk
lfmSGrASKgRieaFAFYghSTAdBgNVHQ4EFgQUaMASFhgOr872h6YyV6NGUV3LBycw
DgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMBsGA1UdIAQUMBIwBgYEVR0gADAIBgZngQwBAgEw
VAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdv
UHVibGljU2VydmVyQXV0aGVudGljYXRpb25Sb290UjQ2LmNybDCBhAYIKwYBBQUH
AQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp
Z29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvblJvb3RSNDYucDdjMCMGCCsGAQUF
BzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEA
YtOC9Fy+TqECFw40IospI92kLGgoSZGPOSQXMBqmsGWZUQ7rux7cj1du6d9rD6C8
ze1B2eQjkrGkIL/OF1s7vSmgYVafsRoZd/IHUrkoQvX8FZwUsmPu7amgBfaY3g+d
q1x0jNGKb6I6Bzdl6LgMD9qxp+3i7GQOnd9J8LFSietY6Z4jUBzVoOoz8iAU84OF
h2HhAuiPw1ai0VnY38RTI+8kepGWVfGxfBWzwH9uIjeooIeaosVFvE8cmYUB4TSH
5dUyD0jHct2+8ceKEtIoFU/FfHq/mDaVnvcDCZXtIgitdMFQdMZaVehmObyhRdDD
4NQCs0gaI9AAgFj4L9QtkARzhQLNyRf87Kln+YU0lgCGr9HLg3rGO8q+Y4ppLsOd
unQZ6ZxPNGIfOApbPVf5hCe58EZwiWdHIMn9lPP6+F404y8NNugbQixBber+x536
WrZhFZLjEkhp7fFXf9r32rNPfb74X/U90Bdy4lzp3+X1ukh1BuMxA/EEhDoTOS3l
7ABvc7BYSQubQ2490OcdkIzUh3ZwDrakMVrbaTxUM2p24N6dB+ns2zptWCva6jzW
r8IWKIMxzxLPv5Kt3ePKcUdvkBU/smqujSczTzzSjIoR5QqQA6lN1ZRSnuHIWCvh
JEltkYnTAH41QJ6SAWO66GrrUESwN/cgZzL4JLEqz1Y=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGlTCCBH2gAwIBAgIRANJ/u8HeNZ5SFq1hSVhgmcQwDQYJKoZIhvcNAQEMBQAw
gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK
ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD
VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIx
MDMyMjAwMDAwMFoXDTM4MDExODIzNTk1OVowXzELMAkGA1UEBhMCR0IxGDAWBgNV
BAoTD1NlY3RpZ28gTGltaXRlZDE2MDQGA1UEAxMtU2VjdGlnbyBQdWJsaWMgU2Vy
dmVyIEF1dGhlbnRpY2F0aW9uIFJvb3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOC
Ag8AMIICCgKCAgEAk77VNlJ12AEjoBxHQknuY7a3If3EldVIKyZ8FFMQ2nn9K7ct
pNQs+uoy3UnCub0PSD17WphUr55dMXRPB/xQId2kz2hPGxJjbSWZTCqZ80gwYfqB
fB6nCErcPiscHxhMcao1jK34bug7StnllALWiYQTqm3ITzPMUJY3kjPcX4jnn1TZ
SPCYQ9Zm/Z8XOEPFAVEL1+MjDxRdWxTnS77d9MjaAzfR1jmhIVEwg7Bt1zBOlluR
8HAkq79FgWRDDb0hOi886Z4NyyC1QifM2m+b7mQwkDnNk2WBITG1I1AzNyLjOO34
MTDMRf5i+dFdMnlCh99qzFYZQE3Oqrv5tXZJlPEn+JGlg+UGs2MOgNzgElWApjtm
tDmHLcjw0NEU6eQNTQ72XVdyxTscR1ad4tX7gWGMzE2AkDRbt9cUddzYBEifwMEo
iLTpHMqnsfFWt3tJTFnlIBWohAIp+jiUaZpJBo/NH3kUFxIMg3reH7GX7vmXeCik
yESS6X0mBaZYcpt5E9gRX67FOGI0aLKGMI74kGGeMmz1BzbNokxu7Io27fLmmRVE
cMN8vJw5wLTha/eDJSNX2RKA5UnwdQ/vjescm1QotCE8/HwK/+97a3X/ix2gGQWr
+vgrgULoOLq7+6r9PeDzyt9Ol5cp7fMYVumllqy9w5CYsuD5otSmR0N8bc8CAwEA
AaOCASAwggEcMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1Ud
DgQWBBRWc1hklfmSGrASKgRieaFAFYghSTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwEQYDVR0g
BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy
dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDA1
BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVz
dC5jb20wDQYJKoZIhvcNAQEMBQADggIBADpvBIlq7bMU0cFDT/9P9+BsgCkRgQs0
S6Bf7vJSlWMHwby0VGvxCS0hrbi0K2BINZbEbsVsgpQq04431yyoVn3Hldorgq24
RldRDOOipEZDTFB9wC9HYt1thHF00XeG2C8KC1plwoEzKAIhPvefI/C3cT0CfTXJ
uFjUbKIgSwjNjw6YHtLgoy/hd5+JLUlLco/gzFX/qWbT7tEquOMYpsNKWZj8TLqP
q6zMiG4Na6feEZte6YPXGrMWlTWN341vDedc+yxQqSug79HJUQcOZs7KyDWztmae
QxsPE49UV/8XwrfZtZaYyrs4FpD94Z4Q8dzXGL8+qEJjxgcza7W6PROaClubavd1
VKPm8+aCW77u7SxpR2TFGL6kPdxsKyFijpcunR5V79sUyROfNdzjrAcFWZXK8sbb
9FlnwuVG677JLv+ZVTX5AxLvW5OB4zt5uS+zB62wJ/Wv+jXGAttSAcJec4iFgCWH
Rvdi/jJoSzRLa3nEzx6pFIzclSCnh0u1xCeLcUBypSiPga8W+6PkuoyQq8U9qs9E
oxG5NvrvlyshwUS9yvcZRGw7Ljlx4jJH/BhIPR8kIBCQj1vna9TziZOrw1Of8hDU
bHKFG9Pm8Dp2vbjz/2JH39qvxshPKVllGfq+5klPm7yZRUYTiCMAbqwNdL/nsqF2
Rnnyp58XRStJ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw
MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV
BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy
dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B
3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY
tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/
Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2
VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT
79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6
c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT
Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l
c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee
UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE
Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF
Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO
VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3
ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs
8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR
iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze
Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ
XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/
qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB
VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB
L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG
jjxDah2nGN59PRbxYvnKkKj9
-----END CERTIFICATE-----
@@ -0,0 +1,151 @@
-----BEGIN CERTIFICATE-----
MIIGlDCCBPygAwIBAgIQdL548hQplpUpcn695ITBejANBgkqhkiG9w0BAQsFADBg
MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
Ey5TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2
MB4XDTI1MDkxMDAwMDAwMFoXDTI2MDkxMDIzNTk1OVowIDEeMBwGA1UEAxMVd3d3
LmlmYXR0aWRpbmFwb2xpLml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAm6Iiwk5nM6dM6MS42IQBEmB0wtAa3q2zQd1f/Co2vbcuAug055kAX81392Qa
tfcuHCQKrmYw1Dz7rl0X9vLdR8VBDbdMSuWpBzqTDgc5ed+Bq+Sq3PXjTArXpoxX
edWD1K+TxE4ciM32KuJUv4+ZJfcXnFoABOHztRYDgYgxEY6QSmIsqiYNzI+pnXpz
FCISYhQB1BqefZj74XDkyqrGsiSBNHmMfGNnn3LhMiDIB14jvNUgxkIxKhNZZqrN
Y4UlO4CTsbO638rWiijnjN+VAINITzPl5goVe4QBFepwK84c3ZTNrBMtUCgteJfX
6afnm56RciJF8s3bq7ALJJpFHwIDAQABo4IDCDCCAwQwHwYDVR0jBBgwFoAUaMAS
FhgOr872h6YyV6NGUV3LBycwHQYDVR0OBBYEFGN1VcoL9aLT/KpxB82znhCDXfrJ
MA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUF
BwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYB
BQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1Nl
Y3RpZ29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvbkNBRFZSMzYuY3J0MCMGCCsG
AQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAzBgNVHREELDAqghV3d3cu
aWZhdHRpZGluYXBvbGkuaXSCEWlmYXR0aWRpbmFwb2xpLml0MIIBfAYKKwYBBAHW
eQIEAgSCAWwEggFoAWYAdQDYCVU7lE96/8gWGW+UT4WrsPj8XodVJg8V0S5yu0VL
FAAAAZk1c5ygAAAEAwBGMEQCIFpF1ZvvA95MfLCTjRnojNRnA/rrodK2xes028cw
Wn4qAiA38E6qD7CIvZHxtrXi3OJmAq0d4n3LAMoTjtGGZcUd0AB1AKyrMHBs6+yE
MfQT0vSRXxEeQiRDsfKmjE88KzunHgLDAAABmTVznMQAAAQDAEYwRAIgKLZcFMPU
Gd5uEo4c85mtVQ0nxnnhkJCQSjO4op5KkicCIHk73U7eNBUtezx4ZJkfsNLBs9/1
pokoxLAo5da1WbrSAHYA1219ENGn9XfCx+lf1wC/+YLJM1pl4dCzAXMXwMjFaXcA
AAGZNXOcQgAABAMARzBFAiEA8grcPPZ4XPuWWb18MoFzInoVjxKlF6hSaCDv10il
cgMCIBVENiFxXfQb9SN7HifcXA0fdPu7zP6gUY+Vo5oN7zcGMA0GCSqGSIb3DQEB
CwUAA4IBgQBV/ystq+VGaGti8BA1YmAHaKD5yAuCrJ3SLbcu14F0a2RbQ/fUvycQ
/Vmz1vMOS6PhaEliZGCqAeByJ5xiJ2RYz6pauRJbMgbWxRnV0Xne+vhkP4lMsQDY
14i8jHMyp73RlmVsZqhOvpCBEj3eP3AUupLQQuTzvMAM+AQV2FnYYBJDnwqZhOAU
W2/fhJy9LRc8FA+hw3mqBcdAqnwpbM86Lub5N2KF2V/ES15QRX2QcpuJ6IVrb4BN
+P4bVsXNwIc2jipRnPouZLi+lPkeGHAsWcv/6+NXdeQs3opDdSJUoWWoAxhGiDn4
yT0yBH/5csxU8WNncYd+SM26tY6chprZOea0OIY9nMpgSRUoSZS2a0KET8IjTl4Y
GKVcaIO/PY821FyHTdgw/PKhL6dwzDpKG/lctOydVudGDfb5qYW8PIFK/WvGICYR
ruAPJVGU/X6UHNOl2VT3SmwBgaP74ruMiY/w0ZyC6FrnzkdKpUbQUgUPkkonKkJz
72bE8PahMN4=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGTDCCBDSgAwIBAgIQOXpmzCdWNi4NqofKbqvjsTANBgkqhkiG9w0BAQwFADBf
MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD
Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw
HhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5WjBgMQswCQYDVQQGEwJHQjEY
MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFB1Ymxp
YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2MIIBojANBgkqhkiG9w0B
AQEFAAOCAY8AMIIBigKCAYEAljZf2HIz7+SPUPQCQObZYcrxLTHYdf1ZtMRe7Yeq
RPSwygz16qJ9cAWtWNTcuICc++p8Dct7zNGxCpqmEtqifO7NvuB5dEVexXn9RFFH
12Hm+NtPRQgXIFjx6MSJcNWuVO3XGE57L1mHlcQYj+g4hny90aFh2SCZCDEVkAja
EMMfYPKuCjHuuF+bzHFb/9gV8P9+ekcHENF2nR1efGWSKwnfG5RawlkaQDpRtZTm
M64TIsv/r7cyFO4nSjs1jLdXYdz5q3a4L0NoabZfbdxVb+CUEHfB0bpulZQtH1Rv
38e/lIdP7OTTIlZh6OYL6NhxP8So0/sht/4J9mqIGxRFc0/pC8suja+wcIUna0HB
pXKfXTKpzgis+zmXDL06ASJf5E4A2/m+Hp6b84sfPAwQ766rI65mh50S0Di9E3Pn
2WcaJc+PILsBmYpgtmgWTR9eV9otfKRUBfzHUHcVgarub/XluEpRlTtZudU5xbFN
xx/DgMrXLUAPaI60fZ6wA+PTAgMBAAGjggGBMIIBfTAfBgNVHSMEGDAWgBRWc1hk
lfmSGrASKgRieaFAFYghSTAdBgNVHQ4EFgQUaMASFhgOr872h6YyV6NGUV3LBycw
DgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMBsGA1UdIAQUMBIwBgYEVR0gADAIBgZngQwBAgEw
VAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdv
UHVibGljU2VydmVyQXV0aGVudGljYXRpb25Sb290UjQ2LmNybDCBhAYIKwYBBQUH
AQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp
Z29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvblJvb3RSNDYucDdjMCMGCCsGAQUF
BzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEA
YtOC9Fy+TqECFw40IospI92kLGgoSZGPOSQXMBqmsGWZUQ7rux7cj1du6d9rD6C8
ze1B2eQjkrGkIL/OF1s7vSmgYVafsRoZd/IHUrkoQvX8FZwUsmPu7amgBfaY3g+d
q1x0jNGKb6I6Bzdl6LgMD9qxp+3i7GQOnd9J8LFSietY6Z4jUBzVoOoz8iAU84OF
h2HhAuiPw1ai0VnY38RTI+8kepGWVfGxfBWzwH9uIjeooIeaosVFvE8cmYUB4TSH
5dUyD0jHct2+8ceKEtIoFU/FfHq/mDaVnvcDCZXtIgitdMFQdMZaVehmObyhRdDD
4NQCs0gaI9AAgFj4L9QtkARzhQLNyRf87Kln+YU0lgCGr9HLg3rGO8q+Y4ppLsOd
unQZ6ZxPNGIfOApbPVf5hCe58EZwiWdHIMn9lPP6+F404y8NNugbQixBber+x536
WrZhFZLjEkhp7fFXf9r32rNPfb74X/U90Bdy4lzp3+X1ukh1BuMxA/EEhDoTOS3l
7ABvc7BYSQubQ2490OcdkIzUh3ZwDrakMVrbaTxUM2p24N6dB+ns2zptWCva6jzW
r8IWKIMxzxLPv5Kt3ePKcUdvkBU/smqujSczTzzSjIoR5QqQA6lN1ZRSnuHIWCvh
JEltkYnTAH41QJ6SAWO66GrrUESwN/cgZzL4JLEqz1Y=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGlTCCBH2gAwIBAgIRANJ/u8HeNZ5SFq1hSVhgmcQwDQYJKoZIhvcNAQEMBQAw
gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK
ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD
VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIx
MDMyMjAwMDAwMFoXDTM4MDExODIzNTk1OVowXzELMAkGA1UEBhMCR0IxGDAWBgNV
BAoTD1NlY3RpZ28gTGltaXRlZDE2MDQGA1UEAxMtU2VjdGlnbyBQdWJsaWMgU2Vy
dmVyIEF1dGhlbnRpY2F0aW9uIFJvb3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOC
Ag8AMIICCgKCAgEAk77VNlJ12AEjoBxHQknuY7a3If3EldVIKyZ8FFMQ2nn9K7ct
pNQs+uoy3UnCub0PSD17WphUr55dMXRPB/xQId2kz2hPGxJjbSWZTCqZ80gwYfqB
fB6nCErcPiscHxhMcao1jK34bug7StnllALWiYQTqm3ITzPMUJY3kjPcX4jnn1TZ
SPCYQ9Zm/Z8XOEPFAVEL1+MjDxRdWxTnS77d9MjaAzfR1jmhIVEwg7Bt1zBOlluR
8HAkq79FgWRDDb0hOi886Z4NyyC1QifM2m+b7mQwkDnNk2WBITG1I1AzNyLjOO34
MTDMRf5i+dFdMnlCh99qzFYZQE3Oqrv5tXZJlPEn+JGlg+UGs2MOgNzgElWApjtm
tDmHLcjw0NEU6eQNTQ72XVdyxTscR1ad4tX7gWGMzE2AkDRbt9cUddzYBEifwMEo
iLTpHMqnsfFWt3tJTFnlIBWohAIp+jiUaZpJBo/NH3kUFxIMg3reH7GX7vmXeCik
yESS6X0mBaZYcpt5E9gRX67FOGI0aLKGMI74kGGeMmz1BzbNokxu7Io27fLmmRVE
cMN8vJw5wLTha/eDJSNX2RKA5UnwdQ/vjescm1QotCE8/HwK/+97a3X/ix2gGQWr
+vgrgULoOLq7+6r9PeDzyt9Ol5cp7fMYVumllqy9w5CYsuD5otSmR0N8bc8CAwEA
AaOCASAwggEcMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1Ud
DgQWBBRWc1hklfmSGrASKgRieaFAFYghSTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwEQYDVR0g
BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy
dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDA1
BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVz
dC5jb20wDQYJKoZIhvcNAQEMBQADggIBADpvBIlq7bMU0cFDT/9P9+BsgCkRgQs0
S6Bf7vJSlWMHwby0VGvxCS0hrbi0K2BINZbEbsVsgpQq04431yyoVn3Hldorgq24
RldRDOOipEZDTFB9wC9HYt1thHF00XeG2C8KC1plwoEzKAIhPvefI/C3cT0CfTXJ
uFjUbKIgSwjNjw6YHtLgoy/hd5+JLUlLco/gzFX/qWbT7tEquOMYpsNKWZj8TLqP
q6zMiG4Na6feEZte6YPXGrMWlTWN341vDedc+yxQqSug79HJUQcOZs7KyDWztmae
QxsPE49UV/8XwrfZtZaYyrs4FpD94Z4Q8dzXGL8+qEJjxgcza7W6PROaClubavd1
VKPm8+aCW77u7SxpR2TFGL6kPdxsKyFijpcunR5V79sUyROfNdzjrAcFWZXK8sbb
9FlnwuVG677JLv+ZVTX5AxLvW5OB4zt5uS+zB62wJ/Wv+jXGAttSAcJec4iFgCWH
Rvdi/jJoSzRLa3nEzx6pFIzclSCnh0u1xCeLcUBypSiPga8W+6PkuoyQq8U9qs9E
oxG5NvrvlyshwUS9yvcZRGw7Ljlx4jJH/BhIPR8kIBCQj1vna9TziZOrw1Of8hDU
bHKFG9Pm8Dp2vbjz/2JH39qvxshPKVllGfq+5klPm7yZRUYTiCMAbqwNdL/nsqF2
Rnnyp58XRStJ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB
iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw
MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV
BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy
dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B
3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY
tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/
Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2
VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT
79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6
c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT
Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l
c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee
UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE
Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF
Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO
VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3
ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs
8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR
iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze
Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ
XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/
qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB
VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB
L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG
jjxDah2nGN59PRbxYvnKkKj9
-----END CERTIFICATE-----
@@ -0,0 +1,38 @@
-----BEGIN CERTIFICATE-----
MIIGlDCCBPygAwIBAgIQdL548hQplpUpcn695ITBejANBgkqhkiG9w0BAQsFADBg
MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
Ey5TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2
MB4XDTI1MDkxMDAwMDAwMFoXDTI2MDkxMDIzNTk1OVowIDEeMBwGA1UEAxMVd3d3
LmlmYXR0aWRpbmFwb2xpLml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAm6Iiwk5nM6dM6MS42IQBEmB0wtAa3q2zQd1f/Co2vbcuAug055kAX81392Qa
tfcuHCQKrmYw1Dz7rl0X9vLdR8VBDbdMSuWpBzqTDgc5ed+Bq+Sq3PXjTArXpoxX
edWD1K+TxE4ciM32KuJUv4+ZJfcXnFoABOHztRYDgYgxEY6QSmIsqiYNzI+pnXpz
FCISYhQB1BqefZj74XDkyqrGsiSBNHmMfGNnn3LhMiDIB14jvNUgxkIxKhNZZqrN
Y4UlO4CTsbO638rWiijnjN+VAINITzPl5goVe4QBFepwK84c3ZTNrBMtUCgteJfX
6afnm56RciJF8s3bq7ALJJpFHwIDAQABo4IDCDCCAwQwHwYDVR0jBBgwFoAUaMAS
FhgOr872h6YyV6NGUV3LBycwHQYDVR0OBBYEFGN1VcoL9aLT/KpxB82znhCDXfrJ
MA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUF
BwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBhAYIKwYB
BQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1Nl
Y3RpZ29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvbkNBRFZSMzYuY3J0MCMGCCsG
AQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAzBgNVHREELDAqghV3d3cu
aWZhdHRpZGluYXBvbGkuaXSCEWlmYXR0aWRpbmFwb2xpLml0MIIBfAYKKwYBBAHW
eQIEAgSCAWwEggFoAWYAdQDYCVU7lE96/8gWGW+UT4WrsPj8XodVJg8V0S5yu0VL
FAAAAZk1c5ygAAAEAwBGMEQCIFpF1ZvvA95MfLCTjRnojNRnA/rrodK2xes028cw
Wn4qAiA38E6qD7CIvZHxtrXi3OJmAq0d4n3LAMoTjtGGZcUd0AB1AKyrMHBs6+yE
MfQT0vSRXxEeQiRDsfKmjE88KzunHgLDAAABmTVznMQAAAQDAEYwRAIgKLZcFMPU
Gd5uEo4c85mtVQ0nxnnhkJCQSjO4op5KkicCIHk73U7eNBUtezx4ZJkfsNLBs9/1
pokoxLAo5da1WbrSAHYA1219ENGn9XfCx+lf1wC/+YLJM1pl4dCzAXMXwMjFaXcA
AAGZNXOcQgAABAMARzBFAiEA8grcPPZ4XPuWWb18MoFzInoVjxKlF6hSaCDv10il
cgMCIBVENiFxXfQb9SN7HifcXA0fdPu7zP6gUY+Vo5oN7zcGMA0GCSqGSIb3DQEB
CwUAA4IBgQBV/ystq+VGaGti8BA1YmAHaKD5yAuCrJ3SLbcu14F0a2RbQ/fUvycQ
/Vmz1vMOS6PhaEliZGCqAeByJ5xiJ2RYz6pauRJbMgbWxRnV0Xne+vhkP4lMsQDY
14i8jHMyp73RlmVsZqhOvpCBEj3eP3AUupLQQuTzvMAM+AQV2FnYYBJDnwqZhOAU
W2/fhJy9LRc8FA+hw3mqBcdAqnwpbM86Lub5N2KF2V/ES15QRX2QcpuJ6IVrb4BN
+P4bVsXNwIc2jipRnPouZLi+lPkeGHAsWcv/6+NXdeQs3opDdSJUoWWoAxhGiDn4
yT0yBH/5csxU8WNncYd+SM26tY6chprZOea0OIY9nMpgSRUoSZS2a0KET8IjTl4Y
GKVcaIO/PY821FyHTdgw/PKhL6dwzDpKG/lctOydVudGDfb5qYW8PIFK/WvGICYR
ruAPJVGU/X6UHNOl2VT3SmwBgaP74ruMiY/w0ZyC6FrnzkdKpUbQUgUPkkonKkJz
72bE8PahMN4=
-----END CERTIFICATE-----
@@ -0,0 +1,17 @@
-----BEGIN CERTIFICATE REQUEST-----
MIICrDCCAZQCAQAwZzELMAkGA1UEBhMCSVQxCzAJBgNVBAgMAk5hMQ8wDQYDVQQH
DAZOYXBvbGkxGjAYBgNVBAoMEUkgRmF0dGkgZGkgTmFwb2xpMR4wHAYDVQQDDBV3
d3cuaWZhdHRpZGluYXBvbGkuaXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQCboiLCTmczp0zoxLjYhAESYHTC0BrerbNB3V/8Kja9ty4C6DTnmQBfzXf3
ZBq19y4cJAquZjDUPPuuXRf28t1HxUENt0xK5akHOpMOBzl534Gr5Krc9eNMCtem
jFd51YPUr5PEThyIzfYq4lS/j5kl9xecWgAE4fO1FgOBiDERjpBKYiyqJg3Mj6md
enMUIhJiFAHUGp59mPvhcOTKqsayJIE0eYx8Y2efcuEyIMgHXiO81SDGQjEqE1lm
qs1jhSU7gJOxs7rfytaKKOeM35UAg0hPM+XmChV7hAEV6nArzhzdlM2sEy1QKC14
l9fpp+ebnpFyIkXyzdursAskmkUfAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA
Qgi1BZ2kb6/1yt7kmsNFcnrpC6aUT3QnblXNezc06eXQMCwvCwGJWYz3+B4lZAR5
KmiaMVLPbuZ37WeVDpyKCb2XkOl1KN9rrUSysMpdUrgY1I8F31UHLruA8QmA7BMB
3rpjnyLb1afG0EjR0tkYos+B698AvYqPWXvOYlgRcmEi/sZh9Pt0bZERKGIt1zXz
Bsqc3SQq6AN9nDlVeoJ+Tr40WKDhnp4XOy5ctmpHFrm0rQj8ch9tpWTgy806gfQ6
O4xfFN9VN/9PvsNPZTIW0kFVbnnII7K5DziTa/RCKyqwFJqu3WoxsYzy5LWUrkUj
SSTGafEgwZtnIrRn0rBKsA==
-----END CERTIFICATE REQUEST-----
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCboiLCTmczp0zo
xLjYhAESYHTC0BrerbNB3V/8Kja9ty4C6DTnmQBfzXf3ZBq19y4cJAquZjDUPPuu
XRf28t1HxUENt0xK5akHOpMOBzl534Gr5Krc9eNMCtemjFd51YPUr5PEThyIzfYq
4lS/j5kl9xecWgAE4fO1FgOBiDERjpBKYiyqJg3Mj6mdenMUIhJiFAHUGp59mPvh
cOTKqsayJIE0eYx8Y2efcuEyIMgHXiO81SDGQjEqE1lmqs1jhSU7gJOxs7rfytaK
KOeM35UAg0hPM+XmChV7hAEV6nArzhzdlM2sEy1QKC14l9fpp+ebnpFyIkXyzdur
sAskmkUfAgMBAAECggEAA0YJSiIBDLaXqQu+QZuhNCRAQHrFHer0as2/v5uZtCre
tmPw/PAccGdvfw4le69b0m61pM50d3pi5tuBbgnUurY89I9m9OpYwFSslC51uIkJ
fracG3K2mbpep9uq2V6y263nw0jLU9tVMri5BKB+HazRW9IOzwt7p1Lztu1I7vAS
00kdFoHU0lm9IbXgJww3PJEeGWJK+w8FYetV6ER1SbAKUukLa2RmGaIBRAaegis1
XsEr5NxuB+qB2/J/RqIFtythO6UNl+evi+1PE0HH/Hx7VBYwvypk9hvCPl2HYVzh
k4P1GJ5lZXD8UNT4R0lhKOdePwPTPZh6GVFBiiOo6QKBgQDSW7PsZdzhCoAU81Qd
/ozpv9d9vJQUoqpiC51nAIczbCPCGgxDsXb4iKeq7vyDNPCOYpqwhzlkbxKr8spa
WDdHB9jZtrvEboisYurAcKphIFDvep/uGRNwWjUD2HljgHiH8c35fMB/XgbSiXv3
q/z5/IiDXMWDDM/kvdgAcf4DtwKBgQC9ZsDAqYMl2mClY0zkd0pD4WeR1YaoD3zF
rHciH39OKZ8PtcwHEDoP0Hu/T1O2DRJknFU+7zZRioaFz+wbjQ84JGjKCiTEZs6R
2dQ0j9ahrEwCXr34Gx7rmy+J/AV6cYe8CC8Vco0VC2ieqKwO/fCsA3TsrXHie9Gj
BtlGg/XZ2QKBgAHKgherLlxEKJ8FC1xOBIkg9wa9Ck26rNS04Jw15vDLJOrMKfqR
kj+/eh38du3vD3VG5aZHIHf4ciJAqPRn9+CE8pW39pVPk55UIUeOLgUxrz66vo3a
bM3yFq13tGDigSQ3LNfI9iKffFNilEmhjz/ZpJfpvEzHWSXLcAFg9xa1AoGAZ1lX
Wonk31XfIMAjqBMTuiCX9DLQjIoO6opmY39OZyc8/USVNVF8bT61F7pAknlljPLl
bTb4q9vr9b50NsBtCpSLfZu1Xlo+48U6Dwhh9MxgmXZ7MJQT9joy4ZdcoeirSUYp
8wkTxOT5zIF7iZ61ohcsyS0HlK89wDivfNPq5lkCgYBJviS98tBxfGKRZwDDM/3I
HLzoCn8ehZUUXLer5lZKOwsrEfGOE72Sz1FonUHnmPcZ1lNGcvyn4vHMemufsyLH
He6LCi31Dq/29JCotlJoBu2KiSTHMc7GmamkVWepm0wZVnUXHHuWqGd8GXNJWNb2
8nHAhOKi9dRqiKvAWBW7zQ==
-----END PRIVATE KEY-----
+1 -1
View File
@@ -1,4 +1,4 @@
############### ###############
RewriteEngine On RewriteEngine On
RewriteRule ^(.*)$ http://www.ifattidinapoli.com/fdn2/$1 [P,L] RewriteRule ^(.*)$ https://www.ifattidinapoli.com/fdn2/$1 [P,L]
############### ###############
+2 -2
View File
@@ -5,7 +5,7 @@
IS_V2=`aws --version | grep -P "^aws-cli/2" | wc -l` IS_V2=`aws --version | grep -P "^aws-cli/2" | wc -l`
if [[ $IS_V2 -eq "1" ]]; then if [[ $IS_V2 -eq "1" ]]; then
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin 299952237278.dkr.ecr.eu-west-1.amazonaws.com aws ecr get-login-password --region eu-west-1 --profile personal | docker login --username AWS --password-stdin 299952237278.dkr.ecr.eu-west-1.amazonaws.com
else else
$(aws ecr get-login --no-include-email) $(aws ecr get-login --no-include-email --region eu-west-1 --profile personal)
fi fi