From 33158bdb5743527d8f4eaf79bae3c399ba0c48a1 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Mon, 6 Nov 2023 11:27:09 +1100 Subject: [PATCH 01/54] feat: Add servers page --- templates/about.html | 2 - templates/ascii.html | 2 - templates/projects.html | 2 - templates/servers.html | 304 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 304 insertions(+), 6 deletions(-) create mode 100644 templates/servers.html diff --git a/templates/about.html b/templates/about.html index fa6e571..32a6f7b 100644 --- a/templates/about.html +++ b/templates/about.html @@ -47,8 +47,6 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= {{handshake_scripts | safe}} -

Nathan.Woodburn/

diff --git a/templates/ascii.html b/templates/ascii.html index b03d362..e925d54 100644 --- a/templates/ascii.html +++ b/templates/ascii.html @@ -47,8 +47,6 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=


NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXKKKKK00000O0K000000000KKKKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXKKK00000000000000O0K00000000000000000000KKKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXKKK00000000000000000O00O0K0OO0000OOOOO0000000000000000KKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXKK0000000000000000000000KKK0KKK0KK00OOOOOOOOOOOOOOOOkOOO0000000KXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKK000000000O0OOO000O00KXXXXXKKKKKKKKKKKKKKKKK0OkkkkkkkkxddxddkOOOO00000KKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXK00000000OOOO00OOOO00KXXXK000000000KK000OkkkO0KKK0OkxxkkkkkkxdodxkkOOOOOOOO0KXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0000000000OOOOOOOO0KXNNXKOO0KKK0000OOkkkO0KK0KKXXKXXKOkxxxxkkkkkxxkkkkkkOOkkOO0KXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0000000000000000OO0KXNX0O0NX0OOOkxOKXXXOxxxkKNNX0O0KXK0XXOxdxxxxxxxxdxxxxxkkkkkkOOO0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK000000O0000OO0OOOOO0XNX0000XNXKKK0OOKXWWNXK0kxxkO0OOOKKOxx0XKkddxddddxdddddxxxxxkkkkkOOKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0000OOOOOOOOOOOOOOOKNN0O0XKO000OkO0KXXXNNXKOOOK000KOkxk0KkdxOXXOdddddddddddddxxxxxxxxxkkOOKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK00OOOOOOOOkkOOOOOOO0XX0k0XKOkkKWNNK0OKNWWWWNX00KXKXNKxddk0kdoxOXXkoddddoddddddddddddddddxkkO0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK00OOOOOOOkkkkkOOOOO0XX0kOKXK00k0NNXNNWWWWWWWWWNNNXXXX0xdkKNKkoox0X0doddddddddddddddddddddddxkk0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX00OOOOOOOOkkkkkkkkkkOKNKO0XWWXKOkOKXXXK0KNWWWNNK0KNNWN0kOKXK0OOddk0KOoloooooddddddddddooddddddxkkOXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OOOOOOOOOkkkkkkkkkkxOXNKOKWWKOkkkxkKNNNX0KNWWNXXNNNNNXOxxk0KkooodOKKkooooooooooddddooooooooddddxxkO0KXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OOOOOOOOkkkxxxxxxkkkxkKNX0XX0OOkxxxxk00OO0KKXNXKO0KX0OkodkK0koloxk00Ododdddddooddddoooooooooooddddxdk0KKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OOOkkkkkkkxxxxxxxxxxxxxOXNXKOxk00OkOOkxkOkxxddkkxdONWNXX00K0xlodkO00Odddddddddddddddoooooooooooodooddxk0KKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OkkkkkkkxxxxxxxxxxxxxxxxxOXNX0kxxO00KNNNWWNXK0xxOOOKNNXKOkxxkkkO0K0kxddxxdddoolloollllllllllllllllcccllldOOOKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0Okkkxxxxxxxxxxxxxxxkxxxxxkxk0XNK0000OOO0000000kdxkkkkOkdddxkO0KK0kxdoodddoollclllcc::::::ccc:::;;,,'''''';coox0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0OkkxxxxxxxxxxxxxxxxkkxxxxkkkkxkO0KKK00OOOkkkkkxxdxkkkkO0KKK00Oxdollloollllccc::;;;;,,,,;;;;;;,,'..........,;::coOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0kkxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxkOOOOO0KKKKKKK000K0Okkkxxxdolloollccccccc::;;,,,,,,,;,,,,''.............',:::::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOkxxxxxxxxxxxxxxxxxxxxxddddxxxxxxxxxxxxxxkkxxxkkxxxxdooooooodooolllccc:::::::::;;;;;;;;;,'...............',;;;:::;:xXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOkxxddddxxxxxxxxxxxxxxddddddddddxxxxxxxxxxxxxxxkkxdxxxdddooooolllllooolllccccccccccc:;,'..................';;;;;;::;ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0Okxdddddddddddddxxxxxxxxxxxxxxxxxxxxdddddddoodxxxxxxdolccccccc:ccclllllcc::::;;;;;::::;,'.................,,,,;;;;::;l0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXKkxddoooooooooooddddddxxkkkkkxxddddddddoddddxxkkxxdoooollloooolllllllllc::;,'.......''',,,,'...............',,,;;;;;:;:kXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXOdoooolllloooodddddddddxxxxdooooodxxxxxdooolllc;,,'''',;:ccllloolooollc::;;;;;;;;;;;,'.....................',,,,;;;;::;o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
XXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOxollllllllloodddddoollcllooddddddddddxxxxxxxkkOO00000000KKKKKKK0000OOkkkxddoooooolc::;,''''''...............',,;;;;;;:;ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
XXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0xocccccccllloooollc::::clooddxkkOO00KXXNNXXXXXXXKKKXKKXXXXXKXXXKKKKKKKKKKKKKKXXXXXKK0Oxdollc:;;,'.............',,;;;;::::dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
XXXXKKKKKKKKKXXXXXXXXXNNNNNNNNNNNNXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXX0dc:;;;;;;::cccc::ccloodxkkO00KXNNXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00KKKKKK0kxolc;'..........',;;;;;;:::o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
KKKKKK0000000KKKXXXXXXXXXXXXXXXXXXXXXKKKKKKXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXX0xl:,'''',;::cclloodxkO0KXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000KKK00000000KK0000000KK0Okdc;'.......',;;;;;:::lONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000000OOOkkOO000KKKKXXXXXXXXXXXXXXKKKK000KKKKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXX0koc;,,;:cooddddxkO0KXXXXXXXXXXXKKKKKKKKXXXXXXXKKK00OOOOOOkkkOOOO00KKKXXXKKKK00000000000000000000OOOO0K0Odc,.....';:;;::::lONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOkkkxxxxkkOO00KKKKKKKKKKKKKKKKK000OOO00KKKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOxollodxxxxxkk0KXXXXXXXXKKKKKKXXXXXXK0kkxdollc::;;,,,,'''''''',,;;::ccloodxO00KKK00OOOOOOOOOOOOOOOOOOOOO00Odc,...';;:::::lOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OkkkkkxxdddxxkOO0000000000000KK0000OOOkkkOO0KKKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXK0OOOkxxxxkO0KXXXXXKKKKKKKKXXXK0Oxdlc;,'''.....................'',,,,''...''',;cloxkO000OOOOOOkOOOOOOOOOOOOOOOko:'..';;:::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
kkkkkxxxxxxkkO000000OOOOOOOOOOOOOOkkkkxxxkkO0KKXXXXXXXNNXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNXXK0K0kxdxO0KKKKKKKKKKKKXXXK0kdl:;,.............................',;;;;,'..'',;,,''..',;cldkO00OOkkkkOOkkkkkkkOOOkkxdc,.'::c:cxKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xkkxxxkkkOOO00000000OOkkxxxxxkkkkkkkxxxxxxkkO0KKKXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNXKKKOddk0KKKKKKKKKKKKXX0kdl:,'.................................,;;;;;,,'',;;;;;;,''',,,''',;cldkOOkkkkkkkkkkkOOkkkkkkdc;::cc:o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxkkkkkOO0000KKKKK0OOkxxdddddxxxxxxxxxddddxkOO0KKKXXXXXXXKXXXXXXXNNNNNNNNNNNNNNNNNNNNNXKOkxk0KKKKKKKKKKKXKOdl;,'...................................',;;;;;,,,;;;;;;;;;;,,,,,,,,,;,''',:ldkOOkkkkkkxkxxkkkkkkkxl::cclONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxkkkkOO000KKKKKKK00OkddoooddddxxxxxxdddddxxkO000KKKKKKKKKKKXXXXXNNNNNNNNNNNNNNNNNNNNNX0OOO0KKKKKKKKKK0koc,,',,,''.............'''''..............',,;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,'',:ldkOOkkkkkkkkkkkkkko;,::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxkkOO0KKKKKKKK0OkxdooooodddxxxxxxxxxxxxkkO0000000000000KKKXXXXNNNNNNNNNNNNNNNNNNNNX000KKKKKKKKKKko:,,,;;;;;;;,,,,,,''..'',,;;,'............',,;;::::::::::::::;;;;;;;;;;;;;;;,;;;;,,,,,'';:ldkOOOkkkkkkkkx:..;::dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ddddxxxkO00KKKKKKK0OkxdoolooodxxxkkkkOOOOOOOO00000000OOOOOO0KKXXXXNNNNNNNNNNNNNNNNNNNNXK0KKKKKKKK0xc;,;:::::;;;;;;;,,,,,,,,;;;;;;,'..........',;;::::::::::::::::;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,;cldxkOkkkkxl'..';:oKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dddddxxkO00KKKKKKK0OOkxdooooddxkkkOO000000000000000OOkkkkkO00KKXXXXXNNNNNNNNNNNNNNNNNXKKKKKKKKKOd:;;:ccccc::::;;;;,,',,,;;;;::::;,'.......',;;::::::::ccccc:::::::;;;;,,,,,,,,,,,,,,,,,'',,;;;;;;;,,,;cloddl:'....';dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dooddxkkO00KKKKKKK00OkkxdddddxxkOO0000000000000000OOkkxxxxkO0KKKXXXXXXXXXXXXXXXNNNNNXXKKKKKKKOo:,;:cllcccc:::;;;,,,'''',,,,;;;;;;,,'''',,;;:ccccccccc:cccccccccc:::;;;,,,,'''''''''''''''',,;;;;;:::;;,''''........':lolox0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ooodxxkOO0KKKXXXKKK00OOkxxddxxkOO0000KKKKKKKKK0000OOkxdddxxkO00KKKXXXKKXKKXXXXXXXXXNNXKKKKKOo:,;;:clllllccc:;;,,''.......''',,,,,;:::ccccccccclllcccccccccccclcc:::;;,,'''...............'',;;;;::::;;'..............';::cld0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
oodxxkkO00KKXXXXXKKK000OOkkkkkkOO0000KKKKKKK00000OOkkxdoddxkOO000KKKKKKKKKKKKKXXXNNNNXKKKOd:;,,,;:cllllllc:;,''................',;;:ccclllllllcllllcccc:::ccc:;,,,'''......................',,;;;;;;;;,'...........,;:cllllloOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dddxkkOO00KKKXXXKKKKK000OOOOkkkOOO0000KK00000000OOkkxddooddxkOOOO000OOOOO00000KXXXXXNXK0xc;;;,,,,;cllolllc:;,,'''''''''...........'''',;;:cccccclllcc:::;;;;;;,,''.............'',,,,,,,,,',,,;;;;;;;;,'.........',;:cllllllco0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxkkOO00KKKKKKKKKKK00000OOOOOOO0000000000000OOkkkxddooddxxkkkkOOkkkkkkOOOO0KK0OkkOOkoc::;;;,,,;clooollc::::::::ccccc:;,'........'''',,;;:cclllllccc:::;;;;;::::;;;,,,,;;::ccllllccccccc::::;;;;;:;;,'........',;:ccccllllccxXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxxkkkOO00000KKK00000000OOOOOOOOO0000000000OOOkkkxxdooodddxxxxxxxxxxxkkkkO000kxxxxxddoc:;;,,,,;clooooolllooooooodddddooolcc::::ccccccc:::clllllllcccc::::ccllllloooooooooooooooollllllllccccc:::::;,'......',;:clcc:::ccccco0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxxxxxkkOOOOOO000OOOOOOOOOOOOOOOOOOOOO0000OOOOkkkxddooooooddddddddddxxxkkO00kxddxdddddol:;;;,,;cloooooddddddddddddddoooolllllllooodddolccloooooollccccc:ccclllllc:;;,,,,,,;;:cclllllllllllccc::::;;,'.....',;::cccc::::ccc:ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxdddddxxkkkkkkkOOkkkOO000OOOOkkkkkkkOOOOOOOOkkkkxxddoooooooooooooodddxxxkO0Oxddddddddddol:;;;,;cloooooddddddddool:;,,,''''',,,;;:cloooollloooooollccccc::ccccc:,'.....'''',,,'''',:cllllccccc:::::;,''...',::::::cc:::::cc::xXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dxdddddddddxxxxxxxxkkkOO00000OOOOkkkxkkkkkkkOOkkkxxxddoooooollooooooooddxxxkO0kdooooooddddooc:;;;;clooooooooodddl:,''.....'',,:c:;,',;ccllllooollccc:::::::::::;,.......'',,,,;;;;,,,,;:ccccccc::::::;;,''',;:::ccccccc::::::::xXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dddoooooooddddxxxxxxkkOOOOOOOOOOkkxxxxkkkkkkkkkkxxxddoooollllloooooooodddxxkOOkoloooooododddol::::looooollllllllcc:cc::;;,,,,,;;;,,''',;:cccclcc:::;;;;;;;;;;:;,''',,;;:::cccccccccc::::::::::::::::::;,,,,;;:::;:clllc::;::::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
doooooooloooodddddxxkkkOOOOOOOOkkxxddxxxkkkkkkkkxxdddoooollllooooooodddddxxkOOkollllloodddddolcc:clooooollllllllllloooooooooolllllcccc:cccc:cc::;,,,,,,,,,,,;::::::::ccllllllooolllccc:::::::::::::::::;;,,;;:::;::cllcc:;;:::o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ddoooolllllooooodddxxkkkOOOOOkkxddoddddxxxkkkkkkkxxdddddoooooooooooddddxxxkkOOkolcclloddddooollccloooooooolllcccllloooddddddddooollllccc::::::;;,,,,''',,,,,,,;::::cclllllllooollllccc::::::::::::::::::;;;;;;;:::::cccc::;:::xKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxdddoolllllloooodddxxkkOOOOkxdoooooodddxxkkkkkkkkxxxdddddodddddooodddxxxkkkOOOxlccloodoooolllolllodooooooollllllllloooooooooooollllc:::;;;;::;;,,,,,,,''''''',,;;:cccccllllllllllcccc::::::;;;::::::::::::::::;;;::::::::;;:o0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxddooolllllloooodddxxxxkxxxdoollllooddxxxxkkkkkkkxxddddddddddddooodddxxxkkkkOkdlcoxxdoollllooooodddooooolllllllllllllllooooolllcc:::;:::::::;;;;,,,,,'''''''''',,;::::ccccccccccc:::::::::::;;::::::ccc::::cc:::;;,,;::;;;lOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxddddooollllllloooddxxxxxxxxddollllooodddxxxxxxxxxxxdddddddoodddddddddddxxxxkkkxoldkxollccloxxdodxkddoooollllllllccccccccccc::::;;;;:::::::c::::;;,,,,,,,,''''',,,,,,;;;;;;;::::::::::::::::::::::::cccc::::clc:;,,',;:::;ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxddddoooollllllloddxxxxxxxxxxdooooooooooodddxxxxxxdddddddoooodddddddoodddddxxxkkxddxxoc::::okkxddxkxdoooolllllllccc:::;;;;;;;;,,;;;;:::::ccccc::;;;;;;;;,,,'''',,,,,;;;;;;;;;;;;;;::::::::::::::::::ccc::::cc:;,''',;:::;:dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ddddddooooollllllooddxxxxxxxxddddooooooooooooddddddddooooooooddddddooooooooododdxkOkkxdoc;;;:ldxdddkkxdooollllllccc::::;;;;;;;;;;;;;;;::::cccc:::;;;;;;;;;;,,,'',,,,;;;;;;;;;;;;;;;;;;;;;;:::::::::::ccc::::c:,''',,;:::::o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
oodddoooollllllllloooddxxxdddoodooooooooolllllllllllllllloooooodoooooooooooooooodxkOOkxxdc;;;;:odddxkxdoooollllccc::::::;;;;;;:::::::::::ccccc::::;;;;;;;;;,,,,,,,,,;;;::::::::::::::::::::;:::::::::ccc:;::c:,',;::::;;:o0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
oooooooolllllccllllooooddddoollooolllllllllcclllllllllllllloooooooooolllllllloooodxkOOxdx00ko;,coddxOkdddoollllllcccccc:::::::::cccccccccccc:::;;;;;;;;,,,,,,,,,,,;;;;:::::cc::ccccccc:::::::;;:::::cccc:::::::ccccc::;;lOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
lllllloollllllllllloooooooollcclllllllcccccccccllllllllcllllllllloollllllllllooooodxkOOOOKK0xolloddxOOxdddoollllllllllllcccccccclllllc:::::::;;;;;;;;,,,,,,,,,,,,,;::ccccccccclllccccccccc:::::::::cccc::::::::cccccc::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
lcccclllllllllllloooooodddoolccccccccccccccccllllllllllccccccllllllllcccllllooooooodxOKNNX0xddddooddk0Oxddoooooooooooollloooooooooolc:;,;;:::::::::;;;;,,''''''..',:cllllllllllllllllllllccc::::::cccccc::cc:::::ccllclkKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
lcccccccccclllllloodddddddddollcc:::::cccccccllllllllllccccccccccccccccccllloooooodddk0XXKOxooooooodk00kddddddddddoooooooddddddoooolc::;::ccccccc::::::;,,,,'''''',;clllooooooooooollllllllcc::::ccccccccclllllllclodx0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cc:::::cccccllllloodxxxxxddddoolcccccccccccccllllllllllccccccccccccccccccllloooodddddxk00OOkkOOkxddxk00Oxddddddddddddddddddddoooooolllllllooooolllccccc::::;;,,;;;;:ccllllooooddddoooollllllccccccccccccokOkkkkkkkO0KXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
:::::::::ccccclllloddxxxxxxxxdoolllllllllccccllllllllllcccccccc:::cccccccclllooooddddxxxkkkOOkkkkkkkO0K0kxddddddddddddddddddooooolllodddddddddddoooollllllccccccccc:cccccllllloodddooooollllllccccccccclkXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
::::::::::ccccccclloddxxxxxxxdddoooolllllllllcclcclllllccccccc:::::c:cccccllllooooooddddddxxxxxxxdddk0K0Oxdddddddxddddddooooloolllllloodddddxxxxxddddooolllllllllcc:ccccccccclllooddooollllllllcccccccclOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
::::;;:::::::ccccccloodxxxxxxxdddddoooollllllccccccllcccccccc::::ccc:::cccccllloooooodddoolllllllooox0K0Okxddddddddddddoolllllllllllllllooooddxxxxxxddoolllcccc:::::::::::::ccccclooooollllllllccccccccoOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
:::;;;::::::::::cccclloddddxxxxddddddooolllllcccccclccccccccccccccccccccccccccllllllllolllccccllllooxO00Okxddddddddddoollllllllllllllllllllooddxxxddddooollccc::::::::::;;::::::::clooolllllllcccccccccd0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
;;;;;;:::::ccc::cccclloodddddddddddddooollllllcccclllllcccccccccccccccccccccccccccccccccccc:::cclllodk0KOkxddddddddooolccllllllcccllllllllloooddddddddooollcc::::::::::::::::::::::cloollllcclcccccccclxKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
;,;;;;:::ccccccccccllooodddddddddddddoooolllllllllllllllllccccccccclllllllcccccccccccccc:::::::ccllodk000Oxxddddddooolc:cllllllllllloolllllloooooooooolllllcccccccccccc:::cccccccc::loolllccccccccclllokKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;;::cccccccccclllooooooodddoooooooodddoolllllllooollllllllllllllllllllccccc::::ccccccc:::cccclloodO00Okxddddddoooc::cllclloodooooooooooooooooooooooooolllllccccccclcccccccccccc:cllllcccllllcllllldOKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;:::ccccccccclllooooooooooooooooddxxxxxxdooooooooolllllllllllloooooolllccccc:::cccccccccccllllloodxO0Okxddddddoool::cllllcccccccllloooooooooooooooooolllccc:::::;;;;;;;;::cccccccllllccclllllllllok0KXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;:::ccccccccllllooooooooooooloodxxxxxxxkxxdoooooooolooooolloooodddddooolllllcccccccccllllllllllooodk0Okxxddddoooolc:clllllcc:;;,,,,,;;;;;::::::::::::;;;,,,,''''',,,;;;;:::ccclllllllcccllllllllodk0KKKKXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;;:::ccccccccllloooooooooooolooxxxxxxxxkkxdooooolllllooooooooddddddddddooollllccccllllllllllllllllodO0Okxxdddodddoolllllllllllllcccc:::cccccccccccclccccc:::::::::::::::::::cclloolllllllllllooodxOO0000KKKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
;;;;::cccc::::cccclllooooooooooollodxxxxxkkkkxddooollllllloooooodddddddddddoooolllllllllllllllllllllllcldkOkxxxddddddddoolllllllllllloooooooooooooooooooooolllcccccc::::::::::::cclooollllllllooooodxkkOOOO00KKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
:::cccccccc::::::ccclloooooooooooolodxxkkkkkxxddooolllllllooooooddddddddddddooooollllccllllllllllllccccccokOkxxxdddddddddoollllllllllloooooooooooooooooooollllccccc::::::::::::::clllllllllloooddddxxkkkkkOOO000KKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ccllllcccccc:;;:::::cclloooooooooolloodxxxxxdddoooollllllloooooooddddddddddoooooolllcccccccllllcccc::::::cdOOkxxddddddddddooooollllllloooooooooooooooolllllllllccccccc:ccc:cc::cccclllllllloooddddxxkkkkkkkkkOO000KKKKXXXXXXNNNNNNNNNNNNNNNNXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
clllllllcccc:;;;;;;;::cccllllollllllooooddddddooolllllllllloooooooooooooooooooooollcccccccccccccc:::::::::okOOkxdddddddddddooooooooooooooddddddoooooooollloollllllllcccccccccccccccclllllllooddddxxkkxxxxkkkkkkOOO000KKKKXXXXXNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cllooollllcc:;;;;;,;;;:::cccccllllllloooooooooolllllllclllllooollllllllllllloooolllcccccccccc:::::::::::::lxkkkkxddddddddooooooooooooooooddddddoooooooolloooooollllllllccccccccccccccllllloodddddxxxxxxxxxxxxxkkkkkOOO00KKKXXXXXXXXXXXXXXXXKKKKKKKKKKKKKXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ccllooolllc::;;;,,,,;;;::::::cccccclllllllllllllcccccccccllllllllccccccccclllloolllcccc:::ccc::::::::::::cokOxxkkxdddddoooooooooooooooooooooooooooolllllllllllllllllllcccccccccc:::cccllloooddddoddxddxxxxxxxxxxxxxxkkOO000KKKKKKXXXXXXKKKK000000000000KKKKKKKKXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cccccllcccc:::;;;;,;;;;;:::::::::::ccclllccccccc:::::ccccclllllcccccccccccllllolllllcccccc:::::::::::::ccclxOkddxkkxddddooooooooooooooooooooooolllccccccc::ccccccccccccccccc::::::::clllooooddollodddddddddddddddddxxxkkOOO000000KKKKKK0000OOOkOOOOOOOOO000000KKKKKKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cccccccccc::::;;;;;;;;:::::::::::::::::::::::::::::::::ccccllllccccccc:cccllllllllllllcccccccc::::ccccccccldOOdodxxxxddddooooooooooooooooolllllcccc:::::;;;;;;;;;;;;;::cccc::::::::cclllooodolcccoooddddddoodooddddddxxxkkkkkOOOOOOOOOOOOOkkkkkkkkkkkkOOOOOOO00000000KKKKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cccccccccc::::;;;;;;;::::::::::;;;;;;;;;;;;;;;;;:::::::ccccllllcccccc::cccllllllloooolllccccccccccccccccccldOOxooodxxxxddooooddddddooooollllcccccc:::::::;;;;;;,,,,,,,;:cc:;;::c::cccllooodolc::coooooooooooooooodddddxxxxxkkkkkkkkkkkkkkkxxxxxkkkkkkkkkkkkkOOOOOOkOOO00KKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNN
ccccccc:::::::;;;:;;;::::::::::;;;;;;;;,,;;;;;;;::::::::ccccccccccc::::::ccllllooooooolllllcccccccclcccccccoOOxoooodxxxxddddddddddddooooolllcccccccccccccc:::;;,,;;;;;;:ccc:;:ccccccllooddolc:::clollloooooddddddddddddddxxxxxxxxxxxxxxxxxddxxxxxxxxkkkkkkkkkkkkkxxxkkkOO00KKKKXXXXXXXNNNNNNNNNNNNNNNNNNNNNN
::::::;;;;:::;;;;;;;;::::::::;;;;;;;;,,,,,,;;;;;:::::;::::ccccccc::::::::ccllooooodooooollllcccclllllllccccok0xoloooodxxxxdddddddddoooooooolllllllllllllcccccc:;,,;:::cccccc:cccccllooooolccc:::clllllooooodddxxxxxxxxddddddddddddddddddddddddddddxxxxxxxxxxxxxxxxxxxxxxkkOO000KKKKXXXXXNNNNNNNNNNNNNNNNNNNN
::;;;;,,,;;;;;;,,,;;;;::::::;;;;;,,,,,,,,,,,,,;;;;;;;;;;::::::::::;;;:::ccllooooddddddooollllcllllllllllcccokOxollooooddxxxxddddddddoooooooooooooooooooollllll:;;;:ccllccccccclllllooooolcc:::::clllllloooodddxxxxxxxxxdddddoooddddddddddddddddddddddxxxxxxxxxxxxxxddddddxxkkkOOO00KKXXXXXNNNNNNNNNNNNNNNNNN
;;;,,,,,,,,,,,,,,,,;;;;;;;;;;;,,,,,,,,,,'',,,,,;;;;;;;;;;;;;;;;;;;;,;;::cclloooddddddddoollllllllooooolllccok0kollllooooddxxxxdddddddoooooooooooooooooooooooolc:::cllllllccclllllooooolccc::::::ccccccllloooddxxxxxxxxxdddddooooooooodddddooooooooodddddddddxxxdddddddooooodddxxkkOO0KKKXXXXXXNNNNNNNNNNNNNN
,,,'',,'''',,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,;::cclloooddddddddooolllllllloooolllcclkOkollllooooooddxxxxxxxxdddddddddddddddddddddooooolllllllllllllllloooooollccc::::::::cc::cccllooodddxxxxxxxxdddddooooooooooooooooooooooooooooooodddddddddoooolllloodddxkOO00KKKXXXXXXXNNNNNNNNNN
,,''''''''''''''',,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;,,,,,,,,;::ccllooooddddoooooolllllllllllllllcclkOxolllllloooooooddxxxxxxxxxxddddddddddddddddddddoooooooooollllooooooollccc::::::;;::c::::::ccllooddxxxxxxxxxddddoooollllllllooooooooooooooolllllooooodoooollllllllloodxxkOOO00KKKKKXXXXXXXXXXXX
,,'''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,;;::cclllooooooooooooollllllllllllllccclkOxllllllllooooooodddxxxxxxxxxxxxxxxxxxxxxxddddddddddddoooooooooooolllcccc:::::::;;;:::;;;;;::clloodddxxxxxxxddddooolllllclllllooooooooooolllclllllloooolllllllccclloooddxxkkkOOO000KKKKKKKKKKKK
''''''','',,,,'''''',,,,,,,,,,,,,,,,;,,,,,,,,,,,,,;;;;;;;;;;,,,,,,,;;::cccllllllooooooooooolllllllllcccccc:lxkdlllllllloooooooooddddxxxxxxxxxxxxxxxxxxxxxxxdddddddddoooooooolllccccccc:::::::;;;::;,,;;;;::clllodddxxxxdddddooooolllcccccclllooooooolllcccccccccllllllllllllllllloodddxxxxxxkkkOO00000000000
'''',,,,,,,,'''''''''''',,,,,,,,,,;;;;;,,,,,,,,,;;;;;;;;;;;;,,,,,;;::cccclllllllloooooooooolllccccccc::::::lkOdllllllllloooooooooooddddxxxxxxxxxxxxxxxxxxxddddddddddoooolllccccccccccc::::::;;;;;:;,,,,;;;:cclloooddddddddooooollllccc::::cccllllllllccccccccccccccllllllllllllllooddddddddddxxxkkkOOOOOkkkk
'',,,;;;,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;,,,;;;::cccllllllllllloooooooooolllccccc:::::::lxkdlllllllllllooooooooooooooodddddddxxxxxdddddddddddooooolllccccccccccccc:::::::;;;;;:;,,,,,,;;::clllooooooooooooollllcccc::::::cccccccccccccccccccccccllllloolooooooddddxdddddddddddxxxxxxxxxxx
',,,;;;;;,,,,''''''''''''''',,,,,,,,''''',,,,,;;;;;:::;;;;;,,,;;:::cclllllllllllloooddddooooolllcccc:::::::lxkdlllllllllllloooooooooooooooooooodddddddddooooooooolllllccccccccccccc::::::::::;;;;:;;,,,,,,,;;:cccllllllllllooollllllcc:::::::::::::::::::cccccccccclllloooooooooddddxxxxdddddddddddddddddddd
,,;;;;;;;;,,''''''....'''''''''''',,''',,,,,;;;;;;:::::;;;;,,;;:::ccllllllllooooooddddddooooolllccccc::::::lkOdlllllllllllllllooooooollollloooodddddddoooooooooooollllcccccccccccccc:::::::::;;;;:;,,,,,,,,,,;;:::::cccccclllllllllllcccc::::::::;:::::::::ccccccccclloooooooooddddddxxdddddddoooooooooooodd
,;;;;:;;;;,,''..........''''''',,,,,,,,,,;;;;;::::::::;;;;;;;;:::ccccllllllloooooddddddddoooolllccccccc::::lkOdllllllllllloollloooooooooooooooddddddddddoooooooooolllllcccccccccccc::::::::::;;;;:;,''''''',,,,;;;;:::cccccccccccllllccccc:::::;;::;;;::::::cccccccclloodddddoooodddddddddddoooooooooooooooo
,;;;;;;;;,,''............'''',,,,,,,;;;;;;;::::::::::;;;;;;;;:::cccccccllllloooooddddddddooolllcccccccccc:cdOOxollllllllloooooolooooooooooooodddddddddddddddddooooollllllcccccccccc:::::::::;;;;;::;,''''''',,,,,,;;;;:::cccccccccccllcccc:::::::::;;;;;::::::ccccccloooddddddoooooddddddooooooddddooooooooo
,,;;;;;;,,''.............''',,,,;;;;;;;::::::::::::::;;;;;;;:::ccccccccclllloooooddddddoooolllccccccccccccok00xolllllllllllllloooooooooddddddddddddxxxxxxxddddooooollllllccccccccccc::::::::;;;;;;:;,,''''''''',,,,,;;;::::ccccccccccccccc::;;;::;;;;;;;;;;;:::::cccllooooodddooooooddddooodddddddddoooollll
'',,,,,,,,'.............''',,,;;;;;;::::::::::::::::::;;:::::::ccccccccllllloooooooooooooollllccccccccccclx00Okolllllllllllllloooooooooodddddddddddxxxxxxxxxdddoooolllllllcccccccccccc::::::::;;;;::;,,,''''''''',,,,;;;;::::::::cccccccc::::;;;;;;;;;;;;;;;;:::::cclllooooooooooooddddddddddddddddoooollllc
''''',,''''...........''''',,,,;;;;;::::::::::::::::::::::::::ccccccclllllllloooooooooooollllcccccccccllldOK0Okdollllllooooolloooooooooodddddddddddxxxxxxxxxdddooooollllllccccccccccccc::::::;;;;;;;;;,,,''''''''',,,,;;;;;;;;:::ccccccc::::::::;;;;;;,,,,,;;;;::::cclllooooooddddddxxxxxddddddddddooolllccc
'''''''''........'''''''',,,,,,;;;;;;;;;;;;;;::::::::::::::::ccccclllllllllllllllllllooollllllllllcccllldOKK0Okdolllllooooooooooooooooodddddddddddxxxxxxxxxxxdddoooollllllcccccccccccc:::::::::;;;;;;;;;,,'''''''',,,,,;;;;;;::::::::::::::::::::;;;;,,,,,,,,,;;;:::ccclloooodddxxxxxxxxxxxxxddddddoolllcc::
'''''''''.''''''''',,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;:::::;;::::ccclllllllllllllllllllllllolllllllllccclllx0XX0Okxdollllloooooooooooooooooodddddddddddxxxxxxxxxxdddoooolllllccccccccccccc:::::::;;;;;;;,;;;,,,'''''',,,,,,,;;;;;;:::::::::::::::::::;;;,,,''',,,,,;;;;::ccclloooddxxxkkkkkkxxxxxxxdddoolllcc:::
,''''''''''',,,,,,,,,,,,,,,,,,,,,;;;;;;;,,,,,,,;;;;;;;;;;::::ccllllloooooollllllllllllloolollollllclclxKNXK0Okxdolllllooooooooooooooooooodddddddddddxxxxxxxxxdddoooolllllcccccccccccccc::::::;;;;;;;,,,;;,,,,,,,,,,,,,,,,,,;;;;;;;:::::::cccccc:::;;,,'''''',,,,,;;;::cccllooddxxxkkkkkkxxxxxxxddoolllcc::::
,''''''''''',,,,,;;;;;;;,;;;;;;;;;;;;;,,,,,,,,,,,;;;;;;;;:::cccllloooolllllllllllllllllooooooolllllloOXNNXKOkxddoolllooooooooooooooooooooodddddddddddddddxxdddddoooolllllcccccccccccccc::::::::;;;;;,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;:::cccccccccc::;,,'''''''',,,,,;;::cccllooddxxxxkkxxxxxxxxxdddoollccc::::
''''''''''',,,;;;;;;;,,,,;;;;;;;;;;;;,,,,,,,,,,,,,,,;;;;::::ccclllllllllllllcclllllllloooooooooooloxKNNNXK0Okxdoooooooooooooooooooooooooodoodddddddddddddddddddddoooollllccccccccccccccc:::::;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;::cclllllcc::;,,'''''''''''',,,;;::ccclooddxxxxxxxdddddddddddoollccccccc
''''''''',,,,,,;;;;,,,,,,;;;;;;;;;;;;,,,,,''''''',,,;;:::cccccllllllllllccccccccccllllloooooooooodONWNNXKK0kxddoollloooooooooooooooooooooooodddddddddddddddddddddoooollllcccccccccccccccc::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;:ccllllllcc:;;,'''''''''''''',,,;;::ccllodddxxxxxddddddddooooollcccccccc
''''''',,,,,,;;;;;;,,,;;;;;;;;;;;;;;;,,,,,''''''',,;;:ccclllllllllllllccccccccccccccclllloooooodkKNWNNXXK0Okxdoolllllooooooooooooooooooooooddddddddddddddddddddddoooollllcccccccccccccccc::::;;;;;;;;;,,,,,,,'''''''',''''',,,,,,,;;:cllooolllc:;,,'''''''''''''',,,;;::ccloooodddddddooooooooollllcc:::::cc
'',,,,,,,,;;;;;;;;;;;;;;;;;;;:::;;;;,,,,,,,''''',,;;:cccllooooollllllcccc::::::::::ccccllllllokKNWNNXXKK0Okxdoollllllloooooooooooooooooooooddddddddddddddddddddddoooollllcccccccccccccccc::::;;;;;;;;;,,,,',,,''''''''''''',,'',,,;::clloooolcc:;,,,,,,,,,''''''',,;;::cclloooooodddooooooollllllcc:::::::::
',,,,,,,;;;;:::::;;;;;;,,;;;:::::::;;;,,,,,,,,,,,;::cclllooooooooolllcccc::::::::::::ccldxdoxKNWWNNXXK0OOkxdddolllllllloooooooooddoooodooodddddddddddddddddddddddoooolllllccccccccccccccc::::;;;;;;;;;,,,,''',,,'''''''''''''',,,,;:ccllloollc:;;,,,,,,,,,,,,''',,,;::cccclloooooooooolloolllllllcc::::;;;;:
,,,,,,,;;;;::::::::;;;;;;;;::cccccccc::;;,,,,,;;;::cclloooddddddoooolllcc::::::::::::cldkkkOKWWNNXXKK0OOkxdddoolllllllllooooooooooooddddddddddddddddddddddddddddddoooolllllccccccccccccc::::::;;;;;;;;;,,,,'''',;:::::;,''''',,,,,;::cclllllcc::;;,,,,,,,,,,,,,,,,,;::ccccclllllloollllloooolllllcc::;;;;;;;
,,',,,;;;;:::::::::::;;;;::cclloooooolcc:;;;;;:::cclllooddddddddddoolllcc::::;;;::::cldkkxddk0XXXXKK0OOkxxdddolllllllllloooooooooooooddddddddddddddddddddddddddddddooollllllcccccccccccc::::::;;;;;;;;;,,,,''''''''',:ooc,',,,,,,,;;:ccllllccc::;;,,,,,,,,,,,,,,,,;;:ccccccccccccccclllllooooooollc:::;,,,,;
,,,,,,;;;::::ccccc:::;;;:::clodddddddoolcc:::cccllllooooddddddddddoolllccc::;;;;;::ldkkkxddooodk0KK0Okkxxdddooollllllllooooooooooooooooodddddddddddddddddddddddddddoooolllllccccccccccccc:::::;;;;;;;;;,,,,,'''''''...';cc;,,,,,,,;;::ccccccc::;;,,,,,,,,,,,,,,,,,,;::ccccccccc::cccccllooodddooolcc::;,,,,,
',,,,,;;;:::cccccc:::;;;::cloddxxxxxddoollcclllloooooooooooooooddooollccc::;;;clodkOOkkxxdoolllloxkkkkxxddddoolllllllllooooooooooooooooooodddddddddddddddddddddddddoooollllccccccccccccccc:::::;;;;;;;;;,,,,,''''''......;:;;;;;;;;;:::ccc::::;;,,,,,,,,,,,,,,,,;;;;;::::::cc::::cccclloooodddooolcc:;,,''',
'',,,,,;;:::cccccc:::;;;::cloodxxxxxxddooollloooooooooooooooooooooolllccc:;;:ok0KK0OOkkxddoollcccclodxxddddooolllllllllloooooooooooooooooooddddddddddddddddddddddddoooolllllccccccccccccc::::::;;;;;;;;;,,,,,,'''''.......,:c::::::;;:::::::::;;;,,'''''',,,,,,;;;;;::::::::::::cccccllooooooooollc::;,,''''
'',,,,,;;:::::::c:::::;;;:ccloodxxxxxddoooooooodddddooooooooooooooolllcc:ccoxO00000Okkkxdoooolcc::::cloddooollllllllllllloooooooooooooooooooddddddddddddddddddddddooooolllllccccccccccccc::::::;;;;;;;;;,,,,,,''''.........';lolc:::::::::::::;;;,,''''''',,,,;;;;;::::::::;::::ccccclllloooooollcc::;;,,'''
'',,,,;;;::::::::::::;;;;;::clloddxxdddooooooodddddddoooolloooooolllllloxkOO000OOkkkOOkxxddoollccc::;;::loolccccccllllllllloooooooooooooooodddddddddddddddddddddddooooolllllcccccccccccc:::::::;;;;;;;;;;,,,,,,''............':oxxo::::::::::;;;,,,''''''',,,;;;;;;;;;;;;;;;;;:::cccclllllllllllcc:::;;;,,,,
,,,,,;;;;;;:::::::::;;;,,,;;:cclooddoooooooooodddddddoooolloooooooodxkO00000000OOOkkxkkkxkxxdollllc::;;;;;cllllc:cccllllllllooooooooooooooooddddddddddddddddddddddoooooolllccccccccccccc::::::;;;;;;;;;;;;,,,,''................'cxko:;;::::::;;,,,''''''',,;;;;;;;;;;;;;;;;;;;:::ccccllllccccccc::::;;;;,,,
,,,,,;;;;;;;;::::::;;;;;,,,,;::cllooooooooooooddddddoooollooooddxxkOKK0000000OOOOkkkkxddxxxxxdooollcc:::;;;;:cllllcccccllllllllllooooooooooooooooooooooooodddddddooooooolllcccccccccccccc::::;;;;;;;;;;;;;,,'.....................'cxkxdlc::::::;;,,,,,,,,,,,;;;;;;;;;;,,,,;;;;;::::cccccllcccc::::::::;;;,,
,,,,;;;;;;;;;;:::::::;;;;,,,,;::ccllllllllloooodddddooooooddxkOOO0000000000O00OOOkkkkkkxdddxxxdoodoolcc::::;;;;;::ccccc::cccllllllllooooooooooooooooooooooooooooooooooolllccccccccccccc::::::;;;;;;;;,,,,''.........................'cx00Oxdocc:::;;;;;;,,,;;,,,,,,,,,,,,,,,;;;;::::::ccccccccc:::::::::;;,,
;;;;;;;;;;;;;;;;;:::::::;;;;;;;::cccllllllllooodddddoodxkOOOOOO00000000OOOOkkOOOOOkkkOOOkxdoodxxxxddoolllccc::::;;;;;:cc:;,;::cccclllllllllooolllllloooooooooooooooooolllccccccccccccc::::::;;;;;,,,,''...............................'cx0000Okdocccc:::::;;;;;,,,,,',,,,,,,,,;;;;::::ccccccccccc:::::;;;;,,
::::;;;;;;;;,,,;;::::cc:::::::::::cccccccclllooooodxkO0OOkkOO0KK000000OOOOOkkkOOOOOOO0OOOOkkxdddxxxdddoooolllccccc::;;;;;;'..'',,;;::ccccllllllllclllllllllllooooooollllccccccccccc::::::::;;;,,,''.....................................'cxO000OOkxolccccc::::;;,,,''',,,,,,;,,,;;;;::ccccccccccc::::;;;;,,,
::::::;;;,,,,,,;;::cccccc::::::::::::ccccccllloodxk000OkkO00KK000000OOOOOOO0OOOOOOOOOOOOkkkkkkkxddddxddxxddoollllcccc:::;;,'........',,;;:::cccccccccccccccclllllllllllccc::::::::::::::;;;;,,''..........................................':dO00000Okxdollccc::;;;,,,,,,,,,;;,,,,,,,;;::ccllllccc::::;;,,,,,
cccc::;;;,,,,,,;::cccllcccc::::::;:::::cccclodxkO0OkkkkO00KKK00000000OkkkkkOOOOOOOOOOOOOOOkkkOOOkkxdooodxxxxdlllllllllccc::;,.............'',;;;;;;;;;;;:;::::::ccccccc:::;;;;;;;;;;;;,,,''..................................................:dO000000OOxdollccc::;;;;;;;;;;;,,,,,,,,,;;::cccccc:::::;;,,,,,
ccc:::;;,,,,,,;::ccclllllcc::::;;;:::::cccoxO000OkxkOO0KKK00000OOOOOOOOOOkkkOOOOOOOOOkkkOOOkkkkkOOkkxxddolodddddooooolllllllc;'...................'''''''',,,,,;;;;;;;;;,,,,,'''''''..........................................................,lxO00OOOOOOOkdolccccc::::::;;;,,,,,,,,,,,;;::ccc::::::;;,,,,,
c::::;;;,,,,;;:::cccccllccc:::;;;::::cldxk000OkkkkkO00KKKK0000OOkkOOOkkkOOkOO00OOOOkkkkkOkkkkkkkkOOkkkkkxdoolllooodddoooooooool:'................................''''...........................................................................,lxOOOOOkOOO0Okxoolcccccc:::;;;,,,,,,,,,;;;::::::::::;;;,,,'
::;;;;;;;;;;::::cccccccc::::;;;;;:coxkO000OOOkkkOO00000000OOkkkkkkkkkkkkkkkkOOOOOOOkkkkkOOkkkkkkkkOkkkkkxxxkxdolccccllooddddoodo:.................................................................................................................'cdOOOOOkkkOOOOOkxdolcccc::;;;,,,,,,,,;;;:::::::::;;;,,,''
:;;;;;;;::::::ccccccccc:::;;;::loxOO00000OkkOOOO00KKKK00OOOkkkkxxkkkkxxkkkkkkOOOOOOkkkkOOOOOkkkkkkkkkkkkkkkkkkkkxdolc::cllooooooc,...................................................................................................................:okOOOOkkkkkkOO00Okxol:;;;;,,,,,,,,,;;;;::::::;;;;,,,''
:;;;;;:::cc::cccccccc:::;:cldxkO000000OOOkkkO000000000OOOOkkkkkkkkkkkxxxxkkkkOOkOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxdddoolc:;;::clc;.....................................................................................................................:oxkkkkkkkkkkkkO000Oxol:,'','',,,,,;;;::::::;;;,,,'''
:::::cccccccccc:::::::cloxO0000000000OOkkkkO00000000OOOOkkkkkxxkxkkkxddxxxkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddoolc::;;,,'......................................................................................................................:oxkkkOOkkkkkkxxkO000Oxoc;,'',,,,,;;;;;;;;;;,,,,,''
:::ccccccccccc:::::coxk0000000000OOOOOOOOO0000OO00OOkkxxxddddxxxxxxxxxdddxxxkkkkkkkOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxddoooollc:;'.........................................................................................................................':odxxkkkxxxxxddxkkOO000Oxoc;,,,,,,,,;;;;,,,,,''''
:::ccllcccccccccoxO0000000OOOOOOOOkkkkOOOOO000OOOOOkxdlc:::cclodddxxddddddxxxkkkkxxxxkkkkkOkkkkkkkkkkkkkkxxxxxxddddddddooollcc:;;,'.........................................................................................................................,codxxxxxxxxddddxxkOO00000Oxoc;,'',,,,,,,,,'''''
::cccccccc:cldkO0K00OOOOOkkkxxxxxddddxxxkkkOOOkxxxdooc:;,''',;cllodxxxddxxkkkkkxxddooooddddxxxxxxxxddddddooooollllllcccccc:::;;;;;,'..........................................................................................................................;loddddxxddddddodxkkkkkOOO00Oxol:,'',,,,,'''''
ccccccc:cloxO000000OOOkkkxxdddooooooloodxxxddxxdooolc:;,''''''',;:cloodxkkxxxxdooollccclooooolllllllcccc::::::;:::;;;;;;;;;;;,,,,,''...........................................................................................................................':lloododdddoooodddddxxxxkkkkOOkxoc;,,,,'''''
::::::coxO0K00000OOOkkxxxxdddodoollllooodddoodddolc:;'''...'''''',;::cloddlllcc::ccccccccc::::;;;;;;;,,,,'',,,'',,,,,,;;,,,,,,;;;,,,''..........................................................................................................................';cccllloodooooooooooooooddddxkkkkxl:,,,,,''
;;:cldk0000000OOOOkkkxxdddddooodoooooooooddoooollc:,'........',,;;;,,,,;::ccccc:;;::::ccc:::;;;;,,,,'''.....''.''',,,,,,,,,,,,,,,,,,,'............................................................................................................................,:cllllllllllllllllcccllloddddxxkkxo:,,,,,
:ldkO000000OOOOOkkkxxdddddodddddoooooooooollooolllc;'........',;::;,'''.''',;;,,,,,,;;::cc::;;;;;,'''''.........'''',,,,,,,;;;;,,,,,,''............................................................................................................................':clllllllllloooollllloollooooddxxkkdc,,,
dOKKK00000OOOOkkxddddddddddddddoooooooolllcccccllc:;,'........';::;,'.......''..'',,;;::::c:;;;;:;,''''''......''''',;;,,;;;;;;;,,,,,'''............................................................................................................................':llcllllllloooollllloolllllloodxxkOOd:'



{{handshake_scripts | safe}} - diff --git a/templates/projects.html b/templates/projects.html index e3c221a..6275faa 100644 --- a/templates/projects.html +++ b/templates/projects.html @@ -110,8 +110,6 @@ height="0" width="0" style="display:none;visibility:hidden"> {{handshake_scripts | safe}} - diff --git a/templates/servers.html b/templates/servers.html new file mode 100644 index 0000000..c970e10 --- /dev/null +++ b/templates/servers.html @@ -0,0 +1,304 @@ + + + + + + + + + + Servers | Nathan.Woodburn/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Server info

+
+
+
+
+
+
+

Docker01

CPU
+ +
MEM
+ +
Storage
+ +
+
+
+
+
+
+

Docker02

CPU
+ +
MEM
+ +
Storage
+ +
+
+
+
+
+
+

Docker03

CPU
+ +
MEM
+ +
Storage
+ +
+
+
+
+
+
+
+
+

Oracle Main

CPU
+ +
MEM
+ +
Storage
+ +
+
+
+
+
+
+

Podcast Server

CPU
+ +
MEM
+ +
Storage
+ +
+
+
+
+
+
+

Potato1

CPU
+ +
MEM
+ +
Storage
+ +
+
+
+
+
+
+
+
+

Potato2 (3D Printer)

CPU
+ +
MEM
+ +
Storage
+ +
+
+
+
+
+
+

HNSHosting WP

CPU
+ +
MEM
+ +
Storage
+ +
+
+
+
+
+
+
+ +{{handshake_scripts | safe}} + + + + + + \ No newline at end of file From 682e73264372c443774a7e69beaca524d179ef23 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Wed, 8 Nov 2023 12:39:06 +1100 Subject: [PATCH 02/54] fix: Update Woodburn Reg logo for mobile --- templates/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/index.html b/templates/index.html index 21a557b..055b8e0 100644 --- a/templates/index.html +++ b/templates/index.html @@ -123,7 +123,7 @@ Check them out here!HNSAU Logo

Handshake AU
Australian Handshake web3 group

Visit HNSAU -
Woodburn Logo +
Woodburn Logo

Woodburn Registry
Selling Domains on some Handshake TLDs

Visit Woodburn Registry
From 12dd3dfedcef4d1de911e8a30bef02b60b6c42be Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Tue, 5 Dec 2023 17:35:19 +1100 Subject: [PATCH 03/54] feat: Set hip address to only update when the server restarts --- server.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/server.py b/server.py index 31087e2..7001bfc 100644 --- a/server.py +++ b/server.py @@ -6,6 +6,8 @@ import requests app = Flask(__name__) dotenv.load_dotenv() +address = '' + # Custom header def add_custom_header(response): response.headers['Onion-Location'] = 'http://wdbrncwefot4hd7bdrz5rzb74mefay7zvrjn2vmkpdm44l7fwnih5ryd.onion/' @@ -66,7 +68,7 @@ def wallet(path): if request.cookies.get('HNS'): return make_response(request.cookies.get('HNS'), 200, {'Content-Type': 'text/plain'}) - address = requests.get('http://hip02-server:3000') + address = getAddress() # Set cookie resp = make_response(address.text, 200, {'Content-Type': 'text/plain'}) # Cookie should last 1 week @@ -115,10 +117,7 @@ def index(): if request.cookies.get('HNS'): return render_template('index.html', handshake_scripts=handshake_scripts, HNS=request.cookies.get('HNS'), repo=repo, repo_description=repo_description, custom=custom) - if handshake_scripts == "": - address = "hs1............example" - else: - address = requests.get('http://hip02-server:3000').text + address = getAddress() # Set cookie resp = make_response(render_template('index.html', handshake_scripts=handshake_scripts, HNS=address, repo=repo, repo_description=repo_description, custom=custom), 200, {'Content-Type': 'text/html'}) # Cookie should last 1 week @@ -142,6 +141,13 @@ def catch_all(path): return render_template('404.html'), 404 +def getAddress(): + global address + if address == '': + address = requests.get('http://hip02-server:3000').text + return address + + # 404 catch all @app.errorhandler(404) def not_found(e): From 797db5e1a93fbc8da0fc350ef2996a5c5d567185 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Tue, 5 Dec 2023 18:35:08 +1100 Subject: [PATCH 04/54] feat: Add a manual address to stop issues with address index --- server.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server.py b/server.py index 7001bfc..dbd4d30 100644 --- a/server.py +++ b/server.py @@ -113,11 +113,13 @@ def index(): if request.host == "localhost:5000" or request.host == "127.0.0.1:5000" or os.getenv('dev') == "true" or request.host == "test.nathan.woodburn.au": handshake_scripts = "" + if request.cookies.get('HNS'): return render_template('index.html', handshake_scripts=handshake_scripts, HNS=request.cookies.get('HNS'), repo=repo, repo_description=repo_description, custom=custom) - address = getAddress() + if handshake_scripts != "": + address = getAddress() # Set cookie resp = make_response(render_template('index.html', handshake_scripts=handshake_scripts, HNS=address, repo=repo, repo_description=repo_description, custom=custom), 200, {'Content-Type': 'text/html'}) # Cookie should last 1 week @@ -144,7 +146,8 @@ def catch_all(path): def getAddress(): global address if address == '': - address = requests.get('http://hip02-server:3000').text + address = 'hs1qv3uu4amv87g7p7h49xez2pmzwjf92am0wzpnh4' + # address = requests.get('http://hip02-server:3000').text? return address From 2e463c626dfe4c3faac7600d6027af79a0517f78 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Tue, 5 Dec 2023 21:54:18 +1100 Subject: [PATCH 05/54] fix: Typo with old address method --- server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server.py b/server.py index dbd4d30..c20fb58 100644 --- a/server.py +++ b/server.py @@ -70,9 +70,9 @@ def wallet(path): address = getAddress() # Set cookie - resp = make_response(address.text, 200, {'Content-Type': 'text/plain'}) + resp = make_response(address, 200, {'Content-Type': 'text/plain'}) # Cookie should last 1 week - resp.set_cookie('HNS', address.text, max_age=604800) + resp.set_cookie('HNS', address, max_age=604800) return resp return send_from_directory('.well-known/wallets', path, mimetype='text/plain') From e6708dceaa1b2701f5c485efd6eb204a07c47613 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Wed, 13 Dec 2023 12:19:59 +1100 Subject: [PATCH 06/54] feat: Add selfhosted tracking --- templates/about.html | 16 ++++++++++++++++ templates/ascii.html | 16 ++++++++++++++++ templates/gitpgp.html | 16 ++++++++++++++++ templates/index.html | 16 ++++++++++++++++ templates/link.html | 16 ++++++++++++++++ templates/pgp.html | 16 ++++++++++++++++ templates/podcast.html | 16 ++++++++++++++++ templates/projects.html | 16 ++++++++++++++++ templates/resume.html | 16 ++++++++++++++++ templates/servers.html | 16 ++++++++++++++++ 10 files changed, 160 insertions(+) diff --git a/templates/about.html b/templates/about.html index 32a6f7b..84a69cb 100644 --- a/templates/about.html +++ b/templates/about.html @@ -43,6 +43,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + diff --git a/templates/ascii.html b/templates/ascii.html index e925d54..1be35e9 100644 --- a/templates/ascii.html +++ b/templates/ascii.html @@ -40,6 +40,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + diff --git a/templates/gitpgp.html b/templates/gitpgp.html index ef6c478..ffd2cdc 100644 --- a/templates/gitpgp.html +++ b/templates/gitpgp.html @@ -40,6 +40,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + diff --git a/templates/index.html b/templates/index.html index 055b8e0..49945fc 100644 --- a/templates/index.html +++ b/templates/index.html @@ -53,6 +53,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + diff --git a/templates/link.html b/templates/link.html index f933d0a..64ac83b 100644 --- a/templates/link.html +++ b/templates/link.html @@ -44,6 +44,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + diff --git a/templates/pgp.html b/templates/pgp.html index 1ce6652..28302e3 100644 --- a/templates/pgp.html +++ b/templates/pgp.html @@ -40,6 +40,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + -----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: https://keybase.io/download
Version: Keybase Go 6.0.1 (windows)
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
i0GVXA==
=W9Zx
-----END PGP PUBLIC KEY BLOCK-----
diff --git a/templates/podcast.html b/templates/podcast.html index 922d766..f51aaee 100644 --- a/templates/podcast.html +++ b/templates/podcast.html @@ -41,6 +41,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + diff --git a/templates/projects.html b/templates/projects.html index 6275faa..bf76039 100644 --- a/templates/projects.html +++ b/templates/projects.html @@ -41,6 +41,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + diff --git a/templates/resume.html b/templates/resume.html index 38e4a5f..d74005b 100644 --- a/templates/resume.html +++ b/templates/resume.html @@ -41,6 +41,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + diff --git a/templates/servers.html b/templates/servers.html index c970e10..9805b4e 100644 --- a/templates/servers.html +++ b/templates/servers.html @@ -41,6 +41,22 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + + + + From 89ce365bd0b3fe78047454baf52f20a1efc8a0e0 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Sat, 16 Dec 2023 16:33:31 +1100 Subject: [PATCH 07/54] feat: Add pointer to downtime div --- templates/assets/css/index.min.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/assets/css/index.min.css b/templates/assets/css/index.min.css index beaf81f..fcfb794 100644 --- a/templates/assets/css/index.min.css +++ b/templates/assets/css/index.min.css @@ -1 +1 @@ -img.no-drag{pointer-events:none}img.fog{pointer-events:none;position:absolute;left:0;top:0;width:100%;height:100%}#downtime{z-index:2;position:fixed;right:0;bottom:0;width:20%;transition:opacity .5s;opacity:0}blockquote.speech{position:absolute;display:inline-block;right:14vw;bottom:23vh;width:17vw;background:url(/assets/img/speech-bubble.svg) center;color:#fff;padding-top:3%;padding-bottom:20%;background-repeat:no-repeat!important;margin:0 auto;text-align:center;box-sizing:content-box;line-height:1;font-family:SequentialistBB,cursive;font-size:1.2vw} \ No newline at end of file +img.no-drag{pointer-events:none}img.fog{pointer-events:none;position:absolute;left:0;top:0;width:100%;height:100%}#downtime{z-index:2;position:fixed;right:0;bottom:0;width:20%;transition:opacity .5s;opacity:0;cursor:pointer}blockquote.speech{position:absolute;display:inline-block;right:14vw;bottom:23vh;width:17vw;background:url(/assets/img/speech-bubble.svg) center;color:#fff;padding-top:3%;padding-bottom:20%;background-repeat:no-repeat!important;margin:0 auto;text-align:center;box-sizing:content-box;line-height:1;font-family:SequentialistBB,cursive;font-size:1.2vw} \ No newline at end of file From c2cd53dc780d50d980e8aad62ccb56684862b848 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Mon, 18 Dec 2023 11:24:41 +1100 Subject: [PATCH 08/54] feat: Added some projects and resume info --- templates/about.html | 3 +-- templates/ascii.html | 3 +-- templates/projects.html | 13 +++++++++++-- templates/resume.html | 26 ++++++++++++++++++-------- templates/servers.html | 3 +-- 5 files changed, 32 insertions(+), 16 deletions(-) diff --git a/templates/about.html b/templates/about.html index 84a69cb..d6b68ed 100644 --- a/templates/about.html +++ b/templates/about.html @@ -61,8 +61,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= - -{{handshake_scripts | safe}} +{{handshake_scripts | safe}}

Nathan.Woodburn/

diff --git a/templates/ascii.html b/templates/ascii.html index 1be35e9..e066199 100644 --- a/templates/ascii.html +++ b/templates/ascii.html @@ -61,8 +61,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=


NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXXXXXXXKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXKKKKK00000O0K000000000KKKKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXXKKK00000000000000O0K00000000000000000000KKKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXKKK00000000000000000O00O0K0OO0000OOOOO0000000000000000KKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXXKK0000000000000000000000KKK0KKK0KK00OOOOOOOOOOOOOOOOkOOO0000000KXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKK000000000O0OOO000O00KXXXXXKKKKKKKKKKKKKKKKK0OkkkkkkkkxddxddkOOOO00000KKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXK00000000OOOO00OOOO00KXXXK000000000KK000OkkkO0KKK0OkxxkkkkkkxdodxkkOOOOOOOO0KXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0000000000OOOOOOOO0KXNNXKOO0KKK0000OOkkkO0KK0KKXXKXXKOkxxxxkkkkkxxkkkkkkOOkkOO0KXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0000000000000000OO0KXNX0O0NX0OOOkxOKXXXOxxxkKNNX0O0KXK0XXOxdxxxxxxxxdxxxxxkkkkkkOOO0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK000000O0000OO0OOOOO0XNX0000XNXKKK0OOKXWWNXK0kxxkO0OOOKKOxx0XKkddxddddxdddddxxxxxkkkkkOOKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0000OOOOOOOOOOOOOOOKNN0O0XKO000OkO0KXXXNNXKOOOK000KOkxk0KkdxOXXOdddddddddddddxxxxxxxxxkkOOKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK00OOOOOOOOkkOOOOOOO0XX0k0XKOkkKWNNK0OKNWWWWNX00KXKXNKxddk0kdoxOXXkoddddoddddddddddddddddxkkO0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK00OOOOOOOkkkkkOOOOO0XX0kOKXK00k0NNXNNWWWWWWWWWNNNXXXX0xdkKNKkoox0X0doddddddddddddddddddddddxkk0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX00OOOOOOOOkkkkkkkkkkOKNKO0XWWXKOkOKXXXK0KNWWWNNK0KNNWN0kOKXK0OOddk0KOoloooooddddddddddooddddddxkkOXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OOOOOOOOOkkkkkkkkkkxOXNKOKWWKOkkkxkKNNNX0KNWWNXXNNNNNXOxxk0KkooodOKKkooooooooooddddooooooooddddxxkO0KXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OOOOOOOOkkkxxxxxxkkkxkKNX0XX0OOkxxxxk00OO0KKXNXKO0KX0OkodkK0koloxk00Ododdddddooddddoooooooooooddddxdk0KKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OOOkkkkkkkxxxxxxxxxxxxxOXNXKOxk00OkOOkxkOkxxddkkxdONWNXX00K0xlodkO00Odddddddddddddddoooooooooooodooddxk0KKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0OkkkkkkkxxxxxxxxxxxxxxxxxOXNX0kxxO00KNNNWWNXK0xxOOOKNNXKOkxxkkkO0K0kxddxxdddoolloollllllllllllllllcccllldOOOKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0Okkkxxxxxxxxxxxxxxxkxxxxxkxk0XNK0000OOO0000000kdxkkkkOkdddxkO0KK0kxdoodddoollclllcc::::::ccc:::;;,,'''''';coox0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0OkkxxxxxxxxxxxxxxxxkkxxxxkkkkxkO0KKK00OOOkkkkkxxdxkkkkO0KKK00Oxdollloollllccc::;;;;,,,,;;;;;;,,'..........,;::coOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0kkxxxxxxxxxxxxxxxkxxxxxxxxxxxxxxxkOOOOO0KKKKKKK000K0Okkkxxxdolloollccccccc::;;,,,,,,,;,,,,''.............',:::::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOkxxxxxxxxxxxxxxxxxxxxxddddxxxxxxxxxxxxxxkkxxxkkxxxxdooooooodooolllccc:::::::::;;;;;;;;;,'...............',;;;:::;:xXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOkxxddddxxxxxxxxxxxxxxddddddddddxxxxxxxxxxxxxxxkkxdxxxdddooooolllllooolllccccccccccc:;,'..................';;;;;;::;ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0Okxdddddddddddddxxxxxxxxxxxxxxxxxxxxdddddddoodxxxxxxdolccccccc:ccclllllcc::::;;;;;::::;,'.................,,,,;;;;::;l0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXKkxddoooooooooooddddddxxkkkkkxxddddddddoddddxxkkxxdoooollloooolllllllllc::;,'.......''',,,,'...............',,,;;;;;:;:kXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXOdoooolllloooodddddddddxxxxdooooodxxxxxdooolllc;,,'''',;:ccllloolooollc::;;;;;;;;;;;,'.....................',,,,;;;;::;o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
XXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOxollllllllloodddddoollcllooddddddddddxxxxxxxkkOO00000000KKKKKKK0000OOkkkxddoooooolc::;,''''''...............',,;;;;;;:;ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
XXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXK0xocccccccllloooollc::::clooddxkkOO00KXXNNXXXXXXXKKKXKKXXXXXKXXXKKKKKKKKKKKKKKXXXXXKK0Oxdollc:;;,'.............',,;;;;::::dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
XXXXKKKKKKKKKXXXXXXXXXNNNNNNNNNNNNXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXX0dc:;;;;;;::cccc::ccloodxkkO00KXNNXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK00KKKKKK0kxolc;'..........',;;;;;;:::o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
KKKKKK0000000KKKXXXXXXXXXXXXXXXXXXXXXKKKKKKXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXX0xl:,'''',;::cclloodxkO0KXXXXXXXXXXXXXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK0000000KKK00000000KK0000000KK0Okdc;'.......',;;;;;:::lONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
000000OOOkkOO000KKKKXXXXXXXXXXXXXXKKKK000KKKKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXX0koc;,,;:cooddddxkO0KXXXXXXXXXXXKKKKKKKKXXXXXXXKKK00OOOOOOkkkOOOO00KKKXXXKKKK00000000000000000000OOOO0K0Odc,.....';:;;::::lONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOkkkxxxxkkOO00KKKKKKKKKKKKKKKKK000OOO00KKKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXKOxollodxxxxxkk0KXXXXXXXXKKKKKKXXXXXXK0kkxdollc::;;,,,,'''''''',,;;::ccloodxO00KKK00OOOOOOOOOOOOOOOOOOOOO00Odc,...';;:::::lOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OkkkkkxxdddxxkOO0000000000000KK0000OOOkkkOO0KKKXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXXK0OOOkxxxxkO0KXXXXXKKKKKKKKXXXK0Oxdlc;,'''.....................'',,,,''...''',;cloxkO000OOOOOOkOOOOOOOOOOOOOOOko:'..';;:::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
kkkkkxxxxxxkkO000000OOOOOOOOOOOOOOkkkkxxxkkO0KKXXXXXXXNNXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNXXK0K0kxdxO0KKKKKKKKKKKKXXXK0kdl:;,.............................',;;;;,'..'',;,,''..',;cldkO00OOkkkkOOkkkkkkkOOOkkxdc,.'::c:cxKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xkkxxxkkkOOO00000000OOkkxxxxxkkkkkkkxxxxxxkkO0KKKXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNXKKKOddk0KKKKKKKKKKKKXX0kdl:,'.................................,;;;;;,,'',;;;;;;,''',,,''',;cldkOOkkkkkkkkkkkOOkkkkkkdc;::cc:o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxkkkkkOO0000KKKKK0OOkxxdddddxxxxxxxxxddddxkOO0KKKXXXXXXXKXXXXXXXNNNNNNNNNNNNNNNNNNNNNXKOkxk0KKKKKKKKKKKXKOdl;,'...................................',;;;;;,,,;;;;;;;;;;,,,,,,,,,;,''',:ldkOOkkkkkkxkxxkkkkkkkxl::cclONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxkkkkOO000KKKKKKK00OkddoooddddxxxxxxdddddxxkO000KKKKKKKKKKKXXXXXNNNNNNNNNNNNNNNNNNNNNX0OOO0KKKKKKKKKK0koc,,',,,''.............'''''..............',,;;;;;;::::::;;;;;;;;;;;;;;;;;;;;,,'',:ldkOOkkkkkkkkkkkkkko;,::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxkkOO0KKKKKKKK0OkxdooooodddxxxxxxxxxxxxkkO0000000000000KKKXXXXNNNNNNNNNNNNNNNNNNNNX000KKKKKKKKKKko:,,,;;;;;;;,,,,,,''..'',,;;,'............',,;;::::::::::::::;;;;;;;;;;;;;;;,;;;;,,,,,'';:ldkOOOkkkkkkkkx:..;::dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ddddxxxkO00KKKKKKK0OkxdoolooodxxxkkkkOOOOOOOO00000000OOOOOO0KKXXXXNNNNNNNNNNNNNNNNNNNNXK0KKKKKKKK0xc;,;:::::;;;;;;;,,,,,,,,;;;;;;,'..........',;;::::::::::::::::;;;;;;;;;;;;;,,,,,,,,,,,;;;;;,,,;cldxkOkkkkxl'..';:oKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dddddxxkO00KKKKKKK0OOkxdooooddxkkkOO000000000000000OOkkkkkO00KKXXXXXNNNNNNNNNNNNNNNNNXKKKKKKKKKOd:;;:ccccc::::;;;;,,',,,;;;;::::;,'.......',;;::::::::ccccc:::::::;;;;,,,,,,,,,,,,,,,,,'',,;;;;;;;,,,;cloddl:'....';dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dooddxkkO00KKKKKKK00OkkxdddddxxkOO0000000000000000OOkkxxxxkO0KKKXXXXXXXXXXXXXXXNNNNNXXKKKKKKKOo:,;:cllcccc:::;;;,,,'''',,,,;;;;;;,,'''',,;;:ccccccccc:cccccccccc:::;;;,,,,'''''''''''''''',,;;;;;:::;;,''''........':lolox0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ooodxxkOO0KKKXXXKKK00OOkxxddxxkOO0000KKKKKKKKK0000OOkxdddxxkO00KKKXXXKKXKKXXXXXXXXXNNXKKKKKOo:,;;:clllllccc:;;,,''.......''',,,,,;:::ccccccccclllcccccccccccclcc:::;;,,'''...............'',;;;;::::;;'..............';::cld0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
oodxxkkO00KKXXXXXKKK000OOkkkkkkOO0000KKKKKKK00000OOkkxdoddxkOO000KKKKKKKKKKKKKXXXNNNNXKKKOd:;,,,;:cllllllc:;,''................',;;:ccclllllllcllllcccc:::ccc:;,,,'''......................',,;;;;;;;;,'...........,;:cllllloOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dddxkkOO00KKKXXXKKKKK000OOOOkkkOOO0000KK00000000OOkkxddooddxkOOOO000OOOOO00000KXXXXXNXK0xc;;;,,,,;cllolllc:;,,'''''''''...........'''',;;:cccccclllcc:::;;;;;;,,''.............'',,,,,,,,,',,,;;;;;;;;,'.........',;:cllllllco0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxkkOO00KKKKKKKKKKK00000OOOOOOO0000000000000OOkkkxddooddxxkkkkOOkkkkkkOOOO0KK0OkkOOkoc::;;;,,,;clooollc::::::::ccccc:;,'........'''',,;;:cclllllccc:::;;;;;::::;;;,,,,;;::ccllllccccccc::::;;;;;:;;,'........',;:ccccllllccxXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxxkkkOO00000KKK00000000OOOOOOOOO0000000000OOOkkkxxdooodddxxxxxxxxxxxkkkkO000kxxxxxddoc:;;,,,,;clooooolllooooooodddddooolcc::::ccccccc:::clllllllcccc::::ccllllloooooooooooooooollllllllccccc:::::;,'......',;:clcc:::ccccco0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxxxxxxkkOOOOOO000OOOOOOOOOOOOOOOOOOOOO0000OOOOkkkxddooooooddddddddddxxxkkO00kxddxdddddol:;;;,,;cloooooddddddddddddddoooolllllllooodddolccloooooollccccc:ccclllllc:;;,,,,,,;;:cclllllllllllccc::::;;,'.....',;::cccc::::ccc:ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxxdddddxxkkkkkkkOOkkkOO000OOOOkkkkkkkOOOOOOOOkkkkxxddoooooooooooooodddxxxkO0Oxddddddddddol:;;;,;cloooooddddddddool:;,,,''''',,,;;:cloooollloooooollccccc::ccccc:,'.....'''',,,'''',:cllllccccc:::::;,''...',::::::cc:::::cc::xXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dxdddddddddxxxxxxxxkkkOO00000OOOOkkkxkkkkkkkOOkkkxxxddoooooollooooooooddxxxkO0kdooooooddddooc:;;;;clooooooooodddl:,''.....'',,:c:;,',;ccllllooollccc:::::::::::;,.......'',,,,;;;;,,,,;:ccccccc::::::;;,''',;:::ccccccc::::::::xXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
dddoooooooddddxxxxxxkkOOOOOOOOOOkkxxxxkkkkkkkkkkxxxddoooollllloooooooodddxxkOOkoloooooododddol::::looooollllllllcc:cc::;;,,,,,;;;,,''',;:cccclcc:::;;;;;;;;;;:;,''',,;;:::cccccccccc::::::::::::::::::;,,,,;;:::;:clllc::;::::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
doooooooloooodddddxxkkkOOOOOOOOkkxxddxxxkkkkkkkkxxdddoooollllooooooodddddxxkOOkollllloodddddolcc:clooooollllllllllloooooooooolllllcccc:cccc:cc::;,,,,,,,,,,,;::::::::ccllllllooolllccc:::::::::::::::::;;,,;;:::;::cllcc:;;:::o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ddoooolllllooooodddxxkkkOOOOOkkxddoddddxxxkkkkkkkxxdddddoooooooooooddddxxxkkOOkolcclloddddooollccloooooooolllcccllloooddddddddooollllccc::::::;;,,,,''',,,,,,,;::::cclllllllooollllccc::::::::::::::::::;;;;;;;:::::cccc::;:::xKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxdddoolllllloooodddxxkkOOOOkxdoooooodddxxkkkkkkkkxxxdddddodddddooodddxxxkkkOOOxlccloodoooolllolllodooooooollllllllloooooooooooollllc:::;;;;::;;,,,,,,,''''''',,;;:cccccllllllllllcccc::::::;;;::::::::::::::::;;;::::::::;;:o0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxxddooolllllloooodddxxxxkxxxdoollllooddxxxxkkkkkkkxxddddddddddddooodddxxxkkkkOkdlcoxxdoollllooooodddooooolllllllllllllllooooolllcc:::;:::::::;;;;,,,,,'''''''''',,;::::ccccccccccc:::::::::::;;::::::ccc::::cc:::;;,,;::;;;lOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxddddooollllllloooddxxxxxxxxddollllooodddxxxxxxxxxxxdddddddoodddddddddddxxxxkkkxoldkxollccloxxdodxkddoooollllllllccccccccccc::::;;;;:::::::c::::;;,,,,,,,,''''',,,,,,;;;;;;;::::::::::::::::::::::::cccc::::clc:;,,',;:::;ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
xxddddoooollllllloddxxxxxxxxxxdooooooooooodddxxxxxxdddddddoooodddddddoodddddxxxkkxddxxoc::::okkxddxkxdoooolllllllccc:::;;;;;;;;,,;;;;:::::ccccc::;;;;;;;;,,,'''',,,,,;;;;;;;;;;;;;;::::::::::::::::::ccc::::cc:;,''',;:::;:dKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ddddddooooollllllooddxxxxxxxxddddooooooooooooddddddddooooooooddddddooooooooododdxkOkkxdoc;;;:ldxdddkkxdooollllllccc::::;;;;;;;;;;;;;;;::::cccc:::;;;;;;;;;;,,,'',,,,;;;;;;;;;;;;;;;;;;;;;;:::::::::::ccc::::c:,''',,;:::::o0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
oodddoooollllllllloooddxxxdddoodooooooooolllllllllllllllloooooodoooooooooooooooodxkOOkxxdc;;;;:odddxkxdoooollllccc::::::;;;;;;:::::::::::ccccc::::;;;;;;;;;,,,,,,,,,;;;::::::::::::::::::::;:::::::::ccc:;::c:,',;::::;;:o0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
oooooooolllllccllllooooddddoollooolllllllllcclllllllllllllloooooooooolllllllloooodxkOOxdx00ko;,coddxOkdddoollllllcccccc:::::::::cccccccccccc:::;;;;;;;;,,,,,,,,,,,;;;;:::::cc::ccccccc:::::::;;:::::cccc:::::::ccccc::;;lOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
lllllloollllllllllloooooooollcclllllllcccccccccllllllllcllllllllloollllllllllooooodxkOOOOKK0xolloddxOOxdddoollllllllllllcccccccclllllc:::::::;;;;;;;;,,,,,,,,,,,,,;::ccccccccclllccccccccc:::::::::cccc::::::::cccccc::ckXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
lcccclllllllllllloooooodddoolccccccccccccccccllllllllllccccccllllllllcccllllooooooodxOKNNX0xddddooddk0Oxddoooooooooooollloooooooooolc:;,;;:::::::::;;;;,,''''''..',:cllllllllllllllllllllccc::::::cccccc::cc:::::ccllclkKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
lcccccccccclllllloodddddddddollcc:::::cccccccllllllllllccccccccccccccccccllloooooodddk0XXKOxooooooodk00kddddddddddoooooooddddddoooolc::;::ccccccc::::::;,,,,'''''',;clllooooooooooollllllllcc::::ccccccccclllllllclodx0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cc:::::cccccllllloodxxxxxddddoolcccccccccccccllllllllllccccccccccccccccccllloooodddddxk00OOkkOOkxddxk00Oxddddddddddddddddddddoooooolllllllooooolllccccc::::;;,,;;;;:ccllllooooddddoooollllllccccccccccccokOkkkkkkkO0KXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
:::::::::ccccclllloddxxxxxxxxdoolllllllllccccllllllllllcccccccc:::cccccccclllooooddddxxxkkkOOkkkkkkkO0K0kxddddddddddddddddddooooolllodddddddddddoooollllllccccccccc:cccccllllloodddooooollllllccccccccclkXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
::::::::::ccccccclloddxxxxxxxdddoooolllllllllcclcclllllccccccc:::::c:cccccllllooooooddddddxxxxxxxdddk0K0Oxdddddddxddddddooooloolllllloodddddxxxxxddddooolllllllllcc:ccccccccclllooddooollllllllcccccccclOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
::::;;:::::::ccccccloodxxxxxxxdddddoooollllllccccccllcccccccc::::ccc:::cccccllloooooodddoolllllllooox0K0Okxddddddddddddoolllllllllllllllooooddxxxxxxddoolllcccc:::::::::::::ccccclooooollllllllccccccccoOXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
:::;;;::::::::::cccclloddddxxxxddddddooolllllcccccclccccccccccccccccccccccccccllllllllolllccccllllooxO00Okxddddddddddoollllllllllllllllllllooddxxxddddooollccc::::::::::;;::::::::clooolllllllcccccccccd0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
;;;;;;:::::ccc::cccclloodddddddddddddooollllllcccclllllcccccccccccccccccccccccccccccccccccc:::cclllodk0KOkxddddddddooolccllllllcccllllllllloooddddddddooollcc::::::::::::::::::::::cloollllcclcccccccclxKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
;,;;;;:::ccccccccccllooodddddddddddddoooolllllllllllllllllccccccccclllllllcccccccccccccc:::::::ccllodk000Oxxddddddooolc:cllllllllllloolllllloooooooooolllllcccccccccccc:::cccccccc::loolllccccccccclllokKXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;;::cccccccccclllooooooodddoooooooodddoolllllllooollllllllllllllllllllccccc::::ccccccc:::cccclloodO00Okxddddddoooc::cllclloodooooooooooooooooooooooooolllllccccccclcccccccccccc:cllllcccllllcllllldOKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;:::ccccccccclllooooooooooooooooddxxxxxxdooooooooolllllllllllloooooolllccccc:::cccccccccccllllloodxO0Okxddddddoool::cllllcccccccllloooooooooooooooooolllccc:::::;;;;;;;;::cccccccllllccclllllllllok0KXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;:::ccccccccllllooooooooooooloodxxxxxxxkxxdoooooooolooooolloooodddddooolllllcccccccccllllllllllooodk0Okxxddddoooolc:clllllcc:;;,,,,,;;;;;::::::::::::;;;,,,,''''',,,;;;;:::ccclllllllcccllllllllodk0KKKKXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
,,,;;;:::ccccccccllloooooooooooolooxxxxxxxxkkxdooooolllllooooooooddddddddddooollllccccllllllllllllllllodO0Okxxdddodddoolllllllllllllcccc:::cccccccccccclccccc:::::::::::::::::::cclloolllllllllllooodxOO0000KKKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
;;;;::cccc::::cccclllooooooooooollodxxxxxkkkkxddooollllllloooooodddddddddddoooolllllllllllllllllllllllcldkOkxxxddddddddoolllllllllllloooooooooooooooooooooolllcccccc::::::::::::cclooollllllllooooodxkkOOOO00KKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
:::cccccccc::::::ccclloooooooooooolodxxkkkkkxxddooolllllllooooooddddddddddddooooollllccllllllllllllccccccokOkxxxdddddddddoollllllllllloooooooooooooooooooollllccccc::::::::::::::clllllllllloooddddxxkkkkkOOO000KKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ccllllcccccc:;;:::::cclloooooooooolloodxxxxxdddoooollllllloooooooddddddddddoooooolllcccccccllllcccc::::::cdOOkxxddddddddddooooollllllloooooooooooooooolllllllllccccccc:ccc:cc::cccclllllllloooddddxxkkkkkkkkkOO000KKKKXXXXXXNNNNNNNNNNNNNNNNXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
clllllllcccc:;;;;;;;::cccllllollllllooooddddddooolllllllllloooooooooooooooooooooollcccccccccccccc:::::::::okOOkxdddddddddddooooooooooooooddddddoooooooollloollllllllcccccccccccccccclllllllooddddxxkkxxxxkkkkkkOOO000KKKKXXXXXNNNNNNNNNNNXXXXXXXXXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cllooollllcc:;;;;;,;;;:::cccccllllllloooooooooolllllllclllllooollllllllllllloooolllcccccccccc:::::::::::::lxkkkkxddddddddooooooooooooooooddddddoooooooolloooooollllllllccccccccccccccllllloodddddxxxxxxxxxxxxxkkkkkOOO00KKKXXXXXXXXXXXXXXXXKKKKKKKKKKKKKXXXXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
ccllooolllc::;;;,,,,;;;::::::cccccclllllllllllllcccccccccllllllllccccccccclllloolllcccc:::ccc::::::::::::cokOxxkkxdddddoooooooooooooooooooooooooooolllllllllllllllllllcccccccccc:::cccllloooddddoddxddxxxxxxxxxxxxxxkkOO000KKKKKKXXXXXXKKKK000000000000KKKKKKKKXXXXXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cccccllcccc:::;;;;,;;;;;:::::::::::ccclllccccccc:::::ccccclllllcccccccccccllllolllllcccccc:::::::::::::ccclxOkddxkkxddddooooooooooooooooooooooolllccccccc::ccccccccccccccccc::::::::clllooooddollodddddddddddddddddxxxkkOOO000000KKKKKK0000OOOkOOOOOOOOO000000KKKKKKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cccccccccc::::;;;;;;;;:::::::::::::::::::::::::::::::::ccccllllccccccc:cccllllllllllllcccccccc::::ccccccccldOOdodxxxxddddooooooooooooooooolllllcccc:::::;;;;;;;;;;;;;::cccc::::::::cclllooodolcccoooddddddoodooddddddxxxkkkkkOOOOOOOOOOOOOkkkkkkkkkkkkOOOOOOO00000000KKKKXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
cccccccccc::::;;;;;;;::::::::::;;;;;;;;;;;;;;;;;:::::::ccccllllcccccc::cccllllllloooolllccccccccccccccccccldOOxooodxxxxddooooddddddooooollllcccccc:::::::;;;;;;,,,,,,,;:cc:;;::c::cccllooodolc::coooooooooooooooodddddxxxxxkkkkkkkkkkkkkkkxxxxxkkkkkkkkkkkkkOOOOOOkOOO00KKKXXXXXXNNNNNNNNNNNNNNNNNNNNNNNNNNN
ccccccc:::::::;;;:;;;::::::::::;;;;;;;;,,;;;;;;;::::::::ccccccccccc::::::ccllllooooooolllllcccccccclcccccccoOOxoooodxxxxddddddddddddooooolllcccccccccccccc:::;;,,;;;;;;:ccc:;:ccccccllooddolc:::clollloooooddddddddddddddxxxxxxxxxxxxxxxxxddxxxxxxxxkkkkkkkkkkkkkxxxkkkOO00KKKKXXXXXXXNNNNNNNNNNNNNNNNNNNNNN
::::::;;;;:::;;;;;;;;::::::::;;;;;;;;,,,,,,;;;;;:::::;::::ccccccc::::::::ccllooooodooooollllcccclllllllccccok0xoloooodxxxxdddddddddoooooooolllllllllllllcccccc:;,,;:::cccccc:cccccllooooolccc:::clllllooooodddxxxxxxxxddddddddddddddddddddddddddddxxxxxxxxxxxxxxxxxxxxxxkkOO000KKKKXXXXXNNNNNNNNNNNNNNNNNNNN
::;;;;,,,;;;;;;,,,;;;;::::::;;;;;,,,,,,,,,,,,,;;;;;;;;;;::::::::::;;;:::ccllooooddddddooollllcllllllllllcccokOxollooooddxxxxddddddddoooooooooooooooooooollllll:;;;:ccllccccccclllllooooolcc:::::clllllloooodddxxxxxxxxxdddddoooddddddddddddddddddddddxxxxxxxxxxxxxxddddddxxkkkOOO00KKXXXXXNNNNNNNNNNNNNNNNNN
;;;,,,,,,,,,,,,,,,,;;;;;;;;;;;,,,,,,,,,,'',,,,,;;;;;;;;;;;;;;;;;;;;,;;::cclloooddddddddoollllllllooooolllccok0kollllooooddxxxxdddddddoooooooooooooooooooooooolc:::cllllllccclllllooooolccc::::::ccccccllloooddxxxxxxxxxdddddooooooooodddddooooooooodddddddddxxxdddddddooooodddxxkkOO0KKKXXXXXXNNNNNNNNNNNNNN
,,,'',,'''',,,,,,,,,,;;;;;;;,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,;::cclloooddddddddooolllllllloooolllcclkOkollllooooooddxxxxxxxxdddddddddddddddddddddooooolllllllllllllllloooooollccc::::::::cc::cccllooodddxxxxxxxxdddddooooooooooooooooooooooooooooooodddddddddoooolllloodddxkOO00KKKXXXXXXXNNNNNNNNNN
,,''''''''''''''',,,,,,;;;;,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;,,,,,,,,;::ccllooooddddoooooolllllllllllllllcclkOxolllllloooooooddxxxxxxxxxxddddddddddddddddddddoooooooooollllooooooollccc::::::;;::c::::::ccllooddxxxxxxxxxddddoooollllllllooooooooooooooolllllooooodoooollllllllloodxxkOOO00KKKKKXXXXXXXXXXXX
,,'''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;,,,,,,,,,;;::cclllooooooooooooollllllllllllllccclkOxllllllllooooooodddxxxxxxxxxxxxxxxxxxxxxxddddddddddddoooooooooooolllcccc:::::::;;;:::;;;;;::clloodddxxxxxxxddddooolllllclllllooooooooooolllclllllloooolllllllccclloooddxxkkkOOO000KKKKKKKKKKKK
''''''','',,,,'''''',,,,,,,,,,,,,,,,;,,,,,,,,,,,,,;;;;;;;;;;,,,,,,,;;::cccllllllooooooooooolllllllllcccccc:lxkdlllllllloooooooooddddxxxxxxxxxxxxxxxxxxxxxxxdddddddddoooooooolllccccccc:::::::;;;::;,,;;;;::clllodddxxxxdddddooooolllcccccclllooooooolllcccccccccllllllllllllllllloodddxxxxxxkkkOO00000000000
'''',,,,,,,,'''''''''''',,,,,,,,,,;;;;;,,,,,,,,,;;;;;;;;;;;;,,,,,;;::cccclllllllloooooooooolllccccccc::::::lkOdllllllllloooooooooooddddxxxxxxxxxxxxxxxxxxxddddddddddoooolllccccccccccc::::::;;;;;:;,,,,;;;:cclloooddddddddooooollllccc::::cccllllllllccccccccccccccllllllllllllllooddddddddddxxxkkkOOOOOkkkk
'',,,;;;,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;,,,;;;::cccllllllllllloooooooooolllccccc:::::::lxkdlllllllllllooooooooooooooodddddddxxxxxdddddddddddooooolllccccccccccccc:::::::;;;;;:;,,,,,,;;::clllooooooooooooollllcccc::::::cccccccccccccccccccccccllllloolooooooddddxdddddddddddxxxxxxxxxxx
',,,;;;;;,,,,''''''''''''''',,,,,,,,''''',,,,,;;;;;:::;;;;;,,,;;:::cclllllllllllloooddddooooolllcccc:::::::lxkdlllllllllllloooooooooooooooooooodddddddddooooooooolllllccccccccccccc::::::::::;;;;:;;,,,,,,,;;:cccllllllllllooollllllcc:::::::::::::::::::cccccccccclllloooooooooddddxxxxdddddddddddddddddddd
,,;;;;;;;;,,''''''....'''''''''''',,''',,,,,;;;;;;:::::;;;;,,;;:::ccllllllllooooooddddddooooolllccccc::::::lkOdlllllllllllllllooooooollollloooodddddddoooooooooooollllcccccccccccccc:::::::::;;;;:;,,,,,,,,,,;;:::::cccccclllllllllllcccc::::::::;:::::::::ccccccccclloooooooooddddddxxdddddddoooooooooooodd
,;;;;:;;;;,,''..........''''''',,,,,,,,,,;;;;;::::::::;;;;;;;;:::ccccllllllloooooddddddddoooolllccccccc::::lkOdllllllllllloollloooooooooooooooddddddddddoooooooooolllllcccccccccccc::::::::::;;;;:;,''''''',,,,;;;;:::cccccccccccllllccccc:::::;;::;;;::::::cccccccclloodddddoooodddddddddddoooooooooooooooo
,;;;;;;;;,,''............'''',,,,,,,;;;;;;;::::::::::;;;;;;;;:::cccccccllllloooooddddddddooolllcccccccccc:cdOOxollllllllloooooolooooooooooooodddddddddddddddddooooollllllcccccccccc:::::::::;;;;;::;,''''''',,,,,,;;;;:::cccccccccccllcccc:::::::::;;;;;::::::ccccccloooddddddoooooddddddooooooddddooooooooo
,,;;;;;;,,''.............''',,,,;;;;;;;::::::::::::::;;;;;;;:::ccccccccclllloooooddddddoooolllccccccccccccok00xolllllllllllllloooooooooddddddddddddxxxxxxxddddooooollllllccccccccccc::::::::;;;;;;:;,,''''''''',,,,,;;;::::ccccccccccccccc::;;;::;;;;;;;;;;;:::::cccllooooodddooooooddddooodddddddddoooollll
'',,,,,,,,'.............''',,,;;;;;;::::::::::::::::::;;:::::::ccccccccllllloooooooooooooollllccccccccccclx00Okolllllllllllllloooooooooodddddddddddxxxxxxxxxdddoooolllllllcccccccccccc::::::::;;;;::;,,,''''''''',,,,;;;;::::::::cccccccc::::;;;;;;;;;;;;;;;;:::::cclllooooooooooooddddddddddddddddoooollllc
''''',,''''...........''''',,,,;;;;;::::::::::::::::::::::::::ccccccclllllllloooooooooooollllcccccccccllldOK0Okdollllllooooolloooooooooodddddddddddxxxxxxxxxdddooooollllllccccccccccccc::::::;;;;;;;;;,,,''''''''',,,,;;;;;;;;:::ccccccc::::::::;;;;;;,,,,,;;;;::::cclllooooooddddddxxxxxddddddddddooolllccc
'''''''''........'''''''',,,,,,;;;;;;;;;;;;;;::::::::::::::::ccccclllllllllllllllllllooollllllllllcccllldOKK0Okdolllllooooooooooooooooodddddddddddxxxxxxxxxxxdddoooollllllcccccccccccc:::::::::;;;;;;;;;,,'''''''',,,,,;;;;;;::::::::::::::::::::;;;;,,,,,,,,,;;;:::ccclloooodddxxxxxxxxxxxxxddddddoolllcc::
'''''''''.''''''''',,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;:::::;;::::ccclllllllllllllllllllllllolllllllllccclllx0XX0Okxdollllloooooooooooooooooodddddddddddxxxxxxxxxxdddoooolllllccccccccccccc:::::::;;;;;;;,;;;,,,'''''',,,,,,,;;;;;;:::::::::::::::::::;;;,,,''',,,,,;;;;::ccclloooddxxxkkkkkkxxxxxxxdddoolllcc:::
,''''''''''',,,,,,,,,,,,,,,,,,,,,;;;;;;;,,,,,,,;;;;;;;;;;::::ccllllloooooollllllllllllloolollollllclclxKNXK0Okxdolllllooooooooooooooooooodddddddddddxxxxxxxxxdddoooolllllcccccccccccccc::::::;;;;;;;,,,;;,,,,,,,,,,,,,,,,,,;;;;;;;:::::::cccccc:::;;,,'''''',,,,,;;;::cccllooddxxxkkkkkkxxxxxxxddoolllcc::::
,''''''''''',,,,,;;;;;;;,;;;;;;;;;;;;;,,,,,,,,,,,;;;;;;;;:::cccllloooolllllllllllllllllooooooolllllloOXNNXKOkxddoolllooooooooooooooooooooodddddddddddddddxxdddddoooolllllcccccccccccccc::::::::;;;;;,,,,;,,,,,,,,,,,,,,,,,,,,;;;;;;:::cccccccccc::;,,'''''''',,,,,;;::cccllooddxxxxkkxxxxxxxxxdddoollccc::::
''''''''''',,,;;;;;;;,,,,;;;;;;;;;;;;,,,,,,,,,,,,,,,;;;;::::ccclllllllllllllcclllllllloooooooooooloxKNNNXK0Okxdoooooooooooooooooooooooooodoodddddddddddddddddddddoooollllccccccccccccccc:::::;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;::cclllllcc::;,,'''''''''''',,,;;::ccclooddxxxxxxxdddddddddddoollccccccc
''''''''',,,,,,;;;;,,,,,,;;;;;;;;;;;;,,,,,''''''',,,;;:::cccccllllllllllccccccccccllllloooooooooodONWNNXKK0kxddoollloooooooooooooooooooooooodddddddddddddddddddddoooollllcccccccccccccccc::::;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;:ccllllllcc:;;,'''''''''''''',,,;;::ccllodddxxxxxddddddddooooollcccccccc
''''''',,,,,,;;;;;;,,,;;;;;;;;;;;;;;;,,,,,''''''',,;;:ccclllllllllllllccccccccccccccclllloooooodkKNWNNXXK0Okxdoolllllooooooooooooooooooooooddddddddddddddddddddddoooollllcccccccccccccccc::::;;;;;;;;;,,,,,,,'''''''',''''',,,,,,,;;:cllooolllc:;,,'''''''''''''',,,;;::ccloooodddddddooooooooollllcc:::::cc
'',,,,,,,,;;;;;;;;;;;;;;;;;;;:::;;;;,,,,,,,''''',,;;:cccllooooollllllcccc::::::::::ccccllllllokKNWNNXXKK0Okxdoollllllloooooooooooooooooooooddddddddddddddddddddddoooollllcccccccccccccccc::::;;;;;;;;;,,,,',,,''''''''''''',,'',,,;::clloooolcc:;,,,,,,,,,''''''',,;;::cclloooooodddooooooollllllcc:::::::::
',,,,,,,;;;;:::::;;;;;;,,;;;:::::::;;;,,,,,,,,,,,;::cclllooooooooolllcccc::::::::::::ccldxdoxKNWWNNXXK0OOkxdddolllllllloooooooooddoooodooodddddddddddddddddddddddoooolllllccccccccccccccc::::;;;;;;;;;,,,,''',,,'''''''''''''',,,,;:ccllloollc:;;,,,,,,,,,,,,''',,,;::cccclloooooooooolloolllllllcc::::;;;;:
,,,,,,,;;;;::::::::;;;;;;;;::cccccccc::;;,,,,,;;;::cclloooddddddoooolllcc::::::::::::cldkkkOKWWNNXXKK0OOkxdddoolllllllllooooooooooooddddddddddddddddddddddddddddddoooolllllccccccccccccc::::::;;;;;;;;;,,,,'''',;:::::;,''''',,,,,;::cclllllcc::;;,,,,,,,,,,,,,,,,,;::ccccclllllloollllloooolllllcc::;;;;;;;
,,',,,;;;;:::::::::::;;;;::cclloooooolcc:;;;;;:::cclllooddddddddddoolllcc::::;;;::::cldkkxddk0XXXXKK0OOkxxdddolllllllllloooooooooooooddddddddddddddddddddddddddddddooollllllcccccccccccc::::::;;;;;;;;;,,,,''''''''',:ooc,',,,,,,,;;:ccllllccc::;;,,,,,,,,,,,,,,,,;;:ccccccccccccccclllllooooooollc:::;,,,,;
,,,,,,;;;::::ccccc:::;;;:::clodddddddoolcc:::cccllllooooddddddddddoolllccc::;;;;;::ldkkkxddooodk0KK0Okkxxdddooollllllllooooooooooooooooodddddddddddddddddddddddddddoooolllllccccccccccccc:::::;;;;;;;;;,,,,,'''''''...';cc;,,,,,,,;;::ccccccc::;;,,,,,,,,,,,,,,,,,,;::ccccccccc::cccccllooodddooolcc::;,,,,,
',,,,,;;;:::cccccc:::;;;::cloddxxxxxddoollcclllloooooooooooooooddooollccc::;;;clodkOOkkxxdoolllloxkkkkxxddddoolllllllllooooooooooooooooooodddddddddddddddddddddddddoooollllccccccccccccccc:::::;;;;;;;;;,,,,,''''''......;:;;;;;;;;;:::ccc::::;;,,,,,,,,,,,,,,,,;;;;;::::::cc::::cccclloooodddooolcc:;,,''',
'',,,,,;;:::cccccc:::;;;::cloodxxxxxxddooollloooooooooooooooooooooolllccc:;;:ok0KK0OOkkxddoollcccclodxxddddooolllllllllloooooooooooooooooooddddddddddddddddddddddddoooolllllccccccccccccc::::::;;;;;;;;;,,,,,,'''''.......,:c::::::;;:::::::::;;;,,'''''',,,,,,;;;;;::::::::::::cccccllooooooooollc::;,,''''
'',,,,,;;:::::::c:::::;;;:ccloodxxxxxddoooooooodddddooooooooooooooolllcc:ccoxO00000Okkkxdoooolcc::::cloddooollllllllllllloooooooooooooooooooddddddddddddddddddddddooooolllllccccccccccccc::::::;;;;;;;;;,,,,,,''''.........';lolc:::::::::::::;;;,,''''''',,,,;;;;;::::::::;::::ccccclllloooooollcc::;;,,'''
'',,,,;;;::::::::::::;;;;;::clloddxxdddooooooodddddddoooolloooooolllllloxkOO000OOkkkOOkxxddoollccc::;;::loolccccccllllllllloooooooooooooooodddddddddddddddddddddddooooolllllcccccccccccc:::::::;;;;;;;;;;,,,,,,''............':oxxo::::::::::;;;,,,''''''',,,;;;;;;;;;;;;;;;;;:::cccclllllllllllcc:::;;;,,,,
,,,,,;;;;;;:::::::::;;;,,,;;:cclooddoooooooooodddddddoooolloooooooodxkO00000000OOOkkxkkkxkxxdollllc::;;;;;cllllc:cccllllllllooooooooooooooooddddddddddddddddddddddoooooolllccccccccccccc::::::;;;;;;;;;;;;,,,,''................'cxko:;;::::::;;,,,''''''',,;;;;;;;;;;;;;;;;;;;:::ccccllllccccccc::::;;;;,,,
,,,,,;;;;;;;;::::::;;;;;,,,,;::cllooooooooooooddddddoooollooooddxxkOKK0000000OOOOkkkkxddxxxxxdooollcc:::;;;;:cllllcccccllllllllllooooooooooooooooooooooooodddddddooooooolllcccccccccccccc::::;;;;;;;;;;;;;,,'.....................'cxkxdlc::::::;;,,,,,,,,,,,;;;;;;;;;;,,,,;;;;;::::cccccllcccc::::::::;;;,,
,,,,;;;;;;;;;;:::::::;;;;,,,,;::ccllllllllloooodddddooooooddxkOOO0000000000O00OOOkkkkkkxdddxxxdoodoolcc::::;;;;;::ccccc::cccllllllllooooooooooooooooooooooooooooooooooolllccccccccccccc::::::;;;;;;;;,,,,''.........................'cx00Oxdocc:::;;;;;;,,,;;,,,,,,,,,,,,,,,;;;;::::::ccccccccc:::::::::;;,,
;;;;;;;;;;;;;;;;;:::::::;;;;;;;::cccllllllllooodddddoodxkOOOOOO00000000OOOOkkOOOOOkkkOOOkxdoodxxxxddoolllccc::::;;;;;:cc:;,;::cccclllllllllooolllllloooooooooooooooooolllccccccccccccc::::::;;;;;,,,,''...............................'cx0000Okdocccc:::::;;;;;,,,,,',,,,,,,,,;;;;::::ccccccccccc:::::;;;;,,
::::;;;;;;;;,,,;;::::cc:::::::::::cccccccclllooooodxkO0OOkkOO0KK000000OOOOOkkkOOOOOOO0OOOOkkxdddxxxdddoooolllccccc::;;;;;;'..'',,;;::ccccllllllllclllllllllllooooooollllccccccccccc::::::::;;;,,,''.....................................'cxO000OOkxolccccc::::;;,,,''',,,,,,;,,,;;;;::ccccccccccc::::;;;;,,,
::::::;;;,,,,,,;;::cccccc::::::::::::ccccccllloodxk000OkkO00KK000000OOOOOOO0OOOOOOOOOOOOkkkkkkkxddddxddxxddoollllcccc:::;;,'........',,;;:::cccccccccccccccclllllllllllccc::::::::::::::;;;;,,''..........................................':dO00000Okxdollccc::;;;,,,,,,,,,;;,,,,,,,;;::ccllllccc::::;;,,,,,
cccc::;;;,,,,,,;::cccllcccc::::::;:::::cccclodxkO0OkkkkO00KKK00000000OkkkkkOOOOOOOOOOOOOOOkkkOOOkkxdooodxxxxdlllllllllccc::;,.............'',;;;;;;;;;;;:;::::::ccccccc:::;;;;;;;;;;;;,,,''..................................................:dO000000OOxdollccc::;;;;;;;;;;;,,,,,,,,,;;::cccccc:::::;;,,,,,
ccc:::;;,,,,,,;::ccclllllcc::::;;;:::::cccoxO000OkxkOO0KKK00000OOOOOOOOOOkkkOOOOOOOOOkkkOOOkkkkkOOkkxxddolodddddooooolllllllc;'...................'''''''',,,,,;;;;;;;;;,,,,,'''''''..........................................................,lxO00OOOOOOOkdolccccc::::::;;;,,,,,,,,,,,;;::ccc::::::;;,,,,,
c::::;;;,,,,;;:::cccccllccc:::;;;::::cldxk000OkkkkkO00KKKK0000OOkkOOOkkkOOkOO00OOOOkkkkkOkkkkkkkkOOkkkkkxdoolllooodddoooooooool:'................................''''...........................................................................,lxOOOOOkOOO0Okxoolcccccc:::;;;,,,,,,,,,;;;::::::::::;;;,,,'
::;;;;;;;;;;::::cccccccc::::;;;;;:coxkO000OOOkkkOO00000000OOkkkkkkkkkkkkkkkkOOOOOOOkkkkkOOkkkkkkkkOkkkkkxxxkxdolccccllooddddoodo:.................................................................................................................'cdOOOOOkkkOOOOOkxdolcccc::;;;,,,,,,,,;;;:::::::::;;;,,,''
:;;;;;;;::::::ccccccccc:::;;;::loxOO00000OkkOOOO00KKKK00OOOkkkkxxkkkkxxkkkkkkOOOOOOkkkkOOOOOkkkkkkkkkkkkkkkkkkkkxdolc::cllooooooc,...................................................................................................................:okOOOOkkkkkkOO00Okxol:;;;;,,,,,,,,,;;;;::::::;;;;,,,''
:;;;;;:::cc::cccccccc:::;:cldxkO000000OOOkkkO000000000OOOOkkkkkkkkkkkxxxxkkkkOOkOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkkxxxdddoolc:;;::clc;.....................................................................................................................:oxkkkkkkkkkkkkO000Oxol:,'','',,,,,;;;::::::;;;,,,'''
:::::cccccccccc:::::::cloxO0000000000OOkkkkO00000000OOOOkkkkkxxkxkkkxddxxxkkOOOOOOOOOOOkkkkkkkkkkkkkkkkkkkkkxxxxxxxxxxddoolc::;;,,'......................................................................................................................:oxkkkOOkkkkkkxxkO000Oxoc;,'',,,,,;;;;;;;;;;,,,,,''
:::ccccccccccc:::::coxk0000000000OOOOOOOOO0000OO00OOkkxxxddddxxxxxxxxxdddxxxkkkkkkkOOOOOOkkkkkkkkkkkkkkkkxxxxxxxxxxxxddoooollc:;'.........................................................................................................................':odxxkkkxxxxxddxkkOO000Oxoc;,,,,,,,,;;;;,,,,,''''
:::ccllcccccccccoxO0000000OOOOOOOOkkkkOOOOO000OOOOOkxdlc:::cclodddxxddddddxxxkkkkxxxxkkkkkOkkkkkkkkkkkkkkxxxxxxddddddddooollcc:;;,'.........................................................................................................................,codxxxxxxxxddddxxkOO00000Oxoc;,'',,,,,,,,,'''''
::cccccccc:cldkO0K00OOOOOkkkxxxxxddddxxxkkkOOOkxxxdooc:;,''',;cllodxxxddxxkkkkkxxddooooddddxxxxxxxxddddddooooollllllcccccc:::;;;;;,'..........................................................................................................................;loddddxxddddddodxkkkkkOOO00Oxol:,'',,,,,'''''
ccccccc:cloxO000000OOOkkkxxdddooooooloodxxxddxxdooolc:;,''''''',;:cloodxkkxxxxdooollccclooooolllllllcccc::::::;:::;;;;;;;;;;;,,,,,''...........................................................................................................................':lloododdddoooodddddxxxxkkkkOOkxoc;,,,,'''''
::::::coxO0K00000OOOkkxxxxdddodoollllooodddoodddolc:;'''...'''''',;::cloddlllcc::ccccccccc::::;;;;;;;,,,,'',,,'',,,,,,;;,,,,,,;;;,,,''..........................................................................................................................';cccllloodooooooooooooooddddxkkkkxl:,,,,,''
;;:cldk0000000OOOOkkkxxdddddooodoooooooooddoooollc:,'........',,;;;,,,,;::ccccc:;;::::ccc:::;;;;,,,,'''.....''.''',,,,,,,,,,,,,,,,,,,'............................................................................................................................,:cllllllllllllllllcccllloddddxxkkxo:,,,,,
:ldkO000000OOOOOkkkxxdddddodddddoooooooooollooolllc;'........',;::;,'''.''',;;,,,,,,;;::cc::;;;;;,'''''.........'''',,,,,,,;;;;,,,,,,''............................................................................................................................':clllllllllloooollllloollooooddxxkkdc,,,
dOKKK00000OOOOkkxddddddddddddddoooooooolllcccccllc:;,'........';::;,'.......''..'',,;;::::c:;;;;:;,''''''......''''',;;,,;;;;;;;,,,,,'''............................................................................................................................':llcllllllloooollllloolllllloodxxkOOd:'



-
-{{handshake_scripts | safe}} + {{handshake_scripts | safe}} diff --git a/templates/projects.html b/templates/projects.html index bf76039..b2fcedc 100644 --- a/templates/projects.html +++ b/templates/projects.html @@ -88,6 +88,16 @@ height="0" width="0" style="display:none;visibility:hidden">

Check out my Git for all my projects

+
+
+

ShakeCities

+

A single page website creator with each user's page on their free HNS domain

More Info +
+
+

Woodburn Faucet

+

A service providing free Handshake TLDs to allow for quick testing for new users

More Info +
+

FireWallet

@@ -124,8 +134,7 @@ height="0" width="0" style="display:none;visibility:hidden">
- -{{handshake_scripts | safe}} + {{handshake_scripts | safe}} diff --git a/templates/resume.html b/templates/resume.html index d74005b..801eef5 100644 --- a/templates/resume.html +++ b/templates/resume.html @@ -79,17 +79,17 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=

Experience

-

Audio Production • 1WAY FM
Feb 2021 • Dec 2021

+

Audio Production • 1WAY FM
Feb 2021 - Dec 2021

As an part time audio production volunteer at 1Way FM, I had the opportunity to learn production skills to support the station's mission of providing community-focused radio. I worked with the production team to produce audio content for talk shows.

My role involved recording, editing, and mixing audio content. I worked collaboratively with other volunteers and staff to ensure the smooth operation of the station to give back to the community.


-

Owner • Nathan 3D Printing Service
Feb 2020 • Present

+

SMall BUSINESS Owner  • Nathan 3D Printing Service
Feb 2020 - Present

Launched and grew a small 3D printing and CAD modeling business. Managed all aspects of operations, including customer acquisition, project management, and financial management. Developed expertise in 3D printing technology and CAD modeling software, while building a reputation for reliability, professionalism, and innovation.


-

Technical Support Specialist • Namebase
Oct 2022 • Present

+

Technical Support Specialist • Namebase
Oct 2022 - Present

While working as tech support at Namebase, I provide technical support to users and ensuring a positive user experience on the Namebase platform. I work closely with the product and engineering teams to resolve technical issues, answer user questions, and provide feedback on product features and improvements.

In addition to my tech support responsibilities, I also serve as an active member of the community related to the Namebase service. I engage with users and build strong relationships with the community. This involves creating and sharing content, managing social media channels, and representing Namebase at conferences and industry events.

Through this role, I have developed strong communication, problem-solving, and customer service skills, as well as a deep understanding of blockchain technology and its applications. I have also gained valuable experience in community building and management, and in working in a fast-paced, dynamic startup environment.

Overall, my role at Namebase has allowed me to combine my passion for technology with my skills in customer service and community management, while contributing to the growth and success of a leading blockchain startup.


@@ -97,7 +97,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=

Education

-

Home Educated
Year 1  Year 12

+

Home Educated
Year 1 - Year 12

During my homeschooling years, I developed a passion for technology and programming.
I spent a lot of time developing applications for problems I found, which helped me hone my problem-solving and programming skills.
Through this process, I learned to work independently and take initiative to find solutions to challenges.

My homeschooling experience allowed me to pursue my interests in a flexible, personalized learning environment.
I had the opportunity to explore computer science and programming in-depth, engage in hands-on learning, and develop critical thinking skills.
I also learned to manage my time effectively, balancing my academic pursuits with my passion for technology and programming.

Overall, my homeschooling experience has prepared me well for the challenges of pursuing a career in technology.
It has taught me to be self-motivated, disciplined, and adaptable.


@@ -106,6 +106,11 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=

As a student in the Discovering Engineering extension course at Australian National University, I had the opportunity to explore the field of engineering and gain a foundational understanding of engineering principles and practices. The course provided an overview of the different branches of engineering and introduced key concepts such as problem-solving, design thinking, and technical communication.

Through lectures, case studies, and hands-on activities, I developed a deep appreciation for the role that engineering plays in shaping our world and solving complex problems. I also gained practical skills in using engineering tools and software, such as CAD modeling which I would use to build my business.

The course was taught by experienced faculty members and industry professionals, providing a high-quality educational experience and valuable networking opportunities. Overall, my experience with the Discovering Engineering extension course has given me a solid foundation in engineering principles and practices.


+
+

BACHELOR of Computer Science  • Australian National University
2022 - Present

+

Studying for a Bachelor of Computer Science from the Australian National University, a globally recognized institution. Developing a strong foundation in computer science and problem-solving skills through engaging coursework and collaboration with peers.

+
+
@@ -113,25 +118,30 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=

Skills

-

C# Programming • 5 Years

+

C# Programming • Since 2016

Experienced in programming using C#. This includes developing Windows applications, debugging, and testing.


-

DNS & DNSSEC • 2 YEARS

+

DNS & DNSSEC • Since 2020

Skilled in managing domain name systems (DNS) and DNS security extensions (DNSSEC), including configuring DNS settings, troubleshooting issues, managing records, and managing DNSSEC for zones.


-

Technical Support • 3 Years

+

Technical Support • Since 2020

Proficient in providing technical support to users, including troubleshooting, ticket management, and customer service.


-

Linux • 2 Years

+

Linux • Since 2019

Competent in administering and managing Linux systems. This includes system administration, command-line interface, and scripting. Experienced in using cloud servers for various purposes, including web hosting and docker containers.


+
+

Server Administration • Since 2023

+

I own and manage a dedicated server hosted in a local data center. Utilizing a Proxmox hypervisor, I efficiently manage virtual machines on the server. To increase security measures, I have implemented three firewalled routers to govern three distinct public IPv4 addresses. Each IP is assigned to a separate virtual network, thereby enhancing the overall security infrastructure.

+
+
diff --git a/templates/servers.html b/templates/servers.html index 9805b4e..b4fb0cf 100644 --- a/templates/servers.html +++ b/templates/servers.html @@ -310,8 +310,7 @@ height="0" width="0" style="display:none;visibility:hidden">
-
-{{handshake_scripts | safe}} + {{handshake_scripts | safe}} From d094784188c4413f6a800b3f33e69f0d64fadd70 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Mon, 18 Dec 2023 15:02:13 +1100 Subject: [PATCH 09/54] feat: Updated websites section --- server.py | 5 +- templates/assets/css/index.min.css | 2 +- templates/assets/css/swiper.min.css | 1 + templates/assets/img/HNS.png | Bin 0 -> 22620 bytes templates/assets/img/HNSW.png | Bin 0 -> 29332 bytes templates/assets/js/hacker.min.js | 2 +- templates/assets/js/sites.min.js | 1 + templates/index.html | 101 ++++++++++++++++++---------- templates/podcast.html | 2 +- templates/projects.html | 4 +- templates/resume.html | 2 +- templates/servers.html | 2 +- 12 files changed, 76 insertions(+), 46 deletions(-) create mode 100644 templates/assets/css/swiper.min.css create mode 100644 templates/assets/img/HNS.png create mode 100644 templates/assets/img/HNSW.png create mode 100644 templates/assets/js/sites.min.js diff --git a/server.py b/server.py index c20fb58..104d3e2 100644 --- a/server.py +++ b/server.py @@ -82,6 +82,7 @@ def wallet(path): # Main routes @app.route('/') def index(): + global address git=requests.get('https://git.woodburn.au/api/v1/users/nathanwoodburn/activities/feeds?only-performed-by=true&limit=1&token=' + os.getenv('git_token')) git = git.json() git = git[0] @@ -118,7 +119,7 @@ def index(): if request.cookies.get('HNS'): return render_template('index.html', handshake_scripts=handshake_scripts, HNS=request.cookies.get('HNS'), repo=repo, repo_description=repo_description, custom=custom) - if handshake_scripts != "": + if address == '': address = getAddress() # Set cookie resp = make_response(render_template('index.html', handshake_scripts=handshake_scripts, HNS=address, repo=repo, repo_description=repo_description, custom=custom), 200, {'Content-Type': 'text/html'}) @@ -157,4 +158,4 @@ def not_found(e): return render_template('404.html'), 404 if __name__ == '__main__': - app.run(debug=False, port=5000, host='0.0.0.0') \ No newline at end of file + app.run(debug=True, port=5000, host='0.0.0.0') \ No newline at end of file diff --git a/templates/assets/css/index.min.css b/templates/assets/css/index.min.css index fcfb794..9691282 100644 --- a/templates/assets/css/index.min.css +++ b/templates/assets/css/index.min.css @@ -1 +1 @@ -img.no-drag{pointer-events:none}img.fog{pointer-events:none;position:absolute;left:0;top:0;width:100%;height:100%}#downtime{z-index:2;position:fixed;right:0;bottom:0;width:20%;transition:opacity .5s;opacity:0;cursor:pointer}blockquote.speech{position:absolute;display:inline-block;right:14vw;bottom:23vh;width:17vw;background:url(/assets/img/speech-bubble.svg) center;color:#fff;padding-top:3%;padding-bottom:20%;background-repeat:no-repeat!important;margin:0 auto;text-align:center;box-sizing:content-box;line-height:1;font-family:SequentialistBB,cursive;font-size:1.2vw} \ No newline at end of file +#sites{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;padding:60px;font-family:Quicksand,sans-serif}.site-container{background:rgba(133,133,133,.2);box-shadow:0 4px 30px rgba(0,0,0,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);border-radius:25px;padding:30px 0;width:min(1200px,100%)}.site-container>h1{font-size:2rem;font-weight:600;text-align:center;color:#dda3b6;margin:20px 0 40px}.swiper{width:80%;height:100%;margin-bottom:30px}.swiper-scrollbar{--swiper-scrollbar-bottom:0px;--swiper-scrollbar-drag-bg-color:#dda3b6;--swiper-scrollbar-size:5px}.site{position:relative;max-width:400px;padding:1rem;font-family:inherit;font-size:1rem;font-weight:500;color:var(--clr-text);background-color:transparent;border-radius:10px;isolation:isolate;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.site::before{content:"";position:absolute;top:0;left:0;right:0;bottom:15px;background:rgba(236,149,200,.2);box-shadow:0 4px 30px rgba(0,0,0,.1);border-radius:10px;z-index:-1}.site-img{width:100%;max-width:400px;object-fit:cover;overflow:hidden;aspect-ratio:1;border-radius:6px}.site-body{align-items:center;gap:8px;padding:15px 0;cursor:default}.site-name{font-size:.9rem;font-weight:600;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-author{width:fit-content;font-size:.8rem;font-weight:600;opacity:.6;color:var(--clr-text)}.site-avatar{width:40px;aspect-ratio:1/1;object-fit:cover;border-radius:5px;cursor:pointer}.site-actions{position:relative}.site-actions-content{position:absolute;bottom:130%;right:0;padding:8px;border-radius:8px;background:rgba(172,172,172,.2);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:2px 2px 10px 2px hsl(0,0%,0%,.25);transition:opacity .25s,scale .25s;transform-origin:bottom right}.site-actions-content[data-visible=false]{pointer-events:none;opacity:0;scale:0}.site-actions-content[data-visible=true]{pointer-events:unset;scale:1;opacity:1}.site-actions-content li{padding:.5rem .65rem;border-radius:.25rem;list-style:none}.site-actions-content li:is(:hover,:focus-within){background-color:rgba(248,132,169,.7)}.site-actions-link{width:max-content;display:grid;grid-template-columns:1rem 1fr;align-items:center;gap:.6rem;color:inherit;text-decoration:none;cursor:pointer}.site-like{text-decoration:none;color:var(--clr-text);margin-right:5px;font-size:1.1rem;opacity:.65;border-radius:50%;overflow:hidden;transition:.35s}.site-actions-controller{border:0;background:0 0;color:var(--clr-text);cursor:pointer;opacity:.65}.site-actions-controller:hover,.site-like:hover{opacity:1}.site-like:focus{outline:0}.site-like.active{color:red;opacity:1;transform:scale(1.2)}@media (max-width:1200px){.swiper{width:80%}}@media (max-width:900px){#sites{padding:60px 80px}.swiper{width:50%}}@media (max-width:765px){.swiper{width:70%}}@media (max-width:550px){#sites{padding:40px}.swiper{width:80%}}img.no-drag{pointer-events:none}img.fog{pointer-events:none;position:absolute;left:0;top:0;width:100%;height:100%}#downtime{z-index:2;position:fixed;right:0;bottom:0;width:20%;transition:opacity .5s;opacity:0;cursor:pointer}blockquote.speech{position:absolute;display:inline-block;right:14vw;bottom:23vh;width:17vw;background:url(/assets/img/speech-bubble.svg) center;color:#fff;padding-top:3%;padding-bottom:20%;background-repeat:no-repeat!important;margin:0 auto;text-align:center;box-sizing:content-box;line-height:1;font-family:SequentialistBB,cursive;font-size:1.2vw} \ No newline at end of file diff --git a/templates/assets/css/swiper.min.css b/templates/assets/css/swiper.min.css new file mode 100644 index 0000000..8df28e1 --- /dev/null +++ b/templates/assets/css/swiper.min.css @@ -0,0 +1 @@ +font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff;--swiper-navigation-size:44px}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;overflow:clip;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d,.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide,.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:1s linear infinite swiper-preloader-spin}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev,.swiper-pagination-bullet:only-child,.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled,.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-lock,.swiper-pagination-lock,.swiper-scrollbar-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:opacity .3s;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-cube .swiper-slide .swiper-slide,.swiper-fade .swiper-slide .swiper-slide,.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active,.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active,.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cards,.swiper-cube,.swiper-flip{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/templates/assets/img/HNS.png b/templates/assets/img/HNS.png new file mode 100644 index 0000000000000000000000000000000000000000..dd4d455384470eec5ca289137cf71d17d3793832 GIT binary patch literal 22620 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 K{VF||=>G$>M8>lK literal 0 HcmV?d00001 diff --git a/templates/assets/img/HNSW.png b/templates/assets/img/HNSW.png new file mode 100644 index 0000000000000000000000000000000000000000..88ddd853bf4df98e47beaa14c0dd2b18155619e6 GIT binary patch literal 29332 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 literal 0 HcmV?d00001 diff --git a/templates/assets/js/hacker.min.js b/templates/assets/js/hacker.min.js index 7b90399..182bdd8 100644 --- a/templates/assets/js/hacker.min.js +++ b/templates/assets/js/hacker.min.js @@ -1 +1 @@ -const letters="ABCDEFGHIJKLMNOPQRSTUVWXYZ/.?!@#$%^&*()_+";let interval=null,interval2=null,interval3=null;window.onload=t=>{target=document.querySelector(".nathanwoodburn");let e=0,n="NATHAN.WOODBURN/";clearInterval(interval),interval=setInterval((()=>{target.innerText=target.innerText.split("").map(((t,r)=>r=n.length&&clearInterval(interval),e+=1/3}),30)},document.querySelector(".copyright").onmouseover=t=>{let e=0,n="Copyright © Nathan Woodburn 2023";console.log(n),clearInterval(interval2),interval2=setInterval((()=>{t.target.innerText=t.target.innerText.split("").map(((t,r)=>r=n.length&&clearInterval(interval2),e+=1/3}),10)}; \ No newline at end of file +const letters="ABCDEFGHIJKLMNOPQRSTUVWXYZ/.?!@#$%^&*()_+";let interval=null,interval2=null,interval3=null;window.onload=t=>{target=document.querySelector(".nathanwoodburn");let e=0,n="NATHAN.WOODBURN/";clearInterval(interval),interval=setInterval((()=>{target.innerText=target.innerText.split("").map(((t,r)=>r=n.length&&clearInterval(interval),e+=1/3}),30)},document.querySelector(".copyright").onmouseover=t=>{let e=0,n="Copyright © Nathan.Woodburn/ 2024";console.log(n),clearInterval(interval2),interval2=setInterval((()=>{t.target.innerText=t.target.innerText.split("").map(((t,r)=>r=n.length&&clearInterval(interval2),e+=1/3}),10)}; \ No newline at end of file diff --git a/templates/assets/js/sites.min.js b/templates/assets/js/sites.min.js new file mode 100644 index 0000000..de2fedd --- /dev/null +++ b/templates/assets/js/sites.min.js @@ -0,0 +1 @@ +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function l(){return Date.now()}function o(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let a=1;at.indexOf(e)<0));for(let t=0,a=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}function m(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function h(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function f(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:[t]),s}function g(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function v(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function w(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function b(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function y(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function E(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let x,S,T;function M(){return x||(x=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),x}function C(e){return void 0===e&&(e={}),S||(S=function(e){let{userAgent:t}=void 0===e?{}:e;const s=M(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),S}function P(){return T||(T=function(){const e=r();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,a]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&a<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),T}var L={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};const A=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},z=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},$=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+a+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&z(e,s)}))}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&z(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?T=parseFloat(T.replace("%",""))/100*n:"string"==typeof T&&(T=parseFloat(T)),e.virtualSize=-T,u.forEach((e=>{l?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),a.centeredSlides&&a.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const L=a.grid&&a.grid.rows>1&&e.grid;let A;L&&e.grid.initSlides(m);const z="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(d&&a.loop){const t=w[0]+T;if(a.slidesPerGroup>1){const s=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/a.slidesPerGroup),i=t*a.slidesPerGroup;for(let e=0;e!(a.cssMode&&!a.loop)||t!==u.length-1)).forEach((e=>{e.style[s]=`${T}px`}))}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;w.forEach((t=>{e+=t+(T||0)})),e-=T;const t=e-n;f=f.map((e=>e<=0?-b:e>t?t+y:e))}if(a.centerInsufficientSlides){let e=0;if(w.forEach((t=>{e+=t+(T||0)})),e-=T,e{f[s]=e-t})),g.forEach(((e,s)=>{g[s]=e+t}))}}if(Object.assign(e,{slides:u,snapGrid:f,slidesGrid:g,slidesSizesGrid:w}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-w[w.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(m!==c&&e.emit("slidesLengthChange"),f.length!==x&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),g.length!==S&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(d||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.el.classList.contains(t);m<=a.maxBackfaceHiddenSlides?s||e.el.classList.add(t):s&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a{e.classList.remove(s.slideVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u1&&m<=t.size||u<=0&&m>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),a[e].classList.add(s.slideVisibleClass)),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e=>h(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=n(`[data-swiper-slide-index="${t}"]`)}else l=n(`[data-swiper-slide-index="${i}"]`);else l=t[i];if(l){l.classList.add(s.slideActiveClass);let e=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(l,`.${s.slideClass}, swiper-slide`)[0];s.loop&&!e&&(e=t[0]),e&&e.classList.add(s.slideNextClass);let a=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(l,`.${s.slideClass}, swiper-slide`)[0];s.loop&&0===!a&&(a=t[t.length-1]),a&&a.classList.add(s.slidePrevClass)}e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r)return o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")),void(t.params.loop&&t.virtual&&t.params.virtual.enabled&&(t.realIndex=c(d)));let p;p=t.virtual&&i.virtual.enabled&&i.loop?c(d):t.slides[d]?parseInt(t.slides[d].getAttribute("data-swiper-slide-index")||d,10):d,Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:p,previousIndex:r,activeIndex:d}),t.initialized&&$(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==p&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)}));let r,n=!1;if(i)for(let e=0;eo?o:a&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(m?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return u({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e&&(e=parseInt(e,10));const i=this;let r=e;return i.params.loop&&(i.virtual&&i.params.virtual.enabled?r+=i.virtual.slidesBefore:r=i.getSlideIndexByData(r)),i.slideTo(r,t,s,a)},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{enabled:i,params:r,animating:n}=a;if(!i)return a;let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)})),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o)return a;const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame((()=>{a.slideTo(f,e,t,s)})),!0):a.slideTo(f,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const l=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(h(s,`${l}[data-swiper-slide-index="${i}"]`)[0]),n((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(h(s,`${l}[data-swiper-slide-index="${i}"]`)[0]),n((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}},G={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;!s.loop||t.virtual&&t.params.virtual.enabled||(h(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})),t.loopFix({slideRealIndex:e,direction:s.centeredSlides?void 0:"next"}))},loopFix:function(e){let{slideRealIndex:t,slideTo:s=!0,direction:a,setTranslate:i,activeSlideIndex:r,byController:n,byMousewheel:l}=void 0===e?{}:e;const o=this;if(!o.params.loop)return;o.emit("beforeLoopFix");const{slides:d,allowSlidePrev:c,allowSlideNext:p,slidesEl:u,params:m}=o;if(o.allowSlidePrev=!0,o.allowSlideNext=!0,o.virtual&&m.virtual.enabled)return s&&(m.centeredSlides||0!==o.snapIndex?m.centeredSlides&&o.snapIndexe.classList.contains(m.slideActiveClass)))[0]):w=r;const b="next"===a||!a,y="prev"===a||!a;let E=0,x=0;if(ro.slides.length-2*f){x=Math.max(r-(o.slides.length-2*f),m.slidesPerGroup);for(let e=0;e{o.slides[e].swiperLoopMoveDOM=!0,u.prepend(o.slides[e]),o.slides[e].swiperLoopMoveDOM=!1})),b&&v.forEach((e=>{o.slides[e].swiperLoopMoveDOM=!0,u.append(o.slides[e]),o.slides[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView&&o.updateSlides(),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(g.length>0&&y)if(void 0===t){const e=o.slidesGrid[w],t=o.slidesGrid[w+E]-e;l?o.setTranslate(o.translate-t):(o.slideTo(w+E,0,!1,!0),i&&(o.touches[o.isHorizontal()?"startX":"startY"]+=t,o.touchEventsData.currentTranslate=o.translate))}else i&&(o.slideToLoop(t,0,!1,!0),o.touchEventsData.currentTranslate=o.translate);else if(v.length>0&&b)if(void 0===t){const e=o.slidesGrid[w],t=o.slidesGrid[w-x]-e;l?o.setTranslate(o.translate-t):(o.slideTo(w-x,0,!1,!0),i&&(o.touches[o.isHorizontal()?"startX":"startY"]+=t,o.touchEventsData.currentTranslate=o.translate))}else o.slideToLoop(t,0,!1,!0);if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function H(e){const t=this,s=a(),i=r(),n=t.touchEventsData;n.evCache.push(e);const{params:o,touches:d,enabled:c}=t;if(!c)return;if(!o.simulateTouch&&"mouse"===e.pointerType)return;if(t.animating&&o.preventInteractionOnTransition)return;!t.animating&&o.cssMode&&o.loop&&t.loopFix();let p=e;p.originalEvent&&(p=p.originalEvent);let u=p.target;if("wrapper"===o.touchEventsTarget&&!t.wrapperEl.contains(u))return;if("which"in p&&3===p.which)return;if("button"in p&&p.button>0)return;if(n.isTouched&&n.isMoved)return;const m=!!o.noSwipingClass&&""!==o.noSwipingClass,h=e.composedPath?e.composedPath():e.path;m&&p.target&&p.target.shadowRoot&&h&&(u=h[0]);const f=o.noSwipingSelector?o.noSwipingSelector:`.${o.noSwipingClass}`,g=!(!p.target||!p.target.shadowRoot);if(o.noSwiping&&(g?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(f,u):u.closest(f)))return void(t.allowClick=!0);if(o.swipeHandler&&!u.closest(o.swipeHandler))return;d.currentX=p.pageX,d.currentY=p.pageY;const v=d.currentX,w=d.currentY,b=o.edgeSwipeDetection||o.iOSEdgeSwipeDetection,y=o.edgeSwipeThreshold||o.iOSEdgeSwipeThreshold;if(b&&(v<=y||v>=i.innerWidth-y)){if("prevent"!==b)return;e.preventDefault()}Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=w,n.touchStartTime=l(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,o.threshold>0&&(n.allowThresholdMove=!1);let E=!0;u.matches(n.focusableElements)&&(E=!1,"SELECT"===u.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==u&&s.activeElement.blur();const x=E&&t.allowTouchMove&&o.touchStartPreventDefault;!o.touchStartForcePreventDefault&&!x||u.isContentEditable||p.preventDefault(),o.freeMode&&o.freeMode.enabled&&t.freeMode&&t.animating&&!o.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",p)}function X(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:o,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));const p=i.evCache.findIndex((e=>e.pointerId===c.pointerId));p>=0&&(i.evCache[p]=c);const u=i.evCache.length>1?i.evCache[0]:c,m=u.pageX,h=u.pageY;if(c.preventedByNestedSwiper)return n.startX=m,void(n.startY=h);if(!s.allowTouchMove)return c.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:m,startY:h,prevX:s.touches.currentX,prevY:s.touches.currentY,currentX:m,currentY:h}),i.touchStartTime=l()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(hn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(mn.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);if(i.allowTouchCallbacks&&s.emit("touchMove",c),c.targetTouches&&c.targetTouches.length>1)return;n.currentX=m,n.currentY=h;const f=n.currentX-n.startX,g=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+g**2)=25&&(e=180*Math.atan2(Math.abs(g),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",c),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||s.zoom&&s.params.zoom&&s.params.zoom.enabled&&i.evCache.length>1)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation();let v=s.isHorizontal()?f:g,w=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(v=Math.abs(v)*(o?1:-1),w=Math.abs(w)*(o?1:-1)),n.diff=v,v*=r.touchRatio,o&&(v=-v,w=-w);const b=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=w>0?"prev":"next";const y=s.params.loop&&!r.cssMode,E="next"===s.swipeDirection&&s.allowSlideNext||"prev"===s.swipeDirection&&s.allowSlidePrev;if(!i.isMoved){if(y&&E&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}let x;i.isMoved&&b!==s.touchesDirection&&y&&E&&Math.abs(v)>=1&&(s.loopFix({direction:s.swipeDirection,setTranslate:!0}),x=!0),s.emit("sliderMove",c),i.isMoved=!0,i.currentTranslate=v+i.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),v>0?(y&&E&&!x&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.size/2:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**T))):v<0&&(y&&E&&!x&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.size/2:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(v)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function B(e){const t=this,s=t.touchEventsData,a=s.evCache.findIndex((t=>t.pointerId===e.pointerId));if(a>=0&&s.evCache.splice(a,1),["pointercancel","pointerout","pointerleave","contextmenu"].includes(e.type)&&(!["pointercancel","contextmenu"].includes(e.type)||!t.browser.isSafari&&!t.browser.isWebView))return;const{params:i,touches:r,rtlTranslate:o,slidesGrid:d,enabled:c}=t;if(!c)return;if(!i.simulateTouch&&"mouse"===e.pointerType)return;let p=e;if(p.originalEvent&&(p=p.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",p),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&i.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);i.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=l(),m=u-s.touchStartTime;if(t.allowClick){const e=p.path||p.composedPath&&p.composedPath();t.updateClickedSlide(e&&e[0]||p.target,e),t.emit("tap click",p),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",p)}if(s.lastClickTime=l(),n((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===r.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=i.followFinger?o?t.translate:-t.translate:-s.currentTranslate,i.cssMode)return;if(i.freeMode&&i.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let f=0,g=t.slidesSizesGrid[0];for(let e=0;e=d[e]&&h=d[e]&&(f=e,g=d[d.length-1]-d[d.length-2])}let v=null,w=null;i.rewind&&(t.isBeginning?w=i.virtual&&i.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const b=(h-d[f])/g,y=fi.longSwipesMs){if(!i.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(b>=i.longSwipesRatio?t.slideTo(i.rewind&&t.isEnd?v:f+y):t.slideTo(f)),"prev"===t.swipeDirection&&(b>1-i.longSwipesRatio?t.slideTo(f+y):null!==w&&b<0&&Math.abs(b)>i.longSwipesRatio?t.slideTo(w):t.slideTo(f))}else{if(!i.shortSwipes)return void t.slideTo(t.activeIndex);!t.navigation||p.target!==t.navigation.nextEl&&p.target!==t.navigation.prevEl?("next"===t.swipeDirection&&t.slideTo(null!==v?v:f+y),"prev"===t.swipeDirection&&t.slideTo(null!==w?w:f)):p.target===t.navigation.nextEl?t.slideTo(f+y):t.slideTo(f)}}function Y(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function N(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function R(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function q(e){const t=this;A(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}let V=!1;function F(){}const _=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",Y,!0):e[c]("observerUpdate",Y,!0),r[d]("load",e.onLoad,{capture:!0})},j=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var W={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopedSlides:null,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function U(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const K={eventsEmitter:L,update:I,translate:k,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),O({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),O({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:D,loop:G,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,t=a(),{params:s}=e;e.onTouchStart=H.bind(e),e.onTouchMove=X.bind(e),e.onTouchEnd=B.bind(e),s.cssMode&&(e.onScroll=R.bind(e)),e.onClick=N.bind(e),e.onLoad=q.bind(e),V||(t.addEventListener("touchstart",F),V=!0),_(e,"on")},detachEvents:function(){_(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=j(e,a),d=j(e,l),p=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const u=l.direction&&l.direction!==a.direction,m=a.loop&&(l.slidesPerView!==a.slidesPerView||u),h=a.loop;u&&s&&e.changeDirection(),c(e.params,l);const f=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!f?e.disable():!p&&f&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!h&&g?(e.loopCreate(t),e.updateSlides()):h&&!g&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},Z={};class Q{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=c({},t,{el:s});e.push(new Q(a))})),e}const l=this;l.__swiper__=!0,l.support=M(),l.device=C({userAgent:t.userAgent}),l.browser=P(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:U(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=c({},W,o);return l.params=c({},d,Z,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,evCache:[]},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=w(h(t,`.${s.slideClass}, swiper-slide`)[0]);return w(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?a[l].swiperSlideSize:0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1)i[l]-i[e]{t.complete&&A(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&"SWIPER-CONTAINER"===s.parentNode.host.nodeName&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=s&&s.shadowRoot&&s.shadowRoot.querySelector?s.shadowRoot.querySelector(a()):h(s,a())[0];return!i&&t.params.createElements&&(i=f("div",t.params.wrapperClass),s.append(i),h(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?A(t,e):e.addEventListener("load",(e=>{A(t,e.target)}))})),$(t),t.initialized=!0,$(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttribute("style"),r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(Z,e)}static get extendedDefaults(){return Z}static get defaults(){return W}static installModule(e){Q.prototype.__modules__||(Q.prototype.__modules__=[]);const t=Q.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Q.installModule(e))),Q):(Q.installModule(e),Q)}}function J(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=h(e.el,`.${a[i]}`)[0];r||(r=f("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function ee(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function te(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function le(e,t){const s=m(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function oe(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>e.parentElement?e.parentElement:t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0])(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{y(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function de(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=m(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=f("div",a.split(" ")),i.append(r)),r}Object.keys(K).forEach((e=>{Object.keys(K[e]).forEach((t=>{Q.prototype[t]=K[e][t]}))})),Q.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=b(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ce=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?f("swiper-slide"):f("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i,loop:r}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:c,to:p,slides:u,slidesGrid:m,offset:f}=s.virtual;s.params.cssMode||s.updateActiveIndex();const g=s.activeIndex||0;let v,w,b;v=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(w=Math.floor(t/2)+a+o,b=Math.floor(t/2)+a+l):(w=t+(a-1)+o,b=(r?t:a)+l);let y=g-b,E=g+w;r||(y=Math.max(y,0),E=Math.min(E,u.length-1));let x=(s.slidesGrid[y]||0)-(s.slidesGrid[0]||0);function S(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(r&&g>=b?(y-=b,i||(x+=s.slidesGrid[0])):r&&g{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:y,to:E,slides:function(){const e=[];for(let t=y;t<=E;t+=1)e.push(u[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?S():n("virtualUpdate"));const T=[],M=[],C=e=>{let t=e;return e<0?t=u.length+e:t>=u.length&&(t-=u.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=c;e<=p;e+=1)if(eE){const t=C(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const P=r?-u.length:0,L=r?2*u.length:u.length;for(let t=P;t=y&&t<=E){const s=C(t);void 0===p||e?M.push(s):(t>p&&M.push(s),t{s.slidesEl.append(d(u[e],e))})),r)for(let e=T.length-1;e>=0;e-=1){const t=T[e];s.slidesEl.prepend(d(u[t],t))}else T.sort(((e,t)=>t-e)),T.forEach((e=>{s.slidesEl.prepend(d(u[e],e))}));h(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),S()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,c()})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&p(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[a]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[a],1),e[a]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===b(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=g(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const o=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=l();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&l()-p<60)&&(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),p=(new o.Date).getTime(),1))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let o=t.el;"container"!==t.params.mousewheel.eventsTarget&&(o=document.querySelector(t.params.mousewheel.eventsTarget));const p=o&&o.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:l(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time=t.minTranslate()&&(l=t.minTranslate()),l<=t.maxTranslate()&&(l=t.maxTranslate()),t.setTransition(0),t.setTranslate(l),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=n((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=n((()=>{c=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(l===t.minTranslate()||l===t.maxTranslate()))return!0}}else{const s={time:l(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null};const r=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function n(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.el.querySelectorAll(e).length&&(s=t.el.querySelector(e))),e&&!s?e:s)}function l(e,s){const a=t.params.navigation;(e=r(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function o(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return l(s,!1),void l(e,!1);l(s,t.isBeginning&&!t.params.rewind),l(e,t.isEnd&&!t.params.rewind)}function d(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=J(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=n(e.nextEl),a=n(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=r(s),a=r(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?c:d),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function u(){let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?c:d),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}a("init",(()=>{!1===t.params.navigation.enabled?m():(p(),o())})),a("toEdge fromEdge lock unlock",(()=>{o()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s),t.enabled?o():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:n}=t.navigation;a=r(a),n=r(n);const l=s.target;if(t.params.navigation.hideOnClick&&!n.includes(l)&&!a.includes(l)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===l||t.pagination.el.contains(l)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):n.length&&(e=n[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...n].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const m=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),u()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),p(),o()},disable:m,update:o,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;const o=e=>(Array.isArray(e)?e:[e]).filter((e=>!!e));function d(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function p(e){const s=e.target.closest(ee(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=w(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;const e=t.realIndex,s=t.getSlideIndexByData(a),i=t.getSlideIndexByData(t.realIndex),r=a=>{const i=t.activeIndex;t.loopFix({direction:a,activeSlideIndex:s,slideTo:!1}),i===t.activeIndex&&t.slideToLoop(e,0,!1,!0)};if(s>t.slides.length-t.loopedSlides)r(s>i?"next":"prev");else if(t.params.centeredSlides){const e="auto"===t.params.slidesPerView?t.slidesPerViewDynamic():Math.ceil(parseFloat(t.params.slidesPerView,10));s1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,d,u;if(s.dynamicBullets&&(n=E(i[0],t.isHorizontal()?"width":"height",!0),p.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),d=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(d+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),p.length>1)i.forEach((e=>{const i=w(e);i===a?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(i>=o&&i<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===o&&c(e,"prev"),i===d&&c(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&i.forEach(((e,t)=>{e.setAttribute("part",t===a?"bullet-active":"bullet")})),s.dynamicBullets){const e=i[o],t=i[d];for(let e=o;e<=d;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));c(e,"prev"),c(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}p.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ee(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(ee(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/m;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(ee(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,m),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=t.params.pagination;if(d())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length;let a=t.pagination.el;a=o(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ee(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function h(){t.params.pagination=J(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>b(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=o(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",p),t.enabled||s.classList.add(e.lockClass)})))}function f(){const e=t.params.pagination;if(d())return;let s=t.pagination.el;s&&(s=o(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",p))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=o(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?g():(h(),m(),u())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&u()})),a("snapIndexChange",(()=>{u()})),a("snapGridLengthChange",(()=>{m(),u()})),a("destroy",(()=>{f()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{u()})),a("click",((e,s)=>{const a=s.target,r=o(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const g=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),f()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),h(),m(),u()},disable:g,render:m,update:u,init:h,destroy:f})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const l=a();let o,d,c,p,u=!1,m=null,h=null;function v(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=d,o=(c-d)*n;s?(o=-o,o>0?(l=d-o,o=0):-o+d>c&&(l=c+o)):o<0?(l=d+o,o=0):o+d>c&&(l=c-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(m),i.style.opacity=1,m=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function w(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",c=t.isHorizontal()?a.offsetWidth:a.offsetHeight,p=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),d="auto"===t.params.scrollbar.dragSize?c*p:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${d}px`:s.style.height=`${d}px`,a.style.display=p>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function b(e){return t.isHorizontal()?e.clientX:e.clientY}function y(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(b(e)-g(i)[t.isHorizontal()?"left":"top"]-(null!==o?o:d/2))/(c-d),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function E(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;u=!0,o=e.target===l?b(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",y(e),clearTimeout(h),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function x(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;u&&(e.preventDefault?e.preventDefault():e.returnValue=!1,y(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function S(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:l}=a;u&&(u=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(h),h=n((()=>{l.style.opacity=0,l.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function T(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},o=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",E,n),l[d]("pointermove",x,n),l[d]("pointerup",S,o)}function M(){const{scrollbar:e,el:s}=t;t.params.scrollbar=J(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;"string"==typeof a.el&&t.isElement&&(i=t.el.querySelector(a.el)),i||"string"!=typeof a.el?i||(i=a.el):i=l.querySelectorAll(a.el),t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(`.${t.params.scrollbar.dragClass}`),r||(r=f("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&T("on"),i&&i.classList[t.enabled?"remove":"add"](t.params.scrollbar.lockClass)}function C(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&T("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?P():(M(),w(),v())})),i("update resize observerUpdate lock unlock",(()=>{w()})),i("setTranslate",(()=>{v()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](t.params.scrollbar.lockClass)})),i("destroy",(()=>{C()}));const P=()=>{t.el.classList.add(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.el&&t.scrollbar.el.classList.add(t.params.scrollbar.scrollbarDisabledClass),C()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.el&&t.scrollbar.el.classList.remove(t.params.scrollbar.scrollbarDisabledClass),M(),w(),v()},disable:P,updateSize:w,setTranslate:v,init:M,destroy:C})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;null!=o&&(p+=` scale(${o-(o-1)*(1-Math.abs(s))})`),c&&null!=c&&(p+=` rotate(${c*s*-1}deg)`),e.style.transform=p},n=()=>{const{el:e,slides:s,progress:a,snapGrid:n,isElement:l}=t,o=h(e,i);t.isElement&&o.push(...h(t.hostEl,i)),o.forEach((e=>{r(e,a)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&n()})),a("setTranslate",(()=>{t.params.parallax.enabled&&n()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:a}=t,r=[...s.querySelectorAll(i)];t.isElement&&r.push(...a.querySelectorAll(i)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,d,c=1,p=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},f={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},v={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let w=1;function y(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function E(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function x(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!E(e))return;const s=t.params.zoom;if(l=!1,d=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=y(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?b(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=m.imageWrapEl.getAttribute("data-swiper-zoom")||s.maxRatio}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function S(e){if(!E(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(d=!0,m.scaleMove=y(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&d&&(l=!1,d=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function M(e){if(!E(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!f.isTouched||!m.slideEl)return;f.isMoved||(f.width=m.imageEl.offsetWidth,f.height=m.imageEl.offsetHeight,f.startX=o(m.imageWrapEl,"x")||0,f.startY=o(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=f.width*s.scale,i=f.height*s.scale;if(a0?u[0].pageX:e.pageX,f.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY,Math.max(Math.abs(f.touchesCurrent.x-f.touchesStart.x),Math.abs(f.touchesCurrent.y-f.touchesStart.y))>5&&(t.allowClick=!1),!f.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(f.minX)===Math.floor(f.startX)&&f.touchesCurrent.xf.touchesStart.x))return void(f.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(f.minY)===Math.floor(f.startY)&&f.touchesCurrent.yf.touchesStart.y))return void(f.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),f.isMoved=!0;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX+r*(f.width-2*n),f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY+r*(f.height-2*l),f.currentXf.maxX&&(f.currentX=f.maxX-1+(f.currentX-f.maxX+1)**.8),f.currentYf.maxY&&(f.currentY=f.maxY-1+(f.currentY-f.maxY+1)**.8),v.prevPositionX||(v.prevPositionX=f.touchesCurrent.x),v.prevPositionY||(v.prevPositionY=f.touchesCurrent.y),v.prevTime||(v.prevTime=Date.now()),v.x=(f.touchesCurrent.x-v.prevPositionX)/(Date.now()-v.prevTime)/2,v.y=(f.touchesCurrent.y-v.prevPositionY)/(Date.now()-v.prevTime)/2,Math.abs(f.touchesCurrent.x-v.prevPositionX)<2&&(v.x=0),Math.abs(f.touchesCurrent.y-v.prevPositionY)<2&&(v.y=0),v.prevPositionX=f.touchesCurrent.x,v.prevPositionY=f.touchesCurrent.y,v.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${f.currentX}px, ${f.currentY}px,0)`}function C(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function P(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=h(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?b(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,v,w,y,E,x,S,T,M,C,P,L;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===f.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=f.touchesStart.x,r=f.touchesStart.y);const A="number"==typeof e?e:null;1===c&&A&&(i=void 0,r=void 0),s.scale=A||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,c=A||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,!e||1===c&&A?(u=0,v=0):(P=m.slideEl.offsetWidth,L=m.slideEl.offsetHeight,l=g(m.slideEl).left+n.scrollX,o=g(m.slideEl).top+n.scrollY,d=l+P/2-i,p=o+L/2-r,w=m.imageEl.offsetWidth,y=m.imageEl.offsetHeight,E=w*s.scale,x=y*s.scale,S=Math.min(P/2-E/2,0),T=Math.min(L/2-x/2,0),M=-S,C=-T,u=d*s.scale,v=p*s.scale,uM&&(u=M),vC&&(v=C)),A&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${v}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function L(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=h(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?b(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function A(e){const s=t.zoom;s.scale&&1!==s.scale?L():P(e)}function z(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function $(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=z();t.wrapperEl.addEventListener("pointerdown",x,s),t.wrapperEl.addEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,T,s)})),t.wrapperEl.addEventListener("pointermove",M,a)}function I(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=z();t.wrapperEl.removeEventListener("pointerdown",x,s),t.wrapperEl.removeEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,T,s)})),t.wrapperEl.removeEventListener("pointermove",M,a)}Object.defineProperty(t.zoom,"scale",{get:()=>w,set(e){if(w!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}w=e}}),a("init",(()=>{t.params.zoom.enabled&&$()})),a("destroy",(()=>{I()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(f.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),f.isTouched=!0;const a=u.length>0?u[0]:e;f.touchesStart.x=a.pageX,f.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!f.isTouched||!f.isMoved)return f.isTouched=!1,void(f.isMoved=!1);f.isTouched=!1,f.isMoved=!1;let s=300,a=300;const i=v.x*s,r=f.currentX+i,n=v.y*a,l=f.currentY+n;0!==v.x&&(s=Math.abs((r-f.currentX)/v.x)),0!==v.y&&(a=Math.abs((l-f.currentY)/v.y));const o=Math.max(s,a);f.currentX=r,f.currentY=l;const d=f.width*e.scale,c=f.height*e.scale;f.minX=Math.min(m.slideWidth/2-d/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-c/2,0),f.maxY=-f.minY,f.currentX=Math.max(Math.min(f.currentX,f.maxX),f.minX),f.currentY=Math.max(Math.min(f.currentY,f.maxY),f.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${f.currentX}px, ${f.currentY}px,0)`}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&A(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:$,disable:I,in:P,out:L,toggle:A})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){const e=document.querySelector(t.params.controller.control);if(e&&e.swiper)t.controller.control=e.swiper;else if(e){const s=a=>{t.controller.control=a.detail[0],t.update(),e.removeEventListener("init",s)};e.addEventListener("init",s)}}else t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(function(e){t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),y(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r(Array.isArray(e)?e:[e]).filter((e=>!!e));function l(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function o(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function d(e,t){(e=n(e)).forEach((e=>{e.setAttribute("role",t)}))}function c(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function p(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function u(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function m(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function h(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;t.pagination&&t.pagination.el&&(a===t.pagination.el||t.pagination.el.contains(e.target))&&!e.target.matches(ee(t.params.pagination.bulletClass))||(t.navigation&&t.navigation.nextEl&&a===t.navigation.nextEl&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.prevEl&&a===t.navigation.prevEl&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&a.matches(ee(t.params.pagination.bulletClass))&&a.click())}function g(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function v(){return g()&&t.params.pagination.clickable}const b=(e,t,s)=>{l(e),"BUTTON"!==e.tagName&&(d(e,"button"),e.addEventListener("keydown",h)),p(e,s),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},y=()=>{t.a11y.clicked=!0},E=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},x=e=>{if(t.a11y.clicked)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},S=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&d(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;p(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))};a("beforeInit",(()=>{i=f("span",t.params.a11y.notificationClass),i.setAttribute("aria-live","assertive"),i.setAttribute("aria-atomic","true")})),a("afterInit",(()=>{t.params.a11y.enabled&&(()=>{const e=t.params.a11y;t.el.append(i);const s=t.el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.wrapperEl,r=e.id||a.getAttribute("id")||`swiper-wrapper-${l=16,void 0===l&&(l=16),"x".repeat(l).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var l;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,n(a).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(a,o),S();let{nextEl:u,prevEl:m}=t.navigation?t.navigation:{};u=n(u),m=n(m),u&&u.forEach((t=>b(t,r,e.nextSlideMessage))),m&&m.forEach((t=>b(t,r,e.prevSlideMessage))),v()&&(Array.isArray(t.pagination.el)?t.pagination.el:[t.pagination.el]).forEach((e=>{e.addEventListener("keydown",h)})),t.el.addEventListener("focus",x,!0),t.el.addEventListener("pointerdown",y,!0),t.el.addEventListener("pointerup",E,!0)})()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&S()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(u(s),o(s)):(m(s),l(s))),e&&(t.isEnd?(u(e),o(e)):(m(e),l(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;g()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(l(s),t.params.pagination.renderBullet||(d(s,"button"),p(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,w(s)+1)))),s.matches(ee(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){i&&i.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=n(e),s=n(s),e&&e.forEach((e=>e.removeEventListener("keydown",h))),s&&s.forEach((e=>e.removeEventListener("keydown",h))),v()&&(Array.isArray(t.pagination.el)?t.pagination.el:[t.pagination.el]).forEach((e=>{e.removeEventListener("keydown",h)})),t.el.removeEventListener("focus",x,!0),t.el.removeEventListener("pointerdown",y,!0),t.el.removeEventListener("pointerup",E,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),n.key||n.value?(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p)):t.params.history.replaceState||e.addEventListener("popstate",p)}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];return e?parseInt(e.getAttribute("data-swiper-slide-index"),10):0}return t.getSlideIndex(h(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(o.location.hash=s||"",i("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g=o&&o.autoplay?o.autoplay.delay:3e3,v=o&&o.autoplay?o.autoplay.delay:3e3,w=(new Date).getTime;function b(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",b),M())}const y=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(v=d,c=!1);const e=i.autoplay.paused?d:w+v-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/g),s=requestAnimationFrame((()=>{y()}))},E=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),y();let a=void 0===e?i.params.autoplay.delay:e;g=i.params.autoplay.delay,v=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],e)return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,g=r,v=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(w=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},x=()=>{i.autoplay.running=!0,E(),l("autoplayStart")},S=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},T=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",b):M()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-w),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},M=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(w=(new Date).getTime(),f?(f=!1,E(d)):E(),i.autoplay.paused=!1,l("autoplayResume"))},C=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,T(!0)),"visible"===e.visibilityState&&M()},P=e=>{"mouse"===e.pointerType&&(f=!0,i.animating||i.autoplay.paused||T(!0))},L=e=>{"mouse"===e.pointerType&&i.autoplay.paused&&M()};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",P),i.el.addEventListener("pointerleave",L)),a().addEventListener("visibilitychange",C),w=(new Date).getTime(),x())})),n("destroy",(()=>{i.el.removeEventListener("pointerenter",P),i.el.removeEventListener("pointerleave",L),a().removeEventListener("visibilitychange",C),i.autoplay.running&&S()})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?T(!0,!0):S())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?S():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,T(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&M(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:x,stop:S,pause:T,resume:M})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(d(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function c(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),c(!0);else if(a){const s=i=>{e.swiper=i.detail[0],a.removeEventListener("init",s),o(),c(!0),e.swiper.update(),t.update()};a.addEventListener("init",s)}return a},r=()=>{t.destroyed||i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),c(!0)})),i("slideChange update resize observerUpdate",(()=>{c()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:c})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:l()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:o,snapGrid:d,touchEventsData:c}=t,p=l()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||l()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;o&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(pt.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-p){e=t;break}p=Math.abs(d[e]-p){t.loopFix()})),0!==t.velocity){if(e=o?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((o?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),y(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,y(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,i,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{i=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;i&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,r.emitContainerClasses()):!i&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),i=s})),r.grid={initSlides:e=>{const{slidesPerView:i}=r.params,{rows:n,fill:l}=r.params.grid;a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==i&&"row"===l&&(t=Math.max(t,i*n)),s=t/n},updateSlide:(e,i,n,l)=>{const{slidesPerGroup:d}=r.params,c=o(),{rows:p,fill:u}=r.params.grid;let m,h,f;if("row"===u&&d>1){const s=Math.floor(e/(d*p)),a=e-p*d*s,r=0===s?d:Math.min(Math.ceil((n-s*p*d)/p),d);f=Math.floor(a/r),h=a-f*r+s*d,m=h+f*t/p,i.style.order=m}else"column"===u?(h=Math.floor(e/p),f=e-h*p,(h>a||h===a&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);i.row=f,i.column=h,i.style[l("margin-top")]=0!==f?c&&`${c}px`:""},updateWrapperSize:(e,s,a)=>{const{centeredSlides:i,roundLengths:n}=r.params,l=o(),{rows:d}=r.params.grid;if(r.virtualSize=(e+l)*t,r.virtualSize=Math.ceil(r.virtualSize/d)-l,r.wrapperEl.style[a("width")]=`${r.virtualSize+l}px`,i){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>m(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),oe({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=f("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=f("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};ne({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=t.params.cubeEffect,p=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let m,h=0;c.shadow&&(p?(m=t.wrapperEl.querySelector(".swiper-cube-shadow"),m||(m=f("div","swiper-cube-shadow"),t.wrapperEl.append(m)),m.style.height=`${r}px`):(m=e.querySelector(".swiper-cube-shadow"),m||(m=f("div","swiper-cube-shadow"),e.append(m))));for(let e=0;e-1&&(h=90*s+90*d,l&&(h=90*-s-90*d)),t.style.transform=v,c.slideShadows&&i(t,d,p)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(p)m.style.transform=`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,i=c.shadowOffset;m.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${t.isHorizontal()?0:h}deg) rotateY(${t.isHorizontal()?-h:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=de("flip",e,t.isHorizontal()?"left":"top")),i||(i=de("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};ne({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r{const s=t.slides.map((e=>m(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),oe({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),ne({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,t=a.length;e0?p:0),s&&(s.style.opacity=-p>0?-p:0)}}},setTransition:e=>{t.slides.map((e=>m(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;ne({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(f=r.prev,h=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),m.forEach(((e,t)=>{m[t]=f.rotate[t]*Math.abs(d*n)})),a.style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,y=`translate3d(${g}) ${v} ${w}`;if(h&&f.shadow||!h){let e=a.querySelector(".swiper-slide-shadow");if(!e&&f.shadow&&(e=de("creative",a)),e){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=le(0,a);E.style.transform=y,E.style.opacity=b,f.origin&&(E.style.transformOrigin=f.origin)}},setTransition:e=>{const s=t.slides.map((e=>m(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),oe({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),ne({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:a}=t,i=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=a?-t.translate:t.translate;for(let o=0;o0&&p<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||E){const e=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=de("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+e.length,le(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>m(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),oe({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return Q.use(ce),Q}(),swiper=new Swiper(".swiper",{grabCursor:!0,mousewheel:{invert:!0},scrollbar:{el:".swiper-scrollbar",draggable:!0},slidesPerView:1,spaceBetween:10,breakpoints:{900:{slidesPerView:2,spaceBetween:20},1200:{slidesPerView:3,spaceBetween:30}}});const sites=document.querySelectorAll(".site");sites.forEach((e=>{e.addEventListener("click",(()=>{const t=e.dataset.url;window.open(t,"_blank")}))})); \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index 49945fc..9102397 100644 --- a/templates/index.html +++ b/templates/index.html @@ -52,6 +52,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + @@ -126,43 +127,68 @@ Check them out here!

-
-
-
-

My WebSites

+
+

My Websites

+
+
+
+
+
+

Nathan 3D Printing

+

Offering 3D Printing and CAD modelling services to the Canberra region

+
+
+
+
+
+
+

Woodburn Registry

+

An easy to use DNS provider and domain reselling platform

+
+
+
+
+
+
+

HNSAU

+

The group for Handshake enthusiasts in Australia

+
+
+
+
+
+
+

Git Server

+

Selfhosted Git server to host my repos with custom hosted CI/CD 

+
+
+
+
+
+
+

HNSHosting

+

Simple Wordpress hosting for Handshake domains with builtin SSL using DANE

+
+
+
+
+
+
+

ShakeCities

+

A single page website creator where each user's page on their free HNS domain

+
+
+
+
+
+
+

LINKR/

+

A free link shortener with a Handshake TLD and using DNS for authentication

+
+
+
-
-
-
Nathan 3D Printing Logo -

Nathan 3D Printing Service
Cheap 3D printing and CAD modeling

Visit Nathan 3D Printing Service -
-
HNSAU Logo -

Handshake AU
Australian Handshake web3 group

Visit HNSAU -
-
Woodburn Logo -

Woodburn Registry
Selling Domains on some Handshake TLDs

Visit Woodburn Registry -
-
-
-
Nathan 3D Printing Logo
-
HNSAU Logo
-
Woodburn Logo
-
-
-
-

Nathan 3D Printing Service
Cheap 3D printing and CAD modeling

-
-
-

Handshake AU
Australian Handshake web3 group

-
-
-

Woodburn Registry
Selling Domains on some Handshake TLDs

-
-
-
@@ -220,7 +246,7 @@ Check them out here!

This site is also available on
Handshake at https://nathan.woodburn/
Tor at http://wdbrncwefot4hd7bdrz5rzb74mefay7zvrjn2vmkpdm44l7fwnih5ryd.onion/

- +
@@ -253,6 +279,7 @@ Check them out here! + \ No newline at end of file diff --git a/templates/podcast.html b/templates/podcast.html index f51aaee..8e0d57c 100644 --- a/templates/podcast.html +++ b/templates/podcast.html @@ -101,7 +101,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
- +
diff --git a/templates/projects.html b/templates/projects.html index b2fcedc..162ef48 100644 --- a/templates/projects.html +++ b/templates/projects.html @@ -91,7 +91,7 @@ height="0" width="0" style="display:none;visibility:hidden">

ShakeCities

-

A single page website creator with each user's page on their free HNS domain

More Info +

A single page website creator where each user's page on their free HNS domain

More Info

Woodburn Faucet

@@ -132,7 +132,7 @@ height="0" width="0" style="display:none;visibility:hidden">
- +
{{handshake_scripts | safe}} diff --git a/templates/resume.html b/templates/resume.html index 801eef5..285299d 100644 --- a/templates/resume.html +++ b/templates/resume.html @@ -157,7 +157,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= -

Copyright © 2023 Nathan.Woodburn/

+

Copyright © Nathan.Woodburn/ 2024

diff --git a/templates/servers.html b/templates/servers.html index b4fb0cf..04a0a13 100644 --- a/templates/servers.html +++ b/templates/servers.html @@ -308,7 +308,7 @@ height="0" width="0" style="display:none;visibility:hidden">
- +
{{handshake_scripts | safe}} From d67da4ad06c468d02e1808108ae334b9741bde05 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Wed, 20 Dec 2023 15:22:15 +1100 Subject: [PATCH 10/54] feat: Ad umami --- templates/about.html | 2 ++ templates/ascii.html | 2 ++ templates/gitpgp.html | 2 ++ templates/index.html | 2 ++ templates/link.html | 2 ++ templates/pgp.html | 2 ++ templates/podcast.html | 2 ++ templates/projects.html | 2 ++ templates/resume.html | 2 ++ templates/servers.html | 2 ++ 10 files changed, 20 insertions(+) diff --git a/templates/about.html b/templates/about.html index d6b68ed..92599f3 100644 --- a/templates/about.html +++ b/templates/about.html @@ -59,6 +59,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + {{handshake_scripts | safe}} diff --git a/templates/ascii.html b/templates/ascii.html index e066199..0561e24 100644 --- a/templates/ascii.html +++ b/templates/ascii.html @@ -56,6 +56,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + diff --git a/templates/gitpgp.html b/templates/gitpgp.html index ffd2cdc..783c9ca 100644 --- a/templates/gitpgp.html +++ b/templates/gitpgp.html @@ -56,6 +56,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + diff --git a/templates/index.html b/templates/index.html index 9102397..53ae57c 100644 --- a/templates/index.html +++ b/templates/index.html @@ -70,6 +70,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + diff --git a/templates/link.html b/templates/link.html index 64ac83b..c4c6dcc 100644 --- a/templates/link.html +++ b/templates/link.html @@ -60,6 +60,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + diff --git a/templates/pgp.html b/templates/pgp.html index 28302e3..a26a185 100644 --- a/templates/pgp.html +++ b/templates/pgp.html @@ -56,6 +56,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + -----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: https://keybase.io/download
Version: Keybase Go 6.0.1 (windows)
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
i0GVXA==
=W9Zx
-----END PGP PUBLIC KEY BLOCK-----
diff --git a/templates/podcast.html b/templates/podcast.html index 8e0d57c..d5150ea 100644 --- a/templates/podcast.html +++ b/templates/podcast.html @@ -57,6 +57,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + diff --git a/templates/projects.html b/templates/projects.html index 162ef48..bd55cfe 100644 --- a/templates/projects.html +++ b/templates/projects.html @@ -57,6 +57,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + diff --git a/templates/resume.html b/templates/resume.html index 285299d..3c01107 100644 --- a/templates/resume.html +++ b/templates/resume.html @@ -57,6 +57,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + diff --git a/templates/servers.html b/templates/servers.html index 04a0a13..ac4f9c8 100644 --- a/templates/servers.html +++ b/templates/servers.html @@ -57,6 +57,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= })(); + + From 9305442c4b60d9188d106e37b9ab140552434831 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Fri, 22 Dec 2023 15:07:24 +1100 Subject: [PATCH 11/54] feat: Add acme server for HNSDoH --- requirements.txt | 3 ++- server.py | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index f640785..3cd9925 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ flask python-dotenv gunicorn -requests \ No newline at end of file +requests +cloudflare \ No newline at end of file diff --git a/server.py b/server.py index 104d3e2..9a18a9c 100644 --- a/server.py +++ b/server.py @@ -2,6 +2,7 @@ from flask import Flask, make_response, redirect, request, jsonify, render_templ import os import dotenv import requests +import CloudFlare app = Flask(__name__) dotenv.load_dotenv() @@ -152,6 +153,39 @@ def getAddress(): return address +@app.route('/hnsdoh-acme', methods=['POST']) +def hnsdoh_acme(): + # Get the TXT record from the request + if not request.json: + return jsonify({'status': 'error', 'error': 'No JSON data provided'}) + if 'txt' not in request.json or 'auth' not in request.json: + return jsonify({'status': 'error', 'error': 'Missing required data'}) + + txt = request.json['txt'] + auth = request.json['auth'] + if auth != os.getenv('CF_AUTH'): + return jsonify({'status': 'error', 'error': 'Invalid auth'}) + + cf = CloudFlare.CloudFlare(token=os.getenv('CF_TOKEN')) + zone = cf.zones.get(params={'name': 'hnsdoh.com'}) + zone_id = zone[0]['id'] + existing_records = cf.zones.dns_records.get(zone_id, params={'type': 'TXT', 'name': '_acme-challenge.hnsdoh.com'}) + + # Delete existing TXT records + for record in existing_records: + print(record) + record_id = record['id'] + cf.zones.dns_records.delete(zone_id, record_id) + + + + + record = cf.zones.dns_records.post(zone_id, data={'type': 'TXT', 'name': '_acme-challenge', 'content': txt}) + print(record) + return jsonify({'status': 'success'}) + + + # 404 catch all @app.errorhandler(404) def not_found(e): From 7a9fb9e08bc3c05df25752e9c8ca88dd7f295157 Mon Sep 17 00:00:00 2001 From: Nathan Woodburn Date: Mon, 8 Jan 2024 02:30:13 +1100 Subject: [PATCH 12/54] feat: Add linkr and HNSDoH to projects --- templates/about.html | 4 ++-- templates/ascii.html | 4 ++-- templates/generator.html | 2 +- templates/gitpgp.html | 4 ++-- templates/index.html | 2 +- templates/link.html | 4 ++-- templates/pgp.html | 4 ++-- templates/podcast.html | 4 ++-- templates/projects.html | 16 +++++++++++++--- templates/resume.html | 4 ++-- templates/servers.html | 6 +++--- templates/sitemap.xml | 12 ++++++------ 12 files changed, 38 insertions(+), 28 deletions(-) diff --git a/templates/about.html b/templates/about.html index 92599f3..11c0326 100644 --- a/templates/about.html +++ b/templates/about.html @@ -13,8 +13,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= Nathan.Woodburn/ - - + + diff --git a/templates/ascii.html b/templates/ascii.html index 0561e24..511e06a 100644 --- a/templates/ascii.html +++ b/templates/ascii.html @@ -13,8 +13,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= Nathan.Woodburn/ - - + + diff --git a/templates/generator.html b/templates/generator.html index 1e2d4a5..b1abc38 100644 --- a/templates/generator.html +++ b/templates/generator.html @@ -22,7 +22,7 @@ - +

Password Generator

diff --git a/templates/gitpgp.html b/templates/gitpgp.html index 783c9ca..61f6866 100644 --- a/templates/gitpgp.html +++ b/templates/gitpgp.html @@ -13,8 +13,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= Nathan.Woodburn/ - - + + diff --git a/templates/index.html b/templates/index.html index 53ae57c..a9be75f 100644 --- a/templates/index.html +++ b/templates/index.html @@ -78,7 +78,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= {{handshake_scripts | safe}} -
+
+
+

Linkr

+

A shortlinks service on the Handshake domain Linkr/

More Info +
+
+

HNSDoh

+

A DNS server with support for Handshake domains using multiple upstream providers to provide as little downtime as possible.

More Info +
+

FireWallet

diff --git a/templates/resume.html b/templates/resume.html index 3c01107..338909a 100644 --- a/templates/resume.html +++ b/templates/resume.html @@ -13,8 +13,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= Nathan.Woodburn/ - - + + diff --git a/templates/servers.html b/templates/servers.html index ac4f9c8..bd0b021 100644 --- a/templates/servers.html +++ b/templates/servers.html @@ -13,8 +13,8 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= Servers | Nathan.Woodburn/ - - + + @@ -62,7 +62,7 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= -