diff --git a/flake.lock b/flake.lock index dc456ae..a10c3d7 100644 --- a/flake.lock +++ b/flake.lock @@ -26,11 +26,11 @@ "nvfetcher": "nvfetcher" }, "locked": { - "lastModified": 1708539149, - "narHash": "sha256-LgkOe+y8Lk7LjB6MzKZ6enM8NPahdM7Gdg1es4Zi3IU=", + "lastModified": 1714745487, + "narHash": "sha256-9t9U5yzzFRN8vFxzbjUoBYEnUoV7NbA4EchhfyicaoY=", "owner": "berberman", "repo": "flakes", - "rev": "7220e84f72ac182cf71cb9f4f66c927c48fc4cf6", + "rev": "f25657a68b93a08058707a37f88d09878d7f7c14", "type": "github" }, "original": { @@ -45,11 +45,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1711587019, - "narHash": "sha256-EDDeJCKSAo1Jkcq8z5XnRemuR5tY77p+tRLmLvrPPPc=", + "lastModified": 1715043139, + "narHash": "sha256-4zwv3IR5bwe6Y+jcVaU3U2AurF4JeJc1DVi+m+v/7Ro=", "owner": "iosmanthus", "repo": "code-insider-flake", - "rev": "a5fd897f71a34c83c33d2aba548bd31d3b755276", + "rev": "480d500161b888804f955313881e11a8a2176132", "type": "github" }, "original": { @@ -61,11 +61,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -79,11 +79,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1692799911, - "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -97,11 +97,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -133,11 +133,11 @@ ] }, "locked": { - "lastModified": 1708988456, - "narHash": "sha256-RCz7Xe64tN2zgWk+MVHkzg224znwqknJ1RnB7rVqUWw=", + "lastModified": 1715077503, + "narHash": "sha256-AfHQshzLQfUqk/efMtdebHaQHqVntCMjhymQzVFLes0=", "owner": "nix-community", "repo": "home-manager", - "rev": "1d085ea4444d26aa52297758b333b449b2aa6fca", + "rev": "6e277d9566de9976f47228dd8c580b97488734d4", "type": "github" }, "original": { @@ -148,11 +148,11 @@ }, "jetbrains": { "locked": { - "lastModified": 1709307511, - "narHash": "sha256-3EGmy0NVNEXJaXaR85GCteNdKJYm/rs2X2/l8L3DkKc=", + "lastModified": 1715096500, + "narHash": "sha256-UQYLb0hOJooC0kJ7MgF6L8kKAOXXzIUgZC9ZsrqY0Lg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "44bdf188c3c2075db583fd4df85938990f7b3fce", + "rev": "f4388cd289cc8ca04d2768b6191fbc888d5e870b", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "master": { "locked": { - "lastModified": 1711004997, - "narHash": "sha256-to+nObcMdSmp/F8PoX8czxdIR7kpc4JAM82vb06ieWc=", + "lastModified": 1715096500, + "narHash": "sha256-UQYLb0hOJooC0kJ7MgF6L8kKAOXXzIUgZC9ZsrqY0Lg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b3bced21a8acebb9e8777c5af8de851c49d8637e", + "rev": "f4388cd289cc8ca04d2768b6191fbc888d5e870b", "type": "github" }, "original": { @@ -178,11 +178,11 @@ }, "nixlib": { "locked": { - "lastModified": 1710636348, - "narHash": "sha256-/kB+ZWSdkZjbZ0FTqm0u84sf2jFS+30ysaEajmBjtoY=", + "lastModified": 1712450863, + "narHash": "sha256-K6IkdtMtq9xktmYPj0uaYc8NsIqHuaAoRBaMgu9Fvrw=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "fa827dda806c5aa98f454da4c567991ab8ce422c", + "rev": "3c62b6a12571c9a7f65ab037173ee153d539905f", "type": "github" }, "original": { @@ -199,11 +199,11 @@ ] }, "locked": { - "lastModified": 1710722910, - "narHash": "sha256-P5p9+WQFuABoBXBKEK1ZYu8mD6q8j/cQwZ9OYb0oh2E=", + "lastModified": 1713783234, + "narHash": "sha256-3yh0nqI1avYUmmtqqTW3EVfwaLE+9ytRWxsA5aWtmyI=", "owner": "nix-community", "repo": "nixos-generators", - "rev": "e63df01c798b99a76dc2ec25481be7dd25cd1610", + "rev": "722b512eb7e6915882f39fff0e4c9dd44f42b77e", "type": "github" }, "original": { @@ -229,11 +229,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1708819810, - "narHash": "sha256-1KosU+ZFXf31GPeCBNxobZWMgHsSOJcrSFA6F2jhzdE=", + "lastModified": 1714858427, + "narHash": "sha256-tCxeDP4C1pWe2rYY3IIhdA40Ujz32Ufd4tcrHPSKx2M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "89a2a12e6c8c6a56c72eb3589982c8e2f89c70ea", + "rev": "b980b91038fc4b09067ef97bbe5ad07eecca1e76", "type": "github" }, "original": { @@ -245,11 +245,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1710806803, - "narHash": "sha256-qrxvLS888pNJFwJdK+hf1wpRCSQcqA6W5+Ox202NDa0=", + "lastModified": 1714906307, + "narHash": "sha256-UlRZtrCnhPFSJlDQE7M0eyhgvuuHBTe1eJ9N9AQlJQ0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b06025f1533a1e07b6db3e75151caa155d1c7eb3", + "rev": "25865a40d14b3f9cf19f19b924e2ab4069b09588", "type": "github" }, "original": { @@ -261,11 +261,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1708751719, - "narHash": "sha256-0uWOKSpXJXmXswOvDM5Vk3blB74apFB6rNGWV5IjoN0=", + "lastModified": 1714809261, + "narHash": "sha256-hfBmnYFyz9I1mdrC3tX1A+dF9cOUcds5PIMPxrT+cRk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f63ce824cd2f036216eb5f637dfef31e1a03ee89", + "rev": "d32560238207b8e26d88b265207b216ee46b8450", "type": "github" }, "original": { @@ -277,11 +277,11 @@ }, "nur": { "locked": { - "lastModified": 1711703254, - "narHash": "sha256-shmxmrb3/KApdVk+I/BTr4stgZ2Y2XpWsihqtX2g+1M=", + "lastModified": 1715095690, + "narHash": "sha256-U9qaMOxYbSEi9DyVF7ECJdZd/Oc2Ve6RX2MayGa1MVA=", "owner": "nix-community", "repo": "NUR", - "rev": "2701441e446b3d1ec07a59ffaf274ab07d3bd1fd", + "rev": "e0f09d1671a6688472777f93e87a20d713491239", "type": "github" }, "original": { @@ -300,11 +300,11 @@ ] }, "locked": { - "lastModified": 1693539235, - "narHash": "sha256-ACmCq1+RnVq+EB7yeN6fThUR3cCJZb6lKEfv937WG84=", + "lastModified": 1711328620, + "narHash": "sha256-stBBJu/yH+6zj6XoQj86Jwbzvjh5UPknQblkYN+cLQA=", "owner": "berberman", "repo": "nvfetcher", - "rev": "2bcf73dea96497ac9c36ed320b457caa705f9485", + "rev": "fd9fb0afd56a297d04d31eab2bd0304c885664d8", "type": "github" }, "original": { @@ -335,11 +335,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1708987867, - "narHash": "sha256-k2lDaDWNTU5sBVHanYzjDKVDmk29RHIgdbbXu5sdzBA=", + "lastModified": 1715035358, + "narHash": "sha256-RY6kqhpCPa/q3vbqt3iYRyjO3hJz9KZnshMjbpPon8o=", "owner": "Mic92", "repo": "sops-nix", - "rev": "a1c8de14f60924fafe13aea66b46157f0150f4cf", + "rev": "893e3df091f6838f4f9d71c61ab079d5c5dedbd1", "type": "github" }, "original": { @@ -381,11 +381,11 @@ "tt-schemes": { "flake": false, "locked": { - "lastModified": 1707678373, - "narHash": "sha256-1s6L7vkHKC+eFhDnvFTl1aAjKnTE407MWmMS6gvVg74=", + "lastModified": 1713388094, + "narHash": "sha256-wcotm0Ek2ISn8iJBzEujJQdcPLKWrPAOZ/dS/DLKafw=", "owner": "tinted-theming", "repo": "schemes", - "rev": "ae4ce8b0d1f9b247d3add88a23aec3d833ae76d1", + "rev": "abcf2a055ae69f1bf047463332f83db3125aa8a5", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 288f197..b7e76e1 100644 --- a/flake.nix +++ b/flake.nix @@ -199,22 +199,10 @@ self.nixosModules.atuin self.nixosModules.cloud.aws-lightsail self.nixosModules.cloud.sing-box + self.nixosModules.gemini-openai-proxy self.nixosModules.o11y self.nixosModules.subgen - home-manager.nixosModules.home-manager - ({ config, ... }: { - home-manager = { - users.nixbuild = { ... }: { - imports = [ - ./nixos/aws-lightsail-0/home - ]; - }; - useGlobalPkgs = true; - verbose = true; - }; - }) - { nixpkgs.overlays = [ self.overlays.default @@ -268,6 +256,28 @@ } ]; }; + + lego-router = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit self; + }; + modules = [ + ./nixos/lego-router + ./secrets/lego-router + + sops-nix.nixosModules.sops + self.nixosModules.cloud.base + self.nixosModules.nixbuild + self.nixosModules.sing-box + + { + nixpkgs.overlays = [ + self.overlays.default + ]; + } + ]; + }; }; } // flake-utils.lib.eachSystem [ "x86_64-linux" ] @@ -283,7 +293,7 @@ buildInputs = with pkgs; [ fd gnumake - go_1_20 + go_1_21 google-cloud-sdk gotools nix-output-monitor diff --git a/infra/aws-lightsail/.gitignore b/infra/aws-lightsail/.gitignore index fe807e0..f905821 100644 --- a/infra/aws-lightsail/.gitignore +++ b/infra/aws-lightsail/.gitignore @@ -1,3 +1,2 @@ /.terraform -*.tfstate -*.tfstate.* +*.tfstate.backup diff --git a/infra/aws-lightsail/.sops.yaml b/infra/aws-lightsail/.sops.yaml new file mode 100644 index 0000000..7e47bb4 --- /dev/null +++ b/infra/aws-lightsail/.sops.yaml @@ -0,0 +1,6 @@ +keys: + - &iosmanthus age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs +creation_rules: + - key_groups: + - age: + - *iosmanthus diff --git a/infra/aws-lightsail/apply.sh b/infra/aws-lightsail/apply.sh new file mode 100755 index 0000000..698a35b --- /dev/null +++ b/infra/aws-lightsail/apply.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +function recover { + sops -e -i terraform.tfvars.json + sops -e -i terraform.tfstate +} + +sops -d -i terraform.tfvars.json +sops -d -i terraform.tfstate +trap recover EXIT +terraform apply -auto-approve $@ \ No newline at end of file diff --git a/infra/aws-lightsail/terraform.tfstate b/infra/aws-lightsail/terraform.tfstate new file mode 100644 index 0000000..d8a120c --- /dev/null +++ b/infra/aws-lightsail/terraform.tfstate @@ -0,0 +1,20 @@ +{ + "data": "ENC[AES256_GCM,data:re38qiIv3nHaF+eGxUxoL2hXq9V7I19c5ulM6Mr8tCxyfhePmda1TjX1PUsVwDdvMkI4sw8YKQwoPB623VThHn6TNb/UOlm6ntxGpH8xyd88f4FLufKev3EyXjFW9Z0OobY/0Zj6IzKSVuzjnAQVxRT1lO1O6cp6qZNBEBr2iOWAI35qoNChv85iXlbD9t1WVKnU7wJ4fapNcjaclTBgD4hMsoEkbeYEwCeOzr55sJcOTp5X0gDhlkhiB0BqMJVCGDz4PrRaTcqx9wImZ/tYeUhsXbur9oPk32MoxyYZ9ve2NFHEB8ZyftqPRZR2EY6mHv4/8aco7uQpvYegLOQQ3DO9zV8+9+DRE17fiBeFd9ju8klC/o2aWkoReu1zYhLS/Es1mn2y4725Zq+vsC9ZPwa8Rvrw7rS2X1DYbd1U+VuAD1aCmGKrRndGLLnWmPik1UTRclDTFjgIRuNAmLnuyuuqm2EjJmZS1xJq+V6S3S+Nf/XgWWFaJWZGaS1xQqCfnxoizwYMT76JCu3novqyr+z6pmKWWoNtWPQiTPxAnEJeBXUwz1jiHSva3ZvWvQhhLxsXXGOmXG9DLpzMxPM74fu2dpjAVeuYqxqcGmTL7L5DF1iHI+dHZu1o7vZeZccuxPLUdwn3GMrW2gQFDx+9nUXi8MWmGVh3fYtyr5spRPYT9apoXyir4ghTHK/Fqys61ONX6dZEPCflicTkBjsQf9BBoyDfBUcnKKkrApzP4FbatCFy8MQQ8qJh9KY23/9iAiMqK5xg0l66n3XmroEpwReaQoL90kdvNOd6/DJTd1MQH21Km0CVKTqQmSX1xgmHkA7pkbnniwkfR+ibPopeyKRKrn19UcH4JjwI2SEaUB5sGqmhE3Tvke5GPtpgYJajkaqDrqpxRZr2aVt0V5lSpFNLmq1HElsukgiMgeBpohe1QrB5abDI+P4XGViQiIrOQ9m24/Z4x5jg/xUl3zhvK4BjG2aJIPXGxZEJj03enZd1VwJHiBkna9F17zdimpi0Ru5U6ssQdXa8BlPdXQJWjN3dwAQJC1EhX2LGHAc3CWAYOzviBNObpzOT+yDrPGHy08WAmvdPskD6wlz5vmFKY5MC6lmUcSCzRyxX6A9vYKqdh9yWi49J1avt6K9PROKeCLj1IaKYra19awx4QVhFtQK4VObUsUayNTHhPsYX4Dx+SfR1R6pW04sym+KtedSydbtt95ZnhwXQZhFf6A/IriXpIPn3YWC+3+u/t1a7ZzCxmwfBvdOUa9GScLVR4LzLMm2dytQ/Rma4dmIOwI+MQHqbW2QPwywjPtdoWc9wmvGTY0ylm5IRGTmEVgZLap+CEdBIDc/Hu0mgDxG5Ru7zJOuJkHmBplv5PRhtLYtvL+BQpQoUvm+qfpIyeC3qC3QM3FacmvHQYcZgOSoYYZkESedaFtP4uUCSgqUf8zeqXFtTn0BTf3Y9o63cdR8y0M9SIsBfn5DTU85BQYmnNZPkrjwKeXj/nV9y8hRkXL/hd/PfbtnP6HMI2EJxKMANEabXq+VsHgr3aFWTujRGJelnZKBSkWDzcKbubthEBzFrQHC6V+ylGWCE7hKdM2SkyAHplU1CTbzIU9ECptKMPVgHwnyb71xB1aUcS8dgWnMGabg+nPuPSccUQ0zdbzb9OLvWCmICKZlLudR7mR8efRUDjLYCavIHLMxb7sT1Rv4Cso7JoOf8V8SWPOZFSX6rE1+6jUrfYOJyRMR1xWkKrilmUkUBAgD0AJ4USQ5B5Z/B08OI35tShLzXJHKEvazgkn2ybq+jKSPJhwvqVdZXh4QKXXZJ9ed0OxChHkluP55iYO3IyvNHuYzo/C+NvvwX+Hz13xyJUhb3upj8kLoR6H9czQvhxVjS13CORorSUd2PDNS6dhHdIV/I6mJqoI+QaKVjrfODQCCxEG/VHdzuBLs0JiGN81X8GrwBDq5tCQcS9sZWyHsUWnY3tex5k1lWK9kEYfkeQAfM9s6GVRUs4OHerXePmKHx5VT6uSrSiLmDZ6bPDBiWizgiEptJ6mfGUYxbS59zy/+mSBBjzrr57TDSSWQ4aFpH5bmYvqeXDAskkxPRIQj96derMBOtYYfdcnNKzQmR2V3IKKfbbCsps7QKKtUs/SM9IDTuSVulRGH0K3qniI58gJh5dT8p3UEx6rS05V7hsxQ/p7xMessKndLnApy5Avnz6CVmlwJCWZkgo3sEzh4KCkwg7RNkHxxdI/E3ViYzRVUcgt2cVbnEljjffW9t4tpTT0o6SHV6RzEmebOqhY8oGert5f6HvmPHhFA+YSUECzu4R1SXGnuQiweMKNKWvAFTXHLCtv3hquiFExNNyU68T1lrCI7o6puNmDR6zQpGtrkkdpPWa086W3T9EK+UM1yPYNTEMLuNMLE4EhrTCgyy9WmcEvDr9GeCXyglrQD/0Db0HcrjNDbtBt0b0fxCnYKaSHWlVlN3lTMHy1qzXeHOQgzqRS3W8MS8/d3H+nQ+PRIHttLlp6Tme8y+Qd+DsTGKBgnOXEUJ7wOio3khjW4JmC+GjVkjI9otkvUUouDL62ONzGM8nehIgannhADyV7Av3hANmT5VHBqSmiP3O6XXsRYXeAFOp5Z4yKMcOxr9eWnx15PXlaazsvKD2vRIFJweNh6lBHCTHAixfFDomfk48caald5YXG3SY1BBmr/aRFVRZzKXdQDwcXQJESxgXY3fW3iC04QKe6EwTDktk4C6HeiQ3IroKojeseUWLhAxcRDK9qRiB7Trw4Mu6nbTLNz0+7PmK/D6sYmF2gUZp6szyqxEQ8FrqJV24xQ2j5FlsOT/r72UpUSbh7STYHW84To9Hst2GqlGmDy72nwB+DAgDHhAvk7q2FXauCMkbolek+YrOJOxO5+2W9Ufn4VJwwc6B9VCo7Av9XgxT3vTILesuTrJx/X+Z/iaLFeACwLCijiEDiChCpPIOiRu0BOKn8uHhnOzk5+LJwdgUFHlNk/zw6SF/OvOpg7IqDQvfuAGTNVdUxKLQJltBAjG+LD/FnCCpjKI/rKxpkb4H95aj8clYL0/tPQO7pbyalutavnXqI47N9ws1iB8nPL3IABr8PBcudhs8tB13WXtcMB05nWLaF3rCH1fhMRbbMNF7dtFLSL2VUkZjHTSEKF2P65ssHiXpCFVuCc6755FekDz4otsK1AWhaebz6AhcQiK5Mq3rhOX/CRUrfLuFK0r09knfhI5OnJ7W3k7n7MssakGIc1Jxi9CYkOGywehy3xhxKLa9SFiHDoEa61y0pq4ZBxhc6ERg+1h+Xqkh0vnuVeOiuKmisuDMfICUBZ45asS3+aQzU1Tbz4WpHW3BosZoa+R28bnq/RHT774lc2w9/gwABYRwNwBmlmdGNqacmMBBJUFymodUg9umiwDCZR4rnmj6M2bcHHDOCHXAltnBkcHCzHQvp9fKWOfI4Vc7KoucHrz+fQ5FX3Rc0uvH5iMxVvlpj+pC1znQQjOP4TbpO1jJH2yINQtgPWc6iRZH9wWsYU1DCnay+pi/nCExyFG9qy23Nnr6d8/ehZh7McuMZzLfBhO9st2+1izOozP+t8NdTe5TClCPzeTALt3T2plYhbT+mLmEhv6uTbGQOd20dNGMTmuPuDhnF7HQoPMnc+/Ztbx4j5lGWvBCfkv8dbnWaOPCqBeMLV0c1aTiAm62Sy9Q9Y1r7IHQI7sb2iF/tZGxzczHPMaOtiPVXBsqnqIFRSes4dP47LaGD/ZdpZMU685BN5SoyK5xEyBkZ6ml0NPYDh0KHmgZfKFwMzCZFB0eyE2CJeg8koLGjKrxEk0ljuxoCF0Lils6brTgQZfiStr/h7dLjcz0JUsOCc8uBLA376++csJSFfOF4qNxXlLAlCJ8MRrCifEvtXKZS6YXtTOIoQwNdjP4gxCbF29whWDz5Lpjn0+h+HPSx6fMJtVXE0Pqx9f+maM6/fkNLqUtrqQ8Gll3ImKVqrttcq0fPcU3++kUYhe4lcHHNtP7TkwbO/uG3eoLlae3S4GeR4hcCAC0ucmq0FmjOrPv06HiYseUFe80PNszyHFv52RTbteKm/+rYOyT7DRhaX1mRQlAIhFzm0oQ/0lWzjAyjyIWsj3djMxyH6ih2V3N/9l6ZYESs8kXF6HjcPmZPukT5qbMtrMfrscj3NkxpjKevBrgLUZgCvTYevnrSkjJicrDnwJox1ZVARsy5OmDI3xcWWmgrtg32sDYYL6stwfaEjrig80jGeOJU697C2MPaqvDfUFpDcF95FHNUHmmvw5FTIoFK/EznsLeix7emWFwsecUhpdjnIsqBYjXG6MBrcFMBp9tkAsOBsWGuf/Q38il/l48cBucHd7HpHl64l+XCJqQZPUXo6Q/ITEgaByxjvgCFO+5K81WqvLQ4W9WoUUP14nnGf09hp8Tp7vxa2adXR29+cp8xGM3YWFKsvO2eQWYC/3uMYFEoBpA4zbWG9F76/lVkihNllh3l0+MKE0QBQWwUZ561CBh6l6eBB0CgN2pxbwlP3GyhyOmbJG/PgOzTSy3Xm/ABGvebh18DgV4Q/QqE4cY7AnT5YqmMfP0A2T5bzUs+QP/TDKjgqdKk9n6EoVNRacxPGbiPCfLdzfSFIRt3mkxnfWNDqvIh1fqLUrFYLcfs8hZBkvH1nt4z7glGoXphAIQGDAnzKIjwribpwCysl5vH9F9LQkTTTtIZJX+1T7w4eKvcrrkRxIiNPTUlQQ5fMPUM3e252GDJdBilNJi3DrcK6yDVr8gVCx1uW6N5qJEuA33J9xMLR6JRpRNoJISi+R81FK33fHHBPIvIxN7shN7YLdGrFP48IODa3RLxQQCEB/Bn4wqGS7a662g3d0xor6wcQT/a7yRbMTo+43pyUs9hGKH54xflUxXPYX1y48se89ogScbOYi52EqyDRwKAu8sLCRi1C/EtyDZyjttwBwjX/234R06ym0WQ7iw+GMFfJcRiaT9gBvssgPP2F3oQuVsh6y2fe4WPul6VbFZrEscta1tPLzGyBQS342BWxFdD+8DZ8xrlzZtsxeHhDuCu5wkIg5+zLQaKjB+YHA4ededb2I1Dix1iI0LCir92CZ8cOUMZdrQDvVPK3SjDnHtLStGW3jNUO5nDF5e8Q0sXPrmk9WkI9oz9vwY6dd8hF55EuTBI1pt0jpWaJKtk76rvf3mntMeL2nEbdaI5ZX3h/fw2w3pkyyssgL2I3WUf/tvr4V8jPXofahrneywB1l9lNhSyyGC7CiLOnUlnE5T9pYZ4MK1Da5OYRmpDxm1YdXOe5uf/X9Q0RjA1+td4JSXChDkzBysi8Wa9lMJfX+RQOglv7kC4whvunNH5nrwrbS18IlsEQ4LLO6bfqopnDPYCmRVyQcC5ceHdv8c6O9YDGZ6ypnFYj7ptFhU9wMoYNM5XyftjuaRnVfD1ai54TdO408YwEjoFxR8XD9M5YOr+lUy2H0Htax5SUYBZ0zgEquC6bLgxCUJpVYifrdLwg2uj2y7GMDwzFlG9q7TmF4z+QP23k/UAE3bF9jDceHymnd+w9EWdwqKCU3C0HB6gVB8UMG9qHUMEHxmXOmXu0W044+u0Td6Lco0huJFISmaKZy4eCWKw5PbjUdeEtojTtx8ikA1gcvnET+LgH7KSLvU0tC/MgR1Jf2GBukbQp/pYpXHO1sARvoTDKmgY5ptxZa8gMgi/vqUUAySOTN2aavXqBTGhctOlsimhnErIx2tplg9//dA93ZXVoUNRynXcx/aPrYjiG1a1B1xoNXahm7el8439YbiUhl3IFcvuwGv4CRpSL1ZYYXcue5ZGng1R73x3soMHANpXzDGPT7uC2+eQXB1OQI0JT3oLULdDHQlXRo87+3oRv3ZmpZiILS2Nt7MZDNJnOMRSzgzwRJTe/1OIaK4xSoX2fQrfysOxSA6d91ZMPfOPB+hJWBVUy+onoOXhkE3rWlpWyiv9xBsFLFfX8D6pENgFJiLxDtkIMNDkJxuJs0g2j219beozQmSsFHd8FVHl6J7/XzwZeGPNFDsdmS2fDYNk7FeWOr3NWdHO5LBLd/wUGFuYU+gmvsfP86l2FPNvR1G0aMi1NK1CqY4VNJbWhAA9LqGzMl1o/Z5suysE7FR8Avbpdrl499a8t1kLKWqNjs4Q7Yu/mzuPAkfCDYntGnlJ3Mhzt0uT29BBVJe9uakJGVm+Sae5qeVfIsy3omLcty0HQIuoyDjTgu6HJLSVqrhYNy6jpOQafDNSgExUn0T0qjVw/wjRy/7e9DUK7kMqkLqZpwaczy/O1Ui99HjLZxp3oCyEYtGOwxwqgZpbmUVTai67/DBTSR4Y8jOkbIDHELAdJur9/PegaXWhWvWPPKxkLYwjyyfp2uTyL3T5wnraMBmi32/jWFfmg/09tealYvdUazoc3lyermYY/rFe5+GSVrsn+6GJSZDgTeys1mzKKR0TM5yOdY6vKXDIzxkZ1Cf7KKZidnobdZ4XxJ697eE1oaW+ktqcqw83mNPpZYhG5ogskhfvrDFsqmES2143MmJo+vCgLgLF3TvMquphUji7zqIBcCekPAxZSPKDx2zcyanAIwZ03xWzWAMRpQ6LEIFOgn31noufSkb7BAN7SCZTI873ElYhZkyx7snLQ51rDDflHuEgVq1ZUBigR0iJS+PHk6mrByA+X6ITE2kd1hTbZNnRTY7ts6Vp4/PpvGo7ruMmSeY8yU1hH0zqYdk+kwzNugJHhS3tm2SmadRcKqiVKC7KjwXaUcgqpws1CKiPwjP2HvcLram9DtdKWiVnu/HKBLWlRdJmW0YxUvK5D5HvvbaA/XtPMmIE+lfDERhGHpQHrf3meiIElS2t1CDpS4OQNIvZLcZ7Nsqryn2LGvGzGVWmFof+uMybCwEso5eaaKU6Hz5UffF6/6OwHjHgFaPx13VbmPAMW2M6ykmM+dmbKKtNmiBcq/WsuEXINJsftwd1QFTUF2j/KMwMNu8RLVeukVtboxTEc4IWL1Vn0Z4jUMMJU0BlB7M2JfdXyXOAo4njzG9y5dUo82nLwaeM3aR6e1PDLm2fnOR0KUC8+BM2K8N86OqXcNToqT2ARmFR7b7mwg7aR2gyUOCOXWjB3xF6M2hJ/WdQU7ltqOZs3Fn34oojR0H5YYsRK4vKmSboVpZCzwd/MYG5as3DzV30o6Y+OPVaGJ0uvEsVF0Sxl3lh52iBpSLC8ClT4XVMMw0Jff8aTSTZO5Ky73QkU1Mb2HC1Tx5cmh2ziTRzcKdaeKa9BckVFO45+uNrdChVafO0On6ZCTJnO8gQ2Gf+YG32ty4+sibP8QKM6IA98W3qZPWzCvaMWVbs1pau104LXY3Wr95F+HOJEDWRWXXsIu1jZhOQRLW17ZlrAOaPAk42ArZox2Q8STiBH1emALSe3MfkGN6F7IPABhJSb7UDtKcUZR19AGShPgJdcwtrG72KmrLnAxm70KsL3eQ6XiB8mllnd3XtSEVlKrJjEJooyU+1fiZFgtqhdfVbMjOGjAzTq0nOYAbB8cGOkzJTJT7TzkaUrkSPMb2zh4KaqjKXY1tDw88dgCG5dYnVMzCzlfTt8rmGnYmh4z8r47ToXRBGZ/35jjpYUXEbUllRijajWC/zrekqQ6AU0E/vZfo7oHq2dLipXObQdbs+EiH4hRFmP71f6XjtXlsLPDDxU76+URCO7jyXdIssSrVUnqWcdaoRsmMDrFdmccZsLViEvv9kFryM9d5/TD4fOcgWZXExDiZoacbcw31P3KGhDwoNEOwptmTS4Mwr2eEvTqbaXitlQ8zJaM+G5tu9K7rv1V9jYdGLJzOBZJhM6su8Vpv+VdyPKljXWVl6Ha1y+d5Z32AwWhenShZTJdJUb7ABt7cqIbf7tpPnXgD+WVcXebjgby726EqKPbbbS2SCTQ7CljShiRRyxezFREbP8EDJMfS0pxUWvWcqKDA9mpqowAxeMlGZpBdwljEf78SgroI1bXGDhq5hmn7RILPzu/pWR9tguhDz73LPEBum/rVIJkmp/haksCTNvUAFMetN+0u+WNxVKEnUCICrYWctPqnKNLdQ2SQDm/Xw6wXgeSaIaaK39CWDegdFIzFnB432/8Ysyfjgrbk95of/rHx0zUauj35vD6W9jCOrLIXD5MyOEQr9Z2+tVJ+6FFdizMhORbr8AXEGixMHKGyyUwx9JXwtkfqsWR3kNVuXCek8araqZUHq9ltqUcyVRsMxV8VsOf76w2u0IYaiNTwfnv3vCzt8gmgmlItuyefxKXj8T32jkhmVsfxb1gOXgLSwZsAvsrK72J2HlMvQE4pizKnd62l90fEro659iotUmQIb5LYrhSC3bx6f27L0d3ki0VAO586GhXQE3ZBoI+rbcFzDS3AcxsLI4a8ZvSqN+MPG80wZQxS+O2zsdbT0E8QmFWyb0GVmrVGOYN1KEehC2DJiMdN7ZTp1vdiJXmk8te/WPyGePSl449fz/vOnrvKzJBMAhjD3aYGyEKo0ZHskQeFbviWzF+6TvGfhSlqMJtUrI9xGRcCf9q3v1d5+16xYgQbXacbinsxxz96vOUPs+PP00h5x6uakC9nVl8VOfns7++QgoBJ+a37f1bviN5lfEzQQgnHbxz5mDs8K/S7IJnS4cmtX5Jag4xAg+eZ9PwDqZGidXBTNuGNIe6FKIk7CiN8JZbqkvidsxKfiglZi+xL2VPxSi5G8i3GGQWlc1iZP3zF6rWXsfESi4OcIQ2fZfE0u/htQwSxHx4oSYan15puD+VbZQVehk3eXNeBX35lA/a7igbgakIWNHJHyqnMW6a66kvtOQLCWK8ocj7qSFDRHlh6wMwAIFJWFIs1h96t+VLBiwGQWswQ38cOHH1dlAYBMGBir2ieUw/Dj8oEe6dJxwZGHWLudbNMP1LFU6wJGf7QmAPtY3qNN7rPlp8CDHT2dTi+a9QlcthHLjRlbDZWalQhUtkAIZFmnjCvpfkzeWdvn/P/8CgIJ6MhEnOlbBvbaLKJXiZh1CSsZiX4jbX1fhw4mpubmYtfeDF/+oeUGJg2X2zNg+97VL8a21ZzZrWKuOCXXr4QBNrdewaZvXLLpC0Th6yCz+OBARVEcyJmeaW7EUuOZcAyeQ3DiEDsBU1d3hCTRn5y92kZsemp04iwer9HKvdpo//lbQ0estnk9Fi91xKS8x/vcncACDVsvfSC2d7P/r6AETqIkvoZznOqy3eberQvwE1PIdsHQDsXZj5mLfSl720MPx7hmuXj8ORt2XcC1m+KgQtRHfRnnlA5XozXzJ0Xp0MN8GsSIStSNJZ2no3ygw/I1E0QwDDa3XXJWR7qSSrK7fGZCURkF96rLWvVmKCNZY4Pyaq93bJjY3w2yypkegYsTueePcP2YUHA+YuTbva/KfQDdF0viBqFc++yDI5wmC4IJ0aUddHo90WtI/LEWwfSP6oVKUXH0OLbLrmaKy2JUcmLKtglNU12WGy/SJh1Hymp1RiTgrxl4OSaQm4bBfm7l0HDzdkj0smLo5kSNCa0PVB520vAxr/qCgAGbM02DmTeWPMj5RdVFy6+h6b+hjsScs5hESSVAFepsLmH+05G1Jpq9utV5m6bjRRntlDY33R1FAHHAFbS7lSlY8o2bGkt3vUx45lpFfTD2ig8rOxO2remhyPu+qltaNpXlHtzRDroxPxQRSHrc+ACjlCF5tCpjwY/w==,iv:PF34YwlRpbEZiQupNknUT0vT2RGvPlVED4dNatS4Ve0=,tag:uUq5bAy5xu4KXDS1be0nvQ==,type:str]", + "sops": { + "kms": null, + "gcp_kms": null, + "azure_kv": null, + "hc_vault": null, + "age": [ + { + "recipient": "age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1ZWpxQXdZdWFQUVVaK0pj\nVHViZjRyc2t4ZEtrbmlNN0p1eWJPTmhhRlJrCnIxVkp5OHhxVUhrS3BydEZFa2lW\nZktMdCtwYTRsdEI4WUZkaUZDMXNSU28KLS0tIE1VbFpUOW8zaXY5L0MwNStISEtu\na3A0TFVsa1VvOGNWcGUyM1pBVWhNSDgK7/Ffk5GuymAa4F7Uy8e4Yq+Puz2urXCR\nqdYB3zpHsQp/nfm1uvqvlJ34aBrrNaW4zlG7GIAoobpn9GatOCWGzQ==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2024-05-07T09:57:32Z", + "mac": "ENC[AES256_GCM,data:2uBcvEthmglYkQQ3uly9UPh3LZ+2FnEH0t2ZhRAU4EMv/BuuFGL2hFdvjRUjckWttaS3QQEnjtAO4WT/17l2avH+QBAudXkvhllZv6XgZOsSYtVIJGVbzcXlAuJdQhKu0RUpoMzcStPIApaZKZmh6Kc9bgGN2q0rka/o3R2QuX0=,iv:kicEPXt8OfQJlRO9G8waDl9cnP91kRd8ARe1FMyMJso=,tag:PLLGqFgv3hXoOBepi26I2A==,type:str]", + "pgp": null, + "unencrypted_suffix": "_unencrypted", + "version": "3.8.1" + } +} \ No newline at end of file diff --git a/infra/aws-lightsail/terraform.tfvars b/infra/aws-lightsail/terraform.tfvars deleted file mode 100644 index efbbcfc..0000000 --- a/infra/aws-lightsail/terraform.tfvars +++ /dev/null @@ -1 +0,0 @@ -ip_revision = 1 diff --git a/infra/aws-lightsail/terraform.tfvars.json b/infra/aws-lightsail/terraform.tfvars.json new file mode 100644 index 0000000..e05a166 --- /dev/null +++ b/infra/aws-lightsail/terraform.tfvars.json @@ -0,0 +1,22 @@ +{ + "ip_revision": "ENC[AES256_GCM,data:0A==,iv:6QBpGtIcx58D5sZpKx0AisCET1Tp3re/sLgTsA6ciwY=,tag:xv/9buZ6BTPKs8AHqAIS0w==,type:float]", + "aws_access_key": "ENC[AES256_GCM,data:EYEzLrlXQGCOxr33sTbQIzQTlMk=,iv:SaaKSQQ+GnkDKChKlK57DLWymnLRaq/kIg6rq2PsBFY=,tag:31mcliZ5ALy2Mt85r7BdKQ==,type:str]", + "aws_secret_key": "ENC[AES256_GCM,data:lwjwzJhJb29whLQbZKxshIAnA2zsizORvlx2Bl79qO/GssAx5rr/ew==,iv:DmP2zQjRSKq/eFh54nmTwOO+1uQYR39Vm7esuX3oa58=,tag:AApHq+s4+QkZlea0HXtnHA==,type:str]", + "sops": { + "kms": null, + "gcp_kms": null, + "azure_kv": null, + "hc_vault": null, + "age": [ + { + "recipient": "age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvcXFtWTQ2NFhuOG9UTnpV\nSnp5aWxTR3hCZ3lqbUFUM0pWMy9SbmZVTnlnCmlSNHZKdVVLNWJnbWZrSmQxUElR\nbmNSUGk3cjFta3JHNGtOSkQrU09LL0UKLS0tIGd4K0YxVkVGUkQvdktyS3pTUktm\ndHNnU2FCbVRPY3l0L21LWUtRYnk5VDQKqQ3b3RWwrcQs/S/7OYVz9cCAziCZfbet\nAVT0mzqfv1mka8hY5d9ox/4HU7UKo7+YTGrnFbchsx2m84RvSK3GKQ==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2024-05-07T09:57:32Z", + "mac": "ENC[AES256_GCM,data:ymS1nZe8g9ywgPzevFTe+NZCJtX7dyK/abQMqbGx2Ocz3nrwMKYZiMhA6dF7UDyppP5WWt7i3EBX53sc+ZpScGkExoW3V819+AQPFOpcelSVS1R8qiDCByCzJfQAZKxwzoKkpAvks9HX9kUaaPxJkg6I55/gIp9fJxNon3iDAYY=,iv:yuP3FyRDJHsuTsQEyycspD8QOgFGjZyTKsWG8snyPrc=,tag:NssrLGQA5cv1Vwox4p4fbg==,type:str]", + "pgp": null, + "unencrypted_suffix": "_unencrypted", + "version": "3.8.1" + } +} \ No newline at end of file diff --git a/infra/cloudflare/.gitignore b/infra/cloudflare/.gitignore index fe807e0..f905821 100644 --- a/infra/cloudflare/.gitignore +++ b/infra/cloudflare/.gitignore @@ -1,3 +1,2 @@ /.terraform -*.tfstate -*.tfstate.* +*.tfstate.backup diff --git a/infra/cloudflare/.sops.yaml b/infra/cloudflare/.sops.yaml new file mode 100644 index 0000000..7e47bb4 --- /dev/null +++ b/infra/cloudflare/.sops.yaml @@ -0,0 +1,6 @@ +keys: + - &iosmanthus age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs +creation_rules: + - key_groups: + - age: + - *iosmanthus diff --git a/infra/cloudflare/.terraform.lock.hcl b/infra/cloudflare/.terraform.lock.hcl index facbb8a..dfbb1e4 100644 --- a/infra/cloudflare/.terraform.lock.hcl +++ b/infra/cloudflare/.terraform.lock.hcl @@ -2,24 +2,24 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/cloudflare/cloudflare" { - version = "4.26.0" + version = "4.31.0" constraints = "~> 4.19" hashes = [ - "h1:w1+uhedEH1oeT9oZffxff+FFDZIKgT6p9A+z/1ISO2k=", - "zh:086c755d1dd7399b354f391242c9be636d95fc5b91e5a85cbf1e476607dae4dc", - "zh:2315c1d4a7496225d4b6421498cdfea2e459f66fd98eb0e125dfe44740fbc644", - "zh:258d2a34f10cff913fd73d56b3ceae863c144b45ba9f8b4c2ddaae74282d146d", - "zh:27fd7a3edf509079041f09fd413e157f72fbda1827e82324da384c820f366e7e", - "zh:65d9fd2af262463fdefbb803d310518b3e8f78a8ba20d2b0a2c63b55770f294f", - "zh:6987c738de0b1fec31545c67de1cda88c4c01f2b5244d7b2e26462a8a1339439", + "h1:SFQakMxB5UoJR4OF8D9UpIKQEDYO8Ud0t7cOTjAYBYY=", + "zh:02a3642b1adcd7a764b0f82e9f2b39bf0faee9b5f34e344a4f88edb71cf9968e", + "zh:3e7e045312ac03bdd8bc2d6f377672c9a938cdddd343b71cb219450154b26ac7", + "zh:4375358b7d696861732874ce8f4e4be084052509ec48792c1b3621221b294c58", + "zh:45fbb45bd91098bbbb79ac6610960f559f8b3011e0134a22d7f816cfe5a0b7fa", + "zh:6ee7424ebfb9f9a98e41059236a2cf7f71faa8035c0599dc2cb689c3c1405d27", "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", - "zh:90806d49509f1a02f5503eb98ba0156c9ebec16587e20a0aa4143cb935ad5928", - "zh:ac3c2e6d5f40b56d7dfcdd6ae49803644cc6e3cc69d7c369c78c7d9f385decc2", - "zh:acf1177ad5b399accddfb8847134c3b8c1b226bfbc4e3acfe7698e7de61d7cfa", - "zh:b2991776b8846d5b819c8673879a459a17f68efb199110c43a446d6c0d6ce17c", - "zh:cd8c44f495f4ab370e59b0c86ff4c0cc4f8853eb4697019ec5aa2164a1c66856", - "zh:f100d1c9475c071a8766a6b2dfef8318e8eda878726343e7d2f59aec17373f42", - "zh:f678dc7995387439df5c56c86a295bda29b1f8fffdee749a3d51f231a94e252b", - "zh:ffce3d977269cb0a600f6b4203537f3587009e44e3ca11c4f6a82bb5fb359d0c", + "zh:b36a66010f6c32db9d037a23de53c5d575c8ccf68f168daa62890f0b6b642b0e", + "zh:bca7d355b5ec3172645fd63b76b3df1866e534a6dc6869208e92f254f64d69c3", + "zh:cb5e110d642ce534d280d71b4a3ed0d57fe9f2cbe9694d4a18a753a7024aae44", + "zh:d3bb6ebccc9c33c580d0600bdb690f53afece6444ecc23989c6d3fb5c79341e3", + "zh:de8a1350433d58c1aeb08aeb9305b48585a7e18e3181b9b79d27dede4fbc324c", + "zh:def7112d9425dd1022ce74cb58721be889668bf3704e2202fd22bac687b46f2b", + "zh:f817486858e4ca3fcf78f158e3719f71cc0947d213a013a3bbd5317a363e9734", + "zh:fa0b69a118cba9103417ede05b2bffc7eb61e0b3b864fa95c41d7d5e66e1df0e", + "zh:fdcf9db35f2613bb5cbb36cbd6308f484e70ef7c55d069f6df9f73040e70c80f", ] } diff --git a/infra/cloudflare/apply.sh b/infra/cloudflare/apply.sh new file mode 100755 index 0000000..39d37cf --- /dev/null +++ b/infra/cloudflare/apply.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +function cleanup { + rm -rf ./states + sops -e -i terraform.tfvars.json + sops -e -i terraform.tfstate +} + +trap cleanup EXIT + +mkdir -p ./states/aws-lightsail +mkdir -p ./states/gcp + +sops -d ../aws-lightsail/terraform.tfstate > ./states/aws-lightsail/terraform.tfstate +sops -d ../gcp/terraform.tfstate > ./states/gcp/terraform.tfstate +sops -d -i terraform.tfvars.json +sops -d -i terraform.tfstate + +terraform apply -auto-approve $@ diff --git a/infra/cloudflare/main.tf b/infra/cloudflare/main.tf index 0d06118..d3a3591 100644 --- a/infra/cloudflare/main.tf +++ b/infra/cloudflare/main.tf @@ -1,35 +1,67 @@ locals { - records = { for site in var.websites : "${site.name}" => "${site.zone}" } - zones = toset([for site in var.websites : site.zone]) + aws_lightsail_records = { for site in var.aws_lightsail_records : "${site.name}/${site.atype}" => { + name = site.name + origin = site.origin + zone = site.zone + atype = site.atype + proxied = site.proxied + } } + aws_lightsail_zones = toset([for site in var.aws_lightsail_records : site.zone if site.proxied]) + + gcp_records = { for site in var.gcp_records : "${site.name}/${site.atype}" => { + name = site.name + origin = site.origin + zone = site.zone + atype = site.atype + proxied = site.proxied + } } + gcp_zones = toset([for site in var.gcp_records : site.zone if site.proxied]) } data "terraform_remote_state" "aws_lightsail" { backend = "local" config = { - path = "../aws-lightsail/terraform.tfstate" + path = "./states/aws-lightsail/terraform.tfstate" + } +} + +data "terraform_remote_state" "gcp" { + backend = "local" + config = { + path = "./states/gcp/terraform.tfstate" } } resource "cloudflare_record" "aws_lightsail" { - for_each = local.records - value = data.terraform_remote_state.aws_lightsail.outputs.aws_lightsail_0_external_address_v4 - zone_id = each.value - name = each.key - type = "A" - proxied = true + for_each = local.aws_lightsail_records + value = data.terraform_remote_state.aws_lightsail.outputs[each.value.origin] + name = each.value.name + proxied = each.value.proxied + type = each.value.atype + zone_id = each.value.zone } -resource "cloudflare_record" "aws_lightsail_v6" { - for_each = local.records - value = data.terraform_remote_state.aws_lightsail.outputs.aws_lightsail_0_external_address_v6 +resource "cloudflare_record" "gcp" { + for_each = local.gcp_records + value = data.terraform_remote_state.gcp.outputs[each.value.origin] + name = each.value.name + proxied = each.value.proxied + type = each.value.atype + zone_id = each.value.zone +} + +resource "cloudflare_zone_settings_override" "aws_lightsail_enable_https" { + for_each = local.aws_lightsail_zones zone_id = each.value - name = each.key - type = "AAAA" - proxied = true + settings { + tls_1_3 = "on" + automatic_https_rewrites = "on" + ssl = "strict" + } } -resource "cloudflare_zone_settings_override" "enable_https" { - for_each = local.zones +resource "cloudflare_zone_settings_override" "gcp_enable_https" { + for_each = local.gcp_zones zone_id = each.value settings { tls_1_3 = "on" diff --git a/infra/cloudflare/terraform.tfstate b/infra/cloudflare/terraform.tfstate new file mode 100644 index 0000000..761e859 --- /dev/null +++ b/infra/cloudflare/terraform.tfstate @@ -0,0 +1,20 @@ +{ + "data": "ENC[AES256_GCM,data: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,iv:nbMSdQej2/ylEtBT0z91Vk5iwQB7iHBmOHjRdIuh/uQ=,tag:xvSf0RiH0ycyzA2qdTHOYw==,type:str]", + "sops": { + "kms": null, + "gcp_kms": null, + "azure_kv": null, + "hc_vault": null, + "age": [ + { + "recipient": "age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMaGhKUXpQQW5iWlJ1ekY4\nQURJZnpPd0NaZHJEVTdpbzMwTFFCQWhxclY0CmpZZkYxbW1xS3ROejJZeWpDLyt4\ncGlVU1F4U0FLN1FmWlJBNU52YW9GSmMKLS0tIFBLdFVydkdtRWtGK1ZqZGpDejJB\nMEFBY1prZGo0UUNCY0xjbUFrTnJ2NGsKEF7302af2BfzVj4V7kUqeOxWaA0Wdbll\ntsyfmU9wK7pYxgviVvfXmh+acP+q7BkyOPZEodwEswEmzF7gUtC2lw==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2024-05-07T11:45:09Z", + "mac": "ENC[AES256_GCM,data:GnFSax9L6yRPMDTJAMNJzm/w5sjuYKf7863rozGoVZezotosRKEnEssUszB9drmoW1dVe94GYN/LqKEn9QbUDMegKmELHwJpNOa3f85oMg95afDydrUgs7b+E+O1hnlPJdQWTdxlFKv4c2Iku66FSAZdLgCRhzPZyPnPh3aUYX4=,iv:sG6b2crRvLdmSmHYzJ5kVOYI+lLkCXSgyRT2WC3qpK0=,tag:nfG5IlCWJmpETMDJBo2+0Q==,type:str]", + "pgp": null, + "unencrypted_suffix": "_unencrypted", + "version": "3.8.1" + } +} \ No newline at end of file diff --git a/infra/cloudflare/terraform.tfvars b/infra/cloudflare/terraform.tfvars deleted file mode 100644 index 952a36c..0000000 --- a/infra/cloudflare/terraform.tfvars +++ /dev/null @@ -1,26 +0,0 @@ -websites = [ - { - name = "@" - zone = "5a81d0b6efb075e74901f11be3b3ca35" - }, - { - name = "subgen" - zone = "72d18453e5277555259d8fee6c65b016" - }, - { - name = "vault" - zone = "72d18453e5277555259d8fee6c65b016" - }, - { - name = "atuin" - zone = "72d18453e5277555259d8fee6c65b016" - }, - { - name = "openai" - zone = "72d18453e5277555259d8fee6c65b016" - }, - { - name = "chatgpt" - zone = "72d18453e5277555259d8fee6c65b016" - }, -] diff --git a/infra/cloudflare/terraform.tfvars.json b/infra/cloudflare/terraform.tfvars.json new file mode 100644 index 0000000..db8060f --- /dev/null +++ b/infra/cloudflare/terraform.tfvars.json @@ -0,0 +1,115 @@ +{ + "cloudflare_api_token": "ENC[AES256_GCM,data:+9/cp17LNmw5gtqIut9+b8CuCyqAHmwPkvLRUaHWJZLq+Sy0fZqDDw==,iv:OGupqoxxbCM+Gb1POPpyqHPIbpNn+QYuitWYW3OB+HE=,tag:Dauf0HQyX/R/9lbdlcrMBw==,type:str]", + "aws_lightsail_records": [ + { + "atype": "ENC[AES256_GCM,data:8Q==,iv:Z5emj4dBXwk5qNnncA5OFRaIwh3a9csZGW24n/kh/kM=,tag:N8+RFz8i/rHf5LCzRfkLKQ==,type:str]", + "name": "ENC[AES256_GCM,data:3f75l/E5,iv:IYerrUlnunoIC1olEaSXt2W46ow0UX2OromLccq+OQk=,tag:p6yj13/coPmSkbkIvqbO+Q==,type:str]", + "origin": "ENC[AES256_GCM,data:yGid9Nx1HCpjxMTMzrvh3x/FR7zrFlVFQVsVJ5vCb4IF4dw=,iv:ZT8vFc3BGzrbJzKticgut8ZG5tsCHD4LeA2GGNTywUw=,tag:qeHRldyZW0MfxvUekA/EAA==,type:str]", + "proxied": "ENC[AES256_GCM,data:v8nazg==,iv:bdxyaiZr2Wj767UaggxF420SGS9NyxoDdhhoAyMZV48=,tag:3yIA2BXXesf2hQba2VpfZg==,type:bool]", + "zone": "ENC[AES256_GCM,data:8fPhyoCD5JfM0HIgVYuv6SnYtkiVEUp78jhWYL13e/Y=,iv:8mIwTiQU2qUhX/aBUM6GYes1+xIGCBWzFUeEcznjGwM=,tag:t/1VWTBqSgJz23fmlczgXw==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:XHelZA==,iv:nJloAp4i4gcIP9JCdhu59/PRjwZnKOKsLWve809iAKk=,tag:N6nv+HcLEUcCfJbrITheFA==,type:str]", + "name": "ENC[AES256_GCM,data:Jm3pLEwG,iv:Fvq8Q/m20h8HcD7Yga8AkaWwoKeNwH8GmwvYR3+Wj2o=,tag:/jmfh2gkUKUfu8bU4NoHOQ==,type:str]", + "origin": "ENC[AES256_GCM,data:ZqzUPTHBh9ZJKas8Iwpnya7NDFd+w92EruoTLg8sCA1Iy1Y=,iv:WlQivEjPVhbBnlxbcUO2xaBaPrKEOaKU9RUO8HO1BeM=,tag:rELusMluVeyVvjMxCyN3yQ==,type:str]", + "proxied": "ENC[AES256_GCM,data:j5HxiQ==,iv:qB6KGP2vrwswTioiRL7VeH4xcICJLi4Qh4m37K2y3Mk=,tag:Lj8d2ALByT2b8b/MV2SkvQ==,type:bool]", + "zone": "ENC[AES256_GCM,data:pZQafMHZdQXAto51KsEuXs+FyrAPE72oV9OtVSQAET0=,iv:jsDnZMDEqguwT5GvZzmtCoQbsn4ymAWha+2xJ9EAEr4=,tag:vjol9Qj+yQ8aEXksOVuLRg==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:iQ==,iv:wXcVF0IhAXVb5YKFNGU0nUV/Fx6KV7zJ30Wa2uvDuZo=,tag:GOOlmvfM1l6bp5TCCr7yOQ==,type:str]", + "name": "ENC[AES256_GCM,data:Afw3j8s=,iv:QG8ppLlnfkRH1RaGKWuxXN4u/mYsNFrS9wKmQrUseoc=,tag:tKDGnykNiDyCBqiIQPnlGQ==,type:str]", + "origin": "ENC[AES256_GCM,data:OvWdOG36B1umBUuyHqWhAduKD0ofJ5pUkzpHQ4qOj9lq8ks=,iv:tVVU/JbKJiN2o6lJWkYxSS0UIb/V7TuocCpCTQAHrIc=,tag:TbzAtNQQTqtv5rBRY+a4IQ==,type:str]", + "proxied": "ENC[AES256_GCM,data:qCqo4Q==,iv:/3ovrYkySnXIn1biuh5JmPPy3gHgKlhTJ417JftW8XM=,tag:n1nh7EFxaAMASr8Fc1JneA==,type:bool]", + "zone": "ENC[AES256_GCM,data:dnIBXnaijP6FjxgYbCLJrmL62EyFoJsDty/jNZpeHCM=,iv:wSyXQ5NHJHpc/In5W9uXpxL2QfUTWaeg8hrLFPLKnaA=,tag:3A8FgfSSYxBSGJY7/+obZg==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:Cpm7hA==,iv:FsWIbkFNmCh579T5Dutd5q8sGhTCUz05A2MdAe3ZiLM=,tag:Ar8Lac0dnHiFniLuVeeWaQ==,type:str]", + "name": "ENC[AES256_GCM,data:A1jm01o=,iv:2iXbju1XW4YaOT/A9/m52Oi+fN9Jl/ElvZxG/YxFTmA=,tag:IyiVHtIXZ/dX511JF71QgQ==,type:str]", + "origin": "ENC[AES256_GCM,data:TwDSrnRgNAoY0087a+dre9UJEjGqJGe2vGgY3d4w3DvCi0E=,iv:1HDtMBi03C/uAGTQygztK/xSd43KswyhFCtCLuNMg0o=,tag:baeKprTby3jDTALh9WFqqw==,type:str]", + "proxied": "ENC[AES256_GCM,data:5PkrOA==,iv:0KsLBm+f0/3C+6LQD3PkBa96RPsSSKoHxZ1iuy+70YE=,tag:mv/4jxn1dfe3hudd+oxHkg==,type:bool]", + "zone": "ENC[AES256_GCM,data:tLKFGIFKOSAtk8F9Yg5nkFn5KMICC9hddRRy10RPnXY=,iv:rmjAEVljZsb2h3DjEgayWij7/D5QXG4aYY3iTuR0h/0=,tag:xyZtaorVqJtPAh98NA1fLA==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:lw==,iv:iR462ukNq2cZXl+oaoGONMSCcR4VT+6/R/1AIBYqv48=,tag:H3dGL3dbT7NOjiKaFjj9aw==,type:str]", + "name": "ENC[AES256_GCM,data:JxvgKLI=,iv:lgnCozMbRb2h1MTToCWOlmG4jeNBrHNHlt5I4/5oS58=,tag:RDyOVnDU27/sFkXmXotYYg==,type:str]", + "origin": "ENC[AES256_GCM,data:U/UZy0I/Ii67jAl+6t2+AVPLb7DUojYbTJU+njAErMCd/gg=,iv:p8Gh7XrEuTuY+F5ZFj9T3A2X6LF5pObRkrpbREnEYHA=,tag:CCBWlPMHfcWGQnLqT5aTGQ==,type:str]", + "proxied": "ENC[AES256_GCM,data:s61OnQ==,iv:iRe4aTuKHDVnXM64oCUzlCXLqlQ0Ljf3nzdAk9lsB8M=,tag:/o5CfMxCYKYXniqKOT9pOg==,type:bool]", + "zone": "ENC[AES256_GCM,data:NOhBKUlYc07mgae+Z3J7xAl0ygjWRTNRmAzKW5hqxos=,iv:1zypXhCOEjDokSA4Ht0G3hpOKP6aU0TZJiTD3w2ZKLc=,tag:w5dPJFEfzmnzDUkCcC2GQA==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:K1NuvQ==,iv:Bl80rvRU/H9ge0JU49rPvr28/2zBIkdn3i6o2TXShJc=,tag:S+X5TCmnrfDpChbQcV5ivQ==,type:str]", + "name": "ENC[AES256_GCM,data:xJO9f+k=,iv:uDxfrBN6MNF+n6+88onyLtBv6OB4cwhlcw/oNbPOE4o=,tag:0qpyvEckxq5pL0x+V4aBSA==,type:str]", + "origin": "ENC[AES256_GCM,data:Fs5AWVFFx1fBV/hN6UjMEnrQKv96H9DIi0zu3AyAKQlFjpA=,iv:IE4X1Y087DxTm+s5ESwNxmDuj+keDqLil86883dtDG0=,tag:+QvfVuGlKv1Be5Ig5YcA6A==,type:str]", + "proxied": "ENC[AES256_GCM,data:2Y9/Xw==,iv:vHvDbnj8GlCihlKyMZffivdnw1lKHiW6EIcvN1E8Lbg=,tag:iihW1lzu4vHZ4xBNRoiTeg==,type:bool]", + "zone": "ENC[AES256_GCM,data:JsdeBU6ckftPcdlMNFjJdehIIuzGLLG2+WN4jOgfaXU=,iv:aEt6kKtmnRxnbIRJu48X4xAiPC5PK6+b97nnrAGCbFU=,tag:9bpwcm1pf4JJVRk1cWKr/g==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:XQ==,iv:TWkUbXVTTxSUJY9pcXoWzYAzrh78gsvskQWa9AUSsyE=,tag:ULEh9M4f9Y1jart1OIsRsg==,type:str]", + "name": "ENC[AES256_GCM,data:7kY8/EVL4A==,iv:LvhOE9jCPiQMQ7OsgwhtBvDkiB8EXMMdxMOzFbm2jNE=,tag:gVuVY5EHhBrxO4JO44W12g==,type:str]", + "origin": "ENC[AES256_GCM,data:Rg/4NXKxEmarSuSA4Mx3E3C/GlrHJdC02ZWEkktUnjuWPSc=,iv:4xb9KtQjrIahmy47g689BuEl0PS+xFOQcflLj7ilLAI=,tag:DpVK+fbzspu044lu/o2sZg==,type:str]", + "proxied": "ENC[AES256_GCM,data:3VxJjw==,iv:3dWU2F24fcub8urFJtkODGXgBGieWAmN23l59uESzfc=,tag:7LwKQLPRUl21hbSRRzc7Gg==,type:bool]", + "zone": "ENC[AES256_GCM,data:SgELqunr74PE1ahYPjKeTPoDDpAg855sg5NJyNQbPao=,iv:1SLwJmGbNCtv63KjKWUC4Bk0pBhbCA0s2DjjWY9WJEE=,tag:XkLqX1vR71CEfS9TnLAepw==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:mG8Crw==,iv:ym9Sn4EEXzUmfXSVI9vGl1gGkPXtBWSaRlp16RvAbiU=,tag:do3RKQHAKngfjkbc8KxT3Q==,type:str]", + "name": "ENC[AES256_GCM,data:eFfTPJFTqw==,iv:l2STpleDUtUwLoGEVFsmDHgkDtfdrmh8nAGUZCUxTiU=,tag:p2+hgI6bVDzIU1yw5aVh0w==,type:str]", + "origin": "ENC[AES256_GCM,data:8Vl2qqm9pCp8+dJF/XRHCyr8tehgFnvIMNnQceODH6x1tTE=,iv:2MxaU/EVz1qXSy4f9Tcww5/LPr7ckoSxx734Hjd1nXY=,tag:4yqsUWDGQ1kjO+g1q4fh6Q==,type:str]", + "proxied": "ENC[AES256_GCM,data:T/m5Ug==,iv:yT8xZT/LThEZEi6XmCF3ZuDaSM86z+nYSa/Q5OCRL/k=,tag:X14QPqjOS+K9qXzPsvmbFg==,type:bool]", + "zone": "ENC[AES256_GCM,data:sg06lPV1vrsKlCG6kcakleRgjDDe1UH5UlEIaLsidYw=,iv:lqDq9iaKMYyUbU3bEEyqaPNGnxcUWNinBpMkAjL1Ldw=,tag:pQkvUs9xwbhF8dVWm1pIGQ==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:ew==,iv:1mNZmhJr7YaenEN0dthOt1pPwYDHhkTqLMWfjEBWSvA=,tag:z9nXSh/fq+U4u3kLQ7f/2Q==,type:str]", + "name": "ENC[AES256_GCM,data:HuQT,iv:B5OOGJPS9e33mRDfhvcSEh8Y9+pyH0mSbAhd6q06cuM=,tag:q+ABVmRGPGGjnvwD9uuBgQ==,type:str]", + "origin": "ENC[AES256_GCM,data:aET9blULFEp4ILzJtjid5qEAsNEVmMH0xm16WxKGcYQo6gE=,iv:at/her8mFn0ge0sGk/w7VrHYg1ExY8r86GOyhNV/vWU=,tag:z0BYIQ9O0z+xwtXhpS5slA==,type:str]", + "proxied": "ENC[AES256_GCM,data:OTqiiA==,iv:6YKjPn8DXz+wuDq0gmMQZqtVVvxe8qsfQd4enk2rfrU=,tag:hLyTInktMWxzVeN3NPCwxA==,type:bool]", + "zone": "ENC[AES256_GCM,data:ddmt8wtXYs3BWWNQILD6Nko8DRGlbggpeMvnYM629iw=,iv:Hhs3FqTJw1vGt565gfk0I45nVJuE8gsuSCj35FZkHMQ=,tag:XhWr7gy6veQdGdR5e0YOWA==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:5Ban4Q==,iv:5Yg9YQg/UcXAjodc8h1xSpNdr8NjGbg+Y/xmHPY32TU=,tag:WqzxhV2N83VLdDiMYs5yng==,type:str]", + "name": "ENC[AES256_GCM,data:VtPd,iv:owFfHfua742wqtz53GG6IqqyQEP6caOS6jqxnqNeUu4=,tag:9EKtRHi1+VvvfJC/jbh0kQ==,type:str]", + "origin": "ENC[AES256_GCM,data:8CRQt1XE7dhAHJQkmPStm1Ud/Mvwm3mK71FGAbt9G9Bzr3I=,iv:+Ytmx302I9mMtNb2rO5DNGXvqB/hikBcVzo2mzLXoDY=,tag:2UnNU6oTNiwGHzu5g41ALA==,type:str]", + "proxied": "ENC[AES256_GCM,data:kOAqpg==,iv:MpwcrUB+7Hg1QObw7sWhbWyEEUKlnZcjrWMQtXsokNg=,tag:mLKpB4yd9r3CKQmFR4rv8w==,type:bool]", + "zone": "ENC[AES256_GCM,data:k4XOXb8Enz5IOoCx24ttQm9ueLtljFenD2NdxRAgM68=,iv:iEVfBe4wIE7ajjc4CrUx4fdKXa8k7x6Wxtler223dXo=,tag:pVPSCg+Q/pc9WGC69wNgmA==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:Aw==,iv:z804LDV+th96Z+DeonhdlPkGUS8BbUXtrIDFSzfP4Jc=,tag:enhravJmHWSnuT7+hz2c5Q==,type:str]", + "name": "ENC[AES256_GCM,data:3Qw2vwir0Us2D2Cq/yVZYHvD,iv:Uz1y+Nk9mEW3DELt21AbV2qF1IFPKleeBwtDOewj+co=,tag:snZ/ilfPhnKBuDF9R91Qyg==,type:str]", + "origin": "ENC[AES256_GCM,data:4RZs7BBba4zZVUFML6aBEf/Y94zkW92Gd47aTL70GdkE0sY=,iv:1OzKCKcFLXRhQwtuHbvKDoflGo+fE6Yngb6PDiCgq4E=,tag:NyqUNnrgC8BMwE62CjLMQg==,type:str]", + "proxied": "ENC[AES256_GCM,data:rmEKG+c=,iv:+ExQ+ttskq5s4SFQNAjYt21Js1VPGgZTBnoFbahfiPQ=,tag:1oWoUNnHHqd3OEnUUtEwzA==,type:bool]", + "zone": "ENC[AES256_GCM,data:ii0SPZmYsRXYqx+eESjm2hTiAl+D2Uo7zLIfRGBQ7ak=,iv:l+3h64lhVSz2x6Nd4ucPcNE5TmQTvihujGQ1BLekRiY=,tag:J7nq8ELOrOY2zM0psDOzzA==,type:str]" + } + ], + "gcp_records": [ + { + "atype": "ENC[AES256_GCM,data:xQ==,iv:2h9fhSds/0uVIQ7uSDj7MQX8Q9+HU7EXVwATaDSgywg=,tag:WnQAyH37OZ8gsdvX1O3F5Q==,type:str]", + "name": "ENC[AES256_GCM,data:nu8nes5Rj3rgIkLNlaJ2,iv:BJCsBcF6J0DiOZnrG4jXH6rPUdrEU91t5K6KrbWnodw=,tag:tFP4KsV6jpfylMUgLi2MWw==,type:str]", + "origin": "ENC[AES256_GCM,data:dQVPjAOBhdUWVYvBLlIKkKelGbe39wOxbGYPfPfGamyQug==,iv:Vc0P+qsdQYuaejymw1pCunDNNw2m4Ax4wPisKYzISDo=,tag:6CgL3aD0KRbu8DgZCrwjWQ==,type:str]", + "proxied": "ENC[AES256_GCM,data:WbYY9k8=,iv:Pii1WAPiqa/Gc1gOQdJb+RJAkGe5m8rkxQErOAbIBsc=,tag:fzy+cBgD4o2KrfYObcNqMw==,type:bool]", + "zone": "ENC[AES256_GCM,data:PUMJm+bTIB1HAcTV9uTmnWqFMrPfZFWn5RY0FEZOcxU=,iv:lupG5k6lP5+Wo0742tvkPo2tmL5yOl7mn9r0WAEIH18=,tag:g8ccAQtAfEKOz4921dR/BQ==,type:str]" + }, + { + "atype": "ENC[AES256_GCM,data:jg==,iv:WOhQNet/OLFwcCODoX7dHLnA4qndEoLFMN67XsaC1Bw=,tag:AgSWO4dSpSSnNXSiXQTwJQ==,type:str]", + "name": "ENC[AES256_GCM,data:pggvRcfFGB+8apThxA==,iv:lujbD3deT8YycWIlVzAiIOfiWJvLU+JZHx3KVMpFP3g=,tag:dqHizNaETYwROVae10TEhA==,type:str]", + "origin": "ENC[AES256_GCM,data:CH1Du0RhDlRN/4KZqFlTOBrfuziKjpgz3jBMaUqZYwlBZw==,iv:5RZ7xnXpJ82KRww3LilqKv33E4dgy+QNjlteSEdzyfk=,tag:22T/Oqhb9MCnkqN7uvacKA==,type:str]", + "proxied": "ENC[AES256_GCM,data:xzwudFY=,iv:uozV4n2YDXWIK7gMTWBDnarXpT5PsPwQ2KQyTHb+6Vo=,tag:BzQK8JS8hBIbogjpEqkz3w==,type:bool]", + "zone": "ENC[AES256_GCM,data:GgzWwtqfjoBv+ysRM9OrPrAk8RmVGOJOioduaoAt/RQ=,iv:R5zTcJONwHX42O0qo2VopwvaduiZBcB7ATDsp2R64yM=,tag:uMu5/zsOJ1ucoEQAsnfvFw==,type:str]" + } + ], + "sops": { + "kms": null, + "gcp_kms": null, + "azure_kv": null, + "hc_vault": null, + "age": [ + { + "recipient": "age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvN0JsdUtYNC9oZWRVK2Fa\ndCtZd3hGOC85ajlDaWNtQlpPT2VVYmZ0TGowCndhQVRiVDh4S3pnUFNxMjRXeWlu\nK1NUM0l4N3V0UEg2eURlVThUaGFBVmcKLS0tIDFpMlhETnQ4aGMvY1h1a0pFRXdk\nNkdhd2h4Q3JuYXZOTzJza2M1dFhMaXMK4J7K3Q799EJxcO/7VVsobsIqncYwE15y\nUUU/BewOz1sX7Hx2KN7drrTF6EVh/CHtbn8Y9/k0009Y4tfWF4JSDQ==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2024-05-07T11:45:09Z", + "mac": "ENC[AES256_GCM,data:nUPyog4khUVjvLGzouH31+wqswYbOVKZNDCFW0mx+mYAbJiJmk9y6JxAv/u0PDrfwn6555/2nVbHrC1EVgKEbuDOs07+tBw14A3WZxyVV61TGsWY2LLee4bJPzFF23woQEKta6UkNC4CuxqXS9NTHp4OjQV456Sr3AqZr75remA=,iv:BYGYnbtEFxU6ddSaOm7Fbt8nGJcqseCGcIQfwFKao7k=,tag:V51buq2IGMX92VgZ5/vMiw==,type:str]", + "pgp": null, + "unencrypted_suffix": "_unencrypted", + "version": "3.8.1" + } +} \ No newline at end of file diff --git a/infra/cloudflare/variables.tf b/infra/cloudflare/variables.tf index 9500cb9..76c137b 100644 --- a/infra/cloudflare/variables.tf +++ b/infra/cloudflare/variables.tf @@ -3,9 +3,22 @@ variable "cloudflare_api_token" { sensitive = true } -variable "websites" { +variable "aws_lightsail_records" { type = list(object({ - name = string - zone = string + atype = string + name = string + origin = string + proxied = bool + zone = string + })) +} + +variable "gcp_records" { + type = list(object({ + atype = string + name = string + origin = string + proxied = bool + zone = string })) } diff --git a/infra/gcp/.gitignore b/infra/gcp/.gitignore index fe807e0..f905821 100644 --- a/infra/gcp/.gitignore +++ b/infra/gcp/.gitignore @@ -1,3 +1,2 @@ /.terraform -*.tfstate -*.tfstate.* +*.tfstate.backup diff --git a/infra/gcp/.sops.yaml b/infra/gcp/.sops.yaml new file mode 100644 index 0000000..7e47bb4 --- /dev/null +++ b/infra/gcp/.sops.yaml @@ -0,0 +1,6 @@ +keys: + - &iosmanthus age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs +creation_rules: + - key_groups: + - age: + - *iosmanthus diff --git a/infra/gcp/apply.sh b/infra/gcp/apply.sh new file mode 100755 index 0000000..698a35b --- /dev/null +++ b/infra/gcp/apply.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +function recover { + sops -e -i terraform.tfvars.json + sops -e -i terraform.tfstate +} + +sops -d -i terraform.tfvars.json +sops -d -i terraform.tfstate +trap recover EXIT +terraform apply -auto-approve $@ \ No newline at end of file diff --git a/infra/gcp/main.tf b/infra/gcp/main.tf index 64f1cf6..38ee565 100644 --- a/infra/gcp/main.tf +++ b/infra/gcp/main.tf @@ -28,7 +28,7 @@ module "gcp_instance_0" { google_region = "asia-east1" google_zone = "asia-east1-b" - ip_revision = "20240401172200" + ip_revision = "202405061637" } module "gcp_instance_1" { diff --git a/infra/gcp/terraform.tfstate b/infra/gcp/terraform.tfstate new file mode 100644 index 0000000..deb5860 --- /dev/null +++ b/infra/gcp/terraform.tfstate @@ -0,0 +1,20 @@ +{ + "data": "ENC[AES256_GCM,data:qeNi8j2g1lSa4/psoU5S9WMSGB5LcGxYNEnaUc09Nob9u3DJolEkzSJLVFYNmb2AYnwj/C2SvrrMBILkBkrdVciEOotSwkNIQnlbGyPNwlIOSwAPO+HceAkyzHXK7F2dOlVsfGmpyxryOMTxoW7dJ/KaypXXxUmwAnwhagNXYFvnfgG9AF6IhkfaU3kki8mhdzT5O11YF9erTYmEbXJQb6k0IbOkK0soGFFrWnuoJ8dUqTX9YxRGh3SVff2bsK87pvVQ7mBUL3VVX7FKPP05NZYYPVWK84ugD0a02OtXEb3KPk+V80hUrSZJ2WeKIIAtUx5c1xZeVkcha0hJFVziwP1YqllAWdwxhpPw4f0CjM/kGFCxjRUrqvqzD3hYB2+x8T7w6BDfqPeVTO0tsGdyPtTwAoQWDT9+NxpaE6yBvnTPpWagJWu6pWOKehtjfM3mSTzDTn8mY9BKXZvBA3qc8Hzhb3XgSX2f+o54cGckDf4RXh//OzKT9I/6YR5PWMCfWMiKqRu4Chft7D93g3ibW4qzx5jRi0aWd0BEbzcqPcX3ho3YF/HEiMm55fY22Q6AuGO5ZTJO9N5v+WdMbEHsowp2/zXHVXqW1RMJZCjUG8NIIp9xuY0wpp3MOypr0LVII7KFS5b5vQLTB73b1ZrIsexhKpjcWKY6nGpd3GHirL0lfVpVvd3rGByLFA+XMEjW04x7Cc+FmAo/U2cS1cnkzxqgRTvZ0P2gLuwTuTllLVl2N2z4JfDaBy8v5eQgODhHvedOP82SBoQnLf/zWWdVMKQ93vZoP5eaRs0Fa40bIGlBa9o9uRqHEsYstPhjz7rjSbZgyLnyEePigfwovjWCcy9T58b2GvxffDosBRbrMdJoY2oxY1aH+MjA7jIsZ5M6bsxFNd1hSdaIujhM5MwYBZUkI1fZGQVfAX9HB/ZZtsqpKzuTfvjKxmeaIy0K9ZX3IPpM59UTcdSXPgdgi9GmhNXtuMXSkroX1he889qBIm83Vj/1E/yb1x2vaGAFHZl2GSn9nUdZXXehY1yKV7VHqsVZsSSuJ1BLtwoGZ2EZ8mFIjgTzlMPvPsoDDOUhsjYD5KfA1LZ5TS7H3S2JfuGtf3M3zV5LqIvMTcRKHqLCjKYrPRGT7UeqYMd8wcN6sWkO035BoblyWPdBaqoaDDwK1o2qdnDfzKIst2fHSloWJdLfXUoMAE+VS0/eJGQ2s043hScH5vgSIlGCI4GLb4sHUEsjmNqgPQZ3KGOY4DDc/xG4qnw4p7S3r1NhF8PJE2VKISjofT5/QIGptMDkxixHvx9yH8PZmkJjCzUiYf2QERmTO7GNHOYIBSvmTzFvZqSp1UXrsXkp+6SzbUfn0Dwlr+UW1rFwGJlqZmWbujCgwtgfDwuOGDaLSVSb+mFILzc/sxXOXl/xh3u2EC9oTXSlEzNIEhY8ykmNbh0SGjoa0LjeC+8ku7cXeOPWsKPfx5CPoUk6i3m6w29MhDyAfGLolVie0RTMNcNdnots6NG+NEGlivMioxaogm2M71jHQMUHUnnpfHVALTUIbuW9BSMOuz7gobsokv5FOWxbspcsVpIpACXuqyPdfwXi/SmMdHMWzq47FxAGWTiZv2UnAG/Gc1dsrUAtc9sQRKnMm2FKXqupWHHOKf61dXpjYCRY3d5/TPxZ8phcT3kVnkA2+Osk9LhymcBwxHiG86KNKvpIS15n8zAXTT9lxuYP9gm9N5s90h7qGU4uJ+3jVmD4dTDWX1pYrUrqjjvaJp3BISrPni6LralrX953XlNa84V+bq44mXJ/RtWTT/XoWw3v+ENTOWAMnJQD/SPFpV9n05Hl9F0a6J30VPvU9HquvCazE+cTaSTtto4phDZIbwfJ5F2cNWLFUboASlmMhoMFEj4rHDTkhts27f64FFkNU7s4amUyxJfm6eJY1tBCesbcLHStqx2oZFdSmjpS3NI4sQU7mDXgIfWb2Ygi+xxdnkNXBhlCLPe5fxn6bLJR5H0BQ3sqJV+n6nHS6IQeCdLm76XLMecf5rpN3u8gtB9KD5upYdBARvunDznf7/FSeo9A5KhiwwhQBJLhy+51uTY9ccloVczbrOEdB2sZE19D+qL8elLakGCXnouLLx7h3t7krt9R6gEI84MacuWhhZrpaYIT68Uyzk2Acs/9mkRw65sYbskXMQMXatN99pmg4dnfSDFQuOp11PxLTOxl943oo80JQhhQea0Jv2dRTlpj/a8Ji2yzAaiWlK+bZ3SCmJ6YdWhJxt0hKzdvjNKm0W4+5sk3eIPjrCPvlZtQr4BbaXZHkPTL8orRp7qF+aP03aznA3jCpAQzV33te1PWB8B8XNvai27A7ciCF5d0fBLqjts7aV2PciBdLFqZyg1f4Qa7ZQl3Cn5EQWph3XjQKq3RCUDZjg7dUFdPhavuuh/buosi2iYVXDSkdAHSUNKFrgtzq0jYOaxkF5qZo904Wnfcoo5kSyGHluE2W7IEVjmsT7KL02EkOnrAjoR4hZ6tQCB3JQyjck48+nsLYqKRg52KhMXfeSpcZqQqMOO1LrVkUI+CQmw1qqSjAQ2UhR68SUCJQ5Ysm9+1nFk5xEHrXgSLneAFDfVAW9g8EORTT+krcPMXU1JfYHdo6WekpgKgHbR9Zwqm72Q2nDUFlFNYQir3FxOURULDvtIaKhJLalKMdNoWiYjeLyE9EHsjAwxQ48uC9nYlsLStgp9zNrDNiaPhumCAfLO8nzgRRKMqZdAYBkJvY7BIAxujUgf9YQ32lqXKhntE6hVYSukvLD7aC1s+F7oUhztqRLG7xcJMYQVhSpJzxEbqUtBVSK7wbFEkTyy3i2LkRUVE/0RbwiDUy6nXR4TLjUg1tAbhKjNUQtewLSw8pancXA8g+KZQuJITbiPI2kaZH0Satxa22WrGdYYFWCuX6quve6wQd5wrp88fPZckcPmZcQGa89Wd2uttzBJx37aLO75DfPxehY1CgSg2iTNP+jRSnVe+U51NbHtCOL1BBRCPG4ZZmpT/LsjWLLAYc9HqwpqluRNr1WvGh1rrhkwvyqQlDnsqN68duY9Xo/gx0n/kSWZZSfLLRSsvBuzv5x2kN4uFHCvJo2hwQ1JT4vUQmF0USUQ1Yvy3roJNzVgXDrQ2qE0xAjWuNgDzkrA2zfuT3doqLA/Qu3rM0mcFXko/1Oz3P6v6H+QmUhC5NMUj1jMMqyRMCAejxMDda8D489DyqHlJ7IyUouErKeJ2QzAc/XVi49+knGgQJfAhG3v7o+2ft3Jt4BYpnEChjjfZNZZ9UKU8TJ4Gf2rqJrfsr3YWSw13nytncJFuroz09vJLaChYx8q9aXXPUnIXm2QRoYL3Fp943S3WA/5bGaqziYd4rIqtV21OGw1JLmlWzV3wY7gKWizArxCnqVeADzcOgNQ4n7WU1blqZCFfHI1qkz+a59E/tuOWUomV1Y3GDZS+o3iDH3EcjYc9DZm36SadMczeUkEF7xUDDpiezF8JAogwrVAmGDMnd/mrAmDqRcSQRruPMsugEUT/GO6fd89xPGejb8tEUh1SOX87fBtQ/BIRH0gG2Nhvrt5XP7bTO4JTgRYhr5D2IrjGmt6jS64hXjw5YuWACxJNAiqgSke/tcRlO+F6R2YnXduobvJa/LNj5In21twnarQ4jYZlGmmdgWJkKrVpXaZkOdaW5X0yESFhzo+6d+YVUnGpfe44r5B1Y+I0MZlHHRaSf9otfytJyoMif93sPBeQarGnRzvkqPBo7kGGHg8CTKD6QjF81eiC+q1rOX4v23wHWiY6Jy27/oarCSd5IdnuMjw+rmar+GWRJPgiq3gCQsahVVQY27N8oyToi3iTYh2Ihkpv6uvKxTSpn2MSsFo6kj0+BanVw1qkNGeFwy6GGAPjiFMpoWgHaxR/HttcZ9z1hFGU052jhu6LVdXmNpdZ9wmEElHe7cdSWuo5wSurEZs5YkvTlfKRALwvGTw6DcE3PGmaV6b2563WeCGv/8aTTaCiHDMdqSyg/OPbNo1WRK89xvHv7qFSTGjoCS70CRapTwQ5TuwMFDW8WpJdh7mnMxRBp6OQJ1L+wBYMRcqFzQDSVKPf4rANNbwyoBvwOBmBzvnCLZzOlS1unHQHvFqbGFPYuNvMJAgV+yiP33zA0CwNulpMKW+Nv5BGuOzhKBcs7yJIw7/iJZBdNKYewd9CPCUjdkIbF8BUEVWP8ivYRW6WpecV6pF2BImafzz36lyE1QNgt94F/lDoVVC+lOGTfUgkvjVyUNpbBpCfAgcTtns9gDppRiMD2TaE8jqw3tka9X6r0jx2mUieAfiBK8oIOORsfcGHJG1bddVxepJPdLLrdws9yk6t0gkgFiBiYBU1zKidzSAYUSWxDM8WZC5N2ukZqf5d3kFYHWSVkso6he02MVM2i/oF5YveBT1XKMaBi83WGc/mwCz42PJG0Tzb/6FTeRmy2bNT/Ex28xHKC/LRQZmnZO+oIHQZ+Rqata6AtVRoMJoJF0UwR2QrEONTn7l75UHANr5F1lw/37F3Oua69ru9C+tqRCnF24BakxwOnQNHWoKUZLtryGipAIwiSTOdybqnP6tm9Dyf5hjBK4r0S8YTarC+aI/5kg7QF9OwuvR9jzRwyEf5Cc+y8v9/h9eiRu79QYouy1H6UueI/E00i6MCYkk2c6ZY5Z1CW6EBDriMgZpff97iAYqPlcmNOAcewwSRlqUwnRzKJk29L0l2n1CQ8GTYA7SOY+lYnkrmAu0FRGYoxvXTTpe4f2+oyFmfADGgG0s1+xG9OBQiBtPTKOVqiOjPPs8U9sGu6U+6tA1hG5hgetDGfQcWk/FaPjGXDymTmTLVz6BHL4CGA1mPhHxGhZEVuclsjmRaJoJXic2ZxmPu4A/nFtb3G5Lk1X/n2z4uuh98H2bO959VcsimAcS9Yst4S4sOEef7PFQ3Vb0X1/FypjGsjvcOhZLOD01zsfjTyfevN/T8333ak/vCU8mUyICaEqMGkNbh3O9S1vArgVVVA/ZBlkRJxmURpScJ9nllrp/YKl+o6nOXn9BzvW/v0R+3HJjHEHFyYWnZ85knWBn1NUMjXPElDrGRx/jouzt6cr6XVVhCAWvbvijABNfbT2fzHMPB8zvQFwQirBjmrzxM0biEL9BJ5Zi+zK0D+Nmilfl9tSMJiA8ra7wpu6M+LzyZwkVK1j31Bfc82V+0WnoF6Vxdf3bOcO5smcqWXGRP4BRusHOLC6+AJnGwu96HmPImJf8jxL1XFlNX01QuIFxOTTESvDqdbvN7qesGCid9zlLePu1ejgnzqVTJTawVzHtl+Omt795EFzysYmIN0z+EdpPwVqwbXJwZzLxBeQ3GDUVHR/zn+AEmqvwFYx0BajwDw/CBGU+b7PTjoCRCnoCrzAmEknV9YyZl+BKdHyR+tOLQp7XG1lLoMopqsdifIVPBuV0y2EGJhhVjc4Y//8Ut5Kr+UbKmBDEvnt1P+wuyGvH8RqbdmB6BF41aoB+qkU5OOqW5p5CNLqNgG++3G2s98bkejaYMaIYNu2pFjqGo4JZHK12MODVi7mfFyBmEplJdg8bqVLXekOY9IvnqYUOnhk1GpIB8TVPUOzNiJS8/yEcSZNtQv4s6C84KLk5udYcAt/IUsFrRLVGyckbRSnxVLhDkSjlWvkhY0vBMzixCsE6KmIcAbNN7hpBxdT7MOoHtinba4RF7CfyFQOqOp+yqN1jwInNPamz2wEd+TQQ62natEMjvHipn5MX+4VYBJmXQpp4nHV2lpBgh8ZN0LTpzabcU1D5FUFAE/Y9qvQ5t04VAFLekkiLhElJAcCpSApfC3anv1xuwBmLiGH/wju8RpDLheQ9zdCgOO2I9hpMCLkoksF5MTmNSmtvgeU8MqbC8lRi0R01zR/Rxk21SYKchczOv1R4p9gNreKkn9KHTMQEdS5WsqpKlmDGQ3FMSJfw3yO8VDj9+UnYkAxRJzva3PJncgux5YZ34+Zt6j10O9YhGfNPyjMMws+1niNlrsuZ/sk0NNrACDbUqIzfOt03B4cz00SjHVrvh32WjTOkuWThQCJDjEEXPhN14fXaugwK1V3d0tPF3p3nWVMwSnOXSc/yDi+OCKzA3jpbxe/RozYe8mcC47KXxrrZiaXDm5qOT/LkzjJ89pAI1dNI38GN12O76RMd+mfce/FB90HnhvJ+2FNfyPsD1hhYLqcvDGqRrY1X0bXJcPaDpalU9YVWHhVlneptzEMOJ0id5vVTjDKGjX+OmOIA73n8Qlq2IXB2UixOhEv0loSNtOygA1bk9X/VicBcLZVaAy2abYJwf4RyZmiMa8Nv3hg+8J0dv9l5c8mydJBGOmJMERlFn5ppERz77MLrNjZlk4k0Mwx2KMvNJB8FdpvgH0tccsV8pGiAxCnQPCYRP8ewuUUBV5ElOCOX2CmY0r/g7EkR62+7zSZbkltb9HQIsiAL7J1K5z/sF3YlumoqC/3TPhyPD6arhD90S2i9+ivdaVQHCA0NErrlSIAIU5bnSTgh3BZ8LV8M/66QqfGoG37OOEA6CxCz85Z2QRrbUclnag9dOAtNmLB1gJm1k8GdIOP0QQQYxWD+1TJoOizzKbWvNJ6SZzYWGdoUkjZtYbarjCYZ2LXiI6N/IP16pjgJybJQtNw1PLcH9wZnYGYRJ9ur4bSBCJiOBqOM71Avr7fgZFaR8/dJ+NiW8b1ims0/Fzeb7fuUIYNFXgJ7CXktOgfMcGdtY1eCqdUvs1JpBfAgPQhnaxVQiGd93ASXn7v8rrlSB18Htvc6g9aW/dckkiGxOXg0Tnja54p0CmfbVicj91skvxXbR6oW8V4ZXC4/h21h1A97MDe4Alc9HA5V8FVV8YRHvs36RIFmzFakGyEJTCeSRKJ+Q/+NVG30ukSj/ckwYFLP0E2mAZngM8Bg9oiHQxTr1e8kPiF/AWHbRzjJRVIXuFVcdghcMdKaIfLxgcDvZar9d36vIDKdkTG/wTHUKQ2c/r3Ti8wawtLabxud9JkExcveaj+ObKgvBR43WGF1i86AZzk5LsdFEyFx5ynOhEhgGArIi3j2DbWKLzINuzjoO4SKoZ2bORSSFSg130KpgYUfbxsanLijx9CoKXznjUE7b3Ej6knkVvauxq2EkOGnKFvQcIcq7zJQ1giZwsBgNWV2lBzD5yanc1OblgiTysGcLEAv5OzextYipRMtZcyahJNqYDZtW0RnRRdicC4nIgRa571bC9K+8iSDe5zq9iV7yTGBd8KgQm5RchY2WBQaPIuCeu265KsbM/TJ+JiyEAR8X0JmJ2zR/PdRVaLCqluHQhRvSP07K80Bkqpf27xCja+HW1zPnnCw1Q6ZNEhDN6T0zoGVDZ93o23wgGb1GnzNj/lxM3nVqofvXng/kZk5nWRiMj+afS/qR4UyFrP9yRMCgk/liAgN7XO7Aio9AtzVyUpTr3hh/gRhiLnpg9exOV/hrPz9DngKppSPd2YwDab+M5DcO48ZmfoHb9j35JbJ7oPWh0zT0BsP2f9gvTF5GFuVg6ebFo8LnMLs0tmD4VQJgkvcZgJQdX/JfSbFB/OA554/BC/BzZJDjSccOPQlds+Sf6I+W4VsAnCD5XnEy/0R+3TrVxhjQKOpQEUweUUFfNtpJ3bvH6gLvAUOUGgnLj4OXPGQvEy7BrEsna13lpgZrAX48PBpMbXv4Lwt1HrrrW13Rauoopewc+oCHRLk3+OwCJs0nTk54qWJbW9aZm8YvcR2vz6kpCkDPc6twhU7a7he+NfnRutFNfHRiJD1kNcRjQ3CCwQOkr8hPlpRDkVODAqTHO7j7FUJzGLUiiSFDxVYmK9eiI8/zvSoo3OLxrNzGemZ2DaWj0cBWfVDti9GhL26hFQG1muDGaOb1uJYZ04LQ4QRmlVqb5AfmsACIzfBKz+4vDCW1Cr3Yvf4Rd3LC5/83gn5lkG3gA7v6rp84VY0Dh8Ho4Ho2Bg0XYqYv9roJjMw5/KWEtQHNsXidCcO+A7jJGIu3kKw1KDmuCgM2dgMqsVj5n3LYuiijQcoHRVWWQhBsWCdiyDarXNZAoL75qQDW9a+huGMhh73HP283lp2vX7jUeqGBqNkEaQbq6G9cFFreeYer1jMACFyjY+Q6RfgSiAKgVYrBnTpds4Y4ju5Q0d4dWG1Ee4OY1xVBQAtsfcOQZpBunOVhzGVt7juJdda8VbigVc70ao4EcchTjfvZPKuzd1YU1SKaVG+1nwGCsx13+y9TciBHrFa6VJMo99Iuc7t6TuItpV57GtlHfpWntlLLDAWn8wpfbDRxLjeBbYlbRh8hrHse5nUN0O4w8OPfKznhH07XcAJMDlvaHAESZgCTRdu7/iq3gmwd1qwl8cQww6Cl1KbnqJV/km80ft28wWrH6sE3QPLjQEn5HyiNfyJoATpdqVMofzrMtMMeDMfCBuy3Cj/8BxtbfloUgArBizuVntTUwyCREG7XAOqJzTyvLZOU9nHtKe5e0jYG/21kCl5kDBVpbo/hHLJSgJb9k7TZnLj4EXqbkHosJ4PoKcmXIn0kTsImJPCGRcGIBvmmnMBl+N8fGMgEbbih0eDvqkHXyYZLi4wv/okynF0DSnvjKy+PhMftbn/IlrZrXCCRR30gaBKxYRRauPeCqhc4ikAZRdQ+8vvIPCL7z+44MJ7H7kfignCmlOOJiKAYlMLrh2T0lifvZ2rLrJOZyKJXZfOA3UBOjqyv74q9Wx7lHg3dv9GACVShBN6J8Je2qF3Z6JCjKHU/FefIsqIyGGiboWG8vESN9lCHEzu/Q1DCRuhPNAe8kYKmLV84ulsJcK6gvgomnTln7bdNiXBxRiq84QyYmcHrXpSiGxQZcYziVY48Cd9gHiF0nBK9cBq5b7vVDeS5gB1yuf8NP44eNBOJ+DDuYHH1/esCklKQrCN9p1usw/y4qVCFHDHvfsTDpPQYQMi/j0Z98oL8ehUf73lUtBJaAM6+fpHHlXGsiSrkAeakZN+Jxkp0f3hqVFbLDhFiu9/4A+9e1ORCbOZFQhoZidCG6iAKHheceKgQVcDxcq9Lqjz4qIZVOZ1NsExYpXGzuZXVcuecJvavlISv+rWodSTvUPkRYCbUf4PWJ00+Z8za19EcbKb7tlsrZzZ/tHMxcwY/GaH6PbGLPSh6NXEUxrSEs9Uaasc6wIfSgEMBiY3hm2oos3GFpwmCtstNnhwPyJ0gEzDSfkQP9onhdueSStSs0lOVUEkR4TCP6cpIAk6k1uTTxl0yxCGuRF1snjoeLOoN0a1h/5ScywzwfH6aR615W25POH9H/ENypfjpD2ueG5bG/BDqPlCnRYTh9LgjApgZWC64mZ3umF6AjfJlFdDFHywBqJgdOaXgG/+ZKY12J7VfF0dFjM+HRpei17/A1keGeCArUjYtgh3md6iPuhGqNv69mvtm9hhNQbLsx0HpDMfQnP4OQ2V1tnFw8GImZ3ee76venYFgTvTnO8re/ErduPZO2x2svty1Rhq1BqihlHm/FzJpbkBRmQhq407NlBn01ebFfuVw8Dd4jF8lrrbnPU2KOYDFStMAKVD1Fj2QEWdxnUz3WrLvxVgUA7KzopFCbKeBtIMh/i6ollX7dlaiiKkHMhgtibxCLFZ0XHQi3+T2LhCQHqvftwdBlJkhuqfymPBHfbeLj9VW8EuK9oBQ48eQ1od4WaYsab7LyaOkpQm265NIYYvj86qS+YKqqN557o5gzajrEMzzyAc2NHXNXglKbmBMc7egT9TbIoajFEjnmQDSbNsnTm4yEI+F/AWqXPQivfGFSM//C3lQz2gqcSwZ+u43AKho3FGRzaFMe80Md4g0Hvfq9im7GTKzm3P0P6hLeufAnYabZm9svtV9G6U+IIAxtYuc/mrgPHLLP3WfkSS70KzBjaWmnQ/deBEKqjUAmeW/oKp8+AnaQfBanUtKsDONvXs9bYD88OFCajBOcn77IpRUDu+SYjVed44TlJ8ZhxMtBCHRDFjh8QFKgu7ZA70CObPT/FVWjEG7XRRXCRa8cQ/Ko0ZnJjw080pbnpeA/sikbL7w0YQqAXL3Yu4yaEibFsRwqmEx6iStbIYRZVWVQz6ghDJXy5E70NcNrMBsqfXXafdXV7KeLFHP9i/SRdtJDDHOEOD+AlQu/aoPpEru4jxSKSSIkTolClZ5iMsSSx5UnJiwBNg6PRFt669haYqYCNi05D8K90CM60TA10iY2TLne+srihLqIFVwd9YfNbWZMdReN7U/0fsNMIn0tQKD8LS0jXMG0lenPV2h6EQgdXhffFfghHzIGyXozxShNLwBQz01Bfl7VMbfstTIK/vaZmVV6kxvPZ8RZrHA2L557dbtso5mdiD8Z8Uwn4AopaZDWDiBP4hu8/7gaucVCqbWlexFdgrHCxWa4DOAOMgqMaZsN9uqCdUf/S3xC9kwdhIMsfmojJyZFUQkx4NqSZSJJuHUqaRWNDOUBRD/OdVLAW05lH812y/Sh1pzkBjxN9zgSt2IkqZxstPIrHPHfpIgOy4DMWbImwu25yfIlnXDWtodtj1fwsHfXGV5GHan7lbw2oFw33HZanK5PC7aqzFVIq2FG+MnSQ0U7tsq2Fds8+jJZBvvAdOuP1LwASBz3ARRoMfe7PvIcVQq6JnLhxDkMDBkVBeLjJmA8aHfDZJUWiFWHaraFaSU6c3Tu1iNDvxnXF0BbVfWvKIC7sBbRSCQkZe4jn7BqLHWnD8ypTm42Fx0rkb5/5UxFI2VbCJWxp295g9bXNgRHzguAnaB6i8xPEkUJ8rGAy7KpwqMcQPCs35G2xrDbTNmbZrjg3NTKT9B4melqrGWMeYHzqlxFYhDM+30tjshY2lGZE7QQZZnJuS25Sw6dDRgyVZvN+2us4n+vDLPIwMDHoF7hPQgMIImAgMeuAH6EQu9ybkATQpySbEPr0XL9nDRj0I8BIL2fAV7SB6CLrLyyF7cyQz/ltwADv20sVvstxLpRBbN6ji4hrG6WP4B5MpKakq7wCR1ChdwfxdmO5uHgRv/DUIQ+vLSxqUhaqhgu3upVimMotwey8Osno6tVXsNX7qOE4WjPcug+8UcbuQGqHwndblvOM1XHToePR61bwTDCr7FvxsviRVLi4x+lXVWBptRn2OVaGxkCH19Kqlajud+fY5XjmRjZWvOgqDWBI7Chn4BNYBPSOiz2XWLeGn7ntaWhyBfnWp3H6/cSqfDlFVk6FgqFKTjpUwLHwSo4cQrCU2A6BzxpM1svZfTkkqMLyQBFTDbGbNSb0FxHg5DE8n+Kkpmc4nfTW6DRbhT0I9sOvNm8YdwTB1dr8H6WEzSODJ6uWSg2i9GAJnM7xGVyX9w6FZUbUR7aGMtwgMrTKXz9SwNlDYRa07E96qwbeiSi5U/aPDNTxCMEDlSBWGvoAN2KwdsPPS7r4tyJa/2NE1jDCK2NjG/ZByCbmHej79s7erfC7VQoYZXT6DhkFQoIlgkpmzRzyGuyPiCSMM6fUuKxcmDAfMQtWXstOn3WzS2VoOUJmJXbSeqhl+Skb+uMUkDCR3tuwc7HgG3HoCMseiWOmKpRCAGMDcoRHYpR+sR0scck8nNzkDPIWfFSk977aIIQbaNDBdTVolGS2gxvDzK9hwgG7kB/bsRT6TuH7U+zrh2nwZQvQKQ2nupCSKmtTZjGn60gjU0FjfIXvR+JRS6QBvtnmw7E7ZOwmwM4moJrlEY3KYk0QE9jq2QwNArRof/tLQkq4/fDyJqmuXD70Y1cpr2vF5im35LST7HVjavqBzTnELk1gb2gKBKHJxSgz1cVQgGV90sUlIed2Wn/4uVHJggsrD4FI5TItVNwqmFwDTdtfwMLeghnBhQhS619Lh7QoL+x3ZpsdKD9AId+Su4nR9kK5mfg6kcYKkPPwFls4QCgcKlGk6lY3V33KPMaOEdeTiColPccmvoA+oTTw/T344RHML4/jQbiSZz/TGKJZLlxKZcEHuHN0GiowqwbROrKvg26YJkHoHUH+ALCUCqAqvrodBZnYVA3NToTN8fjmNb3B2sfMQo94HHEGhoapdIOA4WARooEPRheFnvqWOQfgE2F6TMRkmBLbGlrWIc/qxzeRSYSOhHbKAXic1yzfcj3IS0fT5ymkorlFNGzSMJvLZxmlWc81yI/gyeeOU5EMtzlCoSqM7aTExYghNB0g/h1DP5l7LIsPukdjz5z86OhXpJKPVumBbOHBKzWBFAkDOiOAJmZK3prW/qScpKj7szjDzEtt4+gaKPq1LU5qUwBlorL9PBRhsRvNyRpjs5YcEpZ2SQAShPiCRNxntCunU3CKxdqx+fZf/QuAlHuJGXQ5m3UABPiBnOFDTr16/29cQ2FaO09Hm7yqBZbw5dyf6Meut4QIyMctHAtBJd8tdtRnM2HIqeM4sI9ldvK1YGt9EDcRRdc4AUsAaZm6uBWJHJiH9s8gY8j4GJ2GRwD+fBXnT7wSO3aAZV44PXT6/7fuZ4FrX2AczTyOi8eJ3OHmiYuIzAg8iFmhoAfWFJky5UG/Ma4kfpVfdn3gSf3SAX/D5txhKimLQ7CqoIiq8eVpHbESnzrLaWCRW2Z72W0PCGIEaAbQm9xPf8GPsgPzawTs3lSZUuMUGRbBbznBJFh0AjLYkz33h9XxiTd5bky3Cfq16n499PN7sNfm/puEOLMXE8k4VjcOAk3BkyPBQXFUU3tbj2tAGGjxwdIlRPRtXQnoiUjGhnsnaXYWfIB30Kp9zCT+mooKQBYZUacZIZM18vJ+pUQWqoyU6+dQzCHgw5SB+5qIIy3T0+cSjCIAIGmsq0TDbzkMz1XbKoAPqLKYmVgoALruEmYqcl78uIgVOvXoHtej3g00owxsgXX/0XGxRYR9/U0j6nysii6zjWVg3zGeW16l+/ISp+9RyBs2qEEXHxlK4YJLuAq+Y3/jPTqaJ68w1tXB/kvw/xZVli63Mkg4VySzFLS3aQIhsZ6d1BSbjXqGUbjnKMELykBQjG5iiOZqctQcCAfJ2QqdH3eaX4uss3yEzzEoGP8ROts1PvSavfB/t/VNRIEhsuz8e/Acg0DWwTHaCSF7hYcfglHCNd1AbdZ4n87v5uQMU+2VYkaMrvWRTnTpVOsajl6TfcLYX//mBBOx1eax3vsen3aj0GfeFkOJxfzALcGt/ZAB4rudC642h1gf2V28+FNZ1mn54U/sp9cgyKV11JqCPiFtUTIyU4VZvYl1AIDCTxoyoXEtSqUcGDgEhBHs0MhO+dIVuajG2maGs4Q4ImiFSbBMT6mgihZeFbYj5zYBKyA6SQWILYfDIGDlPFDzG2fZa6RFfSMoMe0Hm6KI4RQ3Y919mhZQRr2JCgaZbWi1MXBDmYmN0OOv2HYxNMUCVBEkJ/pySm2lkzocwWGvs+G8Q05KjNJnzFFQmMeIFx1EyYUFrDlh3gv08VRQxnfiQWp6fRCblY9IOH7jQNaM8T/PCwbVBy4MW0YmzShEeCwNQKSHiiKeuMi22wHybvMWdAzA5W0sFMhMXdZWvZ1lywjtNOGuS3BPLFDzxH8qyQN29H9yyEXkRaXmnbooHOWX9Fwmacv+enC0PzUDL/1m7h1FBDdSXnzaJyyOfhZWWQklqaB5Jy1gB9PTx01nsUkfiBz1RuTYTltGGFCwfDY3y2qGMrRUGCH/Ff3jlebkrCxJ/zwg1OiVqAo6HXZysHC3CxNLGmG/PKLT6rG//v54msKpR8camdxKRT/ovpFQRpR4a2tmkDq/NzFvUaWLT7F2IAflcExlCHT7bWX1SGO5/PGCiseIup5rELwz6Qvfz+JC/M5XNcHOioqdMqGYJY2WRh0/dwjHYE+T4cLjRqgc7ujYSrCocoBoP1EMmVnOqoHxzBZmcjWBSSFHkQKZeSsDtfwutVnLuQv9WcsKsPFWe7WTsjf2Ynp4/WgAwb68XlJCYlzjHejtOet8brISHhcXt2FnacNEj2NEMrDfMCL5NyiEet9AmguDIjhI2xpws6HV2Q8skGYXK8hEobbMxwvAlPN0KtPHe7nHgjg9daYrz5HApC2teNdnyd2/hfXeac3aiLstcuEHKGbEYlJdGRf+iHv4YTYK9jRZaTcVdcBGOkg0+xt7sJK/c1HGmpukVH+hCxlxOjg6iApU0AAZBVUE02LRUUmtPUVYSCG0W+Mrg7/hf9ynDq0l5bzpMw5CJ+oj8AtjJgcHmlSzRXgDvjrvztImRmA57aGWn6J0DVAV4lXTu0NiBofBnhWMgkj+PWF0LGanIw3gyVMCMOEpvXhnrPg/EwgGorj0fu2d7vPxtBsKJ3dt0uN/Uh9g3uLohvIXZKwFLSXsvLe0VxoY7XJSTHgOQN/qlzt4LvZq1Isr2wS9q9fmD8YwYtkZ3aFW+tFqm5WEsYT8w8BnDKNyGyYgDzHsmLUEqBR7gkAJ8h9cJHh0qkZaEdPlQCMXXd+QSOUDYIFqY9SgYdRgcEc0eu992x+mGlVpCdMdbRmqZMv/wjkOZEvpYqc2W4caXKHkYvTddZ2pdtcJvoFuUcD0Q+auQyjTrAJ4bmtNW/5NF0rjSKk4IWSx/ShCkX0tDB0bvgdCZrhDB6J8sqF9QuT/4FGMyWpkxG2mAJtHOn1IP3Q69NhezvRtsH+hplGelDppgh0JNemiNN3TDY1xhgqOPtdQL9ckAD6oHKnshoEyUTzQp7tT0gOFiyeZHfiZ9tYsuitqdschOqpWE2AdqMlSmlDlM71tzOrJSqd4wiS7hb+cHiSA8orOsbNslaBuefmjLOnMhVRh/vUPbWwrvDbj2q7nVuR3aujTBuiuvT8FuiMqEHzuoG8nOReTsdwp/NVyfnpdNapyG3I1CYumNgHvVNqiIyGIFn7FNiUvcJJZCTtC1ahTygqhNe9HnWYopfQMbfaz+1HcmhPAREh6oUJjfrZwofQMBrgNg5mp13l1h4iWhiRnetFeSnmFjZvgiH4znjQ+W6uzyQmYojGIMedV93XVCT2mNh62YP6jgtQGEEmyujl7LBv8JCjuQTrwy744VqQYNxNHmQGFSYVNjiQLg/Z6SlZzsOi6oxsXrh+yemr8PS4KJVuakm0jnWlrshvdo16JZokMeltMu4QuCtUMUqGVPgLOUHRhNJUpgap3tPO5kMpEs9jrnFuRY2hMBa1j0Bq6DDVGN9UNmjhpl9jxome0dUsDTSxr4QKAOt87+n0r+MhcyBcPYITQqDhbMviX1Qmk+MsjHs1mySkMbxhgaRhYD5MTre7gMaQckt5DeZIBb6jOtgmmnqa234iHdNyAJ+piaeyEuUBZEEanaEZRdod3H156ugzP1So6hcyUaYcaclaQM+ERAqIho0KvMnHgA0GJ4s9fAoaCClp8ZXrDK0Pn+f+9KHyYCjI8wiDhkhD1vF3h9VTtlSQDyoy3SNNFFOxx4m5DDp2YH9iotkEmS3Y05hM1dr4rpAkpELJ3x5XOEyeuv9ThTeFxnGLHBG7zDJXthEsyB3tLE6Jrr163m6XH/vZ41INETqqkJYRLx1p3XW7aA7Xe5tfm3jGtYR+FIz7SdxUqGTtQORrx5Gz7BtzHBGhRgRLF77ci1JkffWDuY/J3Kr9HYGHZnxjqQVYxP9fdxISRwI2izNtGO6UjYmgunpKnFXOnzTdvuIepS223OIWhsBdhZhnEyERexbAio5fLx+ZQbSd5+fh6x58QinQ+u8JP0f91XL9bs1bEa7fkUPfPvE69WauzLdESUHsNEs7hlDNrkv5uAEidZWO0JL9X6D0Wcpr/5Vhyd4UjAIgP4iaXzol8Xv75YU0ppS+zi/xrUlJCYATHnWvai7TXw6fgpW7fqBEaDkm9F/W7idNkfX0ANruutzWfpzCyZ3scLUTBgOtpoSuRmlp3alnAe+ZCOo4aKRzanj6ZEVfPV7ziBo4WziOAG785m2+sQptxWO90yDHfeA962XJPxGxKpzDLPyFQOJHC33M9liTO1w5SaQg5QEcdOBJ2DjeGh6v3AejThNO4VJsaByQqDuPI26Q9s8x8jk2o4y3CoIUMDCIVYC2ZlhU+kp3IhBsEpxNuuJzbDBTGi6+4aBUDO7d90rfQlTErHQKcwm4YrOoYk1rsD4Aks76/6XfHvqQHVBRIwVoAcV6otPlbwL/EIMYuQ8axtS6ZU81P4X/lm5vjOz9PmOxeLqzkGORZg7g6JnXpLchMyVqymMjOP3B5V/IoY7HUyYhtGvvhgyVHfPgfAG2PvuGifLx7NL7U1ua6yRulR5TAVb9WAKtZE7EWgasOYgqM2RpHzkQDK0QtHai2zK5woRwEdpPVnbI+oiB1ugGW2thXbL+P6MDBR5tnW4nwPYx5+hKBz+C8hgv0m7N/V00Y1Dj5y17L0zR4I16Gsxz/bZn0HnmH0Ep8qwIFtmdBKROAEDvhgQw1ZIZ6k8JINEOYyjwwArVmD0wxsypgbB833Yc9R1VTf0BdBArWDdCUw53FsP9xVObO3/zF5i14cf3/WzNciWOO39+l4IQ85cWMRubP2uZg9mhMOglYGkxoXCTVxkLvu3rhI46eW/GwCY0/t8xX3aRaSASQLZkbfrxbkCCEt0I1wzGszCAYa5ulKrnd7IpHr9JczVfHiXNgYkOM0qxVacvZsytVjglSd+DS5cJzPo88mGHoA8+mnYMq+1giEvA0m2MsfAxP1paTLf0DGpNrxo+Yr+Miq6jaM5jOEG6xP+wq5ydmHKqRpSGzf1itIJCXffGCtq9hdgd1egwz7HeevIpDboLyE952TrvRjgw5bf9yolSFCUmJo2KHYTswPlHMTq1fdSfxqvlPWCA+ZGiDypxbx2LaoNUXoFSrtFQU2ns5eDqOH5+ZDnCIJByyUHsqz7yAOx6mVn3yjVL4+2dGOAH97TPv8vFjHu7V4QccyEnXn1lXDJsubFe14q3MJegV71/izvkbliqg24n8SK/zQKgayrbZIMv4EBRDVXgB7UGo/7zB5PbtfPXPdeI+AWNpNbRUER3rbCCrnEi5ZxlMmzQBjxWvcjbOha31YQTIAPmkRF0xSEsD6LWZn5W5O7ODqkZ5AqbvfdiMrSDcwdStq7P8SwMZMMbum/BC8IZ9kSI5qs2gLuuSDhvkDbSiOZ0RLxLpWZXbI5OZgDNGqv9jUaX7MIo9qkv4L/2V4rI7Rlx7xUu8D/EdLlKzNF9muvFJ9PxOI5lTBXxfIkTkgwSZl6t0rgmnXy/OS2qRp5Ky9YerdyCRUthu2kW5r7LFG2/YyFny8n3GcjX9CXPObtMHHM2McnptyjJAKHogcYM9QwCeuScJSmwEyEevXT2W7d/UkW4u6ASGl/FuUCyzgMc1RQNs60yUevJ6zXMOyux5XKvIhJma4mqOKoIsKqk6kb8zCw26hwldlQqF33pa54lMGZTFlUy1FHr0OWfXmgBO6AqxPkjFUCgezFe9HOY9HQdMUwLjXslLhgFVF5R2e9yQK1xbgMq4UWbEowi4sDHFsiNF72bHGtRDsHNVCz87jGCQYvSPSPLh7if5C7GnRnSB22uzqMWI6vy3ZaN0mF92i5IptshiAF1FNY9YDfxvJYoG3pYMxtArkrf7Df+N16Ve3YCnb+YA/PYl5jKhZakBL61zD9bqt0cMH4o12eM08Nzo97CkH9YlaSJHXT2pNaw7OCWPGsEY/S0TZ7Sob82BVxqffzN3py2Ns9f4uodhYS7aA13mkJ/M/uP5cq4I2G5V+nqo5W+nLUZ+74XKrGx65k6seq4hzaFD7eVXAa7+KpUp5IkGuKayXaTRvUcNaxegkEkiOTcu9fAN/5OOXUgg+xiUtevLOoTmirNL7xhPmiAGRjZWDk9RNlrY/8Buh9HBGpR9gOMfZI78DjZQLMp99HtQNulGNm4uz7g4P9U+AsTNouYu/Yk/bbzSvjDysIOOr+McdNA3BEyqgz+b8FhJwU3ZrWWMAsn3vcryRaBE8AFnQZvLTnwFreyZO20Xc52AazxUMIO+WEslqIsm9K/DZxELPb8/AyVcOMwSQ3hhPFkOHvD5+avkNrBN24RXzngte84ebGbB5n/8EObyQrWhQDdCp8IE3P6oaNQqBNFI1x64AgAgFG4jCkiABHbLq9HoeJKo/aAJK99uN7ZVSYEXzgou0eeQ9KOpWHCB4/BRezPenx3+9NvujmZreJwPuZv2vxTsn+PhjuBMnXKamjdZWu9qmuDpja0q8YvclTGsSMCB9Wc9LgGktS1e/2XsX3wAQ4U6WYuKxA3t6GY4MWqfzI9cUI4x+ql+2zWPJz+6oOaLtp5h5f5xvO6nLL8DNYovZUWIxUxF3BI1guElEVxK0XG2O7LVGCD1EQhfPCDCPTKQnN+22u4QkrQlai09HJQ8YcVb8QNW5VkNMNsoJsJiAmK4qwpKRSDC9MMY3Ne4Xox/NBhQFXBmZKtEK3ZGbHteKlWYsA3/PwSxTg7juCD/AWfJl9/LHSugP6iKr2rj2wl5Y6BOxHXoxLtkKXRFjLE5cAikif1SVwaVw4/dLiU58N0RcGqy6DWtK7OoZPaseKy5iCk8qLa/dovjhH/+hAlCB1xTZdmmLIklkvqxv+bHIt6/PWh2ftGkyiKAZNtVDT6pNAcD9pQLj3VG7UOzIJe9290CaX2V/B09lPoQVfd3Qk8saUsRzh4iChimmV8b3ngriUeToAIIQOYB43pSVmZWNIISEUWlzM9yT/woEzuaBwE6i538QUzauAY8/7J/A37unLaDjpXiVdvfRyErdYq8fQQwYLaZd8R8HI7mJudg0KSmsfXfbIv7QkhfmZVpo9WGqxHG3lOCGyZqRPzF4PmkJqZVF3FqgLXQ6dW6O7+hD3/eVto4e6h9bruaAnLGZ2fQ8z/KoaxsVFN6ADpHgwVJLLRLvA6gI4Ikhni0NDz7MekiX4Ua6n5kl1oXBjgw4by4CklwpfvbqNIjtt3eem2W5o4/M4vMHxnYEYPNdDiVsCzQRNyDl/imQ5EZjpgKZ7GT54ayKtKuPaC/WCze4WFqUQ0pfIHnPRmaw1mKoE7moZw1xcVSspKVizhYZFaMhEvW43K1sWD02FDmkFqytXk7n2ECCDPZgnHBo8XHqTinSbNzqJYBJYSiOw98rctw0YTGXF8o7/oxIshwUNYBn3L9w9QX4T6coPTo3TW/Le8zbD/M5JT2WBqwyBL5qLr2/V6HQguMSuAFe9xpU9fUGg5wgeuuW4YJgWt/bppa+kkIiriPUpMmqCV8t3GQLIVfMbwxtshKzhizDM57tB5Glb3yXCJrFjyHq6YNsvvV2XGTI0MtnLPt6+wAp/AZdbDh7yrN/jgChoRwOCojzoHYPkAlotWEJSumCIUD/bvrsmmsaEdb7MT4Zxb1GkoSkWYMblhz74VBKfZK6ynmiN1rp495cx9RIEk/tkQmpsI9IjPZITLuyl1j4isQKZRsiAdCM9VunJguLamB7G1twvf+R97z4X/IXAGYYAnhiDShCUIx05BvHstTE5Z3kYQ7svM7+WI5ycshODVVErW1FQHqX3MKF/VFiQqdbtdPQFw4GRRPF76r7lQpWTgXjC0tNXoQ8bfmbePRj286jV6gg1cWTi3aiR4Dt9JfSMfR/T/qX/EosC4y16v5B/LevXckF0Yii/+VIHiigEBekG7pvgnRlvVPlHITnTwgLsU+bj2yKXcQSlO8AIiroIM1cd2sIJxlnKOtaETEcxQ3LhYAmmPKh3CadJnQEe7b/fPvo3RwixAzYwMrV+otCIAePwr1dCOWZyXUiYqGhkHE94wLrhliGMW9GrGEBbR/737bBjlD2cYy/AJ0xReJ6+lFYIqifT8F8soXh/2fY4hZnq5N0rsloUBahpoUdrg5X6IC17GT40aPszCI0vnM1GhMS4lzICOnh3gd0Du/yv8lpwTLRIbvIrj9XVV/jNaT3F9sTL8yn4o9vgl/HnCEiiT2zjG5LOkLA2NmPdcVHK7UURswi58jqCUfRnTLVyBeoG5erjhTzXAKYihQ8p/rS2iSWf59Onlvz/dByRs9SNGtjMhvrg23nKrRkURmWl8ykACXE2sctc5JeGEInf6qCcAMzvukTggsrBbIm1w2DZl8D67ZbDu+kkNuMxsBYlzPez7SkEQtAIWYNY0jp1Rjy5uDUTnKohr5HqU+T10ytKabl5WY2havvgFZKoTZaaazX6kgnYWJjSqhiMvu2hIz9jh630mzetgpZEUB+A6+swamKtusNfkg7vc3XlByltDJ/m3vinkM+8OJbu83nQcT8+AMO4LQCtyMVstoEwG1gkOdkBR1/vg9XWs9sSNgfo/UOXllZjptZHbalLc83F/r5MOz/6wvO/kXFA3kUCSGku8cgkZ0xdV9o9pdBKH/ODT+b1qK6XoXMiBYRB9wWfSIRl3N/J0vrw1fik9v39a8xx3yfFXQeW6Dyw51woTEEiF0ojAZZztgBt4k7WXTapc/qAukbscHZhPe94xYi7TNoDRMYC4tUd91leLPbhWLcxc95+XLNZpd7E87s323erKSjkZd5snnsrEPfMBUrp4YY7DK7mx5gXz3SxjVa2++EcQt30SfG0aBUbQuJ5GMFrlcgvdMJq4VhB7g0fKyEx3onUe4vVwQjoHe5VdvO8b3KyJ3oHMumDC0t+cYBQhM+ogKHogaMg1vRm1ogV+3r9qza+zuNZZ9WVpNTBZcH3fXF8AlJrmQbUNBjp2E14nr/kClpYmMlpGUwL6XKU9+cPXo/pbuVxLAEx3FwrlmHEyAVZKW/Hp4xd8/zdpB+0Xghijofxt4HTyst+ojD1LHbCOcCQ13AKHXzXkBpeUOs9JmRg8o3RGeS4ld7G0XO2ZdkKfWGuflDS4VUrwODzW4taf3fBD42L6qYwlDYVH++R2q8B/ueOeBJKRCi+96kNYfYZSin3LUNBE1EcG9ERuaHBJV7Fx8+GUSjpY+CuUlcU0ei1Z+jYlJEmOivfphV9UfrmqP/gl/cY+9i1vhX2HP0DktFiR6Ce85uIWZqIRMJltThrTR6Tzu5a1uHVoxdIQb6/Sqfjxm7Mp1RHUhIzxDnymdDuVWZuPGjQQHz70KRrMN9RI6lK0L0TQSJIfFjNxlsqbk6a11SdBktIv8Q5jsjFywY+S0RqBitk0PDnYuR+S2QSCG3PAsC0L5AHuqrYgsAXYsrn9TWB0wb816YzlQY3/MrRZNzV21BfBmiDlTgkA138Vg7NU6p+RYiWjjhp6up4wCo8L9drPnCBWg3llzDBX+DiL6amxu6yGveioF8tk3maSB1/bISNM2f5HHawopDAhawPnaFlTHzQXfcUpxuTLzRdfDVZEGqIX8HJ7JyNAgcjD6XH0uwLVPJwEwhrBc1ceBO2A1PevsKfbdFP9IewnOC2b3ZOOV13RKhPbzhWSX5YQG/3MhMOJQJHgXSF3ZCIKGY2Y6kYDfLIBpYlOZP7vfICP5tVEin798+/PeWj3mt0nHciewvQ6K5Y0wl4YFbRaMruoFbUzPegcWI9wKO1C6xkOY2oSl9auZju3RQ2hoZqQW/eCBZFs/yvZb1B2e9gyulaFBWhtccmpyA/5SrOTKJ8fx+hZ/7+FGUeH8Nzq6DIob3H5cs/ciQZXVWzwUA6SoeBJmxEDBY1VQkUt2aABUHK0AsL1iEhnAjEnWEZeLRgmnWur9xJTsuQqqCc3++JPZ6caI4SZ3CRIQQOwb53a9DwQKeLubuTrHwMnllSHMIQp1hnr8guy0u4ff2Zcr/8o/5Aw2m0FAgGBtRlLDXtyXTn7CnYJUEj8VvqAGLlFn6GLYkr8xgpsz2nYBj+DaSfHwxp5RU1mi7AiTm+oVulVjJhcvQJuhipmtv8lWc8eLzewHsr6CZGnhHvCAJYN53cLU/VsxCL0urJ78Xgu5ZHY50aNGmiEqUuQ5kO8ChKf+7NNu4qZGJzXt9xGDPiwFxLS3GUdxx4rnGwC6JSuZwaSRBvmrDqqaiRLEyV0U8bFyMrt9fKlpd4rOKZmj7dQxaXegEov5EJmbJ62kY+pV+x47/+URwlXY6P/l98pSe5tYihcuTNK9ntCto1DbSf7uI/30ydjua371yqayt0UHqcMlXkXSnIgU15aq7vhNiYG+n/OiemKsEW+EG7Lvt2KnDeU55uMXtTlOoeYAjrkKzoHV1CR3enSxxSqGHRKnkJskMPB+J/FZp7rhoFGrmV6G6jSmIwQxBhnxuMGLxH6qcJgApCiLW/7COALnVU9diR37MFxFhDKBy3KenBuBp5DisVtBNgQuY6okQRSsetdSc0vNlmUeE9t2dGF2iob/CS9cOmeaTk2qmXl3iLpvfARKuqiQ8ACPpvkUWXDEDBc2FYndzxj3I8FOiuX2+kxUQAnombvVyarHdz1egbQJ6KhNX7k1IOyWwxOGun18mhbHzn9uOIY1oMylcYof+TThVUvgEJxZW5+oYNwQdrlVf4JfxWxuUkzTofreQ9DL+8ZCLLwx/N7evVSn1ggy6RlH75ODL7SqwO+P9TnjseSEZc5OJjjSt4YfS9SX4l50w4VBt6Jn9StmBgKS+kfQuE4fCqhfxy8P6CnmPGSZrZIqzY6P/iKhI7CycSRIOb4Mfk8tNtLjuVriaEyLs56luJFNuxm0S+z7s+LlBAgrWjismX5UYsAhOWm/fsj1+S5AnkoRG/UpW1yjEXsvW05kw1LjSs5dEP0mNpexKeTdLo3j6aZ85c9hKhAhjO2xDWbvctYMKWOo+E8C3bKHRHV47+6RW195Yb1lTUgrEIBUC3Th4dp2XCuY2RFtohhmS6QyctZ3icM+WypNyJTjDp8X0QVxoyfBpoRXJ/nbdmQr9/jCXrjvWpoi2szd+FWGnUI7QqTwxu4cxsi1gTjSjNDf97vq+VUioC2VGFRLxW4TdDTln/fvLWjTKb+GEXSb9fFAAfS5w/fxau7AMk2/LGalhyYjiao6w1bNjYAMuPWsrkppAs35wKZ3y3z69J95zAHp5lkPRhlHj7COFfEHYmDhpAQCk4u5b2XCW7EIp2Ec2k25NoKDxVvb7IFxr6STd+f69PWng0uIVRavGboEUwHMkACP/+Tjz7/TjJ2JOZlRLJra8AdLoshPYLMX8DIfKPezOB+EgRkqOjNsv9P7gXUAxBNUckSdTUcWXKo+tW1oFJqE9SyYujoFWioW0rT3qqrIPtYev6+fWSko8tMQO+Js4n7aTqT1dLOaq1R9GxXhY5lKPZ6jCA0iIyT3Y25YidhVTEMFSz39OcSLXG23PpdKW8UA1JN0tun/AK5XnLwSIm1olDa/c/mapKFtSUYfuIgnaVTS+ls3kQKfBii2yZyol/20SugdAKn+wdV4VUb6mBsyGx1o4ZuiXgtqFTaLJ7kIT3EIFKLvTx3U0AJum1apG3oxjMSgcsNsm/gypEEaPDhYkyEzyDktm9ACvL3CCZfe+4B1N6UDHuwE0B1aXs0438AtMxMlRFg03jyf7IlzMqwDjADSPpPnv6w8kQxl2MFUpbUrxcJyCMim/A6OHVFNNbigaY0K/yVeKFw4pmGTVmcdSr15NMiQkuBno1HxDQGle1vcE+aS+vB+jfmouhxF5JSoJpuHL17MFBB1V/6eWJBSY7PdSmGw5Gh5ai8S0Ihyb0vtj5Y9zJLezOutP5zfiEGLtPHEpj67ZctI2cJxq8UK8YKLaOxcmaF/uQNCll254i2k+vFanwYmre29HqRi/tTOa+Cw8irG4QqsXfsEskV6b0ri+Mkf0/tYXmoMKmJsmlSbZmrp/vjhxQk8rbjZ0HIM4QnLSXrACwQZ1WNtZULvi0CQA6en7VJDgFLqUOLsfbayWB5k7Nd0UNdmUuADGP7qJBz9U7Y9w+K5lVQLeRtlV0ZRFcbdgszAuoqbVv1SWRIZ1qNgO031F+I2uJKT24dTRTPB5lptHetxDMigX1EmdQbdnena6SVaBx9tm6iajLr8Y5G2tL804MTIfCTFEnPG4R6MmSmz3z47P35lxQa7R2HZv75FXTIZjLMOprSzCYnJbgDNcpUIMJP72nLCemTGdmJ2EGBVrXptnJVY0hoOrhWYp/w7pkPrTCiEJkyt3ckJ+3tvO4MRMLPkPvBVTeDQSsw3qdeE0HMED0fWyQsY6JJ3GWO8GyP8pohpjN1PSUAdsE9oOeCYqGJl0lCG+hoNsIj6LWra2glNF/wkTRp3/VzQc3NsjdRiwaHdxln0BxfdznTklHUJMDqvy7+q6jioIaU5e0mCiVT0jKpWwmO/KDJTtEUogpMmZrETMTzTXXV37DeIID0EBVhexZElo9LbSp74hBcJZtYSedoBBWRTXpQ+04oBKrKbpulW5z2vrhALrwa8S/LvEbKJKRQlc5Rmt6+K+hq0A91qYJAekyGPVscdfc3TKAibqzmijK3COs4t57fUBXokHA2C5Sti51ytV1tn3NNlc5JomOoNkBCeIBQO+rWpL+bB7PSY9C2hH0PUthPW9syxfLzKmgyaBe/gjXLIr5bDvGL34ngLaDMDSs3AnShTXkGc/7qQJkNuPxofjMScNiMKjqE0g78qE03cei3agj98Cbzk4h6YM7sLEkwobEfx0Vmu30FtgNjxuSG3Qvb1RGUgnKmEHvQOvI8VJDgqGJy6pX8bdQtVRSd9+D8Klq6UNcHaT2fKsGSO9Ig+gX1Ko12rPgEPy8BkCGzc8oXhRghFFdFlTAlAVOv/xNW9wdpiSLvuzgX6pzWimD3MSQXDMZ5k3pc/lDrOEjHVrRC8THyIgeEhG4X6DVS2qej1TzdH56uISw2dpm2HNqYEVa4dpZUEGL0VKU46jIniVU508hwAkatpeTU2LFVDC9Sfa2uqi2XEBzgN9KOdF7utJ7cCqfx/63XU5XXWHwQn10sRUqx/8bCZ/Ty2wEIt24EUwPgYQH7wU2xh5G2aU44//fsCITWpGMi0qMbFaIp4fTqYMgPrXyFIId+NENtVyl20wGFQnVDDowzjrOY+qyMRYAb77twSKM/tXaJpOaa1c7frnLPzbqwj4xlQdsmqWDH2E7ca1FR3+49MXgsGUM1eEXNjk5KyHLLgp1V6Giz7BhsxLj8Xi/IZD4PmuFRTXyGkw4WCxuvu+oIwW0+HI5dSGB11w2fNXE4WFaWYRP1nwmpQs0t7zwaTcLPcXJgPLOFBSVYRArgaCZLEh775Hd9KPmN6ZoUBrIkOxzuy03M43hsn7rDAsH2gJC2CY1MjW+okfaYuKMdLvADOK4CpVuNR/Ct50/Ycpi4DX5vdip8/O5OuRKfU8WebGDckPkBGqvHa+ZB8f1d7LaHcxqfiu4XRwk+9kwhnxQ+W81CF1YFXB9pP+4FsA6EEr6aegEa+jNXRSK+Y0+P/htCRxSo4QmlRIjy2qnwJ5xsdcAHmmTTlIQUsY61USaWbHMqTJJpidi982INKjWhpFA5AQL3JH0kYqLNBvMF6l69Pu82Gh+Pz2VHFbG8pf3THFoItITlJhp9JMstNqVOoNqMmoL61GP1WdiiuXxF6+hIzTlzn5xj7UE/MN1jcY8OyXxKsRugo0QQHyiVrsOQW1RULjEbHYhWrY7oC+fr9MjiS5wUoYOeZHrAq5gb7YbGQtwUkQCYETaRrx/BzkMiyEMVga/4Wy2mj2RpEJBssCmM/FIDSAapG9nxJG2wt0GvyvodlbgmHFwvOc0hCiqiAZUHRItjUT4aGqu19RXPUqkWDlwBaTyxXmovch9sGCFFotl+Qoy162efXfLnpv8HQNtH8RxNIxDdYBaSysPfeHM3Rxe3xljLf6uo+xWaKuq+dhvKFyS6gHnJn6TOgkdhQTR5fDHh72QIgD1cTUPziNKtwTa2uN6IilRHmmAAXD/8bGBVYR6tNmBvj0hwaZR5OoGvrHYCoXnX+Py2Eo7oui+PthnnrQ6z1H73m+ziKlhqtsnqBrHlBZY81STuWVpq7GPexBMNn3qdk0L/ejiv0ZT8kw2FgPiJa66+HGDbM/ljUN3zHmlrN8ef9WCwg9pv3fX2TpdsyQOKquZBxtKZs4A1oQ4XnCkJeAUs8RFOwEUeDd79rJX5HY36JyEUUF64n8WGvxfJ4RjyuyNxqWaNjzeFpYWqhnrUUwk9c1IaRObcWnDn4T3cBOKQ9IaDMvlP13qP6SqMMCcEcNUZMJboLFqkZYaySTMv3UiGYAmeaKdGMpyXgmhDnAhWGj0l1uvbeDT1dUaWgIbO7DLzfRnt2UBTvhrIeWYA/jT8NSJgtw9qucWnOQFl9R923ZR8H72pI6uUNJvR7morpsCeShlKit0ueoxiNjehXaOGrHk4cF2EpdXK92WZJln0jCyfX0zxoiSTIqjdEcx1m4dIpx4XO4IFiLRtG2dsRrfIIv3lHu7Xa2oMLXiyxERxfhMD5VnqG1EOPKWMqtDlG6z6ZYIrAkIZMGITcxNZGEEd4TkHOb0mb/wXGYIoil0rQY9z2G9euwXNpHqKlVEbGDdj0aDh/6X94jtlf7miwIwMzW/BwiPinp6GEIOnyfLRt5XdouPe+eag6TM7qY/viPNsC1WK10l5EV+DGgy5IQ2nT6JW+ThNX1R0rzeo+lR6cvcQhx/5TflfkgHoxJgKdyA+SJRTT+8g90WKFj/bknV9bC7NKj1wiby37WQjyLKpT+GPXXBSyZXwDhlOmqWgWZh0+4L1DG0L37SlOztly20/YhkEFi6zQJHXLcIjz7/O2kGo8SiDHdEZC9KE+jSjHzSr1Egz0nzs0SKk+t6oBP5PWBnnJbN3ouQo0eW5cCyN5yMEKbYf6uf3jsTtFqD79x3KAybDtg0pYsngzt3cV4+V830jwHjemULYEhXdNtiz9s0MgC0O6PMVZnS48v4acvwTngzQHe0z2pVU/u7i4N5UTfLjlOTFYx96efGAzPhx7QfSYaO9b+DfJTbfoqmPwEqi+V9sjeGgNgqsS/Siu3ns2TUMw2JhZz/r12mnnFzYJ/TX7GzsloccnDWpywL9zLhWaHpk8l91FOfbH+tYr2IZ/cwVyps3B8dPSMF9rOH0nK6ZTtFxFg+We8JTOJyDG85y4zdB3m3h9VZYJDHzuu85jMUzL2+MeC1vqIDEMFxTK8pxNKDjEGySTM7Ui7mjwxi3iOsCuyl2Z5ue/9Ih1/XNZJN95XIwKe/4jQQxMrevQ9LI9O3NraonhFwa0akfMgMmU288PqvuSATF/U/owwOUNBTExLMhVHd8BDfeiWIO7HTuxgpx/Qptgsf2/Sjn0orrFADqsHJ/0YpXfXh/yo9f1zH4DuEDLXxPTJ3z3AG9633J2z0v2gvfSonVQ4hXqAR9rI7QqXFewz/uQxhiaDuuzet2PAypdJEt87ZkgmIKNuHH4t7ZXn9gOZ73A4R4eRpO/LmblXwz9jg1Di/Do4mR39nbV2ZMVRlY2obZzypdUZ1fvTOo0mtv8YL6aapHYGu7loXf49sZBaUUbUtXdu7xyVzVNd5APDGN5oRahNWhDQOAjJNO+gaSuM1+xzOKNKS+ha3p7nCJC6q+NCi6tw6/F8zPCDI7FDIxSorpAAjaRifDPV5oZmOGE2Js4HT4+Av1bPrhBi99+kOkdw/5Gu1oWJ6LZ4JQTVRjsOY5nYUnVMHYvsk4rrrb4Hh/Oagy0Q1JuF/EKr1W/T8jF1xIPMngHwvjwZCkGSIkoDxuoiO58UsAaRkI6kD0gbMu0VGcGyaG9g3Ki2ZR3BS1FfpZhUq6axQOn0hGdtU2uGQhnV9zlIQg1VJUHURrsMk85NcuLyjjS5FvcRhkevKdc9XJJcOpaa+JtPpD4BPGVQyE8KQZQZj7/SMC1xydE025m1DCU2xCmO1eTMozq6zhtjkMgdG8bkNLJvknwV1vdJBGgsUiryo01wpWPvxI90eF/yU7w2lgV3/PcHi6k9uBz2TlNNXg9j6bDBOm5ngBaWfAwoPL1w1URbFlieG0t6TYxmMNFvIrxJCCcrQwXAasEvkEY62MGmsAB8HT8sNRtIFivlX0UGRYnBJKGJxBz/LgY5KLDw8lfci2kLXuP49i699PxlkyKOouXCxOP7D0v/dWpfNpvUD2G3SFkOOyr5fQWmp+j7NxCnx1DXSpF7KJnjCOP/jWomdB9RAxYp+GLILpGrNmQCepClUBfi/SllTn7usbRPEjdiLcVDLFLTxZKW30aZrtsIARGdJANmBTirClKbwS8JqRkYMvCs10dfkdlwztI4EzQw4cztWlaJNo6Ud6+MSJwGCvbiqU374kw2e3VySdHXNz7EG8Kh4UUXdtP/HoltR5d+kOyg/eq5bxXmguq50nfCImjqomBegi7WTnl23fubwt8nWE50rwdq0oalz4AY+Q9e+/OuJhJudit+M0HUi3JkvOU38Vr5+w+WxuKIqqiGz0LRYm/SCwfX5mHi3t+8MKybr3M9Eqafp9+BIkx9O2UR9As+zVqp/XLYtShPbD+KgYwVY2DsfjP46Ea/2BAxv0Kmg/cmA0p+hOs3N1tnVEm9IEaFW3T2Xz0zaAVd01Tcvvalt3/BlVFDN0uB2mai3jRhHYzqw1eSSPHDqj0T8Ssq5vAMbbRpKa6jIPqNPRXvYMprPMjlHQro1i/vK2i1V8I2g6kCl7LuNogBVKO4wkqgg53gdFadS3EdWveNQHBgyBW9eFER8zIZ/1mPSK3PZxZCqiehAd13+pCrF2pPWRcMJB1Paaaaf+mioDT6LpeaUJe3a8cTvfjBqBtGj/56Ju7uCg15UmxVNWUaDBb8P+Nq50X2BBFJ9RuQTstEwLjZqOzMC25j/PnVUfe+pi56jfVMhvflY2tB8BXZZ1pSELFNpG57Ku2phtjvkORDLjBUOWHbJz+KHxVnaKvQ6vUPXy2mUiSKtu7MWpK1FQdAY5ozQGZsmo5JylD+rY+uigchJaoi7hrOIojR1bQ7bkXVhbcy9qDCwb5t9d34QhIGP+C27ipkoVA0/7z+6UFPFrGKYcmIMkymp2FmGop0jG6B8NNv5uK64x487FFSzI+gtOz1o6vnRWURU8zd66R0UC+QvgOiw+TKOAPsdlgXFd04xlh8kRSE1z0tvDpgQqmvbJATl1HIDTFWH4uPRkRCqbgvQ9d8ifnv/HfQSV3RS4S5c2sMlXhI/GqyNlM9zAlw4yqi2kL1Jqsxl23xV8TKimUEKbd4HvZDUIaLzRzwQgDD/7w3wklLCRvTgeB5XK4+RdNDcTL1P2jaN8lVm8qPYbS75K7tOVWowRhpkzF7ofPKj6XPfoOR9L8TZ0uhvfz26CgBiw+Q9Vu4wCf8p5ugH5idKfqzrz7lIinzketvXWznhB0jgfgfon4CNjvLGTIfAiCLkL/2F1DgmuLM0Ehh3SxNFxKY6c/oZ8iiEuoZdtwv0n3+Wq6aLyfMtRT6MjH+NO7P3t7Jkw+PYI25eMbF2FogSNPYrgUmKaETNh49/90wXnG0PQGxHY3YYUw9S6ZhOCc3nncvSR4WtAGVjHfXHTveAJVFbdzT88W2XHWjyqMRtDyGV7i8Yj6bcc52A5gwxUpzjiZgVk5UW89jPZ2eWdTI5mEJRtcwy6a7pRWTIjO0cXDA4cYfU/UJo2qO+6IBU3AoRaumos2VMoPTR6ZFedBtZhTGlPl7Lmk1PUiY3BCdXUU4d0rHoxrVt0B7Pken2OvyFYX1PdJ05Mq8Z4/TXR/+xQayEAHN9byBNBKzQ5FllzH4OtBeRiRjeC1YKnqYNIXu8XkVQn3Qr8PUx4r1uwsGDP2nqu1HJdJtXgyQtjQJnmnA2b3CYFFHO4lz1kVuaEmCeVl2kIBEA/8geCvP0HjT1e5h5qEUVuzRWvABMjxRZNSfY1ZEu5y1Ga90NntTBchaxr4/57XJnyObG4TOOqsTpIcgQy67ef00fjWaj7GUpXlVAa4DYVaORwsuv0QNVZrzPWdc17MLPiup0e86pTcWNe21W77WrHc51fQg2WqYisiH4ei/oPwHlvWu1xU8ved+PBn3EpzB++RWjNGzLQTN/Is076F0JJelQSXkCm2St0y2qPIfNYBtgkOLCm8a+HznzSeFdDoYnaowE+x+yXfXejWda4FazxM9QEecNbJjcarS0Zp+NX9djvvhnx/1H6kFFtvuVt+ly1MLz66qtrHHx7vQvojfbbGsUx/USACDrfaxgSeaUv7dRtBL3GQM7X1cpU8cF8ac2v8qXwd3Z6rhJ+aCge2HZEppaq+DDHURIMHLsgLdHPkScUVpdqBOW+N4szJXy7czu34inKL1EtXmvWmovaqabYkbvfgEhS43emmascuMqLvFwZo0umWMlqxDD2wit9mNDZNSoY4zUmPq2OppfEWOzTavWvP7/TCEY2txe8r9L5rjoKnVUt3zbfxk1OIOrfJVFgnHQVjbHyfoYNC3scn7BP+dqyOZYuWHStj5BXhXy64oA4AIYkaxWetEnyvrQy/sOgBtiz7v8mkoSOcAceFuaKY6a/lqXbulEHxH7BUictq7NA8ugp26zsA4nQHgwfLF4o37EWlxl0bu9KyCF/+SRUt6COVQV2toFR3UAni3ouEO3qrd7flxGTGMu8+TGYlf+p41vHFnZQPYa1U526j0p8VOyIZqLrd26vqrIknQQI+8wb6a4NQd+3hAGGVKlrcg9oITwbZjVrCZqyZMKlnUKNE3XbJ6sthovpROSA9Fv/tOD9U3i9aaMPryDkwO9D42yg+MNT6Tk83mbNFAfXVNxo3AkX6hRNnZcnThWbcQab9fw8wcxy7hY+kjwKj3ehaliuQW4bIGZNOAFqabGj9j7Gx8i9j4ibhOVsFglAYxmsRXvRbgBVFGagRtZOLLso4sUnrED9J9aDXtwLecegrU8DflMwDHtWxbTs1FlKB3HNLDalr7PoE3sB6ZD55aUjA2pz6/FOwFUzqD8m4NERJoAPTUWWBZar6b1sqJDT0YJgeAUBrP8NAUyuGfghPteUyO2HsJhy+5W+IR03DXpvscDpFy08nXvPU5W9kYPJi1bsmRuGTWf9ds3fpdM5KkQ5AizAABkyUn1cAVelTJ1A+BrnMU33jAXX15nLfjsc8kc7Dl1VLl3n5ulZOP+FfiOFT2TMf4pbpWgUCCHVUwJq0QGkjlt+GJ5Tzsf68PPkXfNKfe1CiVdLuYsxbULTnILnW/3pMuB8tjm9o9PbLHfMkVUXHf4yNJAX5NYwiqC3Uf+WCARfCd4XCDvgprs190EXxa/GYN4rZCDq6B2b1h14Tt/4sMvctlEpPsb0rfQBQsVd90VaSto2bDOIeBC9t6sylu3RKOwc3qvQcUHJ3R8mbJ3iJTJDqZqhghq46aLCC3/iL850hJ7HFNHMz6oTcEOQUPi3n37mMGdzOM/SpO1x4VVszp4FfJeHG5B2VIzIBgt9RTJN2JBJcqYMyl09vgidD7N5QCUW0Ohj9a4dmHAHPAEGg2aA3gNtShOlHhZTG3FOE+mQ8kibqm318JW5tNba0LSgWvXHjYb31vbjXnUm9Ae4wRxtaPCZj26JZipD1zlU4p6GESs0Yz/1YfnCL9neU0itQHHtfURwfxCy5dKuRbrJim+qnMQjvvjfUAXo/6TxV3Kj+yqmI1ZbxApYVl+y7w1kVvuClvci6VKlTVc4EWHBTdvKMqGBdB6SOk8yW2PZ/TrTGjFI77anOp6CqldhH18ZMK27imXaEut0qqHBcvVW4IqhuyjP/Gks/sTolzCTuLb2SoeuS6VPuFXUFNoLc3QnNvHF60T1AJzFEGYRSqNetksbmY+98QOloY+3B4nCayt8eNQmHZjbGh6IMDFcWS6gnXjtHHU1FmtSMe6xcz15U5s2SE5v8/6phC7rfnRdh03U4dGHOcXK+qBjs2LLFfKYK/vPnVGyd7kC72UKJOf31O9BWxeEKLwuYhumCrjA/Ga4vn9Us8YSK6DJp4I4cRgBvs35LjqJvjzcmubt0Boj3NuQEFljlphIXL6w0w0Z44dXhNfe4VPf289N6+9gIZUjo1oZLQgxGTimOuT/vdPm3hAHriCu3HGT9NWCtrPSMvjVw48Jo4qLorVdPfWC5t4GjyGXkNqlw9DShbBEycQxb4vFooQNWa92kXOnIA9B6qfIZ48RrzGXjZtQYjgItgklmMe3E7othzYtbmCZcWxh7PKpiB33Wr11kQVoIeddI7rj7umgJ4/2fnU0K0A/i8uFSDNe7JvU3IoMEnDrZTKciMlRZwJ2eozOYpLYUAkiwZ7+303YADyFwC1/Y5wFF1dspMaLNRtWT3TmSFxjz+yq4T/RVt1eo9+v2WQ7A3zS6K7O3Vk4ZmAIhCmmA167oxO2Q7Y1KyMCuY4qpMaAJKsdTZ/nLZdDqABXaquLNtleb1tKdYgA3Q9jt3p1EwGpeBmxJ7oHzrxVU6k1rJXXZA9Lccf6eTxmPv34/7QSWPmd95uHi7UAq6QbpZ+VZ2ZEjdk4NShHMsOtHOmGbgenT44prvU5tgZ+zQWcdGHG63iE2Giye2T0F7ou05CuTyubWk30FniUEFTIWJoNmoay5y/dGqpAVcUWUsgiCPZX8KGWvfOgv4/HXsOCVBam/eZhwcH71KiMVe1/TsRiL9B6ao27dgIUM+zuCY+V4xXOmmo2BABGbw00gPBU0Tuk6nT2HGnMS6NH5BUZp5wcJR/ukTXSnGLuqHErGDia4Ipiwq26hQ6pg8USoWVLNlgH4PFUnHfv0HHXvdjXrnQeBu/x/xsexsjvKu47zQcLBf2OKUlHmxfxfTSYklNPr700Az4VBnISnWEE0QPE4k+QbXfxHpGHlsrMWDKSF+SknxLS2sgmR6UxYSwasYCd17una7WI4xj7JUGx4h2g47259JFrwf1W2/fP27yiJHFHSsrwq3JPslGimwooRUUtqzJeX8rCNRZcZzcN0uxL+j951u/NYyhBklHptVUbu/GR6j1RIktkMpW4WhEgZlNUVbZKEs/ZMiPjoHpcqytIACoqlYbgZtI2PZ9b1BKLGWwcLNPqgmTbiRLG6ihvauWLb7OSGfK3q9qtXyixv+Sw00F8VfxPWeApTqwgqgCZCjyBZXm2NJBuRA3ksspq/GBQsEgv7Mj9bnnb/SRydsnabnBvEnrgAk65FQPeOs7QvyBTVW9FhdH+vHGzd9NP+uHOZtVEXrwWm1O9dXKjwKhhE8zjhXbeN9ETGRz7gyYE4Z8UO5DJsf+/DYYUzUuRV3shuK7X1lxeK50iDuJ91DbHFGGYW1w+xmlk1HGbQxBC+v2Vi16fgJH0dI9VDWM8y48jRwvqxNb00YcnZzd7XVNj3pv3n0e1ZPlm6FCLuDp3DCyoRxVEZJvxXkV53x9tpitl+dvbVBUVk9crk119HF+xGNTLzZQfg0F8OnFlZ16MGT81ga/i7kvliULz1D4zWTqacKBwstFvFjw5oHMUwTxOKtglREaUZ9pHSMKMa31xJkixt8NHSHCeJqRNYl3laOSayPSMTqz4Hejxp+95OkZy7M6zo2CyTPID4kQEtxi2mwMmrlFOjHD+VYMZ1MC27B7+jCwDtMcMuaElrV/rIIbh6hjrCt8UY6AmRZ1aMohG1roptVth2e1lbZrejQ3OuilT88fgBT/ZbL/N9gfwXviRX9Q6AaU/QfTwn/KPtNw1SxvC4BprlcmfJReLjr1hOTOdWNqz9OMn7ttWU/P03DrHFhsFHOPbiLO+7W4d0zQbRR2zwkNoW7Uql3SXCTfWfy97jLWglax46l3yatYiOHKrTdXJCuXOgAgE/th4xJLsx38LjSEnAR+zkSuklemarn3Tvvh8n6Pf3rA9tr9uk5nkW92XZUHb31Ldi/QKkI9WeoMPq3q8WjT1Cqo5dZMsPdAJMu7w4eQdyvoyKsuGRILbszkqjmE1D8HTcmTwOCRd3g0g/xfCnDLXrYWPG2id6vwIwNobRWKa+2jz0d+I2ypQqINnRs6o9EmoHPStsdIgI0Gf23l13CSVbMfokBQZTKbPzIvkwF30XU6ES5n3jMN70vCy+hTLozKsqckh43FGRDvz0+B9CED/Gk0XaWqK36vu24ChLQyeTwdX3olNhJOp8mxka1poJeoDfgpYDWtCIQoC4KuyeASn+vHHkGGlBnUAoJI3PKeSN+K8IueJfmO92CoLAoPRhyOMPypM7c2cCVz9odv5a9NaY0SOz8ZoxRTvoEicN/B6TUrHeFTaFz6FkWJ+VtFG0Fmo8cDBbYwaz7AqFVPMkIK7aVsnhohBdGr+dWvxEZ6LvNLvHLPRGTlhK50vLWJsITSOQyCH+7vTBnrwbLB4P6ezI9Xh3k6iwi8so1hualBqhJ568eelqy8x5ZiPn3qcFEJoi/VqVdqDiazvZhlWnso8zjAA5cZteOW2GmFj4/YZzruL4qyckMK9VsrX6Ct8eqUzPT7lvoAE5NYEnRT50AFYueASxDRcuyxbPWMvwh0328wdCXrjmLikJMsa8jHnEarOeZOlapa0djKV/CizrDq9SiPFyx/XoLEn/3e1+PGsLANRhKGye0q2xsvNvIVlJjyoVcM+7AhE1ih6Dqpg+NEVrzPU2+gRVFGmx7Mte2/1+4Pro+YAE+thANbagQSrooGjDwMtBt6YSNliZa+6hi2Z6X9W0P/QJGIFEZ8rHyL5MbVN0s9WDkluThSBpzUNt94zl8JisgDyfwiG3z+tFf61CjlkskXrfzXO2lqCACmhkcMUR+MKa/Y1lKHo7P3x0s4kxFEifx+a7gCQ428ve/4KTkrrPELWFnoD8mtjyQ0AHZgEsgMtX+D/zH3a9eslyitA10arnpYa/jGIP7sXrXKcsZvDGQtKtN00Dnt20XStwOKbrC3FjxkjZPqLdbOzHTpQzDDihuItc/V2Gc12g3Z4sX3dU9exGpyjmQB+aeZQ+JSzabHdQ7MD154A7228RhAI1VVBOxMXgNpgE4hPE9Ff94f9Y1I5wQzgVmMxtpWXydZqAIHkBqFhj7lnUh6KmnnwZ9uy6v/gu1nPBx4obYdl20kFc9F2hjCPQrr9Gd8lsECjELhljsbSXOzCmz1TEpAyYvWcxCnF8T52jep72aAe6GFUBTqMKHAMDMuCNHkVtDE/Jz2oHHjkuE3YG5xeTbboE1Vw2/+OXivyI9m+xBfQZHh/fZekjfHzy8RL0U8qrq+TNe9DkINx8EeemezXLPBXFD4ZmgkwUYarqWEfkKKbL3B2H2yDyyo1wP2zVumsCqmoTZ8FyR6rVz1pxaLLauMkovB/Mo28qAQ4AbwO06frDsqrqrB0XsbBJUROU55cDQbwnwO03G+UilnDIvlz8olNFn5muYYwxCoFPRjN09oYOol6r++J7GfiDYFLcmNaHwYx9GU142OfQDs7mjPZtRrur7iQifHXtdWMAUwIVCiCZp6S6tFxIg9c4gYF1LmKp/FCzRIYbnxw2N/TuBwgB/Fb7Z+BLnbA0be3TLfRfV3cBwzVYblCrgOplHo4FyjM0/yV/55YbyxVX08GtAsjuslHbzrlW6Uqpo8jZsWl3BJxeltJnsq2QdPNUxyJuz4TZe/SVkL6cbHhjBwhlTYiK494nHLGKY33D62BhcR8kd4wff4hI0SU6AoRMQR5lVaQdq6e6taQvyMQJTGFioKXC1exGpx7spxvaZlm+0GSHiG+nT12QKUDQc5/EYXjJrVB0rNdHnPH2ackJb7rCQDmLm4UiHMnZ6+0qJhVPV/0RNH6pAk15ueEztTmR309V/MnL3rTIHoBuyZhwq72mLVfjBSErA1GuRpr+hFpFgkJfc9SY8orHE6H+5T4p6U6yuyJ4XXxUWCoG/rQw4eE8pWxuYn4YAQVqEj/B2URfypY2nZ5eatURlUlIdh0ocudVWcmlPFzehsP7oik9d/dNyZseH7uB6vd4bg+8Kd1LTNh9BWi8+mTti+znF1EGPWyouQMly/ueJe4aksGLW1AWjzZfVO1eV7SZuNhfiNoZmXH+CIHQLaJ4D5rqJULTQUr6yTH9VOdNfT836W07/6qDC+2ZcIptTqvkl2cCvIxpOlifcDjyOIB07NGSseO6y2BiNYIfOtW8/SoEV6547DYhQs0T2NoUX9gEpp/PSJ+q6+zKQ8uQBoFxusqS6Y7Z1wrKq5LWZfOirrHfHpJC1m1GHYMNBQ8e7aSnUDvWGQYEUwTxjOFOZU1afdACJs9HTxtMngR8WdcoZbn7dUmJmdDEzCr/LCFywLiLQaymwPFMU09LM4xyAII+R4gqvqLnQZubQZ+rYK9Rm0dyfteht64uwraROt2sI9Y1vEpQZBjcZwpvEwnqsEDgIqpSJ1woiJKBQWr9WWSjYitO5tTFoigLLh311BZA8p1/geNliGe/M8EsAqxg7Fovj8u37o4C2yoniMPhc/5QsPpYiNP0SV1So8ClrDut/Zzv9u5sapZPaIUsXHnUxjioCFaBOxAoJZsEpjPXqjFBZgBxPh+r1peWG5BRE/PdBz1Di7Io6TRr9D9msS1hNVHZ6LDPkoUQkmvMBsJk2IaVJSC6o7x96fQ0eaAEGQ7EekXZye4ccqZN5tNBx5Ck0T2uO7fTJ/neeIxQXR0CYAaEU6t9Kgt16rCJuFEyR/hp3mepqDAVTLC11Dxz+Q2Pmu2z+O8eIs7hY6u8M8syqz6iMPcgYEfDdrSSan1XQ708BLnOB4j6ZH3WTK5E/SAsxbh824+DH+4HdQfecVs3mWgD7C4icOied5GZzzqiaLQjQeVhJpzS89+U03A2tDt/4g9c1epRbklOjsUs+iziUYyuqkAGPJcqc+gVGUgC+sKiIplColZOjSAexMu+pyZ8vrhUzc5MT5tqqYMXALyCF5RJWyN+GhHky3hoPlcQ8omyXYnKIETKgjKsjG+IPU1bG58xUrTE1trS2/nJUlal80jfSZv8dHAUbvvFRwwWXTbDoomWu1yRjyYX3hDMD4zxaouhMFJOYqueco2qta70s1wcwU/ORfOv1EJ25Nrf8Oixkif4kSsslhT0vrM+Ev8SDEA5bC0Z7mS2TcOt6+uZJjq+y+1NuOHhXCDwMiqDUmCYPjpl9+rZvvw/EV4zmHAGtljnDbr9FvivPBAEI/x2ZBSKEtr6+J/NGeCbCUqY7cgJbCtjlwu3Y6eyGCrYPtRGqYGpKg7O3FRqQQoOp3AMeIB1SHgYF+TU3J8+fOV/g1khkdxZrpIPIEv5iIxXZjzKuNDtWZMFX+G0eWzUk/miOeFMY6sV+5Q+uDlmRQC2i5T+DJ46mxeLne5JR+hMOVbh4JypQwgh9b5BmivAY6yyboRnNoRnZ0CgtsQhFeaDq7z+5m2mlQSMFcmtLC9d3o6pbO/ZfKAZ+NXfeg2HB4gD7WbSd1dsgJBm6CkwnLGO4sYKGRqAN/2nIAYw8VZmPzGA9bjWjtRKGejujdxdV26JaOWQJAgzWGtzl4Me718X+5+CNtg6aSoa/gr5DZNmR4mohjtSKBk77ByT/K1fyOPImVn//CuZ3hZ0f61DhorxuDA2ncTwbPV7XUx4u/yIH6zMQntMrwiNfe4okbr5o8SSRDZKmMQpBRvnM+ca+DdmOBoXk8KrIBBnWz4p7Wj9b9h9LWMXSDfVBzqtf0mAqAhQpf6nFUjNuuTjxGhk+BJdKif8z0cwtvmhFQRFUv0904g7cBLRIaOD2CBDkNVEEpxFUNwJgTFT1p52/qtGd+jp6HDXpJ9mvRavX9ZCgbjxtg1iP8p1f0WwUeAEzqy4ihi8o3hOBK5iIIpchbeIbZXwV3sWTc5KwrkEvFydqtYoNxuGJcYxdu2EcnPZ3oIaWIdqzLg4gxUFND86GgyTXtUJSm8Z9bdDOgRcRB46PjSg12mStJRomujZlNcEiOBINbODyRe+1K5mOAEf2CfiSqJE16csBH5C7pLQw0+89cQUmLh4AOR53rg2Pc7+uVWeoCx/l2yLiBRXoaR2y/qMGAmbdFOQz09IQfhZK0CvtEiz9WCj5js5PkFq5oXfYAm9MzzTk9bNtBGoWnVjl53mj7hAGaVwb1OS17uN2DnuUbCRU7TwTEeiMYE+P6znfb/G5gK2EP1DXMTWiMlkfwzjTaxtOodQnzt3/SkxrXP8ahq9TA+GCKo3+BAob0u9k1SYOYr6Mz1iE/vOkrL0tDBWL+sN9rzMcQ5a9UfLnJS8PDNARL+svAN8rbNRoYL4ACi94LlgS7jqTeculpitS5Ro+L/irnxjRh9pk6BmoGJkNuz43oqSmt4sSX1LfaBHwzdkvhKvz0GEP8c+q5zOGmY4cjE9O22e2IwdNo0dhcaAy3WAKoNuscmxdwlptsIU15OPvqRMifYA9DcG/D7zto7yR1BKwEs+1nVF/zHY9JyeyFt1BGSbz/lAq8oXubei6cU7iIydkDTPQS1rAL8K4/gQYyDw337v31xud7SkHeJ37QP3rubj92dWTwffzNC/BoOig2INKfMGC0rd102+1X8bNlVy4ZfFl8PN/jxXruZ5rGCxecThSMZH6W1otRyzwhVFHG3lA5giJ6y9Xa++rTN196NbcZEijUSShsLb41bw+QhoeNMK6E1e6f5UzsjCove1DnjSYEaw1f2gi4XPOQJbJiju6rh/V8O7GL5nzZYIeTCNi+oC7c837lQgrhOB3Gvp2zHkVj33wkZgo9HOG7e1tSoVla6K0NluejijiRJqibk5By/PW+pYk566d1ZhCT5CiSfaY8d8Zr8tchdpMyD0cBOCCn9d99VREHWO62wnPn3zbbEcexdFE0MzJNvnVxRFxUQEaRuCNMerZyOsZX/ry3fLp/B+DHvl2bJZ84QBe+4r4/dceqxFAo0R5WWvoeQuPp5SVCFOi1Oet65kfEcg0UU6ZxDpemdMXAP4FsdXSJ66PoQU9TZQe8BRq9IVQr8KaO8a3WDaGlyu0E7IQNqzDky3+U+NheBGKZPz/1I6h3F0lDZpyiDiszvWaJ1TxSb5t5NDfkRyWzxjF+WSi+tOsEEqzWBE6/oJ9l9LM75RRYKv1Jq3mTmV94Msr2EfVfpu5EXPjkYoSqWIme4VCoaF9APHdNnYCa2VMF+iSv2ZF6PZOK8saQ3wWYq2q982R0OjZ1OeeJImmcuphzTDWzKQOaQQ6qhL4H2rL++ruWWvXaU6hFyas6CRoAG/RHBalr0Zwtl5ZxbM7/87Lv7gmhBGo8HXOYmROmYvQi4Nij34sOFIoiW88Z4uWJn6/eXReY9whHtljmVh/A3GSOkuHYKVOSSjFQiIEkvsYHBInhwKRElACJb6Ar/D2GJ2hcOOGqSh90atBqe0/GmC9NGmPVbMY1wvsOcfTIwM/L8NDlQrVBYxDiwanfIK9dUdXvjwENnb7Gapcb2X5O3p657i82o9fMAa7prhnZ4oZuBy3zAmE/joKzF+e420TYw/bxKPlopFWL0vn6akdxrHUt4ssx3Y4ZcWcYdvq1Eq4RYi5LKCX7c/3/kyHYA32OOB0BjBQTzpqbbb4nLl5Y3CoYszwz+up2fP0WgssajfH76DGQ1Shwnw5rCpyMRZ97qFzwKD96XvC5MVstJFc9V4l0rYHu69E37slHLXKjzyunkgF0ZD2G674Pb+HCjDA4qJJfQSAKyLnsDvl3Pux7RizGgi8rv5UnAhCXkaSD46zputQ5v5Lxm+aB/7NWM6ZH7zXOz0k7XwikBa0sFaJdSsYCLfAtiNVBH/k+L5XhV7re0e17i+HnWRkEhgvn1D7EtYkJ4jDRdtFXWnL1G6Koo+kfp2A/hlcZlWDvSX5yvvH6ejefE9wEAlfE7l/NJvbWLkyzhub59dQzcA3MmNHvQkdC0uAjrvqYxjA3REISMtz/T6cK7t6IkEBPjPENW2q+UQq2uIvBBzUv5jHpecgtKb3RoWixQ1LYaJoC2OYcRC3yyWv6C0PcE8fzgUjLhig0RodSj3DbHJe4lTyitoz/ierI0a12N60+cQkdTxr1eQoliOTeQ8VyghGBIONe37obRjBUFUWjlHkcdPACEqDpTbsjqO3HBVMkfdXZc3Sgk0F4QXxi2pSYBRdWtKFvUaJ2piAeeMBWobHBIUSSYvX/Cmi16UJcdgCwk1zDMt+8Qb5pcbJ3VxAOSKpdCaGolUQz5F4ootqyE1P3NwQQ/ah8O4yO+h37zn/pPJXr7qmuS17PGY8QYR6dC6ZqcoTKCxZkW9U/RY0ySOtHy73VfVaKS5xD9kTQP59xoR2Tb1/gxIleC3BD0TK76cdEHVBGWgnSPArdKu0rpyFTF5416ExX0yht7sNSOKc74H7yjzsk+XJCmjHZKBARyZEJU9T9uN0TdP2E6TQIVYhX5cysx9x8WHeMHeFq7xFPTQPVtfVeZK5JMZ17Y1rdo4la/Vx0uZb6Cr5ktCi8aaurdUQF/YYIHhQZWdmb/AN7iTrbCO025BUDz8BoGREx5UP8Q72ufqua0g2Hrtxggfv5SAy5Ufi6Kb9hpc52MczvUlpRt685we1m4UBE0s0Z8cf77BIOdIckSdxYycTEPihu2UrKL3bTWBnzfBgMeN5VGoqyFSGPPvmvdw3uzpQl7z4RTh2nxiRdnvuYErrym92PzHlEBaFGOBmf3I/58meeBSSH1Pqg3tWLmY47JqAkXBmhLsNOoO4dX8eCsVaIpa9o0hmFBg4SKxK6mjDUb1fXnWSP/LNY15xBiAlKPra6CAlrEQNcqDK6Ew4Y9tZXpCsFIsGLPo3HV9CMMP/4Op4PodEeC2UMl+BJkKG0K7c9vX2fVynRN/tTusjq1K64uvvceS44a6xBka3puVKuyLZcoKKC/i0M/3h839z/OIPxSfPlCpYkoiBZS0oMEowfR2b4n76ScPMVewyUd1BOWUzp2IsVjXkPrZob/s0iBOH/vNr0WA9q5VaibsVO3ipBkebaLvmNFjAbGm3az7KXdHSKhi18jUc76gJqczbKYbxhVxiMmBqzZwV8VT2QrGwgB6c3/86tqHf0f4+76+SbphtiwM7JJKGCP5XXubwD28ToxGxMUcSHpj9CzOM866wQyxYfh5/nskMRYteCzsVY7/GaYGp+A7N8gn0hGhQezz+KIaSwzu5BEciFXeA/4glOBYqr3gZJLGuf6WxwJrfDshCwTJXyGU5y1imKIf/YQLmlMSmMT+jmmHR5xaiYWTkLTgGpvKNZDQQgQDo9/VkuE3e3Xqh9Jgw55hVWokko6hzSs2ZM1CVKJ75XvXoAczdZSJRcweqgNqSWW9j241iHEG3ULCBTSQYXCLDewv1fSdYL+diTPqppYBiKlZXG3iA5qoykm7hKAoJDn/XMc6lakFv+HNtfIGsMl6hERat588p+SOoaABibCDwA2mXN7FfbeufnisxdWsMleL54vMGnm0FOBW+XGTIFFF0bDyawBN82rnNGJLRdKLROhmsbE/XZZyzvva3joQBtV1lB5Qx6oZD3AZyxqbwrjHvuI/Fr9d7KAGbKAsQvuE435ZpGHOP1OjWb53RnajjivrTSNefC/PLLFFJV2Cl22uLOHgEwwO9GAv2rnjFuyZov6pHXWfUdu3Y4bhffzJk8ivEPvkJzd4Qwy41QuWOVmsLvbcU2ErEKhnzb1LRwKlgrHN98/nPPynWCe91CwJUE6ir/udJNR8nK01cMTC74D5cZt1ZlOz0DbnhWIzf9yyh0XzxlB3Wy5AV1cGCXGrpRYee54MFuNzQo+StordnHj/3neaKxxrfa9Za1Kk3jzc44JNulYA2MRYL6jLF5jEcRUIq+/aobg3IOwqvRq611jIAXFaktjESQQSqW6QRdMsQtjhxlmp/6ONGEQx5gUTv1CzhD4DRiexnfio2EkDePt3wiiTEKhzoTgQ/SirwVF+IaEtQNCJRXzNJeIOHOiOf+KkMy2dOOAnP9/7EsNbBtj2Dt3hQw2ik9SzHfRC3QV4bj3AVQKK2aOCohpoYWsheUVyY8dHaw5lExsEc5l0zWkbiQiJDoejcVBY96tI5qBSqpA8Ymk2M5+2D8n+TQFfSgMuGL90d8Lj8f0ZlqMcOV4j5GZZqcA5we9RjC2QWSOhMFDPDecapjRhqJYsTu5ZZga5IxiLtuQDyv+Qejw0QjRhnzu+1MBXeRClZN3BkzEeZ/531D0n4Zfc386Xa+6a5vy3UthvEOGvCfvaETO7WoIK1C9mP57sUqdnO9yp9hLrRlBIH9Hrqs2xiv0wXGaogpe9KSL/jHfO2WKRuRH8sIo6yDRgj3Q2fVaJGaU6huf+gRjwtbHAzyT3KxI8LLCoP9A71+Sv3q4nC3QKPcsmZaLT8/OU8XQH6rw9J+JlhjDFj/wf6nPBoFzhU8FEfklTTWKzvwHwNqFESk5Cw5zecFiy1A8hjFT/hkdUigQ3vTaS73AhuXdOX+L7q+lPWDaQ3oyQC4rL8YhCzrx6dnZD1cBgHgbIP6AViHQxJlx9yu7CEuB6T/2iRK0XKkX+L7DO4lstdGKCQQunZxu6QG4mv+eqUXnWgcCLldx8tvGkBBsbGcbw+slyMVto3kPpd2mKYlbIBAntkwkmYsYc9F3OJouwUCaVH7/R5KjEjr+5kWWpJ3lMH+YEVceYxvsvkwWP7jzdQSPrQ3evEdEiTFHJYSJOQfAxeJYBWOWwaigtzVF5UP4xQ39UUCQtWT9Ih4baJRDcH5qgrDnKEmZVdyBaxkYm3cC6ui9nUYvsB6pSG8W4GMwxg1ihGd6CQnBD1fvmUUPi8cu4Qb/BLTGjjii2lhelpuQOZzLH/QnmOSmwDkrQP3CBWp4pRENrpd4oBZFUXiyb55l3sRvOMaAGQYHfyurrQ4ziuhunyE6RexRpXIcDebT6kgbLlASIjbiowTKqCcJgCAZJ2XIAjyQ0SaAIZnGKkrGdjbzSmdMsDK1lr6LQ3dvVzBdWHDnTLYJtkMTF9jC/78SEE/vRJxoIfPXn89F01EJysn2MhTzNYFVWrGL8eMky/X/joxSS8xaBHtXyIjJ9srVFxA4o9lXpXuOP7ljqhOl3fbH2uuH//G9wKHTlzmInWnDScE9OJfg02pReD8VP5goneprOEu8NzUiJiL6NUrKFj4aHDJrKRqJbo1pX+S2mlFLpUJ5LaF6q75jGl8eEyli1zeqPzKtNNU+mp0C/q8BhenGohgdzw2tLFIRAfrv7cjnxjvcWcoHJS5lFl1sDVKIt0wHtZtuvGOXopY9klxJhBTHphY68lj3JJVbi0gZJ5hN89T+gK1B/iE5VFGkR1rsuiiUJVqEcR9sJQ7fsFm6UdENfY15cmJ/Z0U/fcwJhIMqLsR5xEPf4AZaozMvyKD3t+yEb3xDICxwP9TwUdsz1X1skUDiTYmfvtaiSOYp99M+3n6PpJDYhT6pxi+Odbh9HM0Q58hUi2Nf9TlLs7iaCsze23UNN9/cqItCUuAO81nnUeLrlTKgfB+mhlGvmbloy/iChw7djaVQsoN2rqTFimbDBJ6P5PV/F446iQ9C1UDpI8L6wCdwHAetR/DyJ1W2W48rlCGBWXIxM4nLiW1aUaNg36bx+mOOHV1fYoTF7bEc5RuzM8WyD03rsWk106J3/2szBueTtKr7G+ayd+ZyjletscyHRqhqknAkO6uGvRWPg47CQlbwVhCZRwNvO27hwshHsWixqT4awMwf4ez4nrMORXc7KZh7bpIpjiXxKDQoVGKWq6pnzeLEMLnC1kgky8WOCAbpRQFKhpzd6kw6qD7WOfjA+yWnktj13dxRvl4tMvwcNK61+I4lL2VR/AVUtEFawaY9IF9jwMK3jU7xFqUX4xRiTX7KkiUCkOz9hpqnf2W8Aivb8q7DzLTWEkl15axrSDmtq8M6A4tyRvSXbeprv1XSQthWtare69FQOSdd3qfyR30Qw7dzE+Qb+9tBnnhnarYQITC2nZhck+1xvK5A4n1vM/HnPsmO1g8XCXQMzfrrJEaTcbjm8/cjMhvnQG3FjP6C9msnThO+OR9Ef43AMs+ljAkO2Bf39MiaSH4nIc5qWguhmSpCscwBlWW63cz76lCSWhNCwp8Fj5u0ykqbnz7eBSb6SOGT2jQbykTKIhoEMLWblE7YiRw4IrJrdD/aezlxpkKczBQMgHmDjXX6kXTzVc9zNBVczdp0OUpAQT3B2dXmbAniK4jkZNz3e/z9e8+i74v0RkMqvrL4htD0LyjI1tPG0CVwTtecVeH+LLHuNyQ4BfU2i+61f6UkS7dZhJwb/muKb+bquMoFbrEeTcL0HBBypPdh/HY8AlybDVh5geR7ZiWKhRVogzojnHQaTFZ7JhdLdFMaH50iwYL7W4bsgn9JEBNV501M6qk5dzRt2zwVK1RpRgNBtEnMs78axJhXnnj5w/ROcHjh/+lzHnVenLjcvHpb7MELAd6suirAX1dwY8o5L+esZMy3LQSmgeHJOBu3bKENqoWvn1CIzlGfnSFsN42xZzuHOI5rd7t3dGI4jeosleoVTem4+9NwqF9XrOSrtBslLjbyuSaiaUf4fbEqNyR8hGLj6ydLiP/mdV9Wy8qNiOG3NZo5MN8oE5URNX+7kxzK10V+VNxZndksrpT52Z+ZIc05Wnv1n4JPDUgko2duto2gUJyROXP+4JxVXGQXbwKj4K40nRXh0pEw/8hGKa5pJgqI6OOwjGcFYqwiOm6L/gjwwQoS/E3SLIhw8ADVnbmTSo3gv2Q9VNKy8XCDtSNF6bztQd8h1j6GnMGGyY3XEtbZ6ynnHMD8f1tmMDzG1mgV8JjdngNq4a1lv9kmhKANi48kAEn+r7vjIfr7/rLXXjx4Z0DGNB+K5EZDCUxNp1GLItKcE+l/IVgSYbWORSMeIwE574uMVRAH9nKQQ+XxELGetWMrjs658GX9Hwuc5snK6YCtfWiGyA70tnmJXdErX5cDc6zlnxLpE8za8UE+VVMEtmR2rHZCMBTWEmiXLZHjwwQylD2waSSi7w7rDyZlt8T7jwEiNigIzstJEC0fDROvnK/m1wh2V/XMVBB+BLZoF+gEu2BL0xYb+346BKpXKBX5mzk+m2o17QZvkJ9Drt99zgqNLIgCXN6S/ZkeuHQtU6jyawJl4NCVMfi1UvBT9t5QY2gH7HPT2tiZLZTwk+0C9KST0qaSzWm8fGtLszXx7x/tGmIDCx/rQNcBeI1jRjX3mNik22/7n70CnQ+Pa/pkSkkXSpZNl+EcoeqZSDfaJlsoNQoPlk5qLDffY4oh2PO4znQ6H8kHkbNufZ7gPKwLBTSrBEJUl1M4FL70m0d6tkqx728JSvmsdUBLUYiL1e6Ct0Jh7Spt2nErM8zdy3z4t/hQq0KXlOrgz5uGhpZndDqv3kjwp3PoIN9vEMQ+S689XJZuYqeiTXoKFdqCiw9NGV64i60paK/hHOPlLV77ycmxH1icNiedWVQaUxjGGYusrLYJAHBFeBsou7XEPk2eVp9M4/CnRwAWBenCG9HRMthUwfisaKRv7Xmo4uqxoYPWfyTIZka/9cSZ5vZxew4hOnHlSfZJ7J8l97g1whJ7VBe46y/skCjpLy936lBE8m1hvKLl1X73Hg0xbn2CvRq3TWWrDV8Qe7HwVbanTl/IQINgn3hW1BHI1dznGqPip/9O1FZtmRNeD47+RTncvyFvFe+N7166k0EwAAssGK3pJgTMPLSAKeOKMmc9O/Md6DpOraiYhZ3EmOJtwpeDdEpkrE3NiQ073aniAEdFhKfaPXblON49Y8JY0v/4m4NOF8Q5VFV129vJiYYXpadyR4/1857LxLJqVuSsEfkjzTUCDWSHXq7AzZIEQHBZ5jsgFxt2wuv5mqpbE7dA2yjmcbJvGIEuR12UQcuqiMgqxMPJ9761sOBVEqZh7QJSeQbVk4fwogsMPys6uyJ1VB/crw04ZyawE3aFaU3E2ThTBOW9QBVxdk++G8kpPHbBeR8+S7w3IpoP9qUDISPZNskc7HNXGxPfnvlxqKJHpsfTJbiflFoJleGmNo607IZWr4vl+P7P/QDWUgbLKvRz6w6G8o2Q4NL5pu75V+nAG/0DbQn3KRwftEWksI8HgAItTyYjco5l33ZVUxzZqeqcRPou+0qhGq2AAPj3bxm406/aePEP1xBxbdMwnI6DG8vAH1JdztjvprX/Ccq3EqIyxfWMOBvbLiQE1yQR7quh9BioIL0AhuVP/FX2iXjFAaAYYpXZpfGQuPre5CfWMTNq79fqe8bQdieaOUnQR9WI6RU5H/oFqi4XQ2yYgP20Mc9WOT7m7nivcCs3L0WXySTzwr3Ew3uUeD5aDJYzUcKWO2VvKu5vtmPd3uDqHZYyxRi4Mz/nvHFG03EzODGfc4XnFotgYAf4DqJSXo8OXiHjt6yDYLrGBQMeZW58x2yz3ZcERURkyADzHbzmm+GwwjIEvtykxMmAlFJJNsN8cxcaIvEsyFnyYXnFctJMe7GjAEL2wzQLWJZ5pBHLV0+kT2DMWhFoVHA8uWAOZp0NGZUQozgHZvqiPc7Ft+z573Plv5hojiM87oy2OahF6xGfA7J8n4MsGUSysTt+p4OlCGzTSRr4qttLA27sA7EACI0He/uXX5q+8BOGPDczsWR+dHUGaZy5Ht2Ze6m+x3rDQQoF9gcUl7oWE+J06lrq7aClSWhkv0b1+WY34zz0UoKCgjn65Zl/Yc7eUlxefzwwjcuyq1lyyPh1pB4W9amu9TCpbnBiQXddYbj4t/CYhI8PjgRkCaQE+8Vm8qcFDU7KLliDb3CuNVNreJW9XlCOEpWSCiuz1tIzaNouAs3xm/1tv2Rr3El4+Q0n/B1n2he2zudNvbz4G9mDZzfpU+2s5oxdmouk1V0q+qAuPVdBff84S6HEI0jJo1FpN639b/To253WGhjw7hPeig6uDcoehV1QdGlKJgwTYO5WtoXMi2KpKsz8pCqyNtVB0GyyB77EQjZ+NHIRLk0VnEyPQ5jsl0iOV6moPeqbxxnLYh9Jxu5q7XHZ/Gs7FP+YsHmJKIU4u5B+h13Jz9P+F+8a4U+UiWCsznVh+g4D/HUOwSr5w/cA8JZVUYu6I2aFCDpV+xxzeQjgVLVydWU9byJ1uokm+W4b8NlnvlGkiNCl4HtSMHEXxfGtvXkv6V+/MbwP+qCSZDjYsIv4aYGdHiRtXSrylVwyn4fs//b0GLrGqUZ1Rm61aeUpQCrXfafbCX0eIlKfYN6B+sYo0DCmRexCpxtV8kh8/45mBfg03mKRbO4NV5Dqk9y1YX90R6UqggrExnj4G5mtZCLjtAxV4QlFlvrGLI39Fb/mElW/EH5s/bGTWwAkoQ3YlTAy4naOLhb2WxhO8TdawBHaSrKqjc9hmu3CCsl1bBf+vn7nFo2LRYXj10ZepCoJMWsXnXwYWOEh6/cxXl7BdpibgDeBCmrdotGbqZkanCKPPD6YrzmihhZuTfkH8fvg2FpM/5LNl5RBk6OSRV/gwmRhrsNvGgAR1efJkqoghbQ6hpiCarmIIkSE3Mwc1uXRlQ5fqVwCmSwUhb/qxWD6kPNE3+seSTdcQ2vYwLfr4HhksmaU6///S7erQw3NSc5D0krfA0CJe/CAjhUM2XxJhTT+SCUnFararha80deiEaZlCXNlqqn5lrIQlbDYKPTT/URACvIgEJGWanqgeg8lbEhkO4AyuXukOBuwsIr49vutQEoKTcuDrXeLGGgzrYTzyH0mnrrKdkhORl4y1OqtsdpR0T8GsjoShhydqkZrXzmSYDTeBrXxssXPbxoFLRauImv9XlNYgUr0AktAQO9AWy+7LQ9Ig/BT8yqMXPikhLE//jsJal0uTSFxu/z/BYPWF1+t5XDx/0ifjC5Rhue1LhNKw5niJu6LehYz2hXI+P+T2HN0AHU56UF7eMVJQZQsWB5v/4nepRlI+LaLj+T/2EqBY4KNJOyyVO9CdsrP+AlLnSLKoO3BRZ4qQ9z3muX1Cf7xYVabt9tNnSgqYrrvf8f8oxnblBeE86vSD0YITV+kc7aXRhklAU8x0w4rkpuHKtu40AsECcKljVdloSBxeWvVZwPPXiEpIVDZZB8rIxixReeP9WvS5nFONpjYEzVL6bUymLiBgv5RcO1uGLI0HzsM0NIWNMoM6ZqBnvwbLjEydGkIRW1gy6tI/CuHKPdZ1Zz4TP+8L4TkKXeJODbLCSoLYsmwqqrVjkDAtj6N1zkshBXdmmzI/Oqz4R753jasjn20u87YEUPqVhbhLl4GDCj8IqrXLkd266zmUC/737HvC+HTLsXKKG81a3LqjDEQw+9xr47rm0sP2J2GWWYK9KhvuEDbJJAjSxq3eJcGD0U5pD+40ja8bl8vStW2vn7Uk4Xt+Q1SdeNxh2nKHDFSZDGr9UG1WqvlSFzB7JDB5jpuee0feQm4pffXQNYTRaDFcgswmxbs1CNTkXwAEXXbNcIP5CkspCkpyO3vTeFgEbAymD8BKSeEloe+yMNWJje/7kv/W8rwMvGq9lSw3FvrvBT9GbFw9e3OuaV8pesWoZ+JafNW3ChHzxcrK5RWv3k5k0HDRzLSb+/NId+cEX74eCVb1RFF097GBo7eBMvXtdjoB4EAy5rj1g6l7RBS2nKo0YnHQ6Iz0kVlANlW6P6mIpoHFsbl1xmxQWDXM/alpqAyziWqJJXtzJYjjsdJwuiHzwPhxg/9SUV3rtQ8FHjjpzETkBGVOaCogvPcjYpEIJIrUxqKNrcKMdxks/zafzcC3hK0p2BGFNgEFXYgXiVYpY3/xw7oIo+odnQtevH4fvlFsJQp5C6k/b9NQZJJBChwQVPvH0JX5TkwIgsguIir2nPG+onLMpttXXt3yoAIK6Hdhh+gyxrD74TqmsrZ5Lp5uE08AAfbadmDpQhkaBQnT3iQZUvsTikEp8YcTdS6pDmW/ra0ZOzRC+ZYw9iSFWowYd/rvEmSqg/xv8XR5VN6fLyQnu+MvNabNbWdZ6bSY6Jnj6I9y2cdo2c2VKB0+fvnAN831thMj367/lekK8AOwzCw2AKS6m+OIJ+Mjq8VTbwg3pIyXFiKn7DYOPS4m8VCsFtgkvAeJBiUQS0VVKEfFJjS0f9X+zMwS/cHAzM52vhvJ7CSUAS8pBNj5FmwkSjCVI4s2B3gxzuiJ3MMDxv5kyMS9vubzFn/8nnMpTZ0xzl/BI3KNmoHMPON25N20F4Uc/1AAozv4rdg3rik7U7WrWxyCOE5ppj4aq4MVRsYM6XzpOmCzgktDjYxjfYJsr8tlbcBMC6ChaYsBVo3R/GWQiAr8WpYzfxSuF3GF+yPXbW/lvQhA0hZFWk6ZkH0RfaeBzvhvikL8/20WgP4M6WO1GFoQidpmw7gq59OUBbdBumnhrvvZ5gQKt5hsmpHkoI1qHsVDDvwYL9vKRUqY7LNBmGUYSqcA/mgClCVppnnkzM6oDBuLzPePhmegTGJZfB9DprAsWjPQdQ7Aj4qAfTvqXxCr4GQHRbhH++VVmI2GVDZ+F+Y1Whye6RCZEkwdRP180jA8GvfOGg0n2Diyg+t9eqnwx+9KmxwrepyGnlToJdcEElXwhRandvU4pRU8Fwwpz9q9RdZu5zTj6foZ/xMkXEtYOKSM7E/TmjsAwHOdr6KJzA/B2vxdlAXaWjgOxEqj4nCcV0fbdBtM4h7X8a0321nuXgIVlAhWJV/m+z9fcZS7JIeS+u7AyBUviVhVnE7cMRIyTqHUZkZiamyBf4OR2uOZ8SZq4N5pEIpHQ5yasIx/fv5bpRbat0v/v3feceqGq8SbFL7f2DloqZb8gfomLnY0LrBGMnAVIZSxylfV/ie3k43NmnDN/AxCUpsSq4Hq2GUzLmx4o8YdXOIh5nQxZXnacNpgTPhHqJq3PV43JP9OoZcecCLGfAdvM9iGCDz0nVqXkmPyP+ojVSzJSsMFJWX+ykayn4bC4ACKShDjXY6L0NKRxkJ3fa9bzuJ6MkcCMNBRcppkHhS0vwndyDZ9PhSKPs8JAWShGMnlQgzqQj7yWRqoScIWAhaw6nM/7x5xpJ6zkFbpLEt8WX+9Swp6q6s0/0FDX+4lEJCg2eXcXkhthXlJhQlmM/Wb/NCHOsjTEnUnytSnlfD0jKKR34N9ai+6umdEBvt1l6eUpag9jE8ijYD8Mn4owtKddO50h2gQMLZRYa3HtSgt8M4Fil25PTJyavMB4a0DB0+ngLgEmBCbI5cy/Gq9zdpMtPcVYtLpTE/8T/HKqhFVttsUbFzJ0MvoyftRCkdUAPMWReowlItoeUJp4lKqIuDA3KK2F2Tvq7YREC+CvS920WxODdsbFTVtpbUtH8Ufh4Y/WCbJb1HkqMFSZwQ4PwtM29a6b8FtdJ3npxS1oKmBgGbXo1nwGofsyeLhE/Ql/xWL+/2Wg6zGs9ggPnSK0HmzeAGQzF6tD2zeKIvicOZj/WjLb2qznPajImkr+I4qWZCkQfs6DOPnsoECj5nIrGRetcnZFaTUIWjReBvoyq2VrhSmhXwgHPZePrHwCXvxfqGKZJY4if4DuFy2LzKBkOks5IWtMn7pftespfK2rGMo1coVuqPTlK+OzEaTqYqptC/JzectB7RIuzOjtZPQkaTybWC28CVL5P6s5GoYd7bbP5U6t3U+GLa5RcWA6O2j57vEjGJPb7pLFPT912W2rKg8tK8Wnvw1txPRNu1ENdrldZUGU46HOKcgJV1CBsehEQrgnHMRCyz2BqlOnenVTT7p2UCApUGeBaInIF9cDpSviuqolqgTHd2XYUUHiOch8bOuMjgfBzz2S8FCK6pWB4WyEHaRR5j6WR9YiTYuc4VjR6NaH9ZMgsT0TCZphFWXBvm5m1od7UZBRr5Mc0njOkRH92FmyEZIsYCBlSjFMTShqnQrqUQ75wWWPqTYuj8TdSqRqYZLMCihzFL/XZbspZx3LF3MIm34mDF+n1HKtT6fmKOqFPLQNJUR5awT3lWA3CjjG6DTnZEhPJXQiWh6XGIShfQ69F4u/dvcHOSbOIXUflOwXYesuqyV//7pya8lL1c8K8Zw5P3UItF9ro9I5okXpWN+0Tejowv/s71SOrcbRaAhoeVDnHMkyPi7rCQvp46GuFy5vvK6rdYWERqCCs6sJ/NejcNrOASY2lZky/AhMSAxH04nTYEKeM9SexLYPquaJgGW76bMJZpYlf216HMHPz3mizWk6FCklhtEcg1URcF2g4+yIPXnWyFrviVEanYAh0s/Y3/wERef4KRHbKJLgrjIHkdmJ9kXD6MW+z9Ac1HPxXnou9e2bqB2qxAhbLQix2LIk5noBTVZur7mDXbJkxvmsvlybjsVtdh8aPL4DWpPuOwBB2BS3K7zRac03WmxCyykPlOc9Xr68bpuXGsX2LAMPNDI+65a9CkaolVwkEOONTUQ/qclGj6ea/NH+FXW7YXvXBWtvltsUHLzjzxBSEbDJPZd233/6IUcUf7WjAq+0vSfiO714AMMOuf+H9hu7uzUS94oNT/U7bm7wUq+0OEOzXJfXfloaQXFwju9oK9Qs7qc7QP5/Fgg4ZarosP0n/Bm8vXKOxf8yAIl57cTmk6C3XLRkqCSVhdLTjESgDxD33PBVWw1Tm2esG4WK9HWW3VDP+Yqfx87RXL43kuiYuhm5blPRABdzByIWiw7TpD8b1qpvH83HsfzzBjqMtmvu5Jc1RV6GYyhCD/DrH6JsLP+1O2UFkoWSpE8qgxEAiy8sT0x4ofnJfhMz/aQrBBpUF6WbkSvARq1NznlwIRsbErEXvdosDhmtksLTobTdOAdxUfwLOpu0OFbXkPAT9aG3Mo+5tLKSrElrhPc5Dd9iaDsnugITF6UazHya/EeVGwZ/plWb4VoIYbN1rWhSgJIaMq4Z6RhyBqRnsMgzEtKun59UoF7zWHJYb5M7j0CKrYXtpLs5pNTW8CJmQtMhErV5hOH5ADOH8zof7W6HgxTVedMk5Ui2yqdQ4pR7/C2qzggK1ehSx1brl3hL5yiaYJkiCnIftMa/NxZccmR0iDpYUTg4lZFUVoXUTmU+Gz8JKgYtgXHJ+pExQWSGz4Z6DMZGrUvq0I90tcrcQeC+T9NPZdlZHYFqrMpG7I0qizJebdOcoWh/MAXjmow/SVYuckPNSTvLFEQ8zsCKKj0W6FrTpGKmGg/UJntztkF2NOtVyvWLesRuwQAmWrZzgkCEGHN48mNBsuPMUcW8kI96n6ENto4vSIU3XBsDRBM/IhkyZDbLfOvp4Pgm8ry8Eq+hudMRwLNx/3EbluZiuwXPg+oOxcD9bUnuMnbKiPZYGFcKKFdXWyp/nnjgCLL0Klq6TdZ/F/kwUA2J15WMqNWBwdXtQnRQaWYXz5aFS2QxpdweIyFWR7vEG6lB5BT/5dzu2ZFdgf9DqpsTfst5EInA+9fDmK5tqSXASGynvhGpCVWv/gx0dsTEkmmvkf87GMVP7XeX5Mtd2xGLEZbRBS1nehtHvW6x9PryH1dTiVycissZgmU3SmPItwr4aERAKInZh3TDO8ye3bJQbOT1ze9HRvysXlEAleHBtmndQUp1JJdDcDo4ftrxFz3viZvYpcsVrmIb1FgiAaNEkQmrAiFceQjiYQaX3QAITzqnFnK4gWX13pSjPSn2YagL6o0UOu4blxldqXY77+UkfB9iwUKf/Z9s8WOXux4vB3BjoAgGKQKNZ2vy7uFHJ+6hqNetVniLYJYhG/1htbCGfhkTNM5tL20vtWareNVumVMT9OSP66rl2fcKfhg0r4db+r0jQ6mquW28EGpQd/+VwR3yTJwTbKK+rf8ednEsZ+aZlQhYyOtPg785A0GWfVZr+7yxCbwVccj6mz3RACOXufOq81orJA6hrpclY+6t4n/qx7NPtFrhevdhGfy5NpcCiSFMlXRhM4tZRA1bPiYShA8CRvie9kxJ4aLrwuxyp/4Zw2yboD58+tdZ14u+XQ6nYQF2jA7rGY3kp4KD2pxbnEf6/yMbL6q1kFjzLKPeJIJ5CUH77GWpy80LMtx4xaEiJm7e3raQX3yRxvgZGqIzpRGFXRGXy6PjE/PPznatCmI7HkvOfUSeNBO1B/Eidlo32PkmBvWjMTZmCXS+QWAShBjJ4EQq4WbGxWoS6+KsuYBWxp6TIVlNWZADWkIttY9JAZ1sqqlTJjX3iCB0cGCHfzf+el9L/Ifm6m76QC4jupTZz6BkN7GwM+77PMpqrXQ1bSa4+t7PPsrxsk2jcRYXsHCY19t3/fH60xueGt7OxfrRUHZTW6KSeTQyxy6jHw7wD4BAXlLS6y5pFbHXkFa3/E1NMDBlDaiK6PTRKqDLD5gYZ6+oj7Yfqdt3x3TGC4OmcEf5M8+lnyasH5Y/OIk0Qvkz74puGcc3PYNy4nb+3WSmQHNL4gKuMYZWvqK7jBLNw2tO62DmYjoIIotcEOAGNc2uWitOPpONoJlFu438gbvqkBsbZr6EQwZOPHMvdGiV5K+4BRdQXkqU/ThQaOv/QZN/uJxZgjRwZUyupEUHi0RC+NJehIlMbROre0UG2zUPtjFXvHGqk75SQ8uFre3lgigPyJ+aqfScLrTQVgRTcbmn33A==,iv:nOrMCxePhf1H1Tgen0NEGwp4EJw8nZdmwB0qWCMT9Ik=,tag:i8+NOYP48GcRv7VoswUOeA==,type:str]", + "sops": { + "kms": null, + "gcp_kms": null, + "azure_kv": null, + "hc_vault": null, + "age": [ + { + "recipient": "age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2SXBJdFF1MExUQzdscm5G\nd1ZEM0ZDNFlsMVJzQm4rZ3k4MEt6UE9iR240CnpNMzgrYW1SOEZFNW51eDIzaWE4\nVW13TENpL3gyWndVZXNFTGkxOC8zL28KLS0tIDExKzJqbXNLYTRBaHdORG5Ob1Nk\na3BOaW1uelBIQlEzSWFVdEdvcS94VXMKvdmegNxO9RD0IBuS5Y3sMcop+dPyvJlf\nCfgbmcyXtauye+LP6bEr0Qh2IXf9IuemDQhjb6f1r1RSU9t3rmmrxQ==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2024-05-07T11:44:56Z", + "mac": "ENC[AES256_GCM,data:iX8PLxJxUDG7djyoB+NRr+UkwxooqWz2M6JWKNQV9Rba6h9YFTeWbry9j+LJHBfqBBXsUIWXES2zhx/RN1qsN389A6b4/wayLkExosN7SmXehZj27DmiVWCFsLR4gUjJgW4i4t74dtAz8d0EbMstqhg7WrtdXxJN5xqodojOC44=,iv:CJeeg5Pb+2Ee4u1LYmgdBWEOaVjaFF2Lli8m6j8ju+0=,tag:GqxUXl8Rjred2OUi4CI5+g==,type:str]", + "pgp": null, + "unencrypted_suffix": "_unencrypted", + "version": "3.8.1" + } +} \ No newline at end of file diff --git a/infra/gcp/terraform.tfvars b/infra/gcp/terraform.tfvars deleted file mode 100644 index 64bd92a..0000000 --- a/infra/gcp/terraform.tfvars +++ /dev/null @@ -1,2 +0,0 @@ -google_project = "infra-417609" -google_service_account_id = "440233887397-compute@developer.gserviceaccount.com" diff --git a/infra/gcp/terraform.tfvars.json b/infra/gcp/terraform.tfvars.json new file mode 100644 index 0000000..da5f2bc --- /dev/null +++ b/infra/gcp/terraform.tfvars.json @@ -0,0 +1,21 @@ +{ + "google_project": "ENC[AES256_GCM,data:+95vzUKM3PhKTZ3m,iv:YTLeEZ9vvjX3P21gHw6AEpr7074XpsqfA+asSQ4GhLo=,tag:MOyYOP/ucKb9Qj+xBAiGmA==,type:str]", + "google_service_account_id": "ENC[AES256_GCM,data:lLlpy6wKTtd9oaXa6NfVicUJSoTfaEXFf5CAWg7x/32dhiMTDDX3hgTBvtzgEWS9taM=,iv:E76YsIwRdv/pgSRfjsgZR9PyTMmHB/B3Hsha4kRb8aA=,tag:kkqH3u5yo4pP6d5bEDl6bg==,type:str]", + "sops": { + "kms": null, + "gcp_kms": null, + "azure_kv": null, + "hc_vault": null, + "age": [ + { + "recipient": "age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5ajg4TEF2cUtlK0Jnaktt\nN0Y4RFg2NS9EL3BOMTk2M3lPcCtvM2QxSW1jCmI0dkU0WEY5U1RTQ0YwU21ybDB6\nazNicitTWE5VR2xUbkhwR3RKWHVFQm8KLS0tIGx5eW1HRTJCSHpUOHczc0VKQ2I4\nWFgyNjM3SU1uWEFmMmJBZGhjMytValUKcntnqwM6zwXveHfNSu0PNl+8KrOpyR49\nNaaox+ojPhXs7g3aPVCPmkw0i0IncgjCwBKYf9Ig5TD7qAeAw3PIsg==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2024-05-07T11:44:56Z", + "mac": "ENC[AES256_GCM,data:X2SLfRPyfubSJe4/xbeKNxGoFUU+vaAgwluJqHSufflcmMnAiIIWbBuRG95+ugGtNWtA+HdfK7vAPCiBQYkRubM+cEsGxHDQQIqHwXASAN6tZzUdqlsD0ddYRIU9wPb08+gCDyqrIuA3VnVMHgEiltvJ7V2phNtGflh7eGmGg9Y=,iv:Eqrb3+5qsBGNnlAA/gs5ADBjQynLXyspuT377VpwDb4=,tag:oXK1rWeRngaw8YXt4QVKag==,type:str]", + "pgp": null, + "unencrypted_suffix": "_unencrypted", + "version": "3.8.1" + } +} \ No newline at end of file diff --git a/modules/cloud/base/default.nix b/modules/cloud/base/default.nix index dd8e043..0f12713 100644 --- a/modules/cloud/base/default.nix +++ b/modules/cloud/base/default.nix @@ -3,7 +3,7 @@ }: { nix = { - package = pkgs.nixUnstable; + package = pkgs.nixVersions.latest; extraOptions = '' experimental-features = nix-command flakes keep-going = true diff --git a/modules/cloud/sing-box/default.nix b/modules/cloud/sing-box/default.nix index 312423d..d0cb0a8 100644 --- a/modules/cloud/sing-box/default.nix +++ b/modules/cloud/sing-box/default.nix @@ -7,18 +7,32 @@ with lib; let cfg = config.services.self-hosted.cloud.sing-box; - warpRoutes = [ - "category-porn" - "cloudflare" - "disney" - "hbo" - "hulu" - "netflix" - "openai" - "stripe" - "tiktok" - "youtube" - ]; + ruleBaseUrl = "https://raw.githubusercontent.com/lyc8503/sing-box-rules"; + + mkGeositeUrl = geosite: "${ruleBaseUrl}/rule-set-geosite/${geosite}.srs"; + mkGeoipUrl = geoip: "${ruleBaseUrl}/rule-set-geoip/${geoip}.srs"; + + warpGeosite = builtins.map + (geosite: "geosite-${geosite}") + [ + "category-porn" + "cloudflare" + "disney" + "hbo" + "hulu" + "microsoft" + "netflix" + "openai" + "stripe" + "tiktok" + "youtube" + ]; + + warpGeoip = builtins.map + (geoip: "geoip-${geoip}") + [ + "google" + ]; settings = { log = { @@ -36,7 +50,7 @@ let inbound = [ "shadowsocks-multi-user" ]; - rule_set = warpRoutes; + rule_set = warpGeosite; server = "warp"; } ]; @@ -62,16 +76,23 @@ let type = "remote"; tag = geosite; format = "binary"; - url = "https://raw.githubusercontent.com/lyc8503/sing-box-rules/rule-set-geosite/geosite-${geosite}.srs"; + url = mkGeositeUrl geosite; download_detour = "direct"; }) - warpRoutes; + warpGeosite ++ builtins.map + ( + geoip: { + type = "remote"; + tag = geoip; + format = "binary"; + url = mkGeoipUrl geoip; + download_detour = "direct"; + } + ) + warpGeoip; rules = [ { - inbound = [ - "shadowsocks-multi-user" - ]; - rule_set = warpRoutes; + rule_set = warpGeoip ++ warpGeosite; outbound = "warp"; } ]; @@ -83,6 +104,9 @@ let listen_port = cfg.ingress; version = 3; strict_mode = true; + domain_strategy = "prefer_ipv6"; + sniff = true; + sniff_override_destination = true; users = [ { name = config.sops.placeholder."sing-box/shadowtls/username"; diff --git a/modules/default.nix b/modules/default.nix index cda4a6f..198bae5 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -26,4 +26,5 @@ o11y = import ./o11y; sing-box = import ./sing-box; subgen = import ./subgen; + gemini-openai-proxy = import ./gemini-openai-proxy; } diff --git a/modules/gemini-openai-proxy/default.nix b/modules/gemini-openai-proxy/default.nix new file mode 100644 index 0000000..7b4afa4 --- /dev/null +++ b/modules/gemini-openai-proxy/default.nix @@ -0,0 +1,38 @@ +{ pkgs +, config +, lib +, ... +}: +with lib; +let + cfg = config.services.self-hosted.gemini-openai-proxy; +in +{ + options.services.self-hosted.gemini-openai-proxy = { + enable = mkEnableOption "gemini-openai-proxy"; + package = mkOption { + type = types.package; + default = pkgs.gemini-openai-proxy; + description = '' + The package to use for the Gemini OpenAI proxy. + ''; + }; + port = mkOption { + type = types.int; + description = '' + The port on which the Gemini OpenAI proxy will listen. + ''; + }; + }; + config = mkIf cfg.enable { + systemd.services.gemini-openai-proxy = { + serviceConfig = { + Type = "simple"; + ExecStart = "${cfg.package}/bin/gemini-openai-proxy -port ${toString cfg.port}"; + }; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" "network-online.target" ]; + requires = [ "network-online.target" ]; + }; + }; +} diff --git a/modules/nixbuild/default.nix b/modules/nixbuild/default.nix index 11c0a10..0658649 100644 --- a/modules/nixbuild/default.nix +++ b/modules/nixbuild/default.nix @@ -1,5 +1,4 @@ { config -, lib , ... }: { security.sudo.wheelNeedsPassword = false; diff --git a/modules/subgen/default.nix b/modules/subgen/default.nix index cff241d..c9087ef 100644 --- a/modules/subgen/default.nix +++ b/modules/subgen/default.nix @@ -37,7 +37,6 @@ in systemd.services.subgen = { serviceConfig = { Type = "simple"; - StateDirectory = "subgen"; AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ]; ExecStart = "${cfg.package}/bin/subgen -config ${cfg.configFile} -expr ${cfg.exprPath} -addr ${cfg.address}"; }; diff --git a/nixos/aws-lightsail-0/caddy/default.nix b/nixos/aws-lightsail-0/caddy/default.nix index 7c03805..d278847 100644 --- a/nixos/aws-lightsail-0/caddy/default.nix +++ b/nixos/aws-lightsail-0/caddy/default.nix @@ -69,14 +69,14 @@ in backend = "127.0.0.1:8888"; logLevel = "INFO"; }; - "openai.iosmanthus.com" = mkReverseProxy { - backend = "127.0.0.1:3000"; - logLevel = "INFO"; - }; "chatgpt.iosmanthus.com" = mkReverseProxy { backend = "127.0.0.1:3210"; logLevel = "INFO"; }; + "o2g.iosmanthus.com" = mkReverseProxy { + backend = "127.0.0.1:${toString config.services.self-hosted.gemini-openai-proxy.port}"; + logLevel = "INFO"; + }; }; }; } diff --git a/nixos/aws-lightsail-0/chatgpt-next-web/default.nix b/nixos/aws-lightsail-0/chatgpt-next-web/default.nix index 2f264fb..46c5f3a 100644 --- a/nixos/aws-lightsail-0/chatgpt-next-web/default.nix +++ b/nixos/aws-lightsail-0/chatgpt-next-web/default.nix @@ -6,17 +6,14 @@ let imageName = "gosuto/chatgpt-next-web-langchain"; imageTag = "v2.11.3"; imageDigest = "sha256:0838e87d66fdb24deab914d831855e30acc8d6548ac81a55145a6e58034ca231"; - imageSha256 = "sha256-KH3AXZPXLe24FV5P9Wty7TfP5VQcblOETq8KoNJbhDY="; + imageSha256 = "sha256-ZwIWmkChBS8RtEFQwsCZACpobIoBr5k5r32OGKrbvQ0="; in { sops.templates."chatgpt-next-web.env" = { content = '' - BASE_URL=https://openai.iosmanthus.com - CHOOSE_SEARCH_ENGINE=google + BASE_URL=https://o2g.iosmanthus.com DALLE_NO_IMAGE_STORAGE=1 CODE=${config.sops.placeholder."chatgpt-next-web/password"} - GOOGLE_API_KEY=${config.sops.placeholder."chatgpt-next-web/google-api-key"} - GOOGLE_CSE_ID=${config.sops.placeholder."chatgpt-next-web/google-cse-id"} OPENAI_API_KEY=${config.sops.placeholder."chatgpt-next-web/openai-api-key"} ''; }; diff --git a/nixos/aws-lightsail-0/default.nix b/nixos/aws-lightsail-0/default.nix index f69a4a0..d6d7673 100644 --- a/nixos/aws-lightsail-0/default.nix +++ b/nixos/aws-lightsail-0/default.nix @@ -8,7 +8,6 @@ ./atuin ./caddy ./chatgpt-next-web - ./one-api ./subgen ./vaultwarden ]; @@ -41,4 +40,9 @@ enable = true; ingress = 10080; }; + + services.self-hosted.gemini-openai-proxy = { + enable = true; + port = 5680; + }; } diff --git a/nixos/aws-lightsail-0/home/default.nix b/nixos/aws-lightsail-0/home/default.nix deleted file mode 100644 index 3c7bb44..0000000 --- a/nixos/aws-lightsail-0/home/default.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ lib -, config -, pkgs -, ... -}: { - home.stateVersion = "23.05"; - - programs.zoxide = { - enable = true; - enableZshIntegration = true; - enableBashIntegration = true; - }; - - programs.zsh = { - enable = true; - enableCompletion = true; - enableAutosuggestions = true; - enableVteIntegration = true; - history = { - share = true; - extended = true; - }; - autocd = true; - - oh-my-zsh = { - enable = true; - plugins = [ - "fd" - "git" - "systemd" - ]; - }; - - syntaxHighlighting = { - enable = true; - highlighters = [ - "main" - "brackets" - "pattern" - "regexp" - "root" - "line" - ]; - styles = { - comment = "fg=magenta,bold"; - }; - }; - - initExtra = '' - if [[ $options[zle] = on ]]; then - zvm_after_init_commands+=(eval "$(${config.programs.atuin.package}/bin/atuin init zsh ${lib.escapeShellArgs config.programs.atuin.flags})") - fi - source ${pkgs.zsh-nix-shell}/share/zsh-nix-shell/nix-shell.plugin.zsh - source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh - ''; - }; - - programs.starship = { - enable = true; - enableZshIntegration = true; - }; - - programs.atuin = { - enable = true; - flags = [ - "--disable-up-arrow" - ]; - settings = { - auto_sync = true; - keymap_mode = "vim-normal"; - search_mode = "fuzzy"; - style = "compact"; - sync_address = "http://127.0.0.1:8888"; - sync_frequency = "10s"; - }; - }; -} diff --git a/nixos/aws-lightsail-0/one-api/default.nix b/nixos/aws-lightsail-0/one-api/default.nix deleted file mode 100644 index 922e31b..0000000 --- a/nixos/aws-lightsail-0/one-api/default.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ pkgs -, config -, ... -}: -let - port = "3000"; - imageName = "ghcr.io/songquanpeng/one-api"; - imageTag = "v0.6.0"; -in -{ - sops.templates."one-api.env" = { - content = '' - SQL_DSN=${config.sops.placeholder."one-api/sql-dsn"} - PORT=${port} - ''; - }; - - systemd.services."docker-one-api".restartTriggers = [ - config.sops.templates."one-api.env".content - ]; - - virtualisation.oci-containers = { - backend = "docker"; - containers = { - one-api = { - image = "${imageName}:${imageTag}"; - imageFile = pkgs.dockerTools.pullImage { - inherit imageName; - finalImageTag = imageTag; - imageDigest = "sha256:8f2151f192179a8728d3385c5cca5f4e34b629c36e6c9aa930fe7ae2c8526e57"; - sha256 = "sha256-7pikicXAghfA/V3cu/gezwQ8zwerA0VEe67BpRHD8Ps="; - }; - autoStart = true; - ports = [ "${port}:${port}" ]; - environmentFiles = [ - config.sops.templates."one-api.env".path - ]; - }; - }; - }; -} diff --git a/nixos/aws-lightsail-0/subgen/default.jsonnet b/nixos/aws-lightsail-0/subgen/default.jsonnet index 11266f8..100b9c6 100644 --- a/nixos/aws-lightsail-0/subgen/default.jsonnet +++ b/nixos/aws-lightsail-0/subgen/default.jsonnet @@ -51,6 +51,7 @@ function( tag: 'urltest', type: 'urltest', outbounds: final.outbounds, + url: 'http://captive.apple.com', }; std.manifestJsonEx(template { outbounds: [final, urltest] + shadowsocksOutbounds + shadowtlsOutbounds + template.outbounds, diff --git a/nixos/aws-lightsail-0/subgen/template.jsonnet b/nixos/aws-lightsail-0/subgen/template.jsonnet index a6a0dc0..bffe92f 100644 --- a/nixos/aws-lightsail-0/subgen/template.jsonnet +++ b/nixos/aws-lightsail-0/subgen/template.jsonnet @@ -19,10 +19,6 @@ clash_mode: 'Global', server: 'secure', }, - { - rule_set: 'cn-site', - server: 'local', - }, { outbound: 'any', server: 'local', @@ -31,7 +27,6 @@ domain_keyword: [ 'pingcap', 'tidb', - 'clinic', ], server: 'secure', }, @@ -96,12 +91,6 @@ rule_set: 'cn-site', outbound: 'direct', }, - { - domain_suffix: [ - 'pingcap.net', - ], - outbound: 'direct', - }, { ip_is_private: true, outbound: 'direct', @@ -116,6 +105,7 @@ cache_file: { enabled: true, cache_id: '3109dc66-e71d-40d0-9e55-1b60244d0a90', + store_fakeip: true, }, clash_api: { external_controller: '127.0.0.1:7990', @@ -128,7 +118,7 @@ auto_route: true, inet4_address: '172.19.0.1/30', inet6_address: 'fdfe:dcba:9876::1/126', - interface_name: 'utun3', + interface_name: 'utun@2057b9c9', sniff: true, sniff_override_destination: true, stack: 'mixed', diff --git a/nixos/lego-router/default.nix b/nixos/lego-router/default.nix new file mode 100644 index 0000000..ba2a1d8 --- /dev/null +++ b/nixos/lego-router/default.nix @@ -0,0 +1,74 @@ +{ config +, ... +}: + +{ + imports = [ + ./hardware-configuration.nix + ]; + + networking.hostName = "lego-router"; + + boot = { + # Use the systemd-boot EFI boot loader. + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + }; + + networking = { + networkmanager = { + enable = true; + dns = "none"; + }; + firewall.enable = false; + }; + + services.xserver = { + enable = true; + # Enable the GNOME Desktop Environment. + displayManager.gdm = { + enable = true; + autoSuspend = false; + }; + desktopManager.gnome.enable = true; + # Configure keymap in X11 + xkb.layout = "us"; + }; + + boot.kernel.sysctl = { + "net.ipv4.ip_forward" = 1; + }; + + services.self-hosted.sing-box = { + enable = true; + configFile = config.sops.secrets.sing-box.path; + }; + + services.coredns = { + enable = true; + config = '' + .:53 { + forward . 1.1.1.1 + bind wlp59s0 + } + ''; + }; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system. + # + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "23.11"; # Did you read the comment? +} diff --git a/nixos/lego-router/hardware-configuration.nix b/nixos/lego-router/hardware-configuration.nix new file mode 100644 index 0000000..d84aaeb --- /dev/null +++ b/nixos/lego-router/hardware-configuration.nix @@ -0,0 +1,50 @@ +{ config +, lib +, modulesPath +, ... +}: + +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { + device = "/dev/disk/by-uuid/308ed692-dc26-4c8b-975a-9339b767cf90"; + fsType = "btrfs"; + options = [ "subvol=root" ]; + }; + + fileSystems."/boot" = + { + device = "/dev/disk/by-uuid/17CD-8ECE"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + fileSystems."/home" = + { + device = "/dev/disk/by-uuid/308ed692-dc26-4c8b-975a-9339b767cf90"; + fsType = "btrfs"; + options = [ "subvol=home" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.utun@2057b9c9.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp59s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/nixos/workstation/default.nix b/nixos/workstation/default.nix index 09f1669..6a24764 100644 --- a/nixos/workstation/default.nix +++ b/nixos/workstation/default.nix @@ -24,7 +24,7 @@ }; nix = { - package = pkgs.nixUnstable; + package = pkgs.nixVersions.latest; extraOptions = '' experimental-features = nix-command flakes keep-going = true @@ -148,10 +148,12 @@ virtualisation = { docker = { enable = true; - extraOptions = '' - --ipv6 --fixed-cidr-v6 fd00::/80 --default-ulimit nofile=1048576:1048576 \ - --bip "172.17.0.1/24" --storage-driver btrfs - ''; + storageDriver = "btrfs"; + daemon.settings = { + ipv6 = true; + fixed-cidr-v6 = "fd00::/80"; + default-ulimit = "nofile=1048576:1048576"; + }; }; libvirtd = { enable = true; }; spiceUSBRedirection.enable = true; @@ -181,4 +183,6 @@ zstd ]; }; + + programs.adb.enable = true; } diff --git a/nixos/workstation/desktop/default.nix b/nixos/workstation/desktop/default.nix index 7e67c6c..90bd35a 100644 --- a/nixos/workstation/desktop/default.nix +++ b/nixos/workstation/desktop/default.nix @@ -19,43 +19,44 @@ enable = true; }; + services.libinput = { + enable = true; + touchpad = { + naturalScrolling = true; + disableWhileTyping = true; + }; + }; + + services.displayManager = { + defaultSession = "none+i3"; + }; + services.xserver = { enable = true; # Unlock auto unlock gnome-keyring for i3 and other WMs that don't use a display manager updateDbusEnvironment = true; xkb.layout = "us"; - libinput = { - enable = true; - touchpad = { - naturalScrolling = true; - disableWhileTyping = true; - }; - }; autoRepeatInterval = 20; autoRepeatDelay = 200; - displayManager = { - defaultSession = "none+i3"; - lightdm = { + displayManager.lightdm = { + enable = true; + background = config.wallpaper.package.gnomeFilePath; + greeters.gtk = { enable = true; - background = config.wallpaper.package.gnomeFilePath; - greeters.gtk = { - enable = true; - cursorTheme = { - package = pkgs.yaru-theme; - name = "Yaru"; - size = 48; - }; - theme = config.gtk.globalTheme; - indicators = - [ "~host" "~spacer" "~clock" "~spacer" "~session" "~power" ]; - extraConfig = '' - xft-dpi=192 - font-name=sans-serif - ''; + cursorTheme = { + package = pkgs.yaru-theme; + name = "Yaru"; + size = 48; }; + theme = config.gtk.globalTheme; + indicators = + [ "~host" "~spacer" "~clock" "~spacer" "~session" "~power" ]; + extraConfig = '' + xft-dpi=192 + font-name=sans-serif + ''; }; }; - windowManager.i3 = { enable = true; }; }; } diff --git a/nixos/workstation/home/default.nix b/nixos/workstation/home/default.nix index 997250b..7d2fff9 100644 --- a/nixos/workstation/home/default.nix +++ b/nixos/workstation/home/default.nix @@ -6,10 +6,10 @@ imports = [ ./gpg.nix ./tmux.nix - ./firefox.nix ./desktop ./fcitx5 + ./firefox ./polybar ./rofi ./shell @@ -21,7 +21,6 @@ home.stateVersion = "18.09"; home.packages = with pkgs; [ - apx ascii awscli2 brave @@ -90,6 +89,7 @@ xxd yesplaymusic zoom-us + quickemu ] ++ ( let diff --git a/nixos/workstation/home/desktop/default.nix b/nixos/workstation/home/desktop/default.nix index e0ecc1b..a77b460 100644 --- a/nixos/workstation/home/desktop/default.nix +++ b/nixos/workstation/home/desktop/default.nix @@ -41,11 +41,11 @@ qt = { enable = true; - platformTheme = "gnome"; - style = { - package = pkgs.adwaita-qt; - name = "adwaita"; - }; + platformTheme.name = "gtk3"; + # style = { + # package = pkgs.adwaita-qt; + # name = "adwaita"; + # }; }; services.clipmenu = { enable = true; }; diff --git a/nixos/workstation/home/desktop/i3.nix b/nixos/workstation/home/desktop/i3.nix index 3dc337b..82cf3ff 100644 --- a/nixos/workstation/home/desktop/i3.nix +++ b/nixos/workstation/home/desktop/i3.nix @@ -150,7 +150,6 @@ let "1: main" = [ { class = "^Brave-browser$"; } { class = "^logseq$"; } - { class = "^kitty$"; } ]; "2: chat" = [ { class = "^Discord$"; } diff --git a/nixos/workstation/home/firefox.nix b/nixos/workstation/home/firefox/default.nix similarity index 62% rename from nixos/workstation/home/firefox.nix rename to nixos/workstation/home/firefox/default.nix index 8e3f43e..5389887 100644 --- a/nixos/workstation/home/firefox.nix +++ b/nixos/workstation/home/firefox/default.nix @@ -19,25 +19,7 @@ "toolkit.legacyUserProfileCustomizations.stylesheets" = true; "widget.content.gtk-theme-override" = config.gtk.globalTheme.name; }; - userChrome = '' - #main-window[tabsintitlebar="true"]:not([extradragspace="true"]) - #TabsToolbar - > .toolbar-items { - opacity: 0; - pointer-events: none; - } - #main-window:not([tabsintitlebar="true"]) #TabsToolbar { - visibility: collapse !important; - } - - #sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header { - display: none; - } - - #urlbar { - font-size: 13pt !important; - } - ''; + userChrome = builtins.readFile ./userChrome.css; }; }; } diff --git a/nixos/workstation/home/firefox/userChrome.css b/nixos/workstation/home/firefox/userChrome.css new file mode 100644 index 0000000..4f95f97 --- /dev/null +++ b/nixos/workstation/home/firefox/userChrome.css @@ -0,0 +1,219 @@ +/* --- TAB AND TITLE BAR --- */ + +#TabsToolbar { + display: none !important; + height: 0 !important; +} + +.content-header { + background: var(--gg-bg) !important; +} + +.content-scrollable { + background: var(--gg-black) !important; +} + +/* --- SIDEBAR --- */ + +#sidebar-header { + display: none !important; + border-bottom: none !important; + border: none !important; + background-color: var(--gg-bg) !important; + border-inline-color: var(--gg-bg); +} + +#sidebar-box { + margin-top: -1px; + position: relative; +} + +/* Support for languages that are read from right to left */ +#sidebar-box[positionend] { + direction: rtl; +} + +#sidebar-box[positionend] > * { + direction: ltr; +} + +#sidebar-box[positionend]:-moz-locale-dir(rtl) { + direction: ltr; +} + +#sidebar-box[positionend]:-moz-locale-dir(rtl) > * { + direction: rtl; +} + +.sidebar-panel { + background: var(--gg-bg) !important; +} + +.sidebar-panel[lwt-sidebar] { + background: var(--gg-bg); +} + +#sidebar-icon { + filter: contrast(150%); + opacity: 1; +} + +.sidebar-placesTree { + position: relative; + border-top-right-radius: 6px; + background: var(--gg-black) !important; + color: var(--gg-fg-alt) !important; +} + +/* Uncomment if you place your sidebar to the right */ +/* .sidebar-placesTree { + border-top-right-radius: 0; + border-top-left-radius: 6px; +} */ + +.sidebar-placesTree:before { + right: auto; + left: 0; +} + +#sidebar-title { + font-size: 1.1rem; +} + +#sidebar-close { + opacity: 0; +} + +#sidebar-close:hover { + opacity: 1; +} + +#historyTree .sidebar-placesTreechildren { + margin-left: -8px; +} + +#sidebar-splitter { + margin-top: -1px; + width: 0px !important; + border: 2px solid var(--gg-bg) !important; +} + +#sidebar, +#sidebar-header { + border-inline-width: 0px 4px; +} + +#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl), +#sidebar-box[positionend] > * { + border-inline-width: 4px 0px; +} + +/* --- IMPROVEMENTS & FEATS --- */ + +#appcontent { + margin-top: -1px; +} + +/* Hide on fullscreen */ +#main-window[sizemode="fullscreen"] #sidebar-box, +#main-window[sizemode="fullscreen"] #sidebar-splitter { + /* --- Match the transition from the toolbar; swap to margin-right if you use the sidebar to the right --- */ + /* transition: .8s margin-left ease-out !important; */ + display: none !important; +} + +#search-box { + appearance: none !important; + border-radius: 5px !important; + line-height: 1.8rem !important; + background: var(--gg-black) !important; + color: var() !important; +} + +:root[privatebrowsingmode="temporary"] { + --focus-outline-color: var(--gg-purple) !important; + --toolbar-field-focus-border-color: var(--gg-purple) !important; + --lwt-selected-tab-background-color: var(--gg-purple-dark) !important; + --avatar-image-url: url("chrome://global/skin/icons/indicator-private-browsing.svg") !important; +} + +:root { + /* --- Colour variables --- */ + --gg-bg: #2a2932; + --gg-fg: #fbfbfe; + --gg-fg-alt: #d4d4d4; + --gg-fg-faded: #8f8f9d; + --gg-grey-alt: #5b5b67; + --gg-grey: #53535f; + --gg-darkgrey: #43424d; + --gg-black: #1c1b22; + --gg-black-bold: #0c0c0d; + --gg-pseudotransparent: rgba(0, 0, 0, 0); + --gg-cyan: #80ecff; + --gg-lightblue: #00ddff; + --gg-skyblue: #a8f2ff; + --gg-turquoise: #52ffbd; + --gg-purple-dark: #3c1f7a; + --gg-purple-mid: #ac70ff; + --gg-purple: #9059ff; + --gg-pink: #ff4aa2; + --gg-yellow: #ffbd4f; + /* Attributes */ + --button-bgcolor: var(--gg-bg) !important; + --button-hover-bgcolor: var(--gg-grey) !important; + --button-active-bgcolor: var(--gg-grey-alt) !important; + --button-primary-bgcolor: var(--gg-lightblue) !important; + --button-primary-hover-bgcolor: var(--gg-cyan) !important; + --button-primary-active-bgcolor: var(--gg-skyblue) !important; + --button-primary-color: var(--gg-bg) !important; + --input-bgcolor: var(--gg-darkgrey) !important; + --input-color: var(--gg-fg) !important; + --input-border-color: var(--gg-fg-faded) !important; + --autocomplete-popup-separator-color: var(--gg-grey) !important; + --panel-banner-item-update-supported-bgcolor: var(--gg-turquoise) !important; + --panel-banner-item-info-icon-bgcolor: var(--gg-cyan) !important; + --tab-icon-overlay-stroke: var(--gg-darkgrey) !important; + --tab-icon-overlay-fill: var(--gg-fg) !important; + --panel-item-hover-bgcolor: color-mix( + in srgb, + currentColor 9%, + transparent + ) !important; + --arrowpanel-dimmed-further: color-mix( + in srgb, + currentColor 14%, + transparent + ) !important; + --panel-item-active-bgcolor: color-mix( + in srgb, + currentColor 25%, + transparent + ) !important; + --urlbar-icon-fill-opacity: 1 !important; + --panel-separator-zap-gradient: linear-gradient( + 90deg, + var(--gg-purple) 0%, + var(--gg-pink) 52.08%, + var(--gg-yellow) 100% + ) !important; + --lwt-accent-color: var(--gg-black) !important; + --lwt-text-color: var(--gg-fg) !important; + --arrowpanel-background: var(--gg-darkgrey) !important; + --arrowpanel-color: var(--gg-fg) !important; + --arrowpanel-border-color: var(--gg-grey) !important; + --toolbar-field-background-color: var(--gg-black) !important; + --toolbar-field-color: var(--gg-fg) !important; + --toolbar-field-border-color: var(--gg-pseudotransparent) !important; + --toolbar-field-focus-background-color: var(--gg-darkgrey) !important; + --toolbar-field-focus-color: var(--gg-fg) !important; + --lwt-tab-text: var(--gg-fg) !important; + --toolbar-bgcolor: var(--gg-bg) !important; + --toolbar-color: var(--gg-fg) !important; + --chrome-content-separator-color: var(--gg-black-bold) !important; + --toolbarbutton-icon-fill: var(--gg-fg) !important; + --lwt-selected-tab-background-color: var(--gg-darkgrey) !important; + --autocomplete-popup-highlight-background: var(--gg-bg) !important; + --tabpanel-background-color: var(--gg-bg) !important; + --sidebar-background-color: var(--gg-bg) !important; + --sidebar-text-color: var(--gg-fg) !important; +} diff --git a/nixos/workstation/home/shell/alias.nix b/nixos/workstation/home/shell/alias.nix index 5898019..e8810b8 100644 --- a/nixos/workstation/home/shell/alias.nix +++ b/nixos/workstation/home/shell/alias.nix @@ -66,8 +66,8 @@ in clion = "${ignoreOutput} clion nosplash"; goland = "${ignoreOutput} goland nosplash"; idea-ultimate = "${ignoreOutput} idea-ultimate nosplash"; - webstorm = "${ignoreOutput} webstorm nosplash"; rr = "${ignoreOutput} rust-rover nosplash"; + webstorm = "${ignoreOutput} webstorm nosplash"; k = "kubectl"; kx = "kubectx"; diff --git a/nixos/workstation/home/shell/default.nix b/nixos/workstation/home/shell/default.nix index 4c1d5da..f7acc9b 100644 --- a/nixos/workstation/home/shell/default.nix +++ b/nixos/workstation/home/shell/default.nix @@ -22,7 +22,7 @@ programs.zsh = { enable = true; enableCompletion = true; - enableAutosuggestions = true; + autosuggestion.enable = true; enableVteIntegration = true; history = { share = true; diff --git a/nixos/workstation/home/tmux.nix b/nixos/workstation/home/tmux.nix index 5bd8b2d..7159907 100644 --- a/nixos/workstation/home/tmux.nix +++ b/nixos/workstation/home/tmux.nix @@ -1,4 +1,7 @@ -{ pkgs, ... }: { +{ pkgs +, config +, ... +}: { home.packages = [ pkgs.xsel ]; programs.tmux = { enable = true; @@ -7,34 +10,17 @@ customPaneNavigationAndResize = true; clock24 = true; sensibleOnTop = true; - plugins = with pkgs; [ + plugins = [ { - plugin = tmuxPlugins.mkTmuxPlugin { - pluginName = "base16"; - version = "unstable-2021-04-03"; - src = fetchFromGitHub { - owner = "mattdavis90"; - repo = "base16-tmux"; - rev = "810ba8f86f028b467353e22837f8c89eb46fc287"; - sha256 = "sha256-CHDSb3uA1g3nPCED8/jMgP4xBMkk9LtGNEuJw4LJr+Q="; - }; - rtpFilePath = "tmuxcolors.tmux"; - }; + plugin = pkgs.minimal-tmux-status; extraConfig = '' - set -g @colors-base16 'material-darker' + set -g @minimal-tmux-justify "left" + set -g @minimal-tmux-bg "${config.scheme.withHashtag.base0D}" + set -g @minimal-tmux-indicator-str " 😊 " ''; } { - plugin = tmuxPlugins.mkTmuxPlugin { - pluginName = "yank"; - version = "unstable-2020-10-02"; - src = fetchFromGitHub { - owner = "tmux-plugins"; - repo = "tmux-yank"; - rev = "1b1a436e19f095ae8f825243dbe29800a8acd25c"; - sha256 = "sha256-hRvkBf+YrWycecnDixAsD4CAHg3KsioomfJ/nLl5Zgs="; - }; - }; + plugin = pkgs.tmux-yank; } ]; extraConfig = '' diff --git a/nixos/workstation/home/vscode/default.nix b/nixos/workstation/home/vscode/default.nix index ae45413..48c072a 100644 --- a/nixos/workstation/home/vscode/default.nix +++ b/nixos/workstation/home/vscode/default.nix @@ -216,6 +216,8 @@ in "plaintext" = true; "markdown" = true; }; + "gitlens.ai.experimental.provider" = "openai"; + "gitlens.ai.experimental.openai.model" = "gpt-3.5-turbo"; }; }; } diff --git a/nixos/workstation/home/vscode/extensions.json b/nixos/workstation/home/vscode/extensions.json index 9270459..b3aa2a2 100644 --- a/nixos/workstation/home/vscode/extensions.json +++ b/nixos/workstation/home/vscode/extensions.json @@ -9,14 +9,14 @@ { "publisher": "alefragnani", "name": "Bookmarks", - "version": "13.4.2", - "sha256": "14wx92fgsj170lxhq81dc4hcs4rjkmagxzmwsqgayqv4360mkv9v" + "version": "13.5.0", + "sha256": "06pmlmd3wahplhv5r8jdk19xlv2rmhiggmmw6s30pnys2bj5va50" }, { "publisher": "bierner", "name": "markdown-preview-github-styles", - "version": "2.0.3", - "sha256": "1dlw0p9zkv0dy5bf6byd0l40f5r9200anw20ps75vldgji67mqfa" + "version": "2.0.4", + "sha256": "0p2iwc52id5616wcvhw7dcnjw190s36fc6vbma8cldncz33ab6wc" }, { "publisher": "christian-kohler", @@ -33,8 +33,8 @@ { "publisher": "equinusocio", "name": "vsc-material-theme-icons", - "version": "3.5.0", - "sha256": "0lqipaa3wp74b74hrxyylp1c4y2918l7ciqz53ja6gbcb5jp5asy" + "version": "3.6.0", + "sha256": "19s6cbgs9xj2gn8g872pzwihjkibwq3abi5cq0qxbb0f3v6p1r8w" }, { "publisher": "foxundermoon", @@ -45,14 +45,14 @@ { "publisher": "GitHub", "name": "copilot", - "version": "1.168.739", - "sha256": "0i619wf3zhncaqwag0wzzf6xyla772y4aphh9kii6761i5976qrq" + "version": "1.181.0", + "sha256": "0lmphhkva63xgi7bnq9g452c7rn1rx0syj6a1hsiyyqrl14rb2dd" }, { "publisher": "golang", "name": "go", - "version": "0.41.1", - "sha256": "0i4h458x90v2bfr0la8axg6fs0756f2paby6h34pj4vflhi78axm" + "version": "0.41.3", + "sha256": "0yi3fvxcv622cmkfa18vjxp6lf48lmgf0sdsx7vkc4kvsapc9yn6" }, { "publisher": "haskell", @@ -63,14 +63,14 @@ { "publisher": "jeff-hykin", "name": "better-cpp-syntax", - "version": "1.21.1", - "sha256": "13k0jj4jasq6z4ip9rvzx0g5rkg2fx5p3vl1vnfy3b0v1lz6pryb" + "version": "1.21.4", + "sha256": "0l3ncf585p7bjjvzx82zmnns5z925sf986xs9kgi7sn2f6575a6p" }, { "publisher": "jnoortheen", "name": "nix-ide", - "version": "0.2.2", - "sha256": "1264027sjh9a112si0y0p3pk3y36shj5b4qkpsj207z7lbxqq0wg" + "version": "0.3.1", + "sha256": "1cpfckh6zg8byi6x1llkdls24w9b0fvxx4qybi9zfcy5gc60r6nk" }, { "publisher": "justusadam", @@ -81,8 +81,8 @@ { "publisher": "mkhl", "name": "direnv", - "version": "0.16.0", - "sha256": "1jmwqbbh5x5z7dscgcn4pb0g41k7zlhgf5i8syl3ipv6z270aq5v" + "version": "0.17.0", + "sha256": "1n2qdd1rspy6ar03yw7g7zy3yjg9j1xb5xa4v2q12b0y6dymrhgn" }, { "publisher": "ms-azuretools", @@ -93,8 +93,8 @@ { "publisher": "ms-vscode-remote", "name": "remote-containers", - "version": "0.347.0", - "sha256": "0igfi90rgav8hiqdzb8n65mkgikpjvy77n0n0yrrpr46ynfgbl8k" + "version": "0.361.0", + "sha256": "12rim5w0wla15afks881lxy358ams5ql6pha340c16w14pvygizc" }, { "publisher": "ms-vscode", @@ -111,8 +111,8 @@ { "publisher": "naumovs", "name": "color-highlight", - "version": "2.6.0", - "sha256": "1ssh5d4kn3b57gfw5w99pp3xybdk2xif8z6l7m3y2qf204wd1hsd" + "version": "2.8.0", + "sha256": "14capk3b7rs105ij4pjz42zsysdfnkwfjk9lj2cawnqxa7b8ygcr" }, { "publisher": "redhat", @@ -129,8 +129,8 @@ { "publisher": "VisualStudioExptTeam", "name": "vscodeintellicode", - "version": "1.2.30", - "sha256": "0lg298047vmy31fnkczgpw78k3yxzpiip0ln1wixy70hdpwsfqbz" + "version": "1.3.1", + "sha256": "0zl3hm5i769aqi16g236mpadlkxsh09872b5hc7j9js2xm051hv4" }, { "publisher": "vscodevim", @@ -159,14 +159,14 @@ { "publisher": "ms-kubernetes-tools", "name": "vscode-kubernetes-tools", - "version": "1.3.15", - "sha256": "1x6npc90p6b1wx5sd1hd0x0djahmffr6lw9cxh2zg10rbpq48w8i" + "version": "1.3.16", + "sha256": "0n6cjc5qhnmp58dgfiycq4kbrzvn8yx5kaf6jr0h7znpav60laik" }, { "publisher": "grafana", "name": "vscode-jsonnet", - "version": "0.5.1", - "sha256": "1wdwi8ik9n3sbw908jk1jl22a69gr2ics8rc5w40ga7rgy97k059" + "version": "0.6.1", + "sha256": "1394dqdw14351z5f6zfjz0i1vq3d89vyik6qyf12wbrxkc8gvpzj" } ] } \ No newline at end of file diff --git a/nixos/workstation/network.nix b/nixos/workstation/network.nix index bff543a..8a2ec49 100644 --- a/nixos/workstation/network.nix +++ b/nixos/workstation/network.nix @@ -28,8 +28,8 @@ package = pkgs.wireshark-qt; }; - networking.firewall.enable = lib.mkForce false; + services.self-hosted.sing-box = { enable = true; configFile = config.sops.secrets.sing-box.path; diff --git a/nixos/workstation/users.nix b/nixos/workstation/users.nix index 0ba9771..f4c9c74 100644 --- a/nixos/workstation/users.nix +++ b/nixos/workstation/users.nix @@ -17,6 +17,7 @@ "video" "wheel" + "adbusers" "docker" "libvirtd" "networkmanager" diff --git a/packages/default.nix b/packages/default.nix index c72c1fe..7132fc7 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -70,15 +70,12 @@ rec { }; }); - feishu = (prev.feishu.override { - commandLineArgs = "--disable-features=AudioServiceSandbox"; - nss = prev.nss_latest; - }).overrideAttrs (_: rec { - version = "7.11.8"; - packageHash = "73244d01"; + feishu = prev.feishu.overrideAttrs (_: rec { + version = "7.11.9"; + packageHash = "ec62a2df"; src = builtins.fetchurl { url = "https://sf3-cn.feishucdn.com/obj/ee-appcenter/${packageHash}/Feishu-linux_x64-${version}.deb"; - sha256 = "182lycgkhh7vkwq599xna959rfa6mxai2z4slhc6gqlq1jjcvnbm"; + sha256 = "1c4ggcq10knb1gac6rmlb5mdxlz1xrz6i735mfqinvr7qfrqzi4q"; }; }); @@ -89,12 +86,6 @@ rec { }; }); - apx = prev.apx.overrideAttrs (_: { - postPatch = '' - sed -i "s#/etc/apx#$out/etc/apx#g" $(find . -name "*.go") - ''; - }); - caddy = prev.callPackage "${prev.path}/pkgs/servers/caddy" { buildGoModule = args: prev.buildGoModule (args // { version = "unstable-2023-12-15"; diff --git a/packages/gemini-openai-proxy/default.nix b/packages/gemini-openai-proxy/default.nix new file mode 100644 index 0000000..704c485 --- /dev/null +++ b/packages/gemini-openai-proxy/default.nix @@ -0,0 +1,18 @@ +{ buildGoModule +, fetchFromGitHub +}: + +buildGoModule { + pname = "gemini-openai-proxy"; + + version = "unstable-2024-04-24"; + + src = fetchFromGitHub { + owner = "iosmanthus"; + repo = "gemini-openai-proxy"; + rev = "7b63124d4ca9eddd42354f0ccbe2725e051daa63"; + hash = "sha256-qhSHeQUS3JtlsYFQoU86dzHyZgiGkVsGoAe5fZ4WTfc="; + }; + + vendorHash = "sha256-Hwhn5a1ZBMg6Bo0rfQZ5uZb96zl0npJTXQKfyfYEw5w="; +} diff --git a/packages/minimal-tmux-status/default.nix b/packages/minimal-tmux-status/default.nix new file mode 100644 index 0000000..225872c --- /dev/null +++ b/packages/minimal-tmux-status/default.nix @@ -0,0 +1,16 @@ +{ fetchFromGitHub +, tmuxPlugins +, ... +}: + +tmuxPlugins.mkTmuxPlugin { + pluginName = "minimal-tmux-status"; + version = "unstable-2024-04-25"; + src = fetchFromGitHub { + owner = "niksingh710"; + repo = "minimal-tmux-status"; + rev = "ee00ccc15a6fdd42b98567602434f7c9131ef89f"; + hash = "sha256-tC9KIuEpMNbBbM6u3HZF0le73aybvA7agNBWYksKBDY="; + }; + rtpFilePath = "minimal.tmux"; +} diff --git a/packages/sing-box/default.nix b/packages/sing-box/default.nix index 21411ad..80d95b9 100644 --- a/packages/sing-box/default.nix +++ b/packages/sing-box/default.nix @@ -9,18 +9,18 @@ buildGoModule rec { pname = "sing-box"; - version = "1.8.10"; + version = "1.9.0-rc.15"; src = fetchFromGitHub { owner = "SagerNet"; repo = pname; rev = "v${version}"; - hash = "sha256-HKiTFDNzu42JNra7g+AyTxJ3RuHpvK7ONmKgk2nItT4="; + hash = "sha256-wDwxzwY3NkP14PG9GFIoohyLdgkWNt01Q1RB1mcvAlw="; }; proxyVendor = true; - vendorHash = "sha256-YZZMs0g/lpLr/lPPjynKVt5n+/yGjLnVZsRXxM9xmh0="; + vendorHash = "sha256-vvqorZd27ym6OZDIuK2IpS97uHljcbo2VVdXmSPnhrM="; tags = [ "with_quic" diff --git a/packages/subgen/go.mod b/packages/subgen/go.mod index 7adc4e5..1df13e0 100644 --- a/packages/subgen/go.mod +++ b/packages/subgen/go.mod @@ -1,6 +1,6 @@ module github.com/iosmanthus/subgen -go 1.20 +go 1.21 require ( github.com/Jeffail/gabs/v2 v2.7.0 diff --git a/packages/tmux-yank/default.nix b/packages/tmux-yank/default.nix new file mode 100644 index 0000000..fb96b50 --- /dev/null +++ b/packages/tmux-yank/default.nix @@ -0,0 +1,14 @@ +{ fetchFromGitHub +, tmuxPlugins +, ... +}: +tmuxPlugins.mkTmuxPlugin { + pluginName = "tmux-yank"; + version = "unstable-2021-06-20"; + src = fetchFromGitHub { + owner = "tmux-plugins"; + repo = "tmux-yank"; + rev = "acfd36e4fcba99f8310a7dfb432111c242fe7392"; + hash = "sha256-/5HPaoOx2U2d8lZZJo5dKmemu6hKgHJYq23hxkddXpA="; + }; +} diff --git a/secrets/aws-lightsail-0/default.nix b/secrets/aws-lightsail-0/default.nix index 3559f99..6e3889c 100644 --- a/secrets/aws-lightsail-0/default.nix +++ b/secrets/aws-lightsail-0/default.nix @@ -30,11 +30,7 @@ "atuin/db-uri" = { }; - "one-api/sql-dsn" = { }; - "chatgpt-next-web/openai-api-key" = { }; - "chatgpt-next-web/google-api-key" = { }; - "chatgpt-next-web/google-cse-id" = { }; "chatgpt-next-web/password" = { }; }; }; diff --git a/secrets/aws-lightsail-0/secrets.yaml b/secrets/aws-lightsail-0/secrets.yaml index 63a4a44..c2ee9e0 100644 --- a/secrets/aws-lightsail-0/secrets.yaml +++ b/secrets/aws-lightsail-0/secrets.yaml @@ -23,7 +23,7 @@ sing-box: alex: ENC[AES256_GCM,data:tVYfzdTURq6LevWxFe0nQtN6fP+BebKO,iv:SBTIPeHzfY/KljIvSywF37oOYxtXm+G1hK9cc7WqWB8=,tag:uefvCcsthBBjTkpoXpH/aQ==,type:str] iosmanthus: ENC[AES256_GCM,data:otG3Wh+A092h0NtN8X5Jf8GOrqchLKK2,iv:8gxU7TxZIMhmzmqUigv9Wo6nvH7Eu9s5NvxuWC+S8O0=,tag:sYs6YHf/mGsHyigc/wkRRw==,type:str] lbwang: ENC[AES256_GCM,data:kVVftyJsnrzJpHgnFVFV4LDQScX+ETkj,iv:Z0I4eoHaraXjzdzKv4w5ZagknM0GX8sXHwjhRNwn8Q0=,tag:oDDHRmw9kgAgsZKxZSZtVA==,type:str] - lego: ENC[AES256_GCM,data:DJnc4D1GTSutxC5q2xlYknJsQgqRCXBu,iv:cBUiPi88jqxpYuimMpgWsUu9z1Swp+6YQdk1+Rv3frk=,tag:qwTTm6qgkph5aqFrKfaoNQ==,type:str] + lego: ENC[AES256_GCM,data:1l4ZH6HNrhfqWmovLlG8Cy5tCfczs6oR,iv:3mGQYS+nDlF00Xyb//WGdjQukvJ4Wzg4hg1XPbBxZd4=,tag:JbUSn1IJbZIRnMAwJWVzPA==,type:str] mgw: ENC[AES256_GCM,data:hqmhSCMZTCnPbKbdkiwbEVhEdfEbON50,iv:inGXTcRFV22J9M/SX5VbhFSw3CXVjBR/xvrDTSjdD3k=,tag:ev7JrIy8shBMLD6PJKDG4A==,type:str] tover: ENC[AES256_GCM,data:atQlTUXxMIKP5WCK2/Smc88fiaXMzblV,iv:dIVyNrbwa3IjEo2UyeaFGCUTcf813KuUnz8UdPm2yhw=,tag:HlNRMIIhtZ5R1MLGqCgYGA==,type:str] shadowtls: @@ -36,13 +36,9 @@ subgen: subscription-url: ENC[AES256_GCM,data:fEjhEE9VmvNVJe4w43nOupxkuZcG0sSKD/64WIvH3DZcIGeQXZaPtId6lOeTzOsHfhRgcY6am6szsmYwaOw=,iv:m0vadulrJa2AIOvYLhCo8RISW/Du0BN0e4ZdSWpSaT8=,tag:uXdk8pyN0C9qmF2engGKHw==,type:str] vaultwarden: env: ENC[AES256_GCM,data:vaYtbFuyJ7xYLu1Y0LhrgxmN5qFBZZaKFh2EZYxElWJ+XhMIvfe1GYrNMAYUqXDd9SZpB8sJJ6+gA1mVDhZLzOe3k35txi4muJbZMlDCnO1awbwGALEd+V7C0gRkou2NLX0bNfhjTeOciVMtnyOIc37rkopxtCx4hW5zLESpLeH4IxChC1ivOHTV+LpcoFybjwnBvnUNGpeemlnj5BvPbZnsMyJUngyn7kTsSg63FxDIf2H6QqEbuivdqsZTca6sy4bEMjltD5wyEI0+ay4IE0s/WTQO30ogvr+VX869Fzyg7rqbX7SynAST4yKgXj+Gc0MjphAdUL8X17pZg83ySyNc+xNFTLV/DXULbGpblHHKEUZfNG6Zm6vZx9vfKZPl7bJA7tZwNqNHlQhbluE8p53qAmnELIMMG4UZz6FxNtM5xafyLn26aHn10j5ZbNLgp6raFHqeM8amu8NnaD0gvBb1fuBi2Ox+PrXo10M6e+xjd5iFUy9u7+PdzVMbMD2IknZqbNEYhD4jBTC5BemfMMyrpjbSeaC/vAhvWuVdDjXMOUYS0J2JaTmpPrgUKgdX8ELzYNLSBBmFX19vTyGGEjVkPHHTRXqgRJFWq9BiNB+CC1PPw0HYz91yacLqOTq4KDeA9ykwYRFod+2+BZXjXe5wpZUi6nD5q0U5+/KpgrmvEs2JQqxqxgXnMDbOQNMEOBCMNnEB+SFD2xeQzWTY2uLM9wBkzddErInTY87Z2nuBl+RXpWT2zKspBCeWM0YkszDN+x8NNpzqG1BGNQqn3dPRfkVHJYNNcM8R2xGZ05SHlg0ylRASKSVs8LMuehw8Cn+LwacNwt2CEgQ88brhu2NHCk91NAM9p+nULk4MLuznEwmq/Lwo/VWEWxQE3NhWRw==,iv:MS1+V0wtGaDGsf7SR5u6ny28sYvyHtg4OXNYudX1vwA=,tag:GIinTX2ZCnucBy9zQgWZZg==,type:str] -one-api: - sql-dsn: ENC[AES256_GCM,data:wxr/CndJ2vS+iFFc4tzkrE3eBxofjXSphJStj5ozXs65gvXFxzO2PqwejJjj6Q+1RFZym0zrcP29CtgTr2D1OuPDYm8SFcS/U+zcLnOAWXuOX2p64zBbvtCacAkYZLI2popz6VCZksfG93Drpj6Txtms,iv:XPVP1hZ0MLSDfYZWN0+G5SLG7H0nHiBDHayTkDvh5ro=,tag:a3LOxpzid8KU6twq1YUJzw==,type:str] chatgpt-next-web: - openai-api-key: ENC[AES256_GCM,data:UsDqrt0iCLXW9Ae40dS38K04irrBVOTLBa49TYP/I8pER5B04ltMfY/tVuNGF6xquxYa,iv:cym1Cq0bU5BmCVFxUwUYK8og2uVdpAiWpR02kz/bVXI=,tag:20b8LAdf7UaFvYjczL9NNQ==,type:str] - google-api-key: ENC[AES256_GCM,data:2CckbsnFJ66Uz7qssxVvAQJ2QnKbIXhR+wikTie8mEKdWk3Sr+dN,iv:B++bS72KKr8lQDsKxdj/xQB7NFa6zZZcMwNTdRs6sE8=,tag:puP1EscL13O8t12RgMBcTQ==,type:str] - google-cse-id: ENC[AES256_GCM,data:ZLr0b4WcIE5pa3RgCzzYb2Q=,iv:yo/PzNvzygRVcTEmbjh8hec/miJxmmdbFjiEIw6Xzic=,tag:5JLp8woSYBlIyN2FMzGk3g==,type:str] - password: ENC[AES256_GCM,data:mRg/PB4cZ9d6VLHbCOOUQDZ6OHsCXQcP5D+R,iv:se+nCvKJgsKeKb9bFwOodsI11hIAHYiBlMrb1hMf/IM=,tag:qrk27X0D2oy+XS8XRdKC/Q==,type:str] + openai-api-key: ENC[AES256_GCM,data:LPV2rYuMVk96aAQw2v0CQTJUeendtw90QxrXdJkW4H2eB2RLpoo0,iv:RYJcmqLXCY59TfxH5CkBNXrVAKbwH3a+HBn4iGEEX/4=,tag:C7rMxTnuBlcuNT6/D+ILNQ==,type:str] + password: ENC[AES256_GCM,data:RqWqOrFQQfw8X4vuzOykpjjAdCs8QMU4iy6+u6TyHPc=,iv:0aBm1IYo7N1z7MidcQncuWJJldusqd6NGDNv9AQhNlY=,tag:7cWONl8hAheWwR+0Gl1Qfw==,type:str] sops: kms: [] gcp_kms: [] @@ -67,8 +63,8 @@ sops: QzVLR3duOUt2ZWpXR0xwV1Y0MjI3TncKHnOJ8NkBSVe7AaPn5isMMLJ1boXRM5gN FeQioIcIEsGRFyXOPXYdmxq/N3QBzM7viLafcq/XxZovA1qxZ3z5Fg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-04-02T08:23:04Z" - mac: ENC[AES256_GCM,data:nFuhMB+v/YBCvDTytmNVFVYChOr0CBRPC85WdDw7k+7DKiywUWvJ95t/V4Kr2oYXZyinSp5t9KeslMHK45kgUoaO6eu7FUhIUayBCYiUVDe0OIDOTne1qtIDYWSo1xTy61/Ee73h/qTRPHnbanYX2lT4lCLNJ2TizmyAH4EAAZM=,iv:a0RhmdL+0LdR5qsqgJhQXIInMrGDmIDrSZS/wGeJWiI=,tag:AWzHYYpsdc+uXmppUqpv9Q==,type:str] + lastmodified: "2024-05-07T09:31:37Z" + mac: ENC[AES256_GCM,data:7MxV01ofV7q4SEec3cvhJ3YAGfN636BaXhyvm1nb3nyxSKwELvuLnO3pJzpmyKQXI3bShHc3mfwfhYw/Rau4vtkpbFVnQ44aWwBvQa7PNsoZrih33ab1YWZVMedmAAjwi+ZjOLN9jAiKOLFVBiZDppMu88phafmVLZH9R7QPTrk=,iv:Ev1GjJdjFtxnS5P/3AOwbH0uyFOtWWq0QPYxW8lTJi0=,tag:rUY9GXeO/1F+abMrzllAjw==,type:str] pgp: [] unencrypted_suffix: _unencrypted version: 3.8.1 diff --git a/secrets/endpoints/secrets.yaml b/secrets/endpoints/secrets.yaml index 43b7e0d..7f87d94 100644 --- a/secrets/endpoints/secrets.yaml +++ b/secrets/endpoints/secrets.yaml @@ -1,12 +1,12 @@ aws-lightsail-0: - external-address-v4: ENC[AES256_GCM,data:qpxpL0x/WA0jWRhTJG8=,iv:0DT8oafpm202DIbV1Vs5R12l58Xmh5iFIUvGgtU/LVk=,tag:Lcua7BRlDTFoSofY+fNy0g==,type:str] - external-address-v6: ENC[AES256_GCM,data:HSQQJYveiONbqmrktUhPQR7//YhYvTsNDa6kt6Cea0dfwrisJQM=,iv:SZ6YLuHo6w/WTbroRkOXWpFYL3xK6Aw+v0c+7ZDd+w4=,tag:oKA4GSB+QjX8ZTrXQTb3Ww==,type:str] + external-address-v4: ENC[AES256_GCM,data:ogsn5lf5CQgX8sKLsM4=,iv:H5MLY5ojOb/buy/73eVI3ebaeGvjTF+wiRt9V+rc470=,tag:ezEhbKzEOxp195TWzaqohw==,type:str] + external-address-v6: ENC[AES256_GCM,data:g4LfLL3AYc1sMqwc0SNX6C6ITbMC3xi8RBVSqI5iDdcpk3UT8Y8=,iv:ZfRUGd5PIgQ2IFyp9JgHV4qO+al6PW5jR4cEOn2CQgQ=,tag:bK1DA1WuECR8BhOg1QkInA==,type:str] gcp-instance-0: - external-address-v4: ENC[AES256_GCM,data:1qmrITJ9aBbEo79Icw==,iv:1DnSN5BTXFwu4IRO70ZEWsrqjV57xexJw+ZTG57Z3ug=,tag:eqjicg4GBlVZHRoeeC5tkQ==,type:str] - external-address-v6: ENC[AES256_GCM,data:qiBqIwGNozW/iEG+Vy+ZzO9O6MgTGhtdzoX7,iv:Pvf73rJz8yvu5wtN5Iy3jcI7wWs1Ce4+X0xkP1MLYbU=,tag:nACnBIJnugxjvlNMTO51yg==,type:str] + external-address-v4: ENC[AES256_GCM,data:bYocTM8taLMpQkZtHnI=,iv:BEA8lDjvCH5MDUQkMODnY5wn9ZMIf1OHPoOL1QpkhIg=,tag:LxIs4C0oZ4n1p6WEcHFhiQ==,type:str] + external-address-v6: ENC[AES256_GCM,data:EXR87G6uU0oSZB1RT7WtoQLCjNOrVQUV8OzZ,iv:w/e1gZxo7dPXw93kwaCfRbw8EuSVwpAi4NtAd8o08Z0=,tag:uMZY94RXQZLyuHEsL8JimQ==,type:str] gcp-instance-1: - external-address-v4: ENC[AES256_GCM,data:YL/ihYbvbtypq34=,iv:gjqbWUsJ8pN/XXK3HJsJDk0yREZK0WdDv1dwF+/F1Gs=,tag:/ClcqHZkdSUmK9CjT2Acww==,type:str] - external-address-v6: ENC[AES256_GCM,data:5jdZhv4w2EDIA+BI7ybzGSyOa1JNdtMk9hsc,iv:Uls+zVrFmewnR+c/4EyWbHR+xqeW0S0GJCKjZssvUYw=,tag:0niDScEySz919magRkLhIA==,type:str] + external-address-v4: ENC[AES256_GCM,data:mT3QsJQvUFlK8xI=,iv:bxTNw51uxw/KibbUZYJl79QLLCMje+lBZOTRdPikN8k=,tag:UKZkS77gjM1GOe4/6GS0Zw==,type:str] + external-address-v6: ENC[AES256_GCM,data:Pk9+HjbiqolnpyjYf2YwaVVAvOZ9GLqAkN2j,iv:kbE9DLGUReb7zUTuE5BspMubo66ydJdC4adw9KaLFM0=,tag:Rk61MRimJszEqSUreIgT0Q==,type:str] sops: kms: [] gcp_kms: [] @@ -16,23 +16,23 @@ sops: - recipient: age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBIVzg4YUd4dmNteWs3c0JI - ZVk3UEM4OGtobDhJeU1yY3FVWFJEdUtyQVZVCmdNTlI4dzc0U29RZWYyTDJmSjFv - Rk9NUmlGQ1AySXV2SFp3dkZrdCs0YXcKLS0tIDU2SDBybXlSc0ZuS3NUdzVqOVdr - c0VVQ0hLamlFK2pCRW9MalpJcVVTV3cK7BdIbZZgx0im8LnGzUOfyeEgOMOCNLjG - rb3fAvqEFgMFX7YUPKiGxxftHnYU59rvnudefrcCtMehpWqg1duXQg== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpNGVYUEZ6RktBeFAza05Z + WEoya2Fad1paRFh5ZjlqSzc3OEwzNVR2U0Q0CkVBRkpHS0s2QVdoUHlvbU05b3FL + d2FrNGVGSXY1MVk1TXMyNEVZVjlxTU0KLS0tIGo1NzFWRmF5QkFHWHd6cU5YbFpV + MkdOWGxKL0xWNFVwUXRnVEtPTFhIalEKvrLOpTbueLuzx8IV4iTeYxg+veVAs59Q + /pWIE4y3XGyEP9BglGVTcljDzDRu15eIc1oE0Ii6zTfh3YMVL16CpQ== -----END AGE ENCRYPTED FILE----- - recipient: age1hzjj23k8ckesm7aqvelndn2hkywts84892tp0xhl0vj7kz7kugcsr9fepp enc: | -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvcEprNlZRNHpMMjNZWUVN - c0ZaR1VBRUd5amJQSTkxUVJpT3E2VitncHp3CmhPakxPeU5STXNOcVRjUDduVkIw - ZmdVMlkvZFVnRjl0clJsMkRGZlliSkEKLS0tIHVrL3p4eEM2aCt4elMwcUdrNER2 - TWsyRm5JU1ZIbjhLK1NOcEtJSjRQNFUKyxlG46GA2x8rtK2vwFe6X3ql0tuYKzTQ - UGsNsGVLTCpHLWGbtyQmAlXUIfqgmuDOH6x6EPChorJmUxJpeEZnDA== + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzS0g1U2Y3anhpTEFocG04 + MnZucGZWeXkwWnY3emY3UTVpY1RrU0J6RjM0CjZjRWljOHJUZERuVUFrVURVNjlV + Y3dHNi9zTzM3TUFaQllLWWJMdUQzU2cKLS0tIEI5VFRkR1dpTWlzdmJxRGQ5T0lS + akI4UUFuUElDZXNzcGxtVVA3Y3F5dkEKs8XCJv3bCNGXzPJg/0kB9VTwVo6s3bd+ + nAjYIH4mlfi0hbOHKWk9BlqS8renTI1ExGy0V65oL09uxDs54T3UUQ== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-04-02T06:34:58Z" - mac: ENC[AES256_GCM,data:NeECgtzZPavougOc+1ADnHu5SMPwfIg/WZXR75u0cmotlMpTvtr9+A5RiI8Pa8nUjH0aCVFgoa87larA4JJkWz9ew+ai2BKBxr7KqJvfwwZ10vx9hXn7RNk5cDGlF7pjPHU2wkbKpL8QXlvToZwEw8aNegFpqovarYKlLi/7NWk=,iv:Oa7xLzz73WeSR07J/hlB4l5mxRGUCLXnt5ItjrwThrQ=,tag:yeW+tSdCuaIHDw73WaWWxg==,type:str] + lastmodified: "2024-05-06T08:50:01Z" + mac: ENC[AES256_GCM,data:2rXLxwrh/AB3SxlGq4WAoqWNgAKbxs48VnrpV6ljhYFymet9n2N1eL8UhQSEM9QVHynjpbxVuY3NXjXhKrBqejgKhGcK+sCzpt498Opy8vm1wx9D/pK8s3K5no8in5WioSDIe2KSJtUo2wwQAus9F515cKwPOGDjJoW7glQjcBw=,iv:QXhUJFtr9Wm57M+STgngB88ZIibYD1l2fswN+OtbH5A=,tag:g3/gZD/E8l8b2dI3gBA51A==,type:str] pgp: [] unencrypted_suffix: _unencrypted version: 3.8.1 diff --git a/secrets/gcp-instance-0/default.nix b/secrets/gcp-instance-0/default.nix index fbdf54e..8a5f3a8 100644 --- a/secrets/gcp-instance-0/default.nix +++ b/secrets/gcp-instance-0/default.nix @@ -2,6 +2,7 @@ sops = { defaultSopsFile = ./secrets.yaml; secrets = { + "cloudflare/api-token" = { }; "cloudflare/warp/private_key" = { }; "cloudflare/warp/peer_public_key" = { }; "cloudflare/warp/local_address_v4" = { }; diff --git a/secrets/gcp-instance-0/secrets.yaml b/secrets/gcp-instance-0/secrets.yaml index e92c2c9..702839a 100644 --- a/secrets/gcp-instance-0/secrets.yaml +++ b/secrets/gcp-instance-0/secrets.yaml @@ -1,4 +1,5 @@ cloudflare: + api-token: ENC[AES256_GCM,data:qs+CQQVdlKWSGryX5r2ARJt2F5OzyjruHHlXozy6LRyU7HfildZwvA==,iv:fujVT8DsB1WAzcN5O2QDKfbKOMjBsWxaI1gJtG81/eo=,tag:cgXOAdhqiEZSNIt6EalDoQ==,type:str] warp: access_token: ENC[AES256_GCM,data:4eXOD1ZOzCOhAFBBC0IfMgqlaFvijNdcVstgwq6nIZk/3cV6,iv:1L70BmUfY839H9F6zygbVrUVZ8j/nQVi5W0tXOXbM18=,tag:xoJhGKIRf/sydQLeRVI/CQ==,type:str] device_id: ENC[AES256_GCM,data:a19W/Cm0YYPev/PPOkQDgUMglBP9tNrSNbnUoNze3mzBH7o5,iv:09C5qqpGVL/glikQ8PUph7+qIpdlLPDgY3gltG9NARo=,tag:OKTPJP9INqLD7c7LCC6rOQ==,type:str] @@ -18,7 +19,7 @@ sing-box: alex: ENC[AES256_GCM,data:BZ2cVhMcLyI8ei51B3RBco6NQDu1iB5s,iv:VKGaUiQlpuJQFd985lU4co91h8QKeoUiU9c8Tvl2Ftg=,tag:kepZMrlcclmlw3ivRTPSsw==,type:str] iosmanthus: ENC[AES256_GCM,data:Y60RLFRxnTu7hhbzmpFQd1voA8J4cuQk,iv:rkauDUez94PcRcuA/zaIQrwzEI+W8xqAxmSb7nw+CoY=,tag:C85UQ/NgMZVxloUNmP5JEw==,type:str] lbwang: ENC[AES256_GCM,data:0TCiHfoOSB/YEDcKjXHN5Z076/x31eXV,iv:5JBZ99Na3jiNNhpg4SSMYN+PGtllfL0LbZMmQtJiBj0=,tag:V6y84zvmqn30/TcCi1JxgA==,type:str] - lego: ENC[AES256_GCM,data:uROuL9MvXuFS2iwyEDN6e1NqRp6qgLf0,iv:PGPyP/qjKy9PpoUbUPi7PXlZ27o3ZrTP4mDtK9SkuPw=,tag:ReCGuODRgtT5nLJrmKS/6A==,type:str] + lego: ENC[AES256_GCM,data:LZ5pezwVVADkGl+z/JLgn4N+Bni85qWz,iv:PAs2irM2mvNIlDzhetkB147kZ8WD+PmgSiu4N1x3UiU=,tag:6iPPPjcn5nNRrATRIfpi1w==,type:str] mgw: ENC[AES256_GCM,data:NYoqTCOyM6dcwW8kc5d+MtidvhDoDgYH,iv:+twAw0TgFz7mCsbN9RzgesnjW5WPVABdsxI6p4oplnk=,tag:6JgvOJzJ5aTiAuM9wFd9PA==,type:str] tover: ENC[AES256_GCM,data:yJ7qjPmzuT9pB6TFZqIazNZvQVa2Hdgb,iv:ZcqFsyD+mnnhwp6x96ipKrHK/1HVqRvVBpzwbLe3eWM=,tag:XLbqYsoKJDfGbjR3zi4n9A==,type:str] shadowtls: @@ -50,8 +51,8 @@ sops: RDNEeDRKczNUdUxPRlJEc0tIODNDbHcKhLFEYqM5YcAC1avNj8HX9Lb0WEwRTnUu niqV6GMTctAQrb1n1uP62wNSgPczRCZzUPnL8rxumno8vokqM/CmKg== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-04-02T06:51:35Z" - mac: ENC[AES256_GCM,data:rTyuFN615CgHOs8kpuTGhev2cNazUOXQ2rHJfiW7wnn647C8KUYnBZEfUOD3/IuHHSiA9tSTwibTFjUAYdAE3V6Uvwp0cAc3HeRkKm0PMlWO8v3S4bZYu2gPI8Va2qN0LIzPhH7k5X4BVYj2TFL7d6mOMLGCknU6s+dcJeM/DwQ=,iv:uvHvfdQzKzN8uUTudjlt/bnCnP42PAz0qMF38ONwq8Q=,tag:G6wf1KsspRDika7Ol538fw==,type:str] + lastmodified: "2024-05-03T15:53:13Z" + mac: ENC[AES256_GCM,data:n9HTZ7QpqcPovQCSrgTmYH0c82ucvyynfqYzrSi3Bf2QkXksHGW3IgFfuentROB4xIFqxOFVZ9+5Gq0P2aaUEusebQDMqfBIpOJ70Y5vxFe6Wg4SxG+cE85sa8LldMqL5mjfYxU1EYyt2VZ81fdu/Lo5V7BcfdcOfTSrRthGWCI=,iv:eFhiG/nCf70Rzq5BigFp4/P8mwtQv+8ydWKTYkA2KYo=,tag:fgmorYVqbO4UOgXej8g/Qw==,type:str] pgp: [] unencrypted_suffix: _unencrypted version: 3.8.1 diff --git a/secrets/gcp-instance-1/secrets.yaml b/secrets/gcp-instance-1/secrets.yaml index 5aeab55..bf11ed8 100644 --- a/secrets/gcp-instance-1/secrets.yaml +++ b/secrets/gcp-instance-1/secrets.yaml @@ -1,4 +1,5 @@ cloudflare: + api-token: ENC[AES256_GCM,data:J3lh6InRwXaUDHv2Ywtl2RoQb9b9L0qoCcJMIX8DJjxmQO/EFdTCSA==,iv:vtUo7GC5tMCHUpo54w3yYvJOreITAZbmp4OwCPvK/qc=,tag:JnNpB/LpZ2KjrOSc5YDWvA==,type:str] warp: access_token: ENC[AES256_GCM,data:6j3gLC/5V/UhLXrCSxmioutqWBEZzwxSTHPOG8bsa92uFbIE,iv:F2YEpgnfun5jUrSGs9QZPro9wm0zt6L4n6ETgcPt4oI=,tag:fGF50dWxMPrlAyzxBNJ2GQ==,type:str] device_id: ENC[AES256_GCM,data:DLAQKCkCzAGUm76AMSNsZvuBevpcJx8eGJfx/zIVr/UMUuE1,iv:IqGLfCjQk0scmCdeHWJxY6D6D/omA+r8jOuHuUL+t/E=,tag:8aU1Jag6aYwV9zxo65QtNQ==,type:str] @@ -18,7 +19,7 @@ sing-box: alex: ENC[AES256_GCM,data:rjVHXb4yAMfx745XDUiEEHGhm3weq3yy,iv:BfxOfdtEwVbdYjMV9wy4VzsiMd+lUkWjY3UjCYjF+yw=,tag:s3wBTvM+TFybw6JgqD6hjA==,type:str] iosmanthus: ENC[AES256_GCM,data:nPfl4OvMGDG3uW9262ulwh8ZDpHJ9yLd,iv:YAGX51Hc3n4sWV2/+dW6Z6mjvbdLbMNiUeDB0406xyI=,tag:FwnoTQuGWoaZM2K/L6SLiw==,type:str] lbwang: ENC[AES256_GCM,data:dAtVdsK0Ne0p9D+4Dwr/LiBjdyglvCgb,iv:S6QwCIJlzxNQupCiiyM0umkbTgurzVpFioyRcMZPvHk=,tag:jJU5yNII+qhjYUYm5y3W/w==,type:str] - lego: ENC[AES256_GCM,data:k6XSDRhLoxcNGeBF/Ge04myMnJ9VDaLe,iv:i+vgflPCFf7cP+SqNR3JpSsVKZVTffOlz+8Fu7NVTRo=,tag:yP/CDeh6dM9o+mgnel5fKQ==,type:str] + lego: ENC[AES256_GCM,data:hX+v1L7hXpWphVY4/UW2mlC32UGtlsXv,iv:DBLx3lAWSD5ojFLia7Ubyhd9t5wwhu514Ch2u9mMTkE=,tag:fdNfzDop2qOTKax3T2LiDw==,type:str] mgw: ENC[AES256_GCM,data:q8cAXUZk8KfjGuGjKTPb+84k++e+AGRZ,iv:aASZq/lT/+2sSW/+SVFTgJTM1C4rfo3LMQml/tPTrT4=,tag:FpEt8hoTdilpvStaZIxpdQ==,type:str] tover: ENC[AES256_GCM,data:mSQRO3EO3dEX+0MXT2sraXhMJVe0hEwa,iv:DG13a0jsCGfZ4cwJwIOQfmMbYL+6a90sk8PUJb5McDg=,tag:RbcfAvJj2XWv4D0/bKVWzg==,type:str] shadowtls: @@ -50,8 +51,8 @@ sops: RTcwQURDVDc5NEppOWdsemIxVHZYQVEKTKv4wbmq8YDYyDX6vMpdJZT+eOJhOiNv 1BcekPsP3ehIetF8wB6/wDPXiovwAl/ZtiQWi4sRUFlaCboa1L3ECw== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-04-02T07:02:54Z" - mac: ENC[AES256_GCM,data:TRlUpc+sEpcEgArlMI/uPLJG5SdfXnCKcUjV/APGcXv2NEQyXN+1K/WQZS7m2Qz93h5Kt/20Ux14kHTH42ZCepTnyAc22T3Z609dnQF+OT5BdG4woU4M6blPOHRTT0VqWveCr+IAl7N5AsFK0HDPJNJifKw0B48EEG9z05IB0dQ=,iv:qp8yo8+lKz8a4dxr2WEJOX40/I+8N5J4oYTceInxQWY=,tag:YlD8wQKCXe2qRrxHP1F4Pg==,type:str] + lastmodified: "2024-05-03T15:53:20Z" + mac: ENC[AES256_GCM,data:YFrpjFkUbTeAOb6TgWDofWOx1HXx9mf1IWVbR+n+yF9P5F4ymmxXi3NVK93ZT0ffxzBb7sq0ouX5VF+Wxkg+Vc/yotzgZqyBSDzt9NfqfCXUpRRr5DjTgCADGrRXe7R5tE1pPIr0ZzMM/mYEJDTxPKDFi0pFAHuv2NWoiz07uis=,iv:LyY17WxJo80saBTC9hsg59jBUKUm8RpOGDn2a4PHMAs=,tag:lKyV4z22VYtmEbu7HxXMIQ==,type:str] pgp: [] unencrypted_suffix: _unencrypted version: 3.8.1 diff --git a/secrets/iosmanthus/ssh_config b/secrets/iosmanthus/ssh_config index bf8d230..8d2e053 100644 --- a/secrets/iosmanthus/ssh_config +++ b/secrets/iosmanthus/ssh_config @@ -1,5 +1,5 @@ { - "data": "ENC[AES256_GCM,data:Nu58FhMnhkgUgGa3G70aj/TNLki+hQc3WSJmdLdTxxRoC+muhlugrmj5GUkztqtz0tKkjvcmU42Td7SaenXiaBGEQwLCCXqBz7Px77z6HLGrXaFDgWEy/z/O8RsLVquGqzCmgq+LafWDPvy0Y4kRlP0TuOPHI8FUdCHFvBKDLEQ9J6eTjMgz1I2aadFnzSCU4d1JkruJaDSAt7h3x42yk4cERI2dsjkOx0L2y5rvvoubOwwBT6cAY2xrKObuYAIsXjwKwGsSSIriJFPEvKTXmnm4sSmiCjF/jHq5zUfGT2tH248zVKCAIZIEqsWcCjlgFaGLpztZuxLw738lt32YuAHSBOOnijhwCNGKmsLrv5G+gGM/WWlEODkfrcIWzsQQcrbgQGLCNUsYjUjnKUIZhEUTTdSt9qrLBmimqtU2mTj+poN9XeH5/YRgM+DcYC/BJsw7ZVUZgH/QGRqwEyvNxUTZvNJo0qIwft5gPcfVHleSK3/7ZlgY2ok15YUnzuWA2Mrc4G5pLXNRf+kXlftABcwpI2WYMHoYSGmmIO9vCUB7XoJqyFRhn3hNis+sWRKeEznlPcqS7rcaM8yHEcyrmhLxTZ2ARne+Qx/BSui3gQhNzuw0BSM=,iv:vSWNERxnv2tuTz4hWruybu2UFEuTZa6KuCA4qsYFDEU=,tag:HVNrynFdhXau1xFgtwkLxw==,type:str]", + "data": "ENC[AES256_GCM,data:c2TI9x06FrhRjUOwZ/FOM1CgJ8+6VUkzZQm9LqlB5zAE5qCD3H3M37tDgUWkcdM9B+Zir+hyz1Id6CLH5vaOi4ePpkSOCZaogv1yy4xqnexIigm8jTi7h7rBoiQPkhbEo/VPYxPNOzdvCgZIxVmhBOE8xbyYXGoZQ7pThlJ+6rfsWesgWJfARUuKdQRjpqMFjrputjlQ1db9Y+GoNzZ9x6E9mleKTLxaeYhSAGGVe31fC+8Voc2avLLricXsOOZMId9EG+XdV7EVjr0h5hFhfEdqIBnJ/7eT9ikOKPM4hYi567NjUFr2ccVCh5RYsJzTVdoCq1O9Yr2Eq12nJUGxFpuleVEPrHznQorVKEpk3vYBreTs+QjGglfQVcnl9GQD1NpVTZsWMwlkyU5IJ5QKQXjsMfL+BLIk0GFD48YD/YVJMWQQaaS9qZzZaysn7GD7T2m+aLbXGQ5sTWMCtpeOGkgzln9D/N4oCVeif+T5RLF1FicxUzCQGFHl2z2v4VDb2QkH6G2Pl/jF6EDuNciTpRS2o4CQ6TJMoT7KZ/aB40B2FmhXwaxMaXk885+mWtL6gVVy7/zSQleq9C5G0TTCK9/iHXaGYUl5L+I4abQeDOTPVL272KiXymmqLiVLNUkyQlZoXaykZK8NkdP8w1fn8NTyYiBL3Hebyvv5Q/TVPQ3eSyjjNx5leIjCeTc7JnqMcf32hppWlxBtMelzLdCsbC8+vhh3xiFR9q3kCXDivoZPGLm/xgqrdGuwryY+FPnpogP3EEvbNg5m9l6IvSBSb+cJ5qBqoKjxAc+YZT65jMeGG2OQ9CQ9nBN3BKtUiMQMSPOlKG7URZzc7kmLjQ==,iv:oWskd/pKM6s+bXE0PU5ko5Mscd9zzOVEomXxDfYWg1E=,tag:lGsMe0NpOMIHC1jFq/xf2g==,type:str]", "sops": { "kms": null, "gcp_kms": null, @@ -11,8 +11,8 @@ "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6UlhrRmxXem5DWlJiVGNu\nejhTVGRKSGtScFpld1lJWGp4bGlkejhDYlRNCklHaXJkZ0x4Y2Zadi9Tc3hXNDFl\nTHd0Wm1qSzl4VUpwdFNGS0RjVnpYT00KLS0tIHBBSW9JTmE5NkIraFVtenFvUm8z\nRlZhUW80eUd5NndkSXYwc01teDFRVnMK7+D7ozUgmzx/PnPx5BkNYAt6ifj/m0bt\nGKdTZboCiGhGlkTZU9SDfthqegt4E+zXUGZN/AM7bl+trahopKsw0Q==\n-----END AGE ENCRYPTED FILE-----\n" } ], - "lastmodified": "2024-03-22T10:30:19Z", - "mac": "ENC[AES256_GCM,data:uK6FGi3XAqDz0JEdk2Sxokr2TjzM3CbzMAXVUjLGTIOPBrzJl11BTz0CMQ10A5g6xrLAnU8SJ1VnuRyDmol5noUF1KW0jU5FOKBAwK4u7UP4mSG1QyVXRkUap24HBwzOK3M88SQHkFJxTDg2w6m6AuRavQIN0QWMb7SECqalYRI=,iv:scHy912O32YN4oK50MzywYUTwcs3//eqoCtU2Wgkmn0=,tag:w1Rn8xDJXXsDm2X5qOQXpQ==,type:str]", + "lastmodified": "2024-05-06T11:35:56Z", + "mac": "ENC[AES256_GCM,data:NiXDbNYioA0LdBTtLDDvN1yQOCXTPTu6zspSyGL1088bCbJ7OMx6Jl9Gegyjvbwbfo0FJRssSJhhRKY4uLKrpHRKmdJ2y1X4un6Qu0jeKLmEdlA0qsc9NU0LFuWyg2vE89iJNvAEGAKf3N/MQ846uYFxDkw5DdOB/0Rz2n6aPRc=,iv:Rp2ZoQC2Bm/ZmWg0s9ZoAYvvVwE0gIZBydrTHhbQtuM=,tag:nGlGhEBFjLLBjY1bUakqGw==,type:str]", "pgp": null, "unencrypted_suffix": "_unencrypted", "version": "3.8.1" diff --git a/secrets/lego-router/.sops.yaml b/secrets/lego-router/.sops.yaml new file mode 100644 index 0000000..51236ba --- /dev/null +++ b/secrets/lego-router/.sops.yaml @@ -0,0 +1,8 @@ +keys: + - &iosmanthus age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs + - &lego-router age1gt6fyh2fs87yyu2gnaqmzj3f0pdad9ecx29lhf83un0z94ng24hqn3pg4n +creation_rules: + - key_groups: + - age: + - *iosmanthus + - *lego-router diff --git a/secrets/lego-router/default.nix b/secrets/lego-router/default.nix new file mode 100644 index 0000000..e3686dc --- /dev/null +++ b/secrets/lego-router/default.nix @@ -0,0 +1,13 @@ +{ ... }: +{ + sops = { + defaultSopsFile = ./secrets.yaml; + secrets = { + sing-box = { + format = "binary"; + sopsFile = ./sing-box; + restartUnits = [ "sing-box.service" ]; + }; + }; + }; +} diff --git a/secrets/lego-router/sing-box b/secrets/lego-router/sing-box new file mode 100644 index 0000000..6bd63f9 --- /dev/null +++ b/secrets/lego-router/sing-box @@ -0,0 +1,24 @@ +{ + "data": "ENC[AES256_GCM,data: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,iv:KfFDBRfJl6WsBTccLRMoCz4rzwq8quCKtn5kInfNX3g=,tag:Xy9dRDQhe5AXhoYFiqX7sQ==,type:str]", + "sops": { + "kms": null, + "gcp_kms": null, + "azure_kv": null, + "hc_vault": null, + "age": [ + { + "recipient": "age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlbGRwMjFGMG5wWk5haWNu\nTUJmampEeDZBSEJIZlREQkFHSlB0L1dxaVRvCmVFYmJEWEJtaGhXandLc0V0eC9H\nWDVTWVJXMU9wRi84RXVEWStJcFpDSjAKLS0tIE5tOW92YnVCd2xnQVlvZmRPQ1hX\nV1pHK0VOTXhMbjMzVTBncHdKdnYvaTAKoIepZgMkDU8gUmbY13I38v91e7ctJIf4\nUp4XdFir0d+EM/IOtuDPkAYN8DDd1gZoWz3N3TO1dLKOtQQYA18pLA==\n-----END AGE ENCRYPTED FILE-----\n" + }, + { + "recipient": "age1gt6fyh2fs87yyu2gnaqmzj3f0pdad9ecx29lhf83un0z94ng24hqn3pg4n", + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6RFNRUHVNSitQU3lDTE43\nRTN6a0JzcW5mSmp4Q2c3ZGdxc09FdHZWWkdzCk1hRVlIaWxSb0E1cnFVcFpQV1ZT\nc1UzNC8wckVkMHBYcWl5UlMyWXVicGsKLS0tIGxZQ0RUNFpyWFZFNG1uVGZmUTFj\ndXZwS1JCZTJQcExGVDFUVVgxS040MEkKLAegT0ZPJ0FUsKoIEa4dn9yOk+We5gcT\nw3nhnbaMu/uroNDaNnHZkCGNuAHJyZy1dzWGl1otv20BwUcCGGg+Dg==\n-----END AGE ENCRYPTED FILE-----\n" + } + ], + "lastmodified": "2024-05-06T17:52:49Z", + "mac": "ENC[AES256_GCM,data:DcXAkNEQP6C/nJmy5Yib6HzljvpAKbYgNnwCEbfeFBxxegpBaTw5nLSmqlZFNDRnAbdyxuK0oyBpCfzfOTHVApdIvXXj7TKTBW3EhIZLaotn7nsn+bMmv9+tLYb2HAoJQLSDjZz88j2qmyDWoq2NX7cjEh2FZ9/wHSbh8bBB7a8=,iv:YnwjYGo46R0ifWawZcuVuluMoFAdPqVsW++LlNZOcDk=,tag:avZ1ft4WtxKEL2mwD7cNog==,type:str]", + "pgp": null, + "unencrypted_suffix": "_unencrypted", + "version": "3.8.1" + } +} \ No newline at end of file diff --git a/secrets/workstation/default.nix b/secrets/workstation/default.nix index 6b84c5f..e64f4ca 100644 --- a/secrets/workstation/default.nix +++ b/secrets/workstation/default.nix @@ -8,6 +8,7 @@ "${config.admin.name}/hashed-password" = { neededForUsers = true; }; + sing-box = { format = "binary"; sopsFile = ./sing-box; diff --git a/secrets/workstation/sing-box b/secrets/workstation/sing-box index 5801010..5993794 100644 --- a/secrets/workstation/sing-box +++ b/secrets/workstation/sing-box @@ -1,5 +1,5 @@ { - "data": "ENC[AES256_GCM,data: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,iv:rtdtcNGAFPcOc13bXkidm4PwX3RDko0rbJa/R/eLiH4=,tag:Mqu+nctKv8nVjjT3RDvUmA==,type:str]", + "data": "ENC[AES256_GCM,data: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,iv:4Yr3mdFVHOM6+RpuGhh51ybEDVdnuAA/U2lwUQp5GMQ=,tag:ATcfGDVRWNGYIKfxUS+19A==,type:str]", "sops": { "kms": null, "gcp_kms": null, @@ -8,11 +8,11 @@ "age": [ { "recipient": "age12409ktkdynl48p38wz45pu2s25kmffsw4p9d9vgt3xmmwl8f7q7sjlxyrs", - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqUXArNlVrL0N5VnpMTUFv\nTk5EaEFFT21LVlQvbFpqS1psWHlMMEdORTNzClBXUmNCU280NHpsSHU3VzBEODJO\nbnZzVXVzejlYUEZiR3Zkb0ZiNWJhZGMKLS0tIEs3YkM5K0ZNeUdUUEgyaFNLaytY\nLzVsM2w5WW9zWUNtN2VsbGY0M0NNQWMKmXV3JMylY60oMK2Km2S/AAj830e9Opqt\nXzaJ4GQW0fgKwleMk1ST5UA+fQEkZU8l8dvIJm17PzARwIC7xMeZ2g==\n-----END AGE ENCRYPTED FILE-----\n" + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3Z2U0ZXFvdnRXSTVRZ2Jk\nQStJZ01pR1J2ekpDQXVIQi92TzB4MDNMUDMwCjJLeFJ2dUJOZFBabkJBYzBlcytv\nQlhzR09MTmZFbUpwdHBHTmxOajZmYzQKLS0tIEU5RDI2R0tkbEd0YWtzYXoreFNy\nQVE3ODNnMUJQT2UvdW45NGdLdUNodFkKylSd9n0Kuo328PiQtj3PpbKIzdToGJel\nnUWZUH3+n3CkIoG3rwSjMT5mZhO27bXD3zi1xL6hDf4PJEdTagGJdA==\n-----END AGE ENCRYPTED FILE-----\n" } ], - "lastmodified": "2024-04-02T08:50:47Z", - "mac": "ENC[AES256_GCM,data:+a7dxwO/JnGVvSbROJ9aeaFv5zJTiMIYO92PCSFow3TsjbRK8GE525wUrHNFxSj4kbuCNvqRVINNcwBD5rQWCLHjl2KhTOaqPACjSjkEBohbpEZ8iMQzF3W4iv+2ZW8//nF2VJOb3dzqZ+EiM7CjYpm6U/wrVPxWist3CShZLQ4=,iv:bwgV3qzGv/lEeatkd5dD7rom7/Idkp4md7ryDiKlw8c=,tag:8h4dwO+VGZaC0YEEmt+JsQ==,type:str]", + "lastmodified": "2024-05-07T12:04:06Z", + "mac": "ENC[AES256_GCM,data:V47VQN18BnEVqVEJEPEdEBM2LATcIl4/+QRScvZLEqsv/4/C+GoHTDE2gjf3laOu53EMKQAoNQj4EMc+H5X8Qkww6TWzzgPg7WgvNaiDGHvuYVJENwY4EimslgTIYze2vE4nu7jMPjpr223kfjPfNMMpObCvuNw6q9T6+gF19cw=,iv:vcwh2hpWmfRAmZ3WNH7nVXi8Vtf/nN9SWDVTdBEFYgY=,tag:XBfFQG9AUMximFm12yddgQ==,type:str]", "pgp": null, "unencrypted_suffix": "_unencrypted", "version": "3.8.1"