Problem:


Score : 600 points

Problem Statement

There is a grid of squares with H+1 horizontal rows and W vertical columns.

You will start at one of the squares in the top row and repeat moving one square right or down. However, for each integer i from 1 through H, you cannot move down from the A_i-th, (A_i + 1)-th, \ldots, B_i-th squares from the left in the i-th row from the top.

For each integer k from 1 through H, find the minimum number of moves needed to reach one of the squares in the (k+1)-th row from the top. (The starting square can be chosen individually for each case.) If, starting from any square in the top row, none of the squares in the (k+1)-th row can be reached, print -1 instead.

Constraints

1 \leq H,W \leq 2\times 10^5

1 \leq A_i \leq B_i \leq W

Input

Input is given from Standard Input in the following format:

H W
A_1 B_1
A_2 B_2
:
A_H B_H

Output

Print H lines. The i-th line should contain the answer for the case k=i.

Sample Input 1

4 4
2 4
1 1
2 3
2 4

Sample Output 1

1
3
6
-1

Let (i,j) denote the square at the i-th row from the top and j-th column from the left.

For k=1, we need one move such as (1,1) → (2,1).

For k=2, we need three moves such as (1,1) → (2,1) → (2,2) → (3,2).

For k=3, we need six moves such as (1,1) → (2,1) → (2,2) → (3,2) → (3,3) → (3,4) → (4,4).

For k=4, it is impossible to reach any square in the fifth row from the top.



Sample input:
4 4
2 4
1 1
2 3
2 4


Sample output:
1
3
6
-1

Submission status: Wrong Answer

Solution code:
# compiled by pythran
"""
#pythran export main2()
import numpy as np
i4 = np.int32
i8 = np.int64


def solve(a, b, H, W):
    ret = np.empty(H, i8)
    for i in range(H):
        ret[i] = -1
    dp0 = np.arange(W)
    dp = np.arange(W)
    arg0 = W - 1
    arg = 0
    for i in range(H):
        r1 = np.searchsorted(dp, a[i])
        r2 = np.searchsorted(dp, b[i])
        if b[i] == W:
            if r1 == 0:
                return ret
            else:
                dp0 = dp0[: r1]
                dp = dp[: r1]
        else:
            dp[r1:r2] = b[i]

        if arg0 > -1:
            if r1 <= arg0 < r2:
                for j in range(r1 - 1, -1, -1):
                    if dp[j] == dp0[j]:
                        arg0 = dp[j]
                        ret[i] = i + 1
                        break
                else:
                    arg0 = -1
                    arg = np.argmin(dp - dp0)
                    ret[i] = dp[arg] - dp0[arg] + i + 1
            else:
                ret[i] = i + 1
        else:
            if r1 <= arg < r2:
                arg = np.argmin(dp - dp0)
            ret[i] = dp[arg] - dp0[arg] + i + 1

        if i % 1000 == 999:
            m = 0
            prev = dp[0]
            for k in range(1, dp.shape[0]):
                if dp[k] > prev:
                    dp0[m] = dp0[k - 1]
                    dp[m] = prev
                    m += 1
                    prev = dp[k]
            else:
                dp0[m] = dp0[dp0.shape[0] - 1]
                dp[m] = prev
                m += 1
            dp0 = dp0[: m]
            dp = dp[: m]
            if arg0 > -1:
                for j in range(m - 1, -1, -1):
                    if dp[j] == dp0[j]:
                        arg0 = j
                        break
            else:
                arg = np.argmin(dp - dp0)
    return ret


def main(in_file):
    stdin = open(in_file)
    H, W = [int(x) for x in stdin.readline().split()]
    a = np.empty(H, i8)
    b = np.empty(H, i8)
    for i in range(H):
        a[i], b[i] = [int(x) for x in stdin.readline().split()]
    a -= 1
    ans = solve(a, b, H, W)
    p = '\n'.join([str(x) for x in ans])
    print(p)


def main2():
    main('/dev/stdin')
"""
import os, sys
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
if len(sys.argv) == 1:
    import subprocess
    if p == "":
        pymain = "./" + pymain
    subprocess.call(pymain)
