secrets: rekey

This commit is contained in:
Tim Schubert 2023-11-04 23:51:26 +01:00 committed by Tim Schubert
parent 21add79ffa
commit 972f729438
26 changed files with 218 additions and 215 deletions

View file

@ -74,163 +74,164 @@ in
}];
};
};
networks = let
subnet = name: subnetId: {
matchConfig.Name = name;
addresses = [
{ addressConfig.Address = "${ipv4Prefix}.${subnetId}.1/24"; }
{ addressConfig.Address = "${ulaPrefix}:${subnetId}::1/64"; }
];
dhcpPrefixDelegationConfig = {
SubnetId = "0x${subnetId}";
networks =
let
subnet = name: subnetId: {
matchConfig.Name = name;
addresses = [
{ addressConfig.Address = "${ipv4Prefix}.${subnetId}.1/24"; }
{ addressConfig.Address = "${ulaPrefix}:${subnetId}::1/64"; }
];
dhcpPrefixDelegationConfig = {
SubnetId = "auto";
};
ipv6Prefixes = [
{
ipv6PrefixConfig.Prefix = "${ulaPrefix}:${subnetId}::/64";
}
];
dhcpServerConfig = {
DNS = "${ipv4Prefix}.${subnetId}.1";
NTP = "${ipv4Prefix}.${subnetId}.1";
EmitDNS = true;
EmitNTP = true;
EmitRouter = true;
PoolOffset = 100;
PoolSize = 100;
SendOption = "12:string:${domain}";
};
linkConfig = {
RequiredForOnline = "no";
};
networkConfig = {
Domains = domain;
EmitLLDP = "yes";
IPv6SendRA = true;
IPv6AcceptRA = false;
DHCPPrefixDelegation = true;
DHCPServer = true;
};
extraConfig = ''
[CAKE]
OverheadBytes = 38
Bandwidth = 1G
'';
};
ipv6Prefixes = [
{
ipv6PrefixConfig.Prefix = "${ulaPrefix}:${subnetId}::/64";
}
];
dhcpServerConfig = {
DNS = "${ipv4Prefix}.${subnetId}.1";
NTP = "${ipv4Prefix}.${subnetId}.1";
EmitDNS = true;
EmitNTP = true;
EmitRouter = true;
PoolOffset = 100;
PoolSize = 100;
SendOption = "12:string:${domain}";
in
{
"10-mgmt" = subnet "enp1s0" "100" // {
networkConfig.VLAN = [ "lan.10" "ff.11" "srv.13" ];
dhcpServerStaticLeases = [
{
# legion
dhcpServerStaticLeaseConfig = {
Address = "192.168.100.107";
MACAddress = "80:CC:9C:95:4A:60";
};
}
];
};
linkConfig = {
RequiredForOnline = "no";
"30-lan" = subnet "lan.10" "101" // {
dhcpServerStaticLeases = [
{
# ninurta
dhcpServerStaticLeaseConfig = {
Address = "192.168.101.184";
MACAddress = "48:21:0B:3E:9C:FE";
};
}
{
# crocell
dhcpServerStaticLeaseConfig = {
Address = "192.168.101.122";
MACAddress = "9C:C9:EB:4F:3F:0E";
};
}
{
# gorgon
dhcpServerStaticLeaseConfig = {
Address = "192.168.101.205";
MACAddress = "8C:C6:81:6A:39:2F";
};
}
];
};
networkConfig = {
Domains = domain;
EmitLLDP = "yes";
IPv6SendRA = true;
IPv6AcceptRA = false;
DHCPPrefixDelegation = true;
DHCPServer = true;
};
extraConfig = ''
[CAKE]
OverheadBytes = 38
Bandwidth = 1G
'';
};
in {
"10-mgmt" = subnet "enp1s0" "100" // {
networkConfig.VLAN = [ "lan.10" "ff.11" "srv.13" ];
dhcpServerStaticLeases = [
{
# legion
dhcpServerStaticLeaseConfig = {
Address = "192.168.100.107";
MACAddress = "80:CC:9C:95:4A:60";
};
}
];
};
"30-lan" = subnet "lan.10" "101" // {
dhcpServerStaticLeases = [
{
# ninurta
dhcpServerStaticLeaseConfig = {
Address = "192.168.101.184";
MACAddress = "48:21:0B:3E:9C:FE";
};
}
{
# crocell
dhcpServerStaticLeaseConfig = {
Address = "192.168.101.122";
MACAddress = "9C:C9:EB:4F:3F:0E";
};
}
{
# gorgon
dhcpServerStaticLeaseConfig = {
Address = "192.168.101.205";
MACAddress = "8C:C6:81:6A:39:2F";
};
}
];
};
"30-ff" = subnet "ff.11" "102";
"30-ff" = subnet "ff.11" "102";
"30-srv" = subnet "srv.13" "103";
"30-srv" = subnet "srv.13" "103";
"30-ifb4ppp0" = {
name = "ifb4ppp0";
extraConfig = ''
[CAKE]
OverheadBytes = 65
Bandwidth = 95M
FlowIsolationMode = triple
'';
};
"30-ifb4ppp0" = {
name = "ifb4ppp0";
extraConfig = ''
[CAKE]
OverheadBytes = 65
Bandwidth = 95M
FlowIsolationMode = triple
'';
};
# TODO does not work
"30-ppp0" = {
name = "ppp*";
linkConfig = {
RequiredForOnline = "routable";
"30-ppp0" = {
name = "ppp*";
linkConfig = {
RequiredForOnline = "routable";
};
networkConfig = {
KeepConfiguration = "static";
DefaultRouteOnDevice = true;
LinkLocalAddressing = "ipv6";
DHCP = "ipv6";
};
extraConfig = ''
[CAKE]
OverheadBytes = 65
Bandwidth = 36M
FlowIsolationMode = triple
[DHCPv6]
PrefixDelegationHint= ::/56
UseAddress = false
UseDelegatedPrefix = true
WithoutRA = solicit
[DHCPPrefixDelegation]
UplinkInterface=:self
'';
ipv6SendRAConfig = {
# Let networkd know that we would very much like to use DHCPv6
# to obtain the "managed" information. Not sure why they can't
# just take that from the upstream RAs.
Managed = true;
};
};
networkConfig = {
KeepConfiguration = "static";
DefaultRouteOnDevice = true;
LinkLocalAddressing = "ipv6";
DHCP = "ipv6";
# Talk to modem for management
"enp2s0" = {
name = "enp2s0";
linkConfig = {
RequiredForOnline = "no";
};
networkConfig = {
Address = "192.168.1.254/24";
EmitLLDP = "yes";
};
};
extraConfig = ''
[CAKE]
OverheadBytes = 65
Bandwidth = 36M
FlowIsolationMode = triple
[DHCPv6]
PrefixDelegationHint= ::/56
UseAddress = false
UseDelegatedPrefix = true
WithoutRA = solicit
[DHCPPrefixDelegation]
UplinkInterface=:self
'';
ipv6SendRAConfig = {
# Let networkd know that we would very much like to use DHCPv6
# to obtain the "managed" information. Not sure why they can't
# just take that from the upstream RAs.
Managed = true;
"10-roadw" = {
matchConfig.Name = "roadw";
address = [
"${ipv4Prefix}.120.1/32"
"${ulaPrefix}:120::1/128"
];
DHCP = "no";
networkConfig.IPv6AcceptRA = false;
linkConfig.RequiredForOnline = "no";
routes = [
{
routeConfig = { Destination = "${ipv4Prefix}.120.1/24"; };
}
{
routeConfig = { Destination = "${ulaPrefix}::120:1/64"; };
}
];
};
};
# Talk to modem for management
"enp2s0" = {
name = "enp2s0";
linkConfig = {
RequiredForOnline = "no";
};
networkConfig = {
Address = "192.168.1.254/24";
EmitLLDP = "yes";
};
};
"10-roadw" = {
matchConfig.Name = "roadw";
address = [
"${ipv4Prefix}.120.1/32"
"${ulaPrefix}:120::1/128"
];
DHCP = "no";
networkConfig.IPv6AcceptRA = false;
linkConfig.RequiredForOnline = "no";
routes = [
{
routeConfig = { Destination = "${ipv4Prefix}.120.1/24"; };
}
{
routeConfig = { Destination = "${ulaPrefix}::120:1/64"; };
}
];
};
};
};
age.secrets."wg-privkey-vpn-dadada-li" = {

View file

@ -1,10 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 L7f05w d7GeMCNl1yWxfvLlNsZrIDb4OxSADD6D4nvYfYZz7Vo
Xe0xWD8Q6tKR7uIDFkD+/jgfUzUOX4CrxZB5o9bM2zk
-> ssh-ed25519 Otklkw kek8jZrI0Qz8s7G/uxuV4VUYs67TrUd/+/ZAUD9/k1k
v0C/+QO8x2ThAlH+/IdVorUFwnNrHwbCU3zWt5TEwqw
-> y'2X-grease t2m2yjI ag|Z
mhPGDYZmjg1cnxZVTyGYh8H4cnO9mSCcWUSFAHy9JgPwWPi3LyfUkhBsnWpkE7zx
9AqAUKb5e2Ezqtx1g1l5G1mxmA
--- NJLZT2v75GVUojKNuRKa7YEM5LxiC/Fd48YTbRrLFsU
tý¨ÈÚyxÉ<78>ö…g€í3âW·°ø1ðœŒø<C592>´j(·åû¤x½”ܨբTnãJ¦ e×9¼R
-> ssh-ed25519 L7f05w RayKtknLNvFu88aFp4QL7ZMLAh5VmHmlr1DWVsWBziE
rckeFrazZJ3TxY/yD2wlzRVLh9L4x1bV2Nk7Q0S/RWM
-> ssh-ed25519 Otklkw oub7OICQalIkCqAZh4/FfXB9PPBe7j2IpBP7WF/UXGk
gAwxU97b0Js6UPv59/1389/qdPGQb4koa49R14c3UjA
-> mU.rG&?F-grease V? d a}mj5 ^&dc?\
B0k6BjXmH0cm74+rjQrzJwKa1dcFwTdmlgltZ70oHctwA3+E4/CQ1ChH9UHzkHGG
Fb62klB5XYePywsvxLo2nIGVIvhBgsfIvUpq
--- ONLpuXfKtuCB+VD5IQ5KeSPyqgEb4a2y26+n5E8Ph3E
uîD{<7B>¨r íÚ˜¡°†RÊ9õP¦ j?hDÃ<™ØOÓœÝáè> ‡Ä-Œu¹áý#…Fñ2N +Ysò\ õ

Binary file not shown.

Binary file not shown.

View file

@ -1,11 +1,11 @@
age-encryption.org/v1
-> ssh-ed25519 L7f05w xkw7tPnkvX1TGG2/Urocw8mQe6r2/Fpxkvs1Nr3cVXs
eJyvIUrFp0mGWXcmHjP1+5YW9cgs9m8bqUnwgm8iMi0
-> ssh-ed25519 Otklkw 1IfE9jxV6gz7yfPmSmXsTWsB36RFHmdpjw5eUlElTCo
GyTNhYhDbD2olE6DiKkr47Mu9NMBMHsO5/pTkcx8WXk
-> ~6#g&f-grease
lIbAZllBnOK9YRMIQfPX/veMc111/u5w83pQGuMMWUSyaHT0xwxp8IYn+R9m9iV0
haQXgTSuQxPhGUJg+1wwncJwnYgzDcCPruprrFTmf0s5HZDr
--- n9uSP8ZmTTZ89mlRiNKtRfAEz7NV7Yn0ZQhzP4uh4fo
#Ôü¿¯K²¥Ý~l¨Y_!Ï1!fz€î@
O¦FИ(öÃZ«!<21>Ȣʟ8aBÒ^¢ç!CFP•»[h$òOaf‡ÕÂýe<C3BD>(l:X®â*póÚÅÂ
-> ssh-ed25519 L7f05w 6Ct4ARdph2N0g7ZFljPbEAg4R2gP5z2qMupI288AF3c
NaQUNkEt7XsV0A4nNR5uguwK6C2KN26FJjeNB0mtz8U
-> ssh-ed25519 Otklkw uyRTZRjgzleuEFqGJDiO84c5yXFV0XtQci7PdroNzAE
vl80LseOwmKyR+d+VXWseuszqao56GjnbyN6XzETKt0
-> {D^ar+U-grease bvk{ `4v Tc? Fv
m/JnzLsIbh8nYWSIvbBl7GwnZQPvAyuHSbmNWiN5pzS7O+wFs9xWwl26Vn6Y/lEf
JL9+Ra5MHsiR7C9XRf7or1rd62SPuIKyaWlq+Z4Vqr4Of4jWyJqQtNo
--- 5cNGpnlhGc0NNriUIZ5KYGR7Erh/fPqV8/8qnpqEn+8
sqD&Ÿù‰L“‡=7Úämä¦Êií½Ø£%Sf(ž#éreãÎë)Ú§›^†v÷ãc$g„¥yïyí<79>A•»k6ý¢Ì¦í<C2A6>Fñ8¾J=ôôJø
W

Binary file not shown.

View file

@ -1,9 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 0aOabg 2rR9gmucthvZ2cNWMKzaVQfAvZgvI4fy7gYi5+AEpVE
b4neKeY8BadfOdPqasjkR0xmaPTtv97W6UNIfUi+nxY
-> ssh-ed25519 Otklkw wogPCmJIBOBM6c73jWFnF5PmrDo9yELoF/kxLI3ZwVM
P0V8L8WKZICCkLgxbRk9aTArx0GghZUbG/xLglL4+l8
-> +R-grease
/mciikQ2
--- UYVFwxGvyG9o196hwTXJkjVSr+hGtAZ+QmZPa4NHiQk
®«\'©xò@<40>øGן•<C5B8>)måuçI„orÛ<72>f|<7C>6—l”}¯Ógxo.ÚIwm3ùêœï½­\®·=VmøÓUH…¨ßgI…Õ[K=?
-> ssh-ed25519 0aOabg rRJrTkyZU+Fmx05c4FvTCW2xrGKVzqqkECywb99OLwg
AELU54TN2oUxQ9r2Zx2CltVvyKh+7kCJnccnENtAZyE
-> ssh-ed25519 Otklkw i9UGmqESZAaz3x1B5OjJq/ILEQnDRWsGbgHtnICrBl4
plEjZljaiRmeOhqFxblzfFcy/VqViE18hSwPrxgHm6Q
-> Ukp-grease CP.W
MZp3tfA9p0SwGxc1gaphv1XUPi3jj4dfeiBmiVl/FB7DYubrLzbJZ2Zviz3S2h5l
upLMFRZsTyhskVQ0lCfXFXb86xLXTc6pXM0klBwGajJrJFbF5Q
--- JZS2Vh+BBv5memqLMM+onaaldFUFm6keKFQooGSmL04
.oçÄTŠ ó2¦«bºÂk²,¥—·Î·E‡“áÜØÌÄx<08>|•óÑôgÍÅø1­¥˜h;\}“ê¡8¾=e)л±'ïJp(¾

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,10 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 0aOabg deIgXn8a+arzwGBlDr/jSwh/yoZ4yNUieqiDOEVeqQc
MTYJWoYqvLCVh2Nw0b0dLyYR++kfUSVVGQuVlcXa3XI
-> ssh-ed25519 Otklkw gVXAVxWtkBp3qi4afl5/8X62iXM0lmj3qU1hzdLpoRI
0JNv0Gb3MrUODDjO9yO6+IUoP5wTrd9cu3B9r20umsM
-> U^y7-grease +u vsf{`Z$r
OPfX961ZFMCMEq5kxV2XmOS2ahq5xCrvLkORHK2xzhcYlN/7aVz2jkkzkkKxsLS7
J1tpba10ZnC7
--- C79gzWZZ5DM+/mEApSfkI6CcsWxEbYY3zq4mFMxsgSY
ÒrÕ<L-]…ôëœ<C3AB>aßAxx匢§ó/$Ãåáä=Ÿä…âeÜ6ôop]n6U_E…'3ήA³|(Xëõh
-> ssh-ed25519 0aOabg 6QT8adxrQxGCx9w6JZPkbCsCM/Vos+D41JoEQ19h0AY
UaXt2lE7VnhaQ4McdCIGo8kdaYrPyg3ne8MIBCt7NXE
-> ssh-ed25519 Otklkw GJQj739xwoeP9xTLpLrCxANx3/Ebipnr345xKSFLf3w
xtQBgTYrLzkaWBkx8pi0R+GKa6inKFzFD5tompll3wo
-> )gWM0O-grease i%" tB
culBBLA5Bt/POa9w
--- Vtxd8HsFnjBl6eXE4UYNoR1Ca/JA9UlK/WE+FNkmPtk
bV v—<76>ż:±Šah&ŕ4üfNJ¤ˇ2]ČŮ{!%1ýŕąIa\}Xeżx1~˛"šrŰ,Éj:O?ňáşľö5

Binary file not shown.

Binary file not shown.

View file

@ -1,9 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 J6ROvw eX4e1/ZgiIHwzU/wdJmAizVoLdWTIdBfXFy/RATM5Ho
BV9z3gp3LniSjx0425xy7NrVmt7KpOlduj77QkuV+Kw
-> ssh-ed25519 Otklkw YVZRmNQdFB9k/dim3UXMwMW1YJSBbMtk+kJ5urooDxA
V7tLGiQo88RI5X0ViSmAWxDubLdFzQ7VM8nf2PXcAgs
-> 24-grease
M4DzbwlJ7iM9dE0Ug/NS2iRU
--- l2RGwwSUcOpt/YRG/l3aYBiMMF28SoVNUc3nl2A++38
5×þ”Т‰°H½ë}+`g˜Ë} Ûbœ¸)¨œ‹ËíÔ<1B>jî6 9¿k³_Eˆ­ÉyS*ÍvÛÿÕJzbwGmp…DPÜC
-> ssh-ed25519 J6ROvw R+xnmMAoVmaJi9UMYBSX5CKk21LhI9iIionc6Nh8ZWg
eR+OpFfB6BIOzOUeeY5IzmXerCCiqOYS9ZAGIb0UAS0
-> ssh-ed25519 Otklkw HYpIGulRkcfpKhSdb1mF/hbBHiXCUzYR6/b0KspgHTU
1HAtdynQZ10AVgGqh4cw3qDqSh6Suum3zYo6/G7qKw4
-> +YMQ-grease
wyHx9k+fMnxTm1LMDhmmMye/
--- g1F7i8Y0foxjDp6qbBtjhY3A/vyxM2R/zIQJZTG2F5o
.Ìþ]ÃnéŸå"wjkYd<2Ï{Nš íN 0òÊÿ©`ÈX³¾¢U”sPxÉV)nš£fOg¤µ<Nv
ðÐÁB5$©¿e<C2BF>g>ä

View file

@ -1,9 +1,11 @@
age-encryption.org/v1
-> ssh-ed25519 J6ROvw RSmOQps1P364OmALB8CDN3a3opjVnjRetSrRNwRWwj4
amGBdoyL0ZKnoNc3+uDYLCJxasM7fe8kMBpc27YDQXI
-> ssh-ed25519 Otklkw COlRXvKrV5S2p4BNiiO8+KTYXa4GueT+HpKLCIjxzgM
ui82jT1CSKUBhDzUcebhGhTBr6GyirgSkbqWrVrJXx4
-> %KN@wF-grease 9Y'V@{E: :]
4OY+tb7//oCAEInx2fvw3MKp8yPIjXqLqtU
--- 0I3N//LfWrBi+pssXEPxmmbBfsvQ31MCG9UFAkisTMw
ʶ<C38A>¢0™¼Jo5E¯Ö\ö—hå,D”Õ¯ß×J4WYôàÅNCŸ8$üã6R-¥ÀWeT”îd«IZÖ'R˜Â%ë<E28098>õË&
-> ssh-ed25519 J6ROvw wkW16tPBMBW6C6OPU6Dbq9mfk8w1hdTNB1lEP7r3ym4
oeGp1/oGD5R208ZutBsJUsA+A94hOASnm0JavDjsHvU
-> ssh-ed25519 Otklkw AQCgfaxhvd59oOf/nH75WhHtYt6RXuO/U/c+pKemGDQ
Jx5pffK1rX2Yyal+ZvTTGiMm2PsMZQVIRguHpDU2iig
-> ^-grease '
xxEd1+U8pgjgcmgxRJqbLIHNoga8kUdwaSVsypHL1UB+kPAPFIdZF4KMOj7hshzC
vmaUOinUhDiWXQ
--- A5Ig3NOr1MW/FXwh7xDkITEd3o/LU8TxBdrIq5xLsZc
Ce\BN^Ä¡ª¯´ &.…º½+âk°âÇ,ÿØxÃ)T¦´TS™:hòŽª³SN ±<><07>Úm<01>gÙ”× —¯_ WŒž¢
/Öõ

View file

@ -1,9 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 jUOjpw JrJZKZsbU+oF9GRmXfw04bppX1YCiv/kiHZFl2XgZm8
1fJKxMNdM8pBQG447SZMrnNswBVjbDefv30YERMzjyM
-> ssh-ed25519 Otklkw j9I9FVJI1Y/WsO3Z8/NcEhUT6qU36r1O3M7rNWdwgVo
GQOyogjb68YflICPEJ1ZiEyXjMVf0kFg75Fh5vb1k/U
-> n-grease L 5zCO]bn j1@tCG
JPGxlhedGFtqxORJCqyabQvObTurBFM5KYpyCnscjw
--- EPR6lMAI7VtKjeYhrk9AG1ZYMQdevgubSVlrCtNsQAQ
H0xD$- ËSoÏŸ/,Ÿš$“r¡{Ø.C13sÇ*a µÖØÞ<×cý¶<C3BD>‡Ä‡ÔYP 2£žƒ§Ø8[
-> ssh-ed25519 jUOjpw zb9yidyhlOj2LnVSCjNwq0MBj8Ik7zdT+6vs5k2vdTY
lxFHzj+mUpW8ogGkfpZZWZRPfMp38Sb2GYojBUrxGB0
-> ssh-ed25519 Otklkw G3tj2S2BM+jmGg5ajD2hTIKAWJMAhuHAT4jpFpu2YmQ
XDLRUWirSzXQ55HnWdICzICPQDL8pyJC9SnS9ODwhdM
-> v#M-grease
rEp5i85i+0HA+Rx31HR27NU
--- 2Q+j2Vh/Tbv6NYYg614YL1+yP8hff++2zAuWV7dHDe8
HôY÷¢¿\ê¥ ¬õž˜\;î¶m~q<>´—»®z8•5ÁZ±<E28098>ÁËÄ«<>ûà̯e9Iû<05>Åaä”<C3A4>éY«

Binary file not shown.

View file

@ -1,10 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 L7f05w 626jkdszE7nFjXsB8InmF9c7z0g6Lx45rXviJJVipgk
HOo5D8bIXEUWN+OQOrAtsheqEFpoTEljiQN9iLsGYFw
-> ssh-ed25519 Otklkw MoBeg8zEAs7S8yRN4kMWFmh1wpFG9a3sIl7B3933U0I
KHbNqlQgIfC4oOaXnCHuiXxlmqjwrnR72IdTd18yCVQ
-> ~\AYPd-grease +[i?zA&
k2qPi9GkmpHdaMnPqWsMPWdqa00MdrneQSDEixtbPmedrzPD1w
--- R5nczLpf0MEbOrJBfTOM2mHkh3zbWxZRAn6Ke4PsHSg
[V$·ôãÂðžq
¬@“<_ÅèT<C3A8>ˆYfxMž «<><1A>Ø<EFBFBD>¼<7F>kœ”]93½Rý î¶]­…Äúâ ß!rĬ¹»¤„K
-> ssh-ed25519 L7f05w DHsnBF853MmsymLqLiF0nNe2ont+At8LZYE/yqHfBQ8
mVJGzwz40Zqd5SkPNRDj+rFhUVwTiuzDXdTy2OJ+3yY
-> ssh-ed25519 Otklkw TPuqHErGEA3YkU2W235Q5y0JNIBJ+nFEqxt3UETcPWM
RlJi5xyX6LtBIuhkEhoIS3d2cGqjqMYXegQVyPa0alE
-> 9-grease
CGq2mKa9tcpbfwJal5EVowc
--- +XubXWyX7sV8y+iK+jxCxTIFhJO4s/dkwsznKxKCCfw
Ål©ÁÕ¾g{êa€'ÌIó[Ïz<ää´©L'‰Ëœeµªœ<C2AA>¥Æ:Š5¹<35>ÒQ:ЉWùÄwÿc¼.j_ܪU8ÝI0Pfš wTßÞ"qE