::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::.::::::::::::::..::::::::::::::.::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-.-::::::::::::..::::::::::::-.-::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::-`-:::::::::::..:::::::::::-`-:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::-.-::::::::::..::::::::::-.-::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::-.-:::::::::..:::::::::-.-:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::—-:::::::.-:::::::—-::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::-.–:::::::::::::—-::::::—:::::—-::::::::::::::-.-::::::::::::::::::::
::::::::::::::::::::::::-…-:::::::::::—-::::—-::::—-:::::::::::-…-::::::::::::::::::::::
:::::::::::::::::::::::::::–.—::::::::–:-:::–:-:::-:–::::::::—.–:::::::::::::::::::::::::
::::::::::::::::::::::::::::::——-:::::–:–:-::-::-:–::::::——::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::——-:::–/—::—/–:::——-:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::—::—-./-.::.-/.—-::—::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::—::–.:—.:.–::—:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::———..-:“““–..———::::::::::::::::::::::::::::::::
::::::::::::::::::–.….….…——-:::::::.` ..:::::::——-.….….…–::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::-.–:`.“.`::-.-::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::—::–./.–./..-::—:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::—:—:–/-.::.-/–:—:—::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::——-:::–:—::—:–:::——-:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::–.—::::::–:.::-::-::-:–::::::—.–::::::::::::::::::::::::::::
:::::::::::::::::::::::::::-..–:::::::::–:-:::–:-:::-:–:::::::::–..-:::::::::::::::::::::::::
::::::::::::::::::::::::-..–:::::::::::—-::::—-::::—-:::::::::::–..-::::::::::::::::::::::
::::::::::::::::::::::—::::::::::::::—-::::::—:::::—-::::::::::::::—::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::—::::::::.-::::::::—::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::-.-:::::::::..:::::::::-.-:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::-.-::::::::::..::::::::::-.-::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::-`-:::::::::::..:::::::::::-`-:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-.:::::::::::::..:::::::::::::.-::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::.::::::::::::::..::::::::::::::-::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::