else:
    import gzip, base64, stat
    gz = b'H4sIANRyT18C/+29C3wTVfY4PukzvDoBActDDVqwRSgN5dEAYkobmMEUurQoKhpKm9KubdNNJ1B8om1dYiiy31VEV118g48vqKyLqNDyaMEnICCKCiJiQilUcXkokt85995JZqYJFHa/3+/n//kbaO7cM/dx7nndc++cO7nfapsYpdNx8ieKG89hztjPQvIWBrd8GSwCsAyuE3xfxV3JxUE+RlmOs6jS06xpOdWzctGsXkYUzWdEWVRpf1ZOTnWKNJZTfiyq1Pd3TpXCSIL1ENfk1yg0+bVZqnQZa3R1nLpeFKvne521+/osVcpFcapUHl8M+8tn8Hw2LjnNZuWyFeXxk/u9VITXlUtpvnKpRZUeYuUOaer9AerFcR3/GFg6jfUXiS57ozlVKvNhWFnp7FEjhpUVDS0rrXBXD63OGDV01IjUKmfqcIKTgZWdNGV6kN9RCpx7MhjeD6y/uvOKK7v6z6x4YMbc8XevmfT2zsF4bzirEw9/tQmGWV1TOkVhzQVdOR3eGwV/Y+Dvlb+M2/hU4ftbOj+wxP7WV+m7h/xov2NX3vKahXWFve98bM3QZ/pXru25rGtWtXjn2ynW3bbz0cUHROwRBj6fCw93xYSHr4oKD0+IDw9P04WH94gAFyLgeXWE9p+KUP5YBPjiCPDE2PDw7yPAUyLgsyLCuHpFKN8lQvm0COX/GYEvEyOUFyO0/98R+G6NwN+DEeh2e4R+L4sODx8dofzZCO0/HgH/RRHwPBOh/A0R8EmJQM/oCHh+FqFffYTyj0eQn/cj9Ds+QjsPRMD/0wh87Bqh320R6PxLhPLlEfq9MQKehuAMo/5cF6GdHQAfwPXitjK7LNet4yjcx+AzGHxjFIVb2Dwl2/ubWTu5DJ7I4FNgXN2xPGtHtvMj5fH2sajw6c740tBXDb8tlrZfwtpfIMszw1N4TQ0fH4f99uUa3mB4so6LGL9yNe1fxeAHNHAO5qMqqajwuutwDhrF2e1zyp0V9iqpwCXZ7Zz91il5Ukaps8o+u6DKMUKsKJWyTda5AM+/KU8yjQRoaSGUdjkKyme7i8VCAJoKSwpcdslVUCpViYVWK7ZZXW2vdLiqnBUFZaXSfPvcNNKyM73SLVkLSWtTTGl2e2F1dcHs0rmm4XBdVWovLCuoqrJL8ysd9tKKYqcVK92YJ40sRBA0bUq359jnlRY5KuB+qUTwAnzNFCvAOiw+IwvLHAUuK9wZbhdhZPAnFUgOqFtUlotN5EnYv1Tics6zlzkq5kgldofL5XTl3gioAo4F9oKyMmch1LE7qgsdlVKps4JUM42y252UGIBQlcMlhUVgGsDSKY6stJhvz0+zW/NG2XNvzEu3l9FxjMJOyhyM4AAYTShkMpnModqlFXNYG2G6yivA/rJMONh0MtiplY6KcmeRg5Ey2OLwICehwchNmdKLSyuK7MWlrirJ7iy2AknKyzXIdbSp4cC8QmcFlHMXStbyQkr5ETLlnW7swe4qqJjjsBeXS9DVXRp5zB5ORVEEnis5cQnYjHY5gF9zHdbyICcpGrMLiuyFBVUSdlQxr3waEM1c4aT3pHD6kWUKImVKd7krpNJyB5UfJp1BTBn6l8SH0Qo+ADpKXuTnX7qoyCoWQnLEvJICqZ0AdhTNNOCxy1FZVlAIlC1HDC+tITO0U1AJsltkZY0ALy6VdqMI7cC2aElHdJuwlgqBOWgFnHOg4ZARwCFomMu0FNBh0kGtmgK9kUr0IhhLBRfa9QCCNe3GS6CdlQ2s2OVQG6xL5EMhiJDksE4rp6oyohA09d/galVV6ZwKGFneCDrdOEcWl7mrSgg10SBrNA7mq3I6VcHVnELoBHMmzj69Yh6ydZqjyl3uwJuFtFixE8SGK5YcZWBWsTswy/bigtIyDtCTnGVcscNZzBXPcUhVCAGDLxt5yVFdKnHljvIqB0kKK+dzxYVlzioHV05mAASWO+c6uNmF5ZVQCztlU2d5QSl0ChTnJmVl2dNT07hJNnFC1owZcD0idbg6azKpsmYOrjIniHZTarq6mqocvbYPTzWFLoenjqSL6mhYLUZDGkuuosh1NPyLhVV5KB8Fa0Q9ydMcfnciNRFG/+g31uzM2uTI/VjSHv0Xw9qOBv9Hx70bF/LTcgfN78JBzdnx8jo4jvhIeL8S/04/Dg124v4YT2EFJK/n5rO85/6UKFzJLmT5z1bdGYs7GUtZ/k+kfAz3LMtLKf+lR/xWB/uL4vbGhfy4R/+yNA53Jt5j5d19SzshvZpZed8q6k/hnsAwhZvUpoCnKXdRmF8Wy9bVwXWmAj5GAd+qgA9Xrp8V8HRl+6+H4CMU8FwFfKQCXqKAmxVw2U9E+FjlunQ1hccrfFfiJyvgUQp4sgIerVxPKuAxCniGAq7cf7Io4Mr9F0EBj1eOVwHXK+AzFPBOCvgsBbyzkj4KeBcFvFIB76qAVyvg3RTwBQp4ggK+UAHnFfAlCrhBAV+mgHdXwJcr4Mp1zQoF/DIFfLUC3lMBX6uAj1bKgwLeSymfCnhvBXy7An65Ar5XAU9UwA8o4H2Ucq6A91XqlwLeTwE/rYD3V65b3gjBr1CukxXwK5XrRgX8KqX8K+DKdaVRAR+glH8F/Gql/Cvg1yjlXwFPUsq/Aj5QKf8K+CCl/Cvg1yrlXwFPVsq/Aj5OKf8KeIpS/hXwwUr5V8CvU8q/Aj5EKf8K+FCl/CvgqUr5V8AzlPKvgJuU8q+AX6+kW81RveCNnb7MyAl1DVJUYLtQs1m/KXg/MHIa3AoMzIdv/ioLXGG+BG/5DwTgM3Ay5tEE+reT/ATMo+nzN5D8GMyjyfOvJvnhmEdT519O8oMxjybOv4Tkr8Y8mjb/ApLvi3lE219J8j0wj6bMP4vkO2MeTZg/l+SjMI+my28h+V8ehzyaLH8ayf+EeTRVfiPJH8E8mii/geQPYh5Nk58j+S8xjybJ33YO8zsxbyDjJ/kPMN+djJ/kN2K+Bxk/ya/D/GVk/CT/JuZ7kvGT/CuY70XGT/LPYb43GT/JP4n5y8n4Sf6/MJ9Ixk/yD2O+Dxk/yT+I+b5k/CR/F+b7kfGTvAvz/cn4Sf6PmL+CjJ/kZ2P+SjJ+kr8V81eR8f+G+WmYN5Lxk/xkzA8g4yf5CZi/moyf5Mdg/hoyfpIfjvkkMn6SH4z5gWT8JH815geR8ZN8X8xfS8ZP8j0wn0zGT/KdMZ9Cxk/yUZgfTMZP8r8shfx1ZPwk/xPmh5Dxk/wRzA8l4yf5g5hPJeMn+S8xP4yM/yzhP+bTyPhJ/gPMm8j4SX4j5oeT8UM+d8OON2dxvt1Ayg24h7Qes+vWgjb63oDmZ2wqTuWvqiWqxl+VDTrbKnp23CF4Dgo1h9py88Xmhu0PWDihuXEWSZoN/UEHez3zqJH7mZQ/oWrAwq1Fh0W4Hr+ly9YSDQe17rQBAYEDxUs2kVqhOutJ+QeOkaTxXLTgaRMafTcIuiZhxzmpe7CFeNaCtv6C68/AeDn35dMFz/e++4AATbE/AER3Oy2pLd+yWI1v5k15uYLnu/VLHoThefb7bOB8YYolBG//JKFun5Qs1GQZA+4BgnesUJ9lEMzNUqyvBoiLBe/GtDmGzBGmBjRet2XesUn0NJ23tpXVvl5R2+Y55WsFnigR5KZn3px5U+b0zPw84YGjApgZ0XNOqH8vCfcT14/0Wjjfk2B+hebapAZmMZtqk7ZiugFlZD36ub7PoVUkYrLgaRRqGg2CRy80W4g71mQxQG2LEQ0opGQqaomCgbwToJ/7BU9t0na861mUtJejfR1gfdm8LxBMbJ4Xktogzak7JMWJNdlJRp3ojcOapxn/YoUa6ESBUxbD6QbBs0WoaQCcrNx6goXn+Do0n76//Iq0sTLUrAQ1wfNaEvq70JE70f/jcBRYBYyv/QZAIlA+++GxGxKDne05Szrja/9G2tgi1FfpMhcEpgu89QRS0wLVfX8YjVXjSLnHhyP7nyI3gIl87UMEkCF4032dEC/AlvJ1oIqv5b9QvjowBUJZmG8O+OvZOIgXiW0fYOMhad0+d5+WsTCY9jekJOhJH3BfgT3VBaCXy1kvgTOQeuWCrXztA51xRr0XJKf2kc5EFHy4PhC87xH2QG2+9j2wFev/BuL+Dk6Spp2+ldhazWm4tVwtNst/DYrNJsqiaKE5i4pNFopNFuNNliw2+wTvvZxvxulAABWgngolikGDQjARYypQT9G0rlUaINRYgZh9sb5Qb2XUvArH5znuuxxSm2cNET8iXQH3taJ3XJJYn53Eiv58Gov84Dt6mhJe3m8X6u9JyhXq1xAMfAnjEEL5LdRLSbk+2yiUYgrJQfKc47GPSYkgwFeJXqd+Q3KQHkt+YVJ0CmhQzB9vOMHfj0pDOdpsSaTim52UhhpFgClfi56jYuPZaJvnANi1622ee5L0fF1xJ8awYh0ReN90RjIvVgYxI2w24li8tqQ0m8dk8/xJf2N9zGHBk2nAmouHYE1SvF4AztiSEoFFeuw9WWhsjRZqtuhaUouXCJ7bQSK2wI2tNi/0bfO0CB4wSZvA6xoCgrUFWP+bjl/8NUF9SJLo+Rolq5eA2U3Ye7LgTcGOEoWxye7VDEMyTEFI2SJ6jolotutabZ62dwgB+OzGKfVQSLYgV4nmj2z8pG9tujYbP+FbtBE9JteP+54sK2aewoE3t0RbTQEY3ylst/JGT/9T2KIXRF9KsHmAsycFzxHf/YQgZUmVOKKcupMwGEmPZvPkSbyRjZTKEDwlQKkhPxCcyZj9nQEL5GlA6k2TsYJ3JogFKF2ZfwkKlfeqHO88vc18gq97KZZqnR7p8PRJFKuA77GTrAX3FmXZt5Vl/8TKlp7U6D7rS0qhFuNqlcUYe5LqcjqplZ2US6vYkMo6wZyp52tru6GMGjcYg5IYd5pJYmt3wqcp9SO+l6eQJ08SioKyNoGugnIamJKSZZ6ikcZTrJEVpJEtqGFrWSPTCVa1SWlEPq1ck1VPbJeOmSY0ZpAnTQJDUZVXs3kgWYfpe0kZkPKL8bm0aV9LL3lKA8nT2czf8bXPxKAKlgFlPMeD+lmBc5lnZlJGUEk9x3wrtbb4tq7YTlYi2LXrbN4qpYq2nmRjyo+lLRnOp6d6WU/FlGM2zwmh8ddoYa0stYJ5E//nQbE4vpN8raTDqfc40mblz0ibLShf+qCuSj9TXQVJSBE8pXqhPuZr0p3OhyqLbSxOI5QJ0IrttFZsPBYt1jTpWoaFHIDiJTmeYWJNM1FfEG2weQLkoBhI47mg2o5L8hVlI35biMLavGYq/GMz3BsYmlRhxZRmm+dXHCfYOsGzN6iwtnrARKuwgm5ve4V99QQZPRj7VtUYQW1tnrKv0YjaQEVBbwUkF9D1F18zIc5M1NtNoLetqLTHfZknAowWYJA8M/RTWBei7jhBn6gtqrsBJofEAPoaRLa8VLZwWgSwNFXWL77ufvR6n+eU/p7gvR1quKm6xusU6rrxJ7l1wOUfmMHm3G+oavRS1lhCatyTZPA99NPFqPiMn6iK5/6kUnEmPl6LXkg5DQqBc4KXx6YyRE/X/ULjabDip3X8Q7XkziQovYgpZMwXiLmeYMzXrQDvxnfiRzpXtkDqXwqQYuL5Imgv3mqOZuqnF83fSCWgOjjvHqfzrk85737kexkqtGwJ1l/Wvr5w3vpzFPW9OEV7Ewl/6mAV4l94Tuniqu4/jvefVN+H/hPb9c/X1pO6BIcWisMhJQ5bfd+1AQ6NS8j429rhP/v848e6W4g/adKjO3BW5+4k1sQH/FfrqZ+5uA+Fx1SlmBr8Oj2ZQsgYmsBX8W+DLxnwLQIOEQ/mgFBz4Cxo/lnB84nQeCxKAHX3/FRzUCfUbZOcQsoe07Zifm6DUv9PZPLOrp/id/6nBkxmfmrEpOjTtGJ+11b42w7Z+0mR+6EIAPbC3wHM0qL3Q1Fw+kFYms7B/F23023wY5SGaRtc87UWuMQGY0gnNmxh7k5oYSP8fYDVyY374YYfY5U2PAOe4/rn0H28uc7CrcNdHV/8cVhd/gpZ3/vH4CpUZFUNFLkFixzCG2iAfQ8fo/NT/VNJuTrqBRLLDuok6IJLGLwV9MY7XYvMrsQh9Ay668ORq2uDq5TraHXQmB7zem64rRaQSTsmozUIruSK6+MRKdwQ8X3aimyifSwfgH3ApJurD3axCu4r/OElbWRycV8lMIcxpMzm/aDnldCLqbXFqVjRoMqSkuYv3J1P8M5onIpa4FYO3KplBACx8zLsPVb9+QjSfjkEE+hbOuLKouuxHrxZsTl+2WMWmHTXV0Kyrq3EgpOOr+Y49TAjOttvtlID8gqktfvcl7eYiUPKRkoG+Egr9XAmQdrS138LqJT/OTIxNhEKEftzFI3kU2RFhhZxPLWIo1UWcWIrtYjjW6kdlR9htBiUTS1nTZ1m66Ah4VZcvx6lTZ04Sps6LTv+ULHtfBU3sorrWMU2RUV55ZVMV14Dgiuvp1mlOlbpgKLS9vP1ls8q2ljF7awiMTIbk+V1DbiUeK1e2yQepWsbw1H12gadkfda2cJBngPRUfEXJROm+GdC6n+Tcoh67jUWmDKH0cmHXN8YuuZr1yjmMr4uBZvqkyyvM2RXx9NCp8E03/0t8gyO1d3/YHMaeN3VMH3+KmUyK5tMBW6AWuAyW6jAmVs05nm/u1luKTj39mSd6n2dVZ3ydbaAnO9ox1uP0I4bjnSg478dkTv+y5Hwkz5f+69BHN0N4OuO4KWS8bcdoYzPO6KY/P2bBlEGpQ5ivJFpnoM0TxwU5BgdJfFTpIHU4RlHp/3a51TM6okV9w+kuxSET9/6Zcw/98vezWbq3dxLqJRt816Dzt2wCGvq5X4qd8v8ITpRd4wSqwEbCxLK5adU/aPcGV93B2FNxzscxjq8tkMd6liHZ3yR+LI9KciXLUkavmzyUb6861Py5Zkk1RQ38iF5ikuCYhv2/Blu/Ahf7+QuhBtncY7oAjdE82api1gT0wwDb9C1tOEEgnsp6+dCWd+ZpKAG6Ym351mUhEsQIWWr7OPNfUGxLks5wtYwhhi6WQW2ZS1HtyXf91F11y7JQkux+wxgFtYHSPkvfTk/IAdqaX/Qt2kftEyXPry4V9HpGr+8QxZNFhKiZ79QP4669557khJ9WaRnK5eJ/YqsXxvuGLC+Se250XTfoAbEDlZ/VXTFI9YEYqriwVG6CdEIzdk1Db8JA04L9ZXgEP0kNB4Bh2ijzrOj5lsgyrmuVXwx74wdm4ubVP6PCCKfgI+EwEEEWJwNl9fBJV50G84uepnxgncOzKTpUJGmI/9A0+tvoWm3AkiXwMX24kz0osDT+Qy+8j8zyLAdcLEXL74kcCN8z/wsjdzld+0iN/ldX5N7FnIvl93bw+7tJ/dmkXuw9tmI3lkjODEx7oXo8eUJ9T0/Q7Bw6gtEaNZUglivkqm49cs8QNrSF9DGhDb46ouuGdQxCoFG90EyX/r9A8iaAPfodCDc7hOipxUX88giBYt3/MBYvFbH5Ar5eudhupsZTpyIe4HSMgP3rWaRyo/S2QQ3ZdA85QBs8UvE8WI8XnTxPL55CuHxARWPJ0wJ8njSFMbjKeyi1/QplMe303Sog6Yjy2l6vZum3e6dolwM8ldxIX6ja7uHeM17wnGc3CD+88w97XlO7lro3fZcJ3dn0btqvi9AvrvF+p57FHwvyaF8r8y5IL/HKIzTewtl4/Tn79BP9cKN0fD1zhPwtW4bGqeK71BpY5qCkqFijI7uCZiBq4v7oaKWJRnJZk5ZkoVfvKA73UGpFGsawCoDr0WPD+8li55fTMSIVIO3m4cGe+53GhPs2Z/jOY2VLDZPA6bJNk9Sks2bn2RQP3/Bfcrgyt78Pfj63RETmBJI7uu+KG2BHM9utGIZZNt2BGDRIm8d+VrGYInNeJuujWcmJQr1/ffitpLnG9zk9G0dg7sG/dAXRztoG3uLPsdzRPBKScm4x4UetXs0ccQWGbDzPbaxRUkCTiMGvvZX5qQtxM3nHPNBm+ewyE/5yf8dlSeb5xfc0hmLu6EwVSVKPGhJtVswbxRgjcNP+QXqovJkVN9nMx/M8Xxr46d8INSdhCmsZqIBht7PlvLpO4RmvPgp2WrK6YvGdBvY/1iOu7G+5ydCzRmdW2/z9PWfi6Gb+Iv/hRc1Z2L4mjVgcU0B/y6ynTYOpsrAOaG5EVkMvZ+Re5//IHQt6naQnmy8AGu/k3zdfCjlvwe+bqwf0RPUUVHzR/6qBdTH3CE0nrnBNmAHbvvRLbhWfJoDlkIAdlYKnkfJMsUGKV3OLEqaRdI1SSWEXz0/wDLVbEmzQEcDloSUT9iwhR+xbKWObs0vIJv2a+gC7NwNdL9nAWECODVizSToFzC4BjEIuPsTzw7udFlwr55zx/ru+ZY6BYcO0IlvIdvqq7R5X0tawpqJx2YC0ihs6A7a0M3ahtJZQ387oBbtlqGi9wYs2DVzwf2kZKdv6aroTwc0jx7qWt3P4YbcLNy9oyKFEjIEmFLd1Wb+FjcE+CmNLf0m18fAmuw0kH8jI//G0P7HB0LjLzcIAz4IrgvB/wH6ZxnIsm/Gw1MMSDZkwcKpBlhixoHViEeKUy7UMi503U2ai17EFpqLwnBku8yRRqwXliNl45EjtYwjDcgRC4gxUBhdLlAr6TrELeBOykEHdiwl6d2EUAf2U5dLgBRK5njabN41lEPA4yVE2mBE6G/Mwrbjse2ANI34cs8TLx1a5uuWkZIxSVgwQ9PHPayPQ9+o2UYUHorbvDFJLbeSmiJ1lHtmLqiGqt2wRd/1UB2L2DzNNs8m3zPfoP3cq+Sq3BAxD8TzLg6QzbZatiZT2bxxSbgZinueZP+T9zyFbvrl6CWtD1ri+vtgivy0WOQrNhXzlQ3ZQv08mCz/JTS2RqF5zPT4MmsOxIN+9ocJttX/OB6zqe//ifDApjbSY5OQcszUSvf7gPm1LRhIQi6M8kWafGGRL3Lli1nyRSW9yG5ZQL6XkO/l5Hs1+W4g39vJ9wHyjTNUTAsgaYTZTe9+ELlmEnV+sCdgtZoMYuOBWMBMuZ8F1VJJtVSsJpp97qOC+QzRDGKRpStU87XN0/8XoaYZZq8z7hOQR9OZgqaTLG0y+NoasiWM84WS0PNHk2UvuUHnqmTGfiU3Fi7Wqd0DC1j4o/wj15JZ4jUyM/D1fUgO1JevndMTZRXEUzSfvb9TjnkXv3gfmx8eGU7uoVTWMj2lT71BT0FzUelyPLtkK4nPpXLxKcksncqy1dtAozNBo6lRXTghDTRah86AMbgrtXI88dBhgsWKXYiS8LVvEg9/SBJ5rHiYOGRWVJZ9BK62bTd/RW3bhn1aJTntf1VFkiVks3MgSMZUb9nh01PGln13Oqe+KCngPizvL/v8A1CcveOxB8OC+6CHzr5/Yct0gj3lm7EvQJxFA+gO8RtVGvGwZj/YllQtmj8CJkRBbuwiwoSQsgA7oi5EZ5sH3Iz/BKVvuJ74FhpKm5WUnhOi9MwwlG79klJ6+pftKY1PcJkN4qkN0vve/xJNI3hOzb6r6SXWmhVc2dJe6zByitEfpdHm8QE953cVoKbOxy98GV0382m+/pnu2EUMeOt+QnBQshzPwfldIW/T7eAX3ofOlnkHX+/GGt6uH4LfEaJ1dQ+cfbrkw8Rl3nhfD39pdzKdmyDHL5rZnXqM1biM9fgF04+CuZFfNK87eR4kNm/BJpg1bCTW0N/GtR/wR18EB2z6IvKAnzgXbIyaVjIWG7hT6FIqbCmSA6ZbRNwDkgTjmZ8AZBGiwVsFfTcwwtQZKGHQhakWwMep2wnlUPYIXYoNjC63G4J00VLjNoOCGlMMdD0fIkSFgT4YM7fxtbPxGv1t8EAN9AGOHxRHeGd3tX+QSf9af4Ff1Si887Gc020VGrdGC+8ce7npxtGeTEB5K5Jaz//5Y/aYcRY6iIs38HSPHPxDm3dcEl/3DEZ0tNrG5qOxWod36ycHcup23t+JDOsRno0G5jAqL0dsup38wnk8DncnX1+BBTxdP0OyzMLB0FI7BJ2fX/gHvIlEEbBhT8wntnq3Tqj57Rz/SBOZkmJ6UydG9iEb/Ws5rX1dR5+9fgIrhz6y/w+MwOWQDhuvvQHrmn/i6w8mQC/mmD33HULUHvksAXGXPjuNjj1F67hN9zm/cF0CIv85X/8GlvCM+JXJwDFW6pygO8YvfBRvms/x9d4EgvxJtE6zsKNFxAuWEih+ohlM1HaRn9oU8nzReljU1iNoabROr+xu9fwwvNO79cIuVqeRocCqYECVQYe9X0McV3d/rQv60B7qgh7bjZb2NeZT1RKfCic/A7ajJ+2A24stzaEtzdK2NI619MJujds7CvfqsGi3zAW4uQNlDXvodl31brXjC+27l7P1AxVWEJL7e4m6T0SyxiBxubAOamvRLxHMfrj6EVW28TS4uVvp7l0YXzcf7PVkA1KJ2Osp6OtGgb0mYWazCDPkFUfXLRfydcWUprVsKdRmi7T6WJB+Pl+XWJ4cT7M0mDq812g80Z92UU/01l3IE1L2dIf83anE3/1ryN9dyDbhtL7uEtbD6c/UvKI2Ed0d6LIlR+nsBu1u/q6g3X3ns6DdDT5ZCLZAnykAv2R+kp09tEaV1TmgYdWjBPNvfP3ILqiEu/n6IV2UGl+8BHT7mDg2u5Xja1msl1BfHrjfpzLm/mYWO0K1LCjygudXG6w6lZpmY8wO8aNDM7l7JFWEajYHnibxD/tlks8gq38bPiIjOsLXWfCaSjxf2wcyVOr5um5w7esNJPNHH9fOSWijcZ+DdOIfQJpQk/3rnUGyT9jZfrrz7EdE6uahRVp/jD7XsICDgy6TMbgPDJOihE9yQOhS2G6/gbTf2XfvTrkS9HBghzLe4DyL5kk7qZeyagcSAFb2ioiav33Gdg2/96HPESmYBvwxOZbG8xUGvIUCaUTzZv7Pf+nEgnd2RtGd7MIdZCcb5y3ROyzH69TbzK3uchL2BYPFLf7jvit3II1G53jmkeA30TPJgJZxLYs6YtMpv/heaFRsPBotrp9TTD8tlbJ/ut+3dzsJJGXxR1v0ohkct23RNDgETcwR+sTuO8UDgmbfc1CrpQHrL9uufe52Bh+oY1gA8YX5xb+RTdFPBW9300nN/hbMIjCfnDoG3ySwufGXKEG3UaiP6QF/C4RTe/m3a3XPeizcwtoRxOTVNIFIz+8k1AR6zGtEv6N/E70Dt85F3TvY/yDZFmZ9sHtDsdrqocqS99z+MHv2DIqB6UJb78BC5jOTubrhnFC/KCmTPN5trErFzATNgojj3zbwb98SWJi48A/4cAOm5kahXtS5flA8F6/eQeNEC3HnH599bzFgSI+se55PkNNbBGI3a04bXFcK+HBBSso17fR13UGDqTzRKLZg+LMMGCA0Vqz5Tee++mGK7kIr15JC+Wna15KttC8sesxCTMMR3/ufUPnHhvSCt0tTjK5dnCpVJphhiLFHHYcG8Np3wwD6JHcBx4S1xzl8lkUeIMXjZVA++NrvfgM7cB905//iN/qYerlc69Y47ATlOl70TtWTLe0mvracrEYK9STMHSO4+FU/g2cnDVSNx2sgYRm943ACc+lJeJi50f0DRtPmMhfDoguFsQINSwCLHO/onLHz9HztbWgcveNJLOtHLNoWy8F8b9ShmiF5E0TvaBKedcR33adoxe4BZ1rXKsIiniI+SU8s4heoz+YmesHWG+mk4kHfT8hW75WoP3Nsuu9t3juB4FlGuq+cZcRuesilj/g2E8aQ2wG87e6jeho38mM6lQ39GC1Qkx7Hgs22KgjrrlFsflfWypElD3+EeAyTDQdft+lXYErTrzTiYwVK6T34GM7ViRJjBTnKoaMDq3uRxSAlYnw6WZoa3f3QqGIAB0HtyY/oY9RE35KPVOEgD3zCLOMbLKhcG/NRz5xDdGv/Scqooz78r2jcY2avkqEfoKhMB+BpQCY1X3saV0IoRSpaHwrR+qBvxscaWr+poPUzvm0fgmF7PBTDUktIQoOlGXJk4M9+SMJZBDabcuoglUcvIkiFEp2sl8crzG5fHOydHwBRyekPzzeCZ6PvbsQO5rrYHkVGfGTpE+rJmRLv6gPwXfOJzreSMCT2p0J237ts9ZuzqOaNhNYX3J3BSbEPZ2W19Mb2x36IpaPhcj2eKgjkpvHr20iHvoZtKHTNvhkfkCfWxoB0PQ0PLhS9VgNSTwQu8bXE/wrmVrJwD1nd6zaiQG3l2OI/GGUw+wM6qd76AZ09ZCLTMOKnlWHE33GKKMPBH1AP/OoPkOkKPOqqiRjQqRscdjp3e0nx474T27TFbw5XfCYrvnmbymhJXaiZq72bmQy9vK+BhTC0l54OoB5p7buc/EibxmD4kQQf434RjrhkW/t4vcMXitdL34bxeiqjYNxGjULiNkrB5cFgm3D41c0i0QZ0vJ1xuHztAyyCcM9WYsfRsbMGqB1X+NEC62f1VhZFTsNZLg9GUjy+VY54qd9KzQqJVsYDwcIDm/FUzm2ZMzNvz7wj0377JjnuD0+7+dPhy+fbSiUhN4TFBrzpBlQ2NMHUv94HX+9MexhM2jmcMf/ZDDcG18ONt+HrncTFcANP5PmeaVaF1/WrkZ8A1uGNw/8FN6r+Cjd2w9c6PNPnK2uWHw3etASfGcLXunrsI69ZDo7rBFe+/K3EHfNn0ce7/rEsPUhTXDIOo0vG5HbPP7ay5x/NlE2yN0tmkLooGtqEg54fRUOb1KvID5rpKnJ4s3oV458MxVsu1PmiZtr5z03qzoWacUkgAP/Ssc1CsnVXd1jOMrccr4nnHOvLwu4BOd8rTRo83mDxU0RqB6mV/N4mylp3k1rJWZ+oG92DfSbavLP0JPj9h5A2hA9RGsjavaJJo0pfuZv9z3HKkLv9vuotoDrjSMBQ0HcJH4X2yRYq6U1bNI+qZHTdxWpUJct50bxvC0Vz7pb2aLKGgnZt2hZGYHEL3cMCI59poHNUpsGdippnlJczJMM4s3ILjR43YitdSSaL1iONQGW+9iFk1ApKF9zxtdi8SUktXeSc6DmKQjSECtFArRBN2kKFaNVmxYIJJ9VBVHTdV7YX28u2ULG9ezM1Gka6ILs24jAObqZGxOgTNqttb1hWXbOZsqrfZq3xo/ZOZQSlXsSuSCZFkJ+tpUC7zrNvpuxq3sQMkftTjSm8nvX64qYIpnDRJtkUPrhJYQr/1ZmGIw7dojm/GDq+WHPUIHpOiZ5zChdq/Ba6crgDVg4YdAQrB5snmfiuXrLQCvhu3IiGaTONWao5zc+9EpcOKFHg+X6ymS0totlBgiyy0zWARGx3y3w4PhOXDj1g0ZBqQ9/oHLpHT2wMnjuIuEYQPVcKNZsNQbO+acO96EOOJ8iENO9cIwrBKd+ozfJ+/HTlgAXBc0L0nBU8P6x3Y/XjxHcbS8Y3MQYN4/04S71PFiVDknLQQZqEcK8b/nL0MH48n7dJPp/3MkeD2LD+VTFM2G+QS7Onxz4Ry3s2Kc9/bmKe6l+pp5qjO2fT/Sr7q7aUE3gqh5yWEWp+BS4dd/VDIhto/6WbcNDxqG1wb6qBePxQUOfOy3w4YaG+5VaytmAjcI8kJ6oUvd9Ce5f6YNQ39Altic2TyDHCzKZJBq5lsNWE2w6gAre0jBTwyetJjF37sYHyCSpM0oteHvkEFQmfIKV8ItWuRjdHDFolXwP1cQ40hA7XKnY0tm1k1FhFtiK28Dc38N3bb2mw7QybpwjPY+DYgOpLoIrV1IoLprSWa/B5JNrfBmo29PLq0gLyB4WNUHh9NYYLxlBhxoXQ2EYizwSOhxMNvi/OUvtGnibXToqiiyzvjXpS46BvZSPyE/d0wpwtObuBKuzPGygOZAx01bnVluLjH+xLBtmS4zmck3IM98qM+GDEkOO9wWZus/ET23LqTkqdyOC+J4voEUkYWwOlfGLNOYPrCoKk4DkMkmBnmIBd65qEzRix8uAc3XE8jeS+LJN/mwd56KN4fkjYCWr3k+9qxJA8t8PVFgoTMlQhJ6ZGKifjFKeUyT6k+Qga8TTc0vd8LeUIHgOz/IKhxapdP+H5nCAzBPNxVvVryebbvh7mSat6f4Y3xPHdddheIrQHVJNodRL/1gTWu93paGqJUFU/o94lsUe+6O408lRPuHjyt+DGQctv6o2DD3DjwAqokPcToOoE3H1gRhLrJzGeJq+n05FxPTayWVA4lyh6Cnmsw1cShHUIpfdVN0LL5dvwBjFmf8KraPAA17/8ZzwjcMTU4Ktfr6qmiH+Fwv4FCscDEQy8F6CKy9f9nYidUgtnv0+18Nb31UfcO4McsLMFZYSQ0jDqWySrfYur36eTVd/3FdrVEk0q3pOU4XuwU2gNQj0TFqTODiuTRr5+j6rH7veoocbxRT5fnwh6uuC+ZDDJKSQK9pTg+VXw3pdGDO5vUZpz00g/apcxnkMhyCXrqSAPFummAIbNis1WZvGsBswwK0ZXyHj6tRXtL6j8dbb6oiRDy+Xyfjuef3oPT2TwdaOJ/zzJSIzXdGInwET/sB5f3ORLf59ZtU/U1nefDO9CrR3QT6xpgnpp6L20riNzBe7f2jxtaP1dfUjkHKp75fvsoDvR9hxi+K8ghr8T/zboL6h6AtHvw2iuJ7wr67cV9DaHo9OqeiuAzHAPEofYDX/TyTlAcR1bfrt7owTYzKeAcUnvUu73fxcXsWzMBaRmhu9aIAjk6wbpWJMF5FG6lU6DoYgp3Qf82zMNyj2bj9+jrMlQ7Nfw6z+TXzzgu+Ld9u8caOmmsGemVhLUDVO6bwA5P9tK939s3hFJJHrvBTJHT9eLY2/Sg1DW7ZSGi95R5Fz8knUE7Uc3iTUTYbTdWq4uXmLaRzLS5QLVo57gIrSMektHixxZInrHi/UTmTTz66gUx68LqRSr99VvbPFL9Yev3YRm5pt3QGvfwVsPbEbhVliSsMZh/DsRjm8NfCeCnen6jnyu6821TJSafX+OA3qnLbVwLX3pvaWhe2MT4F7wZBLqph9Gg+u8ZswcXUtt36F15JRY8CzQowBH7yK/5X4l+F4At1iIY4ECNCokQN+tpQK0D0tciSXA0vSmxXgFpdy7W/ZSL2KQ2n49t5baryfXyu5iM9v9D/gmrpP9PXx/CL6Sw2u3oHrEE6MvpYveO/DRmZRP5+wc1ZwtrKVGyQKp2DyRvD6pZbCqyEBW5ApaxEJnddKm+zW4SFN0NgzyRszn0tNKYvC00vF/0lY+/ydpxRimo/dYkTW0SBrrCNtzr4YLg6Ijvfx2E1ULd7EWXLQF6kSxgsVL8tCENsf7HsNH/c1630fRdI8z6R1S6zb/2H8qLfISYo6JMV5GthpPIHFZfXBEjOuJPB1+m27qoVEYTAxhYnBDsS/ew6JsQ3EwdNByBVuW4XbiuBjAxOiVYiy4m3gbUroevS9P/6TgPNOEnhTGLOXig0YjfaQGTgJGS881ihjp8YPpJNjIRdj6AHQBKtEmfPwPyPYQgvdFT4Ov9J+qbePJa6kJSsJVDZkdcJ0MFtb8hXSN6IEL6vPCV0sf8niCnL27DIZlNR1qGcEbotFd9ZKAbLKK0eItNmcnsfklO4n6LN7YD0UjcV1gLN0+F9nWqccWY8S6ydWvzyKuUyVuAZMtBMLbZ/5B597kGahvQNRZvtvepsu+JWQ/ag0MLeRZO/9Jh3YT6Lraq96A2Pmc2Bw4d7BcI6fes2AaGqB4ZwxZkDVnMf87iz1OvAOfRYC1TAVbSTMYB0EOEPXTHCA6toYuyg+vQVmMa0CpeWAzShJaPrKOC2fEJq2hR1JlvXkZ8sE1Xt81aHkO0f1P+ZTeo1y7U3ou1vcfIW2ZR5qjvOvsuxlB0QQUmyWE+DBV6CAfeq9px4fP1ij40Pst1gHODtv+QU3os5C20z8bO0j0wj+Y/r37lkr/tOX7s/KSXN77Vnt9RfcJFqK4xXI33d6WQG3JDjc+1m1xD2iZFIwn/8EnvKXZLfpaGshOhh1njP1BRdwPfL1wgGxrlW4nRb9FR/nrm4TV5F3swdV6CEG1PQlrTJ54kxmM9WPwRHN/sp/x5r9lFea+pbIK/3yjvVXIe0tlFUasuSSr8Nsb/55V+Ic1JI2N1g5K48I32kmj9U2FNC5crbIKt7x1fqtwyxv/w1Zh72qqmdtXE1GZsbSdVVAq/yurFcp/xeqOKb+bdVG+up3y37o6pPwTs0PknpbdQXL3Wd2O3HtWK8jdZ5VC+T96g8VvvYEhOxaunf6fZXr8PCnQ7v4Q9mKy2jdYub+tUuk7WS+hOq0gvng8MvYW4gAlorgnQx369q5rEEXzzKRkKQGIvYIQmzieqFZp+DiOKF9/aH59F1xmpjBLc9cq+VC+u09Ya/3Ef+PkjxM+nsQni77gtJ4G03ouTuu1SPVEbK/zf1P1TmP+QF9oHxRCfy0F4uKdBCX6dKtkV/aH14m7aqvHx+L4xqbgzkoT7gygBcCALXdPOXIAm9L7tr+OvjsNPwCrMAOtwmVoFfAusQt3IKt6CgoQmgIBoJZ/6OR9TV/1Knzwuh5fFbwOf4cCYZtXsXPe+A4nc0C60hcF42q5XAmD+Q8wsNS2St2wyrOvU7mAArEfZxrZm6m83b7IDAleGo4sgwqeHP3GwgaJ7D39OpW9DFn2Kn23/jeVPdQI39Ov0RXJyFUoTdr9z0TR87Pg+c2GzznHzjNI/Un0DawRRU+cyNYv+JTbj79zZPOWw+zQZkvx4UoBX8VT17CWvp/GCkLTMxFDaRr914deUwM3dgi6vQI/AeN3BYz6lnqAIJCTLr6o10NvlqJ9xuwXg/sQP9pS/FKBUNN42rO10ReND9JrDsRLBaadyggejF+7ZzdYm3Gfg9XczZ4sNZ2m0arb3d/aPL8IKT/Z6meftnl8QkobCQETas5kVA0hj4Rz6udgwAVf1xnPfXQjG2y/2Og5OlKOf/BZ0ubG06JnF+4nesF+24KLDcErkLxBfl8fAAwieW+QvF/pFRIRYMSNSwYwIiA5+BIyr5CMgLTgDpZXSENABgDSGCADARYAZFCmbLaAMbbYzG18XSl5e9ZmsMqtMPWAYC18VRtPdUy6Rn6of4yueH5QrBE+9N0ENVo2Cyzwn77+Z8KrKDqwXPM49CRkiJwQqB8BZsyNC4hExWL1oubzba/I8/l7sFJf14esX1/9t+bzl15Vzec/rGw/n9e8qprPi167pPl86Cv/3nz+/fWhCebH6zs4waxd2W6Ccb+imGDWrlDN555Xzz+fe1b+D8/n+pV0suVWkvl82WPnnc+/XKGYz3NWdGw+f3EF7eLpFe3m84dXhObzueNC5H5wXAfJLa5oR+64lQpyiy8r5vOzK+l8vmslnc9V9hWU9iQ+X4I2ktffstjC+eoP4RMmyJIN/UdwF9Mb/3CiQjA/XEm5NzTCDli/FWF2wMjLvmCWWX8HdpJ8iG18DYtW7nnTY0DT9cLYPD1fR978iJFsY3Tsgca9nG/xy7gDlsk/uoVtjq/gNK9lGPIy9T+SXlbs+rI9rofaxdice4lu8pyE1Frb6i6D0VoeTlYM96sVbPtzI8feTEDeY2nh1+9mQ97vSyZ9qR8A+lEocFeWhsXMCLA9Sr72rgDpS3pUJMpJ3yC2ibyT8QMc6rrg9DRgt+jtDffU8Yrf4LmKHX7B86lw6nNBd1ww9/xQ4HPOgHn6UA8XcP83kNz7d/vvhuYywS8gBvUB/65z4Bbso3wgb35dfhDHBpR/WUdflEEfSzxBcnnAh+nAh60yH5zBbdexvriXQnwgpF3djrTPv8jOv76oYgThWr2Wa3NfpFyreJHyQaJ+1N9fYC8CxcN9ZMZT+VEi+AUwm0ZR72k28vLd4EEeM56+rsOwIfoyp8IX0DK2MibkBuTnK7VVjB+LtPy4b3wYXoSh/1ikv02mvy1IfyGFuCH0Cc3Vqic0D71AtfK+F5gq0636vTBtZSimLcI8Ql/E1/+3cxGeyTQ/T2cs/fr0h9gRGV/68+gGjxa9N+spfa5+XjXBRL9EX0bVk7h/gvk47vc9T2eP21STDnoTZr+7E28ATe/OtSTI00+iSJ/lsYlIH45F7SeZ9oXQcId31Y89h4NAt7amKYUO426UCe+IJNGbn8RGJkAp4Tr69PnaeZ0pv6uek2kyC8OfsG/fVc+pSMC9SEnQn5IAcEpjD/1w//c51BY86ht8d207SnQVPF1o8CdMUvRNdDg3tR+h1jrgs5o05rKnoZm2tgSXluC549Y3e/HWKV/nF2iMAvhG7AmuWaU7Y56jujP8OSpLZAwtvUT6gg7G2V7PkSVChAnx1LN0tjr+LHH/3Zf7PRx7HWSwhc+epZ66F9KWcrgnz4ktaQy7GRS7P6iwe+pZgl3LqFCN4754bCOFVIv0NrGiZ6n5mPms/IxTrUHZz1INGvesQoPQLWx5Ltx+cC6Z6WBqK05TvNEk8Bwz7n+gr50JvqRyKek97AtQRc9VGE+Q45ljIFVHRbNItR/J07X7MnLGFqe5s8m512+iMJZ6ogU8vJqzMfyDI0gw22kdX4ebzpPru/4gmLfyNRhDDJkDgvkM/9Ay8nCQrGhIG0+SOmej5/YV6qfqSPnnleWXkvK4tjm1w6b7Fh+m1RyOlhKD56euAtdvO1lw1DQF3Mdh0RDNP5gdFXzezQuerttJYtuuZ6mBpYlQL0Y073Lv9ffAJRa+1v0g+AuTz4qeD8XGliixZpPO6vkys+YgOGtnuvI1SHbTSf+vnKL0rWcFzxew9IqC5ZLO80nNYR2ZdT4i7zD68QR/Xzw5tm7aB+sXPNm9Fw957zWQbyP5TiMvHK5pPOfejwe4ewbrKIoDmnzdzxgXiWdqc1I+y/E0io3fxud4msTGw7Gmk4LnTPES3qDjDaKB7x7Txne3tRkm1/c3TeANMfhlMwE8u82IN9IyAXglfNmuxDLpeMOCN3LJyw7ZHey5bRaCK/G4uk23DQhy1v1kTt1OKVOo79qGcQgiv6pNqB9xipTApel3seKpLxl/TvDOiW28IQFaygSMOkEFo6D7RgxsdB/CEdU+SWRuh3hqRw5y91uh5ttodL720Gb7n5pS33MLfdNPML5+BOG3TfcZtBZwHxWB5a7ptvrJ0Tn8qq05no1i48FYW/2tUZDdC5IDLW0V6l060qK3/6dEYLz9T4GV2q6f7O2/Hy8Mk8mdmVQmbLrPUSx20Ac11GnGd0Od5OvwVx38znNoz8gP+YR940yvp1VvnPEslt84c/YppfoWLwn5q7k27zyDzWtPyzGfIO+dFXnrh4DyJ+RdJw+ieJq/cLtt5h/dleR1ubeg5gTfV2PDmBbvvGR2fNAE1qOxJWWJWN8zWTB/yS9C+RZSWgQzTub414yvDRDN5/jay8kTov7nRO+QM3hk7UOxPlcndDoC9e77yP+FDh29Bugc/KEGq2kn9mTzOpMBE4Bs5Ovwp7DhNl+XQdbve22d2vjad3H5uUHGTmz8LlpsPBCdk7IJhBUuD8LlHoYrTMmwStxG+AtKdaO3/wDRe89ITng/6O3U7avuhUdhhU5fC+bf7utF4nDJ+SEdAvhF6UTZ9tvMARtvC8DwMERGN6U+qYdoPjG5fkSc+0XRvMe93D+YROWTfnNQS/vqGPIYhyqu1yKMmMok3WnzAJotY5T8m1w/JJ0g8CY5vrpfMJ+Czk/JCNh0G3N0O0TzZ/QpuOjtAyPrhRsB1VvE+gp5PE0tc8nDcfTgxXdDOGD/h1U4bLN5vjHtbAliAP33gxbuGaXqG9+IpMvRbbFh359IZtHbvxMNdd9X/bFYf6fc7wdho6hnPIlzDulPln/5oThxW31PBJ9W4+9yhKZzcp7gKfYGtv0+y5N0Ss14CtdmHd6fSHlS3p/o/Sg0nEDit5/8t/Yn4v6m2p+Y9ET7/YnvnlT5Tpv/dkn7E/VP/Hv7E9ahoQXzH4Z2cMGc+ES7BfPuJxQL5sRlqv0J/5Pn35/wL/sf3p8oWUbdsVnLOvK8Ycwyxf7E6493bH8ilnXx2+Pt9ieOPB7an9hzXYjcB6/rILlXPt6O3MXLFOReuVSxPzHzCerHjXiC7k+g/Iuez9Hi2+oHvj3YyE0X6oeuhzQv0/MbeHG2lO/Jbz41/hbtCzxGNhIkI7oO8vtzfgErlO05nhno+RUJSzV/7T5C1PT24OO9JSELdWIT+w0p9qtROtWv3oU+8m/kRWnSGE0ap0n1mrSzJu2qSRM0qUGTaj/Dihxzh1VJRaUVnOs6/F1KbliJs9wxrKL0j6XDyksrSgudFUUF6cMcFXOrhhVIhc4ih2tYWensYZXzpRJnRXpqxrCqUskxtLKg8M6COY4qAncVVLD7pYXD3FJpWdWwqpICl6PI7nIUp5ZUVnJZTndZUcW1khF/ZNNYXFrmMHL5xsHJBRXOivnlTneVsaKg3FEFrTpSxoyR2xozhjQ2ZkyotXGA+5gx7PdDx4xR/n7oOPzp0PHG8WPGQCeuAsnpGjo+OcVIfjrYeFu+8XrjhereDjgNugScLlgFf4caqthx4Ar8BqvRu6hmbueU+I8ZQ3/19hIHcDFEHXyxNB1YNcZot1c6q4zJ80pKC0uMpVXGgXe5U4zjjVJJadXQ8VWldzmgUfVdThw21Uj7LHVWGOE/+UXVIiI8/47szHUUwijGlTkr5gyh2LNf6WZAGOwFZagDbdzO0UJjxrBfjOZKK+YWlJUWGctAf1wFZcZip8uIhaH9eaVSiRF/GdpoShtz7X9gdB0VJeBUuwFcRN2LoNX/Hka3c8bO8L9bJ42GKH9G3FjhLiszVjglI+GJpmSVezZcchPRTGEZarSAXS5HAVjOOVyacdz1xgrjoEHwNc5YVCAVyFL8HzenZGhQpUoihhSzSAMjQsblj0fxKna4HBWFjg7bD1KViGmIdbfdnoyQFMo4vLz9EsWwo1i4CubZC1yugvmyxkSWo0ts8nburvnV8+a6pSrXnyqdFeVld/6xtGROsaOocHaBOWP0qJEj0oeb0kzD00eMHDU6w1wwu7DIUTynpPSPd5aVVzgr/+Sqktxz51XPv4vyuxT5XQr8JtI5xyGNSxufbIeRVzr+82wvrSgscxc5GPuhMRwWkYBxRQ609I4KyYg3x3eYOqwRZrU6WquSDLA9j4ICQ/k0KCQ4Q4yVeRfBNGUHMKm5i0Gc/4e0SEnGuU4wxf+7pIOBSKVgbu5y2ItdznK7o7rSlUzJZzUOSvmPUHAINNXxmhXu8sr5BI8Lq63MePuYMcXuCjq1waTeAXKQXsaMKXJIBcRYFABr5jjspSDE1aHpMhk+s0G70lKMN0CbqHFE0aC2wwXGuay0vFSqAukvLEPsk2enAEnLC6rBVFxnnJ1iHGNM7kD50gpaHpsvSIEPKvXVzrkOV3GZc56xsMRReOfV/3HxC9JuGEwtRPxw2MaLoTlUTKayQdSOK3MUS1wZdy36SwUVRtm5gG+3g8xVdzrmz3O6iozXVpUWOa79Xd5D8j6HCDxF5H+TIsZBHa8J2Emlc9xQzl7hdJUTKhbZq8pKCx2gK/9D5jFEHbWvQfQKLmeXgdYWjxtgLC+Yb0edKSuoZNS0Ar+J7A0xKomc6QJq5aWmpsLgx9PB/f+MWeB3Fjor56vkHqgCQvt/MyZUtHH/iYFRzaOeIrXd46+/FOM99CKN99D/O+NdUFR0acYbKqqMt6O8UppvrHL8yY2OO+7LTDENt0+yTZ2QabPbp9hNGXIzIwknRotTrS6X02W9QDnTKGvF3FIX+LrgHnasRnqeVICyVdSh4mZrdaGjElfkF254AqxnFcXp5/Rr9HfZ9z1qob9v//osFfwNBjc8ZlHBH2TwZA08V25HA09m8BkMHvz9epbH7XWSL6BpQ191OYumXFtR+HIGTTmjQ13uAkRKuwltJiO9En9uqXpc8idtqbo/Q6m6P12/6LGHIMUfQLc8EAjgW0UW1AYCR6M4bjWkuDF5AFJ8GfDyukAgKRrKPRQI5OPxiA2BwApI2yBtg3T5lkAgOwbKbwsEyC/efxgI4PvE0yBdhkdXPwkEMGJ2NaS7sF1I27C/TwOBr/D+TugH+l2Or/uDdDukxlhof1cgUAT53M8DgVmQz/0yEHgBUsu3gcBq3Cj9PhD4Gcv9AP3HQXokEFgI6ayWQGA72yjtKe+z3jWN01UbdP26xuuX6OINuO+JJypW1AQC13HnK0v3SLHsa1BW3p/FcF18anH6fqAd0iTBMDEhcTLfZZ5+AXdD37GD05Ou5liZGSg/WwOBK5E2ExIMmQmJmQnGmujFUVGteGmYkKAHgEO+xniARfA3E+g5kDy8STDURNkTcK8X72FwWsNH4e9thr9dYe5h+Cz+jokP7uGjfcRjQkLihATjhITkzIS0mrhFsfUxi6MfiYqqTUgm4ERSRE/b7Y+P67YHAlcE27052Cc+fszd3r5PAf7y4V4t8POmKHov2OeEhLTMhIzshNya+EVx9bGLYx6Jfigq+vqohAzAZoIChcwg/svxlXvfBAL40xIh/DMp/rGLCPbRt0VjPoQ+3EO+fgV1F4GcD2A4Iob9g/zOtRGOx0fngnpEy3wfwvgsPRgI4BsqYmY8bdHwb6qCfxy+niUf/g5B+bcA4ZgSKN9+zJMSFlymGvTS9HCDzoRiHJfN+J37biBwhODwjEXLu+wEi4J9b2AnKg5mJlgIbvie69PQzvOgMzGVz1jC8mOBToXbxJgIuCHPob1sSPMbA4ExoMcxrz0Tfrzb9ao2v44K3+Z2YDRaJ3witaQpEJgKfI45qhwvDGxSQkN0kNmTo7TMboimbSC/n/ogEDgLchfT9e/nacMQto1xaKOh7oqPA4F+2MaQvyvGRtrYDm3QEVUoWqAjiUYcZkE93w6GQ/7F44Bn4l6Aui+AHfwe7FmM9PfwPKtUkffR6PDkrcT2fkZc9gcCPkzXhG0PxEXV3rII7LLgGLMBzxe+ZWPcevFjRPmuBnmcdSgQcDC79EgUFFocbU0w1sdAr4tihYS0h+KEhIya+JwEi4tgoxFxYqMboJ2Fh0I2Gj+BgK4rGvae+pu5/vNI3qfjWkE6WnU92q7gDkZ1e/EKriGuxzojtzOuxwtG7rt4/fIruKP66mYjd6jTGcDx62699l3D/dSt13fXcI/w+o1G7nmD68w13GPdHwWJXdmn89+u4N7qcwfH/aXvsLP9YYrtDA180Hc0XL/YP/nj/tzH/X2dOe4f1/ZYPoRrvvYTuH5suGF1BffOcH59BfewpdsDf+R+ntAtUMqtn9ajtpTbPV1/toTbfQu/rIw7dMs9YLlv7f5KGffETP7nEm7FzEdhgO/d0eNoCffJHY8Dft8X1Oj+fCf3dUlnqPVDSSxcHy1p1svj75nH79Rxs4s5bquuM1zt1CUS+EjII4z/thP3uW4HCnsM/21nbmcs/1Jn7tvYRwDSFt9tRWfuxU5XftWJ29TpgE5uc8xfo7o9Fc8tj7JDNkq/JZ6riTG8Fc+9GdPth3huQ8x/Qd0dcXpPPPdFHFC/NU7/53juX3FbdKx+/378e3HcxGH7YrkVumFbY7nPozufieG+jT4WRe73S+T9sdy1PRfGchXD/hXDPR3d+aUY7uXo3VG0/gA0tPle3RvR3H7daPCCoiaABO6LGrAkmjsb9fcgnhdqx8xN57jphjNdufm8txvXHNW9uSv3QAy/qyu3JGYzNLMr9pWoV7ty73aa6O/CLe6S/HYX7u0uq6Lk9g3cuyB078bqd8dym2IHXrjP3z+/f37//P75/fP75/fP75/fP79/fv/8/unwpz/b12X7uNv7WX6nyf+HProI6Rtx6vy7mvzeOHU875LLKd+7sfyuB2i+D8sns+cD/TRxvn1ZmsHu99fEEf/rXMCJ6bIo2l4sg2/VW1Txx6fZfTne+LN4mnZh+USW9tKMP1q+WE37l9fEW2PUe/CsOe5y+X4Piwq+t7tFhXcbSztp+j8XoONJZOUDLC/j0cbyTxn+b/XIx55vaT9NjM97WHqYpSdZGpdI094sHcTSUSydyNKbWFrM0rksfYilS1n6EkvfZmkTS/ew9DBLT7I0rg/rn6WDWDqKpRNZehNLi1k6l6UPsXQpS19i6dssbWLpHpYeZulJlsYxO9ibpYNYOoqlE1l6E0uLWTqXpQ+xdClLX2Lp2yxtYukelh7uG15OJmVljTEmT5/trpDcxozUEalpQ01ukjPdZ8pITRuRQqFcYVlBxRzjXIerCsOVTWmp8G/oCFXR1OHG88pKNFiFjChLGHgUlx8WHs1JYeExQT1Xw2OD+q2GxwXtgBoeH1Z/okE7Zb1TwzsF9VcN7xzUczW8S9DeqeFdudVh4d2C86ManhC0k2o4zx0ICzdwlUvDwbtzMx4PB+/B4SOi9vDLgvZYDe8ZtMNqeC/OEhbeO6ydiAYr6VsVDp4YtLNqeB9u9Rvh4H25hrDwfu1gxzg8m/JjIPz81p4OlzF4iQY+kMHxEY3yk8HgQzTwGxk8XwO/g8ElDfxPDL5GA6+V8XxGDV/K4Fs15VcyeKWm/LsM/poG/jGDH9XA95M5LySfAxj8ZwafdR+Fn2UTI56vJOUdariLweXn+gNZO88zuBxfIMM/l9th8QBXMDi+fRnhy1l8w1Q2Mf6BweV4BrmdOgavnE7hR+TpnMFzZ1H4lcxx+ZLBG8rV+PeKZu0UqNufwOCr51H4GobPRwyey8a1lJU3xqDM9eV2vjlL5S9NjmHtMH/5LSpQ3AoGb6ik8O+ZQzMjluFzN4X7GJ6D4xhfbqLw55lD9D6DG2ZS+Bjmv9waT+EWxpd+rJ0XGXzWnWw+YvDWeIr/Dg3+ZwmcD8ZxyP7MED2Fy/EkMtzO4BYN/L8YfIYGvpXBKzXwnxk8WQO/uhOFy/EmQxh8GoPLcTrDZDlh8Ac18LUMLsfjDJftCYPL8TjJsr/amcLleJ/BDC4wuLBUXb6awfc+poa/yuCrNfBvGHyhBt65S3j71qsL46Nm3XU5gy/RwAczuHadZulC+b5dw/epBN5+XpjL2pHXf/LnQVK+/fwSCf9nSfnuXH6YeSpc+VVd6OpBOw9uJO20n48+7EKtvRb/rxhci+dx0k77eSq2K1rP9p/ECHBTV8SyT7v5KwPg3RXzqUznaRHaeaI72JQw8+PLEco3k/ZD/oN8XnNPhPJHCBzsBuPjX2U6RCjfs1t4+A0R4I9FgK8EePeoPtxazbjejlB+bzecm3pxAqPbAgbvkRC+/NAIcCEC3BUB/kwvhLf30/6K5aPA/jM9kteNr0ZoZ30E+FV8eLg5Avzp7pRfRtavHCuWE6F8QQS4JMP7qMf1ZITyr/GU/lsZ/eUVQZfLsHx7f/gsT/mrlX+9IXz7jgjwpRHgrRHgXPfw8B4R4KO7Y5WQn2lgCjmlOx2vj413BitfE6Gdx7tTfdfq6eddEN6X2/umGv5ChHbWRoDv6U7b0dLzYITyvXqEh/8pAnxpBPjxCHDdZVQOZzG9cMjkvyyCHEaASxHgOyPATT3DwycyeK5mnTUnQvnmCHBDr/Dw5AhwSwT4o70ofbY/oLYPL0QovyUC/FAvKodyvLG8bxbVO6SDKvHvTdvRxvuO6k3byWXtyH7ULQxe8rrarr7YOzw+TQx+QLuenZSVZXeQqGm7hAcu0tpBTO0hYUAj2oNGtQeNbg8ytwMNbw9pj1V6O0h7DEZzwVjoKvdsu2gvTi2srOTst3Y8SjpruDg50zTSXmi1WrMrp92Yb7/46sPNl1o9O80698IV1JHvl1RneIfqqEL3cWhT8kz29CrJZb2I4alb6RC22EXWcGvujYUXLDoCj+t3aDjyGQfKolEXwyK5aoeQH81O0ohlSK1R9ISMOLkMaQZ9T7sxb6SdEHL46PMcf8HS027EYiaT4qCSmG+fnF2Zn2aH2+fDhBybNqWFjk2LedIoelJenJKXZg/R2ZpXIAJGSIzzUzFjtru0TCqtqBoxxVnhIL3faDLZ7ew8i714RHkBnioWL8xb6AyRGIEAGJHVZHI5qtxloMUAsE7NG22nrUdoh9BjNDskahpe5ShwFZZUOV2Sowi6nzwtNEAlL0ZqeGGdhkl2fmFZlUvTtlXdaFUllgHEi6yji52ueSDLiHVxJaFa5dS8rIvAd1SBa045odPkEJ6mtNBJWcIfc/Bwj1wvHSyadTIO47yDysu2kzTCwFjvFxzRxPOOKCgKyEwZwZFVlWWlknpcQVuhRkZV30orXhCljI6hRAyCjFMGvlChrLTCoZELUuh8iNECweoXRM7cMeRkvEaUVkh2wGlaO1KVTaX2SKGuF1YnVOF0QMVc6a4qsc8uKLwTlCgd28mTbBl2e6kTj8pCNl+8mPNCHSivPYTVkSqaA2EdqBLm1NmFa4XOtF24rFk9hLyLpFLexVMp7+KplHdJVMq7CCrlXRSVbrpIKt108VS66eKpdFNHx1vokqokdzG4iFyRw+WYU1olOVx2qRz0Eua3Ks5uL3La55Q5ZxeU2YtAEavsBe5qrtBZXlnmgEkhdbTZPDp8IXsxqBt9UYgdeOGazxW7Csod9iJ3efl8qKLI2VExVUXt9onTMnOsduuUbDtosH3SlOl2q8CAQvY0zp59y5TMHDEL7qkqF6kBVVKBSwr6w1MnTsyz5tvzMyfYrHauWHKUlVksk2zihCz78NThqSOJyXGmV7olayG7MWOGPT11BGd34OtniCkZXeGEqd45T1MAjdVo9oYm03Dlm27EwjzJZMLXNNklVwHYeLEQbRV4XmZ7jp2+UQq9vHJVi6nDTbTRjFJnlR3fWoSeiaZTcaqdvGXM7q5yFHHQXZmjQj0i9EY4RKvAzt7042CLBZAuiwVaypwg2k2p6WRsw9PsdjI4OzQ0RyqxO1BKALf/1GCrqkrnVIBLlzfC3m605Y7yKoekYYi9qMppLwHxLnNAt0VluXOhsmRmPLBLWsTyb4L+RwYxchSUz3YXh0PKqqmJuDlckr24oDScUIwsLoNZpR0DgGYmc5BmzjnQawSSERYUuxwRyV9UBh4q4xCIrQRNVZY6kCqFlfNDGJm05DfTwTop/emYI3Mhy2SFW+l2EYRqKkheubPI0V7uqLxIjupSLT8IC9RDKyavDNOWq5hXHkZoTOkuN3j7oPiETNkmLUVnF5ZXapvKz7/08VrDDC4/J0s2LMi/UXbSGDQDlgNlIKy4TEPkQ11jp2BJYAmSN8qeeyP4GWXqnszEFcqTRhYS/77QCkTPsc8rLXJUEAOlGXiqyXRpagV2XvHGLWt5YbsBF+OLtdQ0RTnUUplSgkry7IIie2FBlRRG3EcUOt1htG6KKY0gXjC7dK4JzUhVKUwhoFNkNQMjLnZaVfJeTsxRO20HK8uMNgxIcoZRRWkUKgksd9vJjt0+G/pjJh+t2Qh5PICy3Vlsp2/EKS6XQD3v0tApjfHroumfDvNcEUx2rirsgxjyC1nyESIIQFZ7/C+J/2nAf5ejsqwAlsvl5WHnkWKHs1hL6bLS2YX2wiq3nTnFl9D1aPbOPWuYHuc4pKowvNPoP9AAl/cX3bM1HIEvhXmjCPNATiU7TCmR+QdWuNw5V6sz9jnV1XZYolY5Kwpg8TbfPjdNM6VeElKjFRJ1XqwISZk9BNkKa7dGFpbBIh6N/nBi9OEPJhdHuNmJuTXKAUyvmIe4THNUucuxTlYWlE+7dAegEAyn5LBOCzeYkEii58gG51Bu1mmRJhWIvtvRz2k3b4jKBrSV55Q7K1hlO+NUqPCIeSUFUnv9xBY1IhzGFCpIM1JJmgieSGSRhjn0/N5OO6PS3ihyqVXzy6WC2ZCCQSVpiXwF62+Hq5JLhfYdqcDzoVLBHJabU+FOxfV60dDSIo7kSgqqSrjUovkV0B5NJRe9w8LxVBk73AN3pgALsqvKMgm7BGuTCp4FfBM2p7qcxLVOdZSwJUFJkSuUg0YLC1Xb27QN6t/TNuRrbAe7giYJggXlpYVQ3ymRL9o/7QvmCS4VFjG4SPxPxJ/2Y8/G5ecmcnxhBgP0jxDHLH+uYbG5cn05DjGfAYztYg00z5k09eV4RYkBki5QH8+RnwwEnHJ9Oa5xGQPMlOMKNPHO8mcKi12O0sQ3n2aA7axiHBu7XhNnfBOLKY7SxEtv1avjoyPR7w4WmyzXl+Mpn2IPoO7R4K99X/SdLNZZzstxl4ndab6BC+EfHWb8dzGaRmniq/d2V8dXa+mXqIinw/oTNPHaW3uo47tjWR1t/cWMJnGa+PYll6vjwCPx36OpL8eFrmYVLdGa546a9FFNfTk+r40FzB8sDl8/+BxfU1+OX9j1gDouPRL+yzX6J8eTHGD1l/Q8f/8rNPXleJ1KFih36AL9v62pL8e3znhcITjKuAJN/QZtfRZfNONphn/U+fvfydF3k0drzi8kvxZ+vNr3n38Df7yivhx/lPFaeHy19Y8w/OX6cryQhdVfoVFYrT07pdAtZTy/73W1omrf325QGARl/3I8r29Vx8Yfq6kfjKdazRLd+esnaOrLcRWr3zh//8E4JR2FyfXluIkGVj/xAvTrw/pP08oVq5/bgXM04d6vYHiT9ccGgHGvs8LYn05K2ik+aRtp2tL7/Pa7e4T6/b5g8ZO689f/f73YlO8A4gAA'
    bin = gzip.decompress(base64.b64decode(gz))
    with open(pymain, "wb") as f:
        f.write(bin)
    os.chmod(pymain, 0o775)