Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
QuadDraw revisited - drawing program work in progress
#4
(05-30-2022, 11:09 AM)euklides Wrote: Nice ! Just missing the screen recording option (jpeg or bmp...)

Thanks.  Okay, I adapted a quick BMP saving SUB that was in the wiki.  Press S to save screen as QUADDRAW.BMP in current directory.  I fixed some paint/drawing issues, added a color picker, and a better looking menu.  I will add later a better file saving method so you can specify the name of a saved file.  When you select a color, then random fill color is turned off.  You can turn that back on again by pressing R.  

I'm just out of coding time for a while - so here's the latest version as it is... 

- Dav

Code: (Select All)
'============
'QuadDraw.bas v1.5
'============
'An odd little drawing program.
'Draws/paints in several areas of the screen at same time.
'Coded by Dav for QB64 MAY/2022

'NEW FOR v1.5:
'               Added ColorPicker for Fill color choice.
'               Added R for random fill color toggle on/off.
'               (when picking a color, random is turned off)
'               (turn random color on again by pressing R)
'               New menu now using built-in image one.
'               Fixed a pesky drawing/fill bug, finally.
'               Smooth SUB tweaked, change it to PRESS A
'               Now can save image as QUADDRAW.BMP file.
'               PRESS S to save image in current directory.

'CREDITS: SPAINT SUB was made by Petr.  Thanks Petr!
'         text SUB was made by bplus.  thanks bplus!
'         (bplus helped me out how to draw lines without gaps too)

'----------
'HOW TO USE:
'----------

'Left click on mouse and hold to draw on the screen.
'Press 1,2,3 or 4 to set how many areas to draw in, default is 4.
'Use the +/- keys to change brush size (1 to 50 allowed)

'Right click to fill/paint the areas with color.
'Default fill color is picked randomly, but you can select one.
'Press C to select a fill color (doing so turns random fill color off)

'Press R to toggle random fill color on/off (default is a random color)

'Press A to smooth the screen using AntiAliasing.

'Press S to save current image as QUADDRAW.BMP in current dir.

'Press U to undo last change made to image.

'Space = clears screen and starts over.

'ESC = Ends program

'================================================================

DIM SHARED quads, brushsize, randfill, menu&

menu& = BASIMAGE1&

SCREEN _NEWIMAGE(1000, 600, 32) '_DESKTOPWIDTH * .75, _DESKTOPHEIGHT * .85, 32)

centerx = (_WIDTH - 200) / 2
centery = _HEIGHT / 2

wht& = _RGB(255, 255, 255) 'used often, so variable it
blk& = _RGB(0, 0, 0)
fill& = _RGB(RND * 255, RND * 255, RND * 255)
brushsize = 3 'size of drawing circle (brush)
quads = 4 'start with 4 drawing sections
randfill = 1 'default is use random fill color turned on

CLS , wht& 'start with white screen

_DELAY .25

undo& = _COPYIMAGE(_DISPLAY)

'====
main:
'====

_TITLE "QuadDraw - Quads:" + STR$(quads) + "  BrushSize:" + STR$(brushsize)

DrawMenu

DO

    WHILE _MOUSEINPUT: WEND

    mx = _MOUSEX: my = _MOUSEY

    IF mx <= (_WIDTH - 200 - brushsize / 2) THEN

        IF _MOUSEBUTTON(1) THEN

            IF stilldown = 0 THEN
                _FREEIMAGE undo&
                undo& = _COPYIMAGE(_DISPLAY)
            END IF

            IF stilldown = 1 THEN
                stepx = lastmx - mx
                stepy = lastmy - my
                length = INT((stepx ^ 2 + stepy ^ 2) ^ .5)
                dx = stepx / length
                dy = stepy / length
                FOR i = 0 TO length
                    FOR d = 1 TO brushsize
                        newx = mx + dx * i: newy = my + dy * i
                        CIRCLE (newx, newy), d, blk&
                        IF brushsize > 1 THEN PAINT (newx, newy), blk&, blk&
                        IF quads > 1 THEN
                            CIRCLE (centerx - newx + centerx, centery - newy + centery), d, blk&
                            IF brushsize > 1 THEN PAINT (centerx - newx + centerx, centery - newy + centery), blk&, blk&
                        END IF
                        IF quads > 2 THEN
                            CIRCLE (newx, centery - newy + centery), d, blk&
                            IF brushsize > 1 THEN PAINT (newx, centery - newy + centery), blk&, blk&
                        END IF
                        IF quads > 3 THEN
                            CIRCLE (centerx - newx + centerx, newy), d, blk&
                            IF brushsize > 1 THEN PAINT (centerx - newx + centerx, newy), blk&, blk&
                        END IF
                    NEXT
                NEXT
            ELSE
                FOR d = 0 TO brushsize STEP .2
                    CIRCLE (mx, my), d, blk&
                    IF quads > 1 THEN
                        CIRCLE (centerx - mx + centerx, centery - my + centery), d, blk&
                    END IF
                    IF quads > 2 THEN
                        CIRCLE (mx, centery - my + centery), d, blk&
                    END IF
                    IF quads > 3 THEN
                        CIRCLE (centerx - mx + centerx, my), d, blk&
                    END IF
                NEXT
            END IF
            lastmx = mx: lastmy = my
            stilldown = 1
            DrawMenu: _DISPLAY
        ELSE
            stilldown = 0
        END IF

        'if right click, fill sections with random color
        IF _MOUSEBUTTON(2) THEN

            _FREEIMAGE undo&
            undo& = _COPYIMAGE(_DISPLAY)

            IF randfill = 1 THEN
                r = RND * 255: g = RND * 255: b = RND * 255
                fill& = _RGB(r, g, b)
            END IF

            _DISPLAY

            SPAINT mx, my, fill& ', blk&
            IF quads > 1 THEN
                SPAINT centerx - mx + centerx, centery - my + centery, fill& ', blk&
            END IF
            IF quads > 2 THEN
                SPAINT mx, centery - my + centery, fill& ', blk&
            END IF
            IF quads > 3 THEN
                SPAINT centerx - mx + centerx, my, fill& ', blk&
            END IF

            DrawMenu

            _AUTODISPLAY

            WHILE _MOUSEBUTTON(2) <> 0: N = _MOUSEINPUT: WEND
        END IF

    END IF

    'get keyboard input
    key$ = UCASE$(INKEY$)
    IF key$ <> "" THEN
        SELECT CASE key$
            CASE CHR$(32): CLS , wht&: DrawMenu 'scpace clears screen again
            CASE "1": quads = 1
            CASE "2": quads = 2
            CASE "3": quads = 3
            CASE "4": quads = 4
            CASE "+"
                brushsize = brushsize + 1: IF brushsize > 50 THEN brushsize = 50
            CASE "-"
                brushsize = brushsize - 1: IF brushsize < 1 THEN brushsize = 1
            CASE "U": _PUTIMAGE (0, 0), undo&
            CASE "A": Smooth
            CASE "S": SaveAsBMP "quaddraw.bmp"
                back& = _COPYIMAGE(_DISPLAY)
                LINE (275, 200)-(550, 250), _RGB(96, 96, 96), BF
                LINE (275, 200)-(550, 250), _RGB(255, 255, 255), B
                Text 312, 217, 22, _RGB(0, 0, 0), "QUADDRAW.BMP SAVED!"
                Text 310, 215, 22, _RGB(255, 255, 255), "QUADDRAW.BMP SAVED!"
                _DISPLAY
                _DELAY 2
                _PUTIMAGE (0, 0), back&: _DISPLAY
                _FREEIMAGE back&
            CASE "C"
                new& = ColorPicker&(200, 150)
                IF new& <> 0 THEN
                    randfill = 0
                    fill& = new&
                END IF
            CASE "R"
                DO UNTIL INKEY$ = "": LOOP
                SELECT CASE randfill
                    CASE IS = 1: randfill = 0
                    CASE IS = 0: randfill = 1
                END SELECT
            CASE CHR$(27): END
        END SELECT
        DO UNTIL INKEY$ = "": LOOP
        _DISPLAY
        GOTO main
    END IF

    _AUTODISPLAY

LOOP

END

SUB SPAINT (x AS INTEGER, y AS INTEGER, clr~&) 'Color everything in the X, Y position regardless of the border color.
    'SUB by Petr
    DIM m AS _MEM, m2 AS _MEM

    m = _MEMIMAGE(_DEST)
    W = _WIDTH(_DEST)
    H = _HEIGHT(_DEST)
    P = _PIXELSIZE(_DEST)

    SELECT CASE P
        CASE 4 '                             image is 32 bit image
            Virtual = _NEWIMAGE(W, H, 32)
            m2 = _MEMIMAGE(Virtual)
            Back~& = POINT(x, y)
            Back2~& = _RGB32(1, 1, 1)
            Empty~& = _RGBA32(0, 0, 0, 0)
            DO UNTIL a& = m.SIZE - 4
                a& = a& + 4
                IF _MEMGET(m, m.OFFSET + a&, _UNSIGNED LONG) = Back~& THEN _MEMPUT m2, m2.OFFSET + a&, Back~& ELSE _MEMPUT m2, m2.OFFSET + a&, Back2~&
            LOOP
            d = _DEST
            _DEST Virtual
            PAINT (x, y), clr~&, Back2~&
            _DEST d
            a& = 0
            DO UNTIL a& = m.SIZE - 4
                a& = a& + 4
                IF _MEMGET(m2, m2.OFFSET + a&, _UNSIGNED LONG) <> clr~& THEN _MEMPUT m2, m2.OFFSET + a&, Empty~&
            LOOP
            _CLEARCOLOR Back2~&, Virtual
            _PUTIMAGE (0, 0), Virtual
            _MEMFREE m
            _MEMFREE m2
            _FREEIMAGE Virtual
        CASE 1 '                             image is 8 bit image (256 colors)
            Virtual = _NEWIMAGE(W, H, 32)
            m2 = _MEMIMAGE(Virtual)
            Back~& = POINT(x, y)
            Back2~& = _RGB(1, 1, 1)
            Empty~& = _RGBA(0, 0, 0, 0)
            DO UNTIL a& = m.SIZE - 1
                a& = a& + 1
                IF _MEMGET(m, m.OFFSET + a&, _UNSIGNED _BYTE) = Back~& THEN _MEMPUT m2, m2.OFFSET + a&, Back~& ELSE _MEMPUT m2, m2.OFFSET + a&, Back2~&
            LOOP
            d = _DEST
            _DEST Virtual
            PAINT (x, y), clr~&, Back2~&
            _DEST d
            a& = 0
            DO UNTIL a& = m.SIZE - 1
                a& = a& + 1
                IF _MEMGET(m2, m2.OFFSET + a&, _UNSIGNED _BYTE) <> clr~& THEN _MEMPUT m2, m2.OFFSET + a&, Empty~&
            LOOP
            _CLEARCOLOR Back2~&, Virtual
            _PUTIMAGE (0, 0), Virtual
            _MEMFREE m
            _MEMFREE m2
            _FREEIMAGE Virtual
    END SELECT
END SUB


SUB Text (x, y, textHeight, K AS _UNSIGNED LONG, txt$)
    'Text SUB by bplus.
    DIM fg AS _UNSIGNED LONG, cur&, I&, multi, xlen
    fg = _DEFAULTCOLOR
    cur& = _DEST
    I& = _NEWIMAGE(8 * LEN(txt$), 16, 32)
    _DEST I&
    COLOR K, _RGBA32(0, 0, 0, 0)
    _PRINTSTRING (0, 0), txt$
    multi = textHeight / 16
    xlen = LEN(txt$) * 8 * multi
    _PUTIMAGE (x, y)-STEP(xlen, textHeight), I&, cur&
    COLOR fg
    _FREEIMAGE I&
END SUB

FUNCTION ColorPicker& (xpos, ypos)
    'ColorPicker& Function by Dav, SEP/2020. FREE TO USE FOR ALL
    'Function Returns color picked by user if one selected.
    'If no color selected before Closing, function returns 0
    'Click CLOSE to close the ColorPicker image.
    'ESC key cancels selection and closes picker too.
    'The xpos/ypos is x/y point on the screen to place colorpicker

    '=== Save users display status
    DisplayStatus% = _AUTODISPLAY

    '=== copy background screen using _mem (thanks Steve!)
    '=== Used this method because_COPYIMAGE(_DISPLAY) didnt always work
    DIM scr1 AS _MEM, scr2 AS _MEM
    scr1 = _MEMIMAGE(0): scr2 = _MEMNEW(scr1.SIZE)
    _MEMCOPY scr1, scr1.OFFSET, scr1.SIZE TO scr2, scr2.OFFSET

    'Create Colorpicker image
    v& = _NEWIMAGE(463, 239, 32)
    DIM m AS _MEM: m = _MEMIMAGE(v&)
    A$ = "" '...COLORPICKER.PNG encoded by BASIMAGE...
    A$ = A$ + "haIkMo7KDGOh77_oaBfFFfOhBL9c5gGWaX9BRK62K46AkHnS9I=`09EP<4V="
    A$ = A$ + "e25F]0eB;]jK;#YFXUEJQJGM573`644fjGM:62H66L42I^89^HF<co`T]oHo"
    A$ = A$ + "anW]TUUk;O2BnLONnmjek3L7m>li;cS4;]LohSGjC_[gM=C6WciL>WciL>Wc"
    A$ = A$ + "iL>WciL>WciL>WciLOFMgBE9=CX6XN80S0C0W7n48C2O2LNH2H480e3e0c4^"
    A$ = A$ + "5XZHUa7hn4hl`4`8#0Z7Z1V9L;#boQOFngVWjlLWGjhUNN]SGkiAW:SK^U[]"
    A$ = A$ + "lUDW:cUmbnoNZbCf>]MJkdfYVnIk\bR]CKWf>o\CkdEn=KWEVBc:SC0I:[oV"
    A$ = A$ + "IUa7h\MJkd=m>KWEVBc:SC0I:[oVIUa7h\MJkd=m>KWEVBc:SC0I:[oVIUa7"
    A$ = A$ + "h\MJkd=m>KWEVBc:SC0I:[oVIUa7h\MJkd=m>KWEVBc^e?go9QI1;0NB80_0"
    A$ = A$ + "LLhL`73oW4nHhL`aQG02`C2;0V5L[`W;f]2c2F0lT#0N1hh`iP?6n?anHhL`"
    A$ = A$ + "aQG02`C2;0V5L[`W;QK5V5\0h9Q0l2`aQc1O<lORma`iPS3_04PW4F0<;hFQ"
    A$ = A$ + "?G\2mk?k:?V]c:CYIf>]MJkdfY[h>KWEVBc\MJkdfY]CGaMf>[<UVIkdfY]C"
    A$ = A$ + "KW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>]Mj:^cfIUYd<KWf>]MJkdELW"
    A$ = A$ + "]c:CYIf>]MJkdfY[h>KWEVBc^]_ho:QI3;4J02```aPc2O4l_BhSPc273662"
    A$ = A$ + "#3`2QI3g6l5SMK`\Q52=01HHhH`IQ?2nGan8h\`aPQQ0d0\#Hf`]1Oa4^=Hf"
    A$ = A$ + "`2Q6P0<<L<h\`71o[HO4LFhH``#0J0F8<KhfP_H\2mk?k:?V]c:CYIf>]MJk"
    A$ = A$ + "dfY[h>KWEVBc\MJkdfY]CGaM5[fiMOgIbl\?KV<o_o_IbLZC5[gNcTiaOl<I"
    A$ = A$ + "^iK>oom_okObmoloDhG>R>OR>oR>O_J^LT[C[X[GIOJ59j?Knc?oWNAG^cge"
    A$ = A$ + "[LY#_lUVIkdfY]CKW^Rk^FKWcJFIbl7n35fie#3=i]Ql]X>EQdifgn:\;7AO"
    A$ = A$ + "Mi[A5miR>?oKo]Ynd:j[Ib>mR>=BkRjWf>]MJkdfId\MFn^[UfiBFBj?onX?"
    A$ = A$ + "jbg7eRIk<jngmn_Oj^L4meW[NGdOFJ?]V\[Gf>]MJkdfY]cK<gEKk<ja[lZM"
    A$ = A$ + "AM6f]bgVZfiEC[;JAomhYEQNOGceR^ogf>]MJkdfY]cKlgEKk<ZoM]<f3CcG"
    A$ = A$ + "KfRniAN]\XonIOO>_FGfo\I]MJkdfY]CKWgH^[VfiDMO>GcJ^L38jiDcT=NO"
    A$ = A$ + "nbgbGk<OgWcX?GdUSXWoB5bUSX_f9KAoL=Sj\AGgcgoO3AOnb]fiMlUoW9<7"
    A$ = A$ + "HA#3#066>:l>`72oc4n#hMPS2331X1HA`LPk0nba^3H>`RP6P0<<LDhMP?4n"
    A$ = A$ + "Wan#hMPS2331X1HA`LPk0nb9L7`LP51=01HHhX`k0O8l?SmQ`k075662#3`R"
    A$ = A$ + "Pi0g1lUSU[Ik\lMG=]cle4Rj:5JS]Hd>cg^B7[#_L\a=>iO=A??M;T[oIOIM"
    A$ = A$ + "ZJWAONZ#O>5WVIkdfY]CKW^Rk^JJWikna5MO=;Tk7Gdb^CT_=I]cYjaHm:g7"
    A$ = A$ + "^2mbAaX9VVfIQd8]MJkdfY]CGig^JJWikaR==]c\Ol9cgV\fIQNjGXOMi[e5"
    A$ = A$ + "mL8bfY]CKWf>]MjRV]c2[M6][lJ#9j[?G?N[AbnjT]CKWf>]MJkl6cIk<n[["
    A$ = A$ + "#NMg4mlPZ#kKf>]MJkdfY]cK<W]ch_^XO^W5bRNMLV[gO7\MJkdfY]CKWOfH"
    A$ = A$ + "f>CNiX#Oo5<JCem1MZJWlm8g\?fE<KWge=m?BhnP53[62`NQS0_=l1`o8Q?0"
    A$ = A$ + "NKh8`NQ0\JHa`m1g5LCa^;hnP53[62`NQS0_=l1`o8f70_=L4H_#0F=\HhnP"
    A$ = A$ + "k2^Y4^;hnP53[62`NQS0_=l1`o8f70_=L4H_#0F=\HhnPk2^YHiJf>;OGY\M"
    A$ = A$ + "6mlP]#OO??OkjIk<jnNF8_?fNU5eJW\gKL_JNmMJkdfY]CKWGIf>;OGY\MF\"
    A$ = A$ + "N<8_Nf>S4mhaVVniTmNd[]CKWf>]MJkl6cIk<g_GnTfgOiSJ]5Sg;h]MJkdf"
    A$ = A$ + "Y]c[<KWU_cfInOO`;jgKJ5jRjWIohgJkdfY]CKWf>_aLf>Wjg3ISnMDJQnNO"
    A$ = A$ + "OJN_A`W[#f>]MJkdfIUiliIKQmn_NdmWl`7>oW>A;kgKi;GN=ZHkdfY]CKW^"
    A$ = A$ + "Rk\MVlegiTmn5dEnMEFd___WZW7Af>]MJkdfY]cK\W]c2k[;k[GA?6^iKGii"
    A$ = A$ + "<DiBkL6glO?QZQU0[12`NP33W2^8lgChR`YP33k12`JPU0E3c0^iHc0Z6F2\"
    A$ = A$ + "680k1><L:hR`O?f5QC176f34Pe0;1Z6V1Lc9<3XJH9`JP0\7h``YP;2omHG4"
    A$ = A$ + ">5LHH?#0F3\4XJH6`=7;GcfIik\MVnfITlMO?;dgOL]MJkdfY]CKWEVKjlg1"
    A$ = A$ + "IIoJj8O[L\MV_oo7\MJkdfY]CKWgH_Rm_k[CCk\#K1UjOoMF8GN]MJkdfY]C"
    A$ = A$ + "KW^[\[Vfi6ghTOj5mHIVf_^YZ54mj3Q_F>^bmI=Ok:?oNbgUSXE8G>R^<TMc"
    A$ = A$ + ">O?V]5j?_cLmJD9jeCZ]CKWf>]M6=KWU_kZYM6e6bgRN<MSj6i[_4meLef2R"
    A$ = A$ + "fE^_Mika?>je;BJ_LT_G7WGijeDmn=DQLocW\EX_6?Cc\MJkdfY]CGaMG=]c"
    A$ = A$ + "YZaD8;jiZJaXM>E?WGCkUS[VNGf;kF\]CKWf>]MJkl6cMef>_FJFijaU<];k"
    A$ = A$ + "WS^5bkI1iJAombe?3edln0?Gf]HKWf>]MJkdfi=VkZ]M6Y#NO2PKbNNoTfag"
    A$ = A$ + ";PBKo<GMc\O<YCck3lA;jh`lWoenmQ]Dd>_WKiCBHN#]#S#06267>9lN`WT`"
    A$ = A$ + "k1W467622#S#]`lPk1^UHg3<?XFXA8031S3W4N?hCRmN`9QaQQP0d8D;<?hN"
    A$ = A$ + "PK9Qk1V7D;d84PQPaQC2_7l9aN?hT`h`##0J4Z5V7L?`]4;GcfIik^FJWARN"
    A$ = A$ + "_hIOkKZKXAoN^T?nX5cfITXWK#CEc;jcOUW3ACUXWSACeS=MdekNk=go>ldf"
    A$ = A$ + "Y]CKWf>]MNSi^FKWI;ZW5eKbnmb^Xk;fTmk6jBUXNNdi;_L4mWG\>mRj_ijg"
    A$ = A$ + "IWG_TVIkdfY]CKW^Rk:V]CIkdfY]CKWf>o\`\MFI:=cfY]CKWf>M5gIk\bDJ"
    A$ = A$ + "V]CKWf>]Mj:^cfIUYd<KWf>]MJkdELW]c:CYIgkgh_V`32?6\F8032_<L2h2"
    A$ = A$ + "`O=Q;0W0NIH#80[5N<h1Qk5n6a^Gh1Q73F;4P1QG6>1L1h_6k2`9PG6642`J"
    A$ = A$ + "Q73N#hNQ_A2g;lP`S1[52`P`;3W0^0lGSM1h4`;3321H]`S1?8L_`g8FQnmW"
    A$ = A$ + "MU7cfIUYd<KWf>]MJkdELW]c:CYIf>]MJkdfY[h>KWEVBc\MJkdfY]CGaMf>"
    A$ = A$ + "[<UVIkdfY]CKW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>]Mj:^cfIUYd<K"
    A$ = A$ + "Wf>]MJkdELW]c:CYIcjfo;9l``bPe21H#hP`K0W3n;9L>h=P32321H]`bP76"
    A$ = A$ + "V5LkaV5l``bPe21H#hP`K0W3n;a>7l6`1Q1Q0\FHI`33c2^m4V5l``bPe21H"
    A$ = A$ + "#hP`K0W3n;a>7l6`1Q1Q0\FHI`33c2^mH5jgOfEN<KWEVBc\MJkdfY]CGaMf"
    A$ = A$ + ">[<UVIkdfY]CKW^Rk\MFI:=cfY]CKWf>M5gIk\bDJV]CKWf>[\KWZlU]c:;f"
    A$ = A$ + ">]MJkdfYVnIk\bR]CKWf>_a_MjL^Y_IkdfY]CKW>W;MKfgiO>Qi3;7F74PM3"
    A$ = A$ + "70N=h\`O>Qc2_6L0Hg#0F7\LHn`\Qk<f\Qi3;7F74PM370N=h\`O>fIQG3>0"
    A$ = A$ + "\K80[3F><OHf`MV`\Qi3;7F74PM370N=h\`O>fIQG3>0\K80[3F><OHf`M6c"
    A$ = A$ + "iLUGcfY]CKWf>M>GjV]CKWf>]MjL^d=KWf>]MFif>o_ogoKVgomOo9eOj?mW"
    A$ = A$ + "bLQ;LQ<WolWOBm^_kkVigokomCZCNbCVi]N[gJBMRCLR<ofOk_MBmKn=oV<_"
    A$ = A$ + "j[nZI>lQ?L>=nhSWiGo[oeInEoZOeTJ\a6;c_hGl;b<b8S<Y6L`1clcoiolL"
    A$ = A$ + "JGkJGIjYWNb[]^e]ViIOfW=_J_mfcdJ[]VC]dB;IJZYVblcnIo\LJM[KMIFc"
    A$ = A$ + "JFCVj[_n9EMeEGVE^bEViWlCn9idBGjBc\TU\TlJ1;H1InAoXODNm0?`3TCo"
    A$ = A$ + "PO`?8cgokomclmnNO_9eLVcLblMn>OW<cLVcLBm]ofOk<cH6c8cMOggM>MWG"
    A$ = A$ + "jkQNkgn]?YnVOc_IV_nGo[Wi[menJCZ_jGm[Vi[lEn:I^YKjVbY_dGj;Ui;l"
    A$ = A$ + "5n2CZ?oWocWYZZZ:QomonOKkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]"
    A$ = A$ + "MJkdfY]c:`fiLWa5CX6H5#C#060f?<1L6hR9L6H2Ho`0#0J2F1D3<GH6aV;D"
    A$ = A$ + "3\2X98030k7V0>3LaHW1V0f?<04PVPE0e0c5VA2c5Z1F1d44P1Pm3C0W1^H\"
    A$ = A$ + "c0C0k7602#C`:PJPi2c8V]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY"
    A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]M"
    A$ = A$ + "JkdfY]CKWf>]MJkl6[fimo]nS9\0HU`C11HG`nPS3W6nS9LJhh`nPM11hYPE"
    A$ = A$ + "2;0^OhK5knQ50[4N:80k2f7LLhd`O<fYQS3k3f54PW2F9\0hnQ_E2g?\0HU`"
    A$ = A$ + "C11HG`nPS3W6nSa>=LLHO`^P0lD`:Q50g?l]RIkdfY]CKWf>]MJkdfY]CKWf"
    A$ = A$ + ">]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY"
    A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>_aZM>_INn4F4\:XI80m3S175>9Ln"
    A$ = A$ + "4>9LDH<XO80=3[2F4<?HVaV7\8HE#c#0j763>:LBhla>9LDH<XO80=3[2F4<"
    A$ = A$ + "?HV9<?HA`ZPVQ0d?<6LDhT`iSMBhX`H#o#0J6F5\8HN`<SIkdfY]CKWf>]MJ"
    A$ = A$ + "kdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKW"
    A$ = A$ + "f>]MJkdfY]CKWf>]MJkdfY]CKWUk]c7jkn^9lX`C0=31XOh5QG1NChMCh=QG"
    A$ = A$ + "1NAXO80=3?1lX`31OgH?4lX`C0=31XOh5QG1NChMSmV`[0_8d?4PVQW0NDhQ"
    A$ = A$ + "P_K2?4lX`C0=31XOh5QG1NChMSmV`[0_8d?4PVQW0NDhQP_K<KWf>]MJkdfY"
    A$ = A$ + "]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MFng>M>gdc\MJkdfY]CWcU^Ikdf"
    A$ = A$ + "Y]CKW>W;McfY]CKWf>M>GjV]CKWf>[#KWQB\\fY3UF9_NEEYedd1a#VZ:YBN"
    A$ = A$ + "NEJoWYYK6V94:]BcNTiNV4Z5Z3F?4PnPAQaQG7>C2_><><:d74Pe3e1e2?2<"
    A$ = A$ + "gH?2D;D7\N80m1S2S3_>LVH_><><:d74Pe3e1e2?2<g4N4XFX>Hm#0j36567"
    A$ = A$ + "NMh<aNMHLHDX?80[7Z3Z5N4H^abi^>n=]\MN]O#dfY]CKWf>]MJkdfIj>8Jk"
    A$ = A$ + "dfY]CKWf>]MJk<M74]MJkdfY]CKWf>]MV^3Rf>]MJkdfY]CKWf>Cg1AKWf>]"
    A$ = A$ + "MJkdfY]CKWYkPX]CKWf>]MJkdfY]cdM#dfY]CKWf>]MJkdfIj>8Jkl6[fI=E"
    A$ = A$ + "OZ4F:D?\180k461>4<1LZ4V0>4<2\C80K0Z7F:D3DM\JPU2e3K02`>QAP31C"
    A$ = A$ + "0W:f4`QPAPM21H3#m`BQJPZCX6HY#m`6P0\CH4h#`4`YR=1L8H4HW#0f0D?\"
    A$ = A$ + "DX6XjHiLG7oVFf>_f?8JkdfY]CKWf>]MJk<M74]MJkdfY]CKWf>]MV^3Rf>]"
    A$ = A$ + "MJkdfY]CKWf>Cg1AKWf>]MJkdfY]CKWYkPX]CKWf>]MJkdfY]cdM#dfY]CKW"
    A$ = A$ + "f>]MJkdfIj>8Jkl6[fi2OPg:QU3=0K42`>PQQ3073N[4>6L0HHH7#0f8d0\L"
    A$ = A$ + "HQ`34KQ`bQ6P=21H7```1PS1_E\S17066f14P=2=0;7F8l09\#Hi#3`6Q0\3"
    A$ = A$ + "HHh0`aPg:faP3033k02`6Q6PU3;4NPHiLG7oVFf>_f?8JkdfY]CKWf>]MJk<"
    A$ = A$ + "M74]MJkdfY]CKWU1]CWc=]=KWf>]MJkdiLYKf>]MJkdfYciBg\MJkdfI5Jk\"
    A$ = A$ + "ZB\\fY3QBZTWGEEB=MM#\j;maUB9_FEJoY[>=Mc`<EEEYEJV]CKWf>]MJkdf"
    A$ = A$ + "Y]c<YJf>]MJkdfY]CKWf>cTZ]hOh_;Q77F=d24PNQm2_4L4hgU`APG2f;d;4"
    A$ = A$ + "PFPE3?>\Hh76Ka`S3[6J12#_`NQG2>2lkRM4hUPm2m21X5He`S3;6nQ9\Hha"
    A$ = A$ + "QE3]01XGH_`;171nMa>2lB`NQNQ0d2\JhaQ53o`HiLf>]MJkdfY]CKWf>]MV"
    A$ = A$ + "afY]CKWf>]MJkdfY]c;?KWf>]MJkdfY]CKWf>_>Oc#KWf>]MJkdfY]CKWYkV"
    A$ = A$ + "Qf>]MJkdfY]CKWf>Cg=3]MJkdfY]CKWf>]MV^K6JkdfY]CKWf>]MJk<Mg<\\"
    A$ = A$ + "ZMFK=CT`ZP6QFP0d;<4<6<><A2S3S131m21X5XAHE#]#=aZ5F5d8d24PNQQP"
    A$ = A$ + "aPaQ9R=><6<4d;4PFP6QE1e2eT#]`ZP6QFP0d;<4<6<><A\aQaPQPNQ0d2d8"
    A$ = A$ + "\:XFXVHiLf>]MJkdfY]CKWf>]MVafY]CKWf>]MJkdfY]c;?KWf>]MJkdfY]C"
    A$ = A$ + "KWf>_>Oc#KWf>]MJkdfY]CKWYkVQf>]MJkdfY]CKWf>Cg=3]MJkdfY]CKWf>"
    A$ = A$ + "]MV^K6FFe>Gf?nECX>H]`C31hiQ1QAQ32_J2746564NN80?=\FX>HI`?>fbP"
    A$ = A$ + "jPe2?=4PW76465>8lZa>8<:<8ll#0NJH]#M`bPOL2;3Z3F;ld#0NNH#HDhP`"
    A$ = A$ + "[6kP`X`P`c31hYQe2e1;3naaL>Gie\MJkdfY]CWcU^IkdfY]CKW>W;McfY]C"
    A$ = A$ + "KWEV]cXOdMUBI_Z[:DBUl:FXd:kcZZ[ZT:iE[Z:YbNEERoW4gf8DJUhljBo1"
    A$ = A$ + "UBYIf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWLf>]MJkdfY]CKWf>]"
    A$ = A$ + "MnYA6KWf>;kKW[H97>QjQVPFQ0d3<0<2\Oh`9\OH4H0X780]2=1e3[0FB\E0"
    A$ = A$ + "e3=1]21X7H0H4Ho`QS]OH4H0X780]2=1e3[0FB2[0Z7J2J52#?`0`8`nQ37K"
    A$ = A$ + "o`8`0#?#0J5J2Z7F1\THiJf>]MJkdfY]CKWf>]MnYA6KWf>]MJkdfY]CKWf>"
    A$ = A$ + "]MJkdfY]CKWf>]MJklbgf`fY]CKWf>]MJkdfY]c2Hf>]MJkdfY]CKWf>]MJk"
    A$ = A$ + "dfY]CKWf>]MJkdfY]CKWLf>]MJkLj[M^ZUNX4J0J6f44P]3m333S17:QaPQQ"
    A$ = A$ + "nQ]31HC#c#3`ZPU6KE#3#c`VP0\MXOHHH<h#a6366j7f>4P=1=3=0[2FJ2[2"
    A$ = A$ + "J0J6f44P]3m333S17:fH``#o`fQ0\9XIX1HE`BSU[IkdfY]CKWf>]MJkdfiW"
    A$ = A$ + "6I\MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]c;OK3KWf>]MJkdfY]CKWf>;P"
    A$ = A$ + "IkdfY]c:cfYciVnV]CKWf>]MjL^d]jFanCXAHm#K#0j6j36265fO2S231m1M"
    A$ = A$ + "31X=Hm#S#M`:RE7d8\NX=80M3m131S2k?fX`##O#g#0J3F?d8D7\R4Z3J4F?"
    A$ = A$ + "d64P^QnPQPAQm7KDH8X?XK80]1[7J4Z3FA<WcEN=KWf>]MFQf>Sni4F:Ue2G"
    A$ = A$ + "jS;UbN_DEEEBUlHHEUFI]Z3EEBUlV6EEB==Mc`;M8=DBUVIkdfY]CKWf>]MJ"
    A$ = A$ + "kdfY]CKWf>]MJkdfY]CKWf>]MnoKf>]MJkdfY]CKWf>]MVafY]CKWf>]MJkd"
    A$ = A$ + "fY]c;?KWf>]MJkdfY]CKWf>_>Oc`bZfI3odOI2[3f8d64P^QM0k666nU9<<\"
    A$ = A$ + "KH7#g#0J3f8\>X1hW6[1HM`6QfP0d=\3Hg```_<f``^QM0M31X=HS`jP6POJ"
    A$ = A$ + "2=0[3f8d64P^QM0k666nUa66f=\3XK80]1K4F7d0lCSUcIkdfY]CKWf>]MJk"
    A$ = A$ + "dfI6KWf>]MJkdfY]CKWf>_l\MJkdfY]CKWf>]MJkljl=3]MJkdfY]CKWf>]M"
    A$ = A$ + "JkdfY]CKWf>]MJkdfY]CKWf>]MnYcfY]CKW9W]CKWf>]MJkdfY]cde>K\nAB"
    A$ = A$ + "XIX5XM80K3j5j76269QQPnQNQ]11XMX5XIXAXnH=2=3]0]31HK#_#o`#`8a6"
    A$ = A$ + "2j7j5f64PfQFPVQ6QjCXAXIX5XM80K3j5j76269f##o#_`fP0d>d2d<d8DO\"
    A$ = A$ + "L>KWf>]MJkdfY]CKWf>cHkdfY]CKWf>]MJkdfiUW]CKWf>]MJk\<XMjL^Y]I"
    A$ = A$ + "kdfY]CKW>W;McfY]CKWf>M>GjV]CKWf>[<KWQZZ^T:kEmUnhBYTWGEEBUlHH"
    A$ = A$ + "EUD9^NEMEUDI_Z^d7G:Ull:DBUhljBgFYD:=[Ye\W4f0d:\I80K5j1f9<0\W"
    A$ = A$ + "460f9d3\E80K6J5f0d4\VH=1K0J5f<4P]2m0k460fC\1PM2m0K52`VQFQ=0="
    A$ = A$ + "1[9QVP=0]2K62`FQNPM230k9f0`>QNP]21Hc#[`6PVPe4;GcfY]CKWf>]MJk"
    A$ = A$ + "dfY]c;ONIkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWGilbfY]CKWf>]MJkd"
    A$ = A$ + "fY]cYNf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWLf>]MJkLj[M^nV6"
    A$ = A$ + "8QFPfP>P0\5XKXGX?HP4j3j5j6f24P>PfPFPe3=5Km#;#K#7#0f2d=d;d7<#"
    A$ = A$ + "\nPNQ^Q]01X3X=X5Hm#C9\NX5X=X380K1j6j5j368FO#_#g`FP0d1d6d2\NX"
    A$ = A$ + "YHiJf>]MJkdfY]CKWf>]MNic;KWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJkl"
    A$ = A$ + ":WGf>]MJkdfY]CKWf>]M>ecfY]CKWf>]MJkdfY]CKWf>]MJkdfY]CKWf>]MJ"
    A$ = A$ + "kTcfY]CKWCO]cFf`>CHC#k#W#0j2f6\MXGHW9d;\MHK#G#0j4J7f4d2\QH]0"
    A$ = A$ + "K2J7j42#G`fP]3m2k<F_`fQ]1M11XCXMHC#;`6BX5HC#k#W#0j2f6\MXGHWa"
    A$ = A$ + "j5f>\=X;80M2]3K2J1f#\L=KWf>]MJkdfY]CKWY[MjL^Y_IkdfY]CKW>W;Mc"
    A$ = A$ + "fY]CKWf>M>GjV]CKWf>[<KWEEEEUDI_[Wol>?mY?M9Ef;4Z^T:iiEXT:aomj"
    A$ = A$ + "BOLYDRK7NY?^DJjjflCe\MJkdfIUKk\D=KWf>]MVoIkdfY]CKWCeY]]CKWf>"
    A$ = A$ + "C^fJ]W4J7j0j42#G`FP]1M3mT#g`fP]0M11XCX3XMX=XeH]1]3M0M21X;H;`"
    A$ = A$ + "fP^QNRe=\=H;#G#0j4j0J7J3J=QfPfQ>P>Q0d5\5HK#g#?aj6f6\5X;80M2M"
    A$ = A$ + "0]3]1]6;GcfY]CKWf>]MJkdfY]cXIkdfY]CKWf>]MJkdfiU?_\MJkdfY]CKW"
    A$ = A$ + "f>]MJkdfY]CKWf>]M>IWff>]MJk<i\MJkdfY]cYjdffY]CKW9W]cdf>cjOgf"
    A$ = A$ + "Y]CKWf>]MJkdfY]CKWf>caY]]CKWf>C^>flFCXcY`c01hiP^V2K1fJ2K1jJ:"
    A$ = A$ + "lL#0N6XcY#7`Vc\e>nDMVeonEnhliIP0lL#GCQ]0K=fFP^V2?74PW1jL:d1\"
    A$ = A$ + "i4j0jL:l<#0N>X[Y`FP]6K;#GCQW32`c0M>5j0fL\L=KWf>]MJkdfY]CKWf>"
    A$ = A$ + "SV]CKWf>]MJkdfY]CKWGnlbfY]c?3g>_R>f\]CKWf>]MJkdfY]CKWf>]MVcC"
    A$ = A$ + "KKWf>]MVLf>]MJkdfiDMJKkdfY]cTcf9KUiX?>E]c9kcIkdfI9^MNmjkSHkd"
    A$ = A$ + "fY]cTcfY]CKWEV]CWciL>WciL>WciL>WciL>WciL>W;OkoC[%%L2"
    btemp$ = "" 'decode string data to image data
    FOR i& = 1 TO LEN(A$) STEP 4: B$ = MID$(A$, i&, 4)
        IF INSTR(1, B$, "%") THEN
            FOR C% = 1 TO LEN(B$): F$ = MID$(B$, C%, 1)
                IF F$ <> "%" THEN C$ = C$ + F$
            NEXT: B$ = C$: END IF: FOR j = 1 TO LEN(B$)
            IF MID$(B$, j, 1) = "#" THEN
        MID$(B$, j) = "@": END IF: NEXT
        FOR t% = LEN(B$) TO 1 STEP -1
            B& = B& * 64 + ASC(MID$(B$, t%)) - 48
            NEXT: X$ = "": FOR t% = 1 TO LEN(B$) - 1
            X$ = X$ + CHR$(B& AND 255): B& = B& \ 256
    NEXT: btemp$ = btemp$ + X$: NEXT
    btemp$ = _INFLATE$(btemp$, m.SIZE)
    _MEMPUT m, m.OFFSET, btemp$: _MEMFREE m

    'Put colorpicker image on screen at xpos/ypos
    _PUTIMAGE (xpos, ypos), v&: _DISPLAY: _FREEIMAGE v&

    '====================================

    '=== Now get users color selection...

    '=== no selection made yet
    selected = 0

    '=== main loop
    DO
        '=== Get mouse input
        WHILE _MOUSEINPUT
            '=== Get mouse x/y
            mx = _MOUSEX: my = _MOUSEY
            '=== Only poll this area
            IF mx < (xpos + 473) AND my < (ypos + 243) THEN
                '=== if click button in area
                IF _MOUSEBUTTON(1) THEN
                    '=== if clicked in CLOSE box area
                    IF mx > (xpos + 352) AND mx < (xpos + 457) AND my > (ypos + 5) AND my < (ypos + 72) THEN
                        GOTO donepicking
                    END IF
                    '=== made a color selection
                    selected = 1
                    '=== Get color where mouse pointer is
                    clr& = POINT(mx, my)
                    '=== Make Red Green Blue color values
                    red = _RED32(clr&): grn = _GREEN32(clr&): blu = _BLUE32(clr&)
                    '=== show color selected in box
                    LINE ((xpos + 246), (ypos + 7))-((xpos + 347), (ypos + 70)), _RGB(red, grn, blu), BF
                    '=== Update gradient strip with color...
                    '=== ...only if mouse not in gradient strip area
                    IF mx <= (xpos + 246) OR mx >= (xpos + 457) OR my <= (ypos + 77) OR my >= (ypos + 107) THEN
                        c = 0
                        FOR x = (xpos + 453) TO (xpos + 242) STEP -4
                            LINE (x, (ypos + 77))-(x + 4, (ypos + 107)), _RGB(red + c, grn + c, blu + c), BF
                            c = c + 4
                        NEXT
                    END IF
                END IF
                '=== update screen
                _DISPLAY
            END IF
        WEND

        '=== ESC key cancels picking and closes
        IF INKEY$ = CHR$(27) THEN
            selected = 0: GOTO donepicking
        END IF

        '=== don't be a cpu pig
        _LIMIT 60

    LOOP 'UNTIL INKEY$ <> ""

    donepicking:

    '=== wait for mouse button UP to continue
    DO: mi = _MOUSEINPUT: LOOP UNTIL _MOUSEBUTTON(1) = 0

    '=== if user selected color, say so
    IF selected = 1 THEN
        ColorPicker& = clr&
    ELSE
        ColorPicker& = 0
    END IF

    '====================================

    'Restore background as it was
    _MEMCOPY scr2, scr2.OFFSET, scr2.SIZE TO scr1, scr1.OFFSET
    _MEMFREE scr1: _MEMFREE scr2

    'Restore display status as it was
    IF DisplayStatus% = -1 THEN _AUTODISPLAY

END FUNCTION

FUNCTION BASIMAGE1& 'quadmenu3.png
    v& = _NEWIMAGE(185, 593, 32)
    DIM m AS _MEM: m = _MEMIMAGE(v&)
    A$ = ""
    A$ = A$ + "haIkm5T]\LZ[\^YKjVN:h1QW4^YkNKj1PknKhQSWIN#Ln;MO_hIi`Q4R<cZb"
    A$ = A$ + "ZZM`J5[cIW59841TP04oWocoikn?66666666666666666g:nmOogoF6g]lHH"
    A$ = A$ + "LFlKof_m]oh?nS_mokKO[5oiOnWO;RkM;_?;4jTEHWhV1joh[Tnl>[7Ga]EL"
    A$ = A$ + "mkF^O6HR^HWhfQLk5S[37QO[ZOoDa4M`?mCodo5WUS3hne_>4jb[X_WOmGoe"
    A$ = A$ + "?fjT9jP_kkn^o;^:>NP?IMjc4ah=^RjSX?\?ejTkRSocol?o]OiGnU?BMj[F"
    A$ = A$ + "mg44e5oh?nS?mjSHnJEcUKW_gSiKW1NokRS7UQ_okon]kk8GFfYlVeMg=_l:"
    A$ = A$ + "i7C67b?l3o`XjSX>>hjC6O?hVCRWZnIW_o\Z^n:hSk`aWVWQL7YIl=b9j:EL"
    A$ = A$ + "hbk>cmBYgV6o9aKUNh:VomTbKlmbYeMkDOLD>nTfU:X\1dEa_gUS7O_KBo68"
    A$ = A$ + "MShODkN5e7AMhI:[?:>nZjbGE>ndjS8NAJ?9Nhk3WUCb]G^ZiRPbn>LlMdYA"
    A$ = A$ + "kQS`aagF?[mN2m46_dTl;Z[V4_EeW#?5bo[47?6ohSRSO5La\nj:B_LIoAaa"
    A$ = A$ + "3L6>nEDFSjZPWge_#lKCZ[`H`FaaSff_RLlYe7g977j\[8mhbnThn\ihGag["
    A$ = A$ + "2meT_W4iGdFHBiJBJQjn_2LlELbXNLbHLAiIBK6d_d4>b[:7?n^jZh]S=5FE"
    A$ = A$ + "?4ig4Mk4mjG=>nZiWPjPYUW9i=Bc9ccmEUS7ieTlHZnMUN;b_9j[Eb5b?d^b"
    A$ = A$ + "LliLlMV76RkTbcW>77aKUN;ZCWTF[B7caejT9OGfLLMN<]<^:mVDW2IK2_k\"
    A$ = A$ + "[[hW67Obh01_MBMok87?6SKXGQ=hWD>WJKa9UaY[OaZbcGA>>Tg`NCak1\[m"
    A$ = A$ + "FnTih1o>nF6N7H;g`>7AI9[g2\[mFVD6_ZeLh:\=nk677c]>:cHMA>RmonTi"
    A$ = A$ + "hX^2Lk#G5j=0llS`_gEF<7ohLlE[3aGI>>Jo[f7GX_lc`kNVLLlmXc^_;Ogh"
    A$ = A$ + "hGQ^mCVSGeggE__c>KKUMb[_JLl[#gmEPS7jeLmlEckNdLL\Fo1>kIBhMRS?"
    A$ = A$ + "Y^JWeeiCVScmm=QC]cjLMU]KjdkWefh_KLlYe1CeOOEhhCGcaG9>>VO<\[Pi"
    A$ = A$ + "hoCnhDN[ihoclhAbage61GU]aWFn=7oa`aW\V\O:LlM7o>\?dI]Kh>LlMFSL"
    A$ = A$ + "caWaaW^Vg_ZLlM\ae^f4kZ\=n>c7IWib]S]LWH[TYLL\6OG977c_oZgK]kPW"
    A$ = A$ + "17OjiJiXLlYkC[\lX\?dSRS?5hk;C?[KCeAk<WcYW?dYLl0C]]lSPSOT_=N4"
    A$ = A$ + ">ndjR<7O7>kdnchliZlk6GajZT]WidiX?5XNkZF7SMihkF_LUYIDo4Yi>WO#"
    A$ = A$ + "VKl8>GfkbagI\IhLYLULl0WI]aSg?_?P>kI0_[Nk:B_<7o^>cbC1>?SkL>`?"
    A$ = A$ + "Rmag]<^Kj^CO:GY]a?KoiQNTgSKIkINeko\717o^lm4C#8K8=Wj??ZhhGen;"
    A$ = A$ + "i<LlYnJ3Do4L[[VS78dUk\oOckCchmieMMBJ\KmfZh_Z]EVS?Yn?nmWiL>3i"
    A$ = A$ + "3c]9o=kc`aWdWc^ciL:7?g_lThOUf6_SWWkCNWj7Ej1mMfGm3kA68:;M#]oc"
    A$ = A$ + "P=UDY9>G0E8omo\<RinW_?1bjREb9Z7SnO1?MekX:W<#I5Y;liNCeEIPmKO^"
    A$ = A$ + "LR_7?Y^PihC:[#O7Y?l?OCd3?B>>ZcgIN20Ioj0#dg>:W:0NIe_[VoaTd\Rc"
    A$ = A$ + "TWK<Gogm>An]:=ceoI>aA0doEm1=EG]kk?Y^PCc9Ue\nNBioZ\=n:\khE[d1"
    A$ = A$ + "P3a]gim`O7Dko\Zd<RkTdTC_hmDY7hJkTVC;GCT;^oWSX[hdh<e57AV>R^iI"
    A$ = A$ + "`a3<e_4^RSKHl:3\?`VRkFN=<>2`ImfLL333333333333333333333333333"
    A$ = A$ + "33333333333333333333333333SN4nB0hgOb0g]Wg]la#9[0`?_HL_8Z7n[o"
    A$ = A$ + "j_n67NfbA`O3NaZ`[2g9T3UNS3ALRhNgeaC2AkekF_Ne8:CEeC?KII2O9cK^"
    A$ = A$ + "CNnTfRLh>iiCUg?9>nTn<OVWAoS`I2NnMYkfYmH>l<m[>I<ENQ?hj^Tc[0H\"
    A$ = A$ + "SC:c?;>nIh<`OJm\eQ7=0O;hcDNW>>U8l^cagU7m\hhMLV#G7n__:I7g_:Wm"
    A$ = A$ + "N>M7dm=Whg2OHCg_o\i#kl=BcaOne1`7Lf5WWYoSLUl2oAf:mjcDNgYNgLlW"
    A$ = A$ + "?W1b#W\3Oejk47oI9_k<>U8l^caQ=KWJS^G5>NdGn[PLNULlGeibo^ca1bgE"
    A$ = A$ + "1_2e5[hhMbInnEjIYo`lfSoUm5a17Y[=IlmXWYl^kg^oDhh`WOoZ`aQ_S6LT"
    A$ = A$ + "<2nBGmDlngUO8Ei[kamgFE8Ooim<d[LH5WoCQS3\b6H?K^SRc\ZM8^c4NVS7"
    A$ = A$ + "78gVLbH22nEnN7iA;O:IJehc=7oacIhkBQ^nMbSCiIKcI6C6C#^=lSn^bYBV"
    A$ = A$ + "R_QK>nmaaI\Z_a\_Do^[CV^_E`MBdSFN[j_Nelg=7oeAfbmQO7SCQadif5bm"
    A$ = A$ + "EM7bg1Eo3#We5<7oePc4oFnnIkEXn0cKNU\7QWAohEkSDcaO=hh[6SBn^=j>"
    A$ = A$ + "j37lI5`L#k2Q<o8UkZaY0n[ihg;7Oenc:?6UWAoQ:\JoZ\bF#P7m\U_9]obf"
    A$ = A$ + "En^iWOZLlEOW?OoZNGfBiZhh?:NdAfWbL`LlkAN^kaX<Q3=I]lO7hhh>;o^i"
    A$ = A$ + "XOJLlYSAi^7_hG1>nMKgh?A>nZjUGQaXH>nk7NEhh[FOILVO1Ro6h>>STMj]"
    A$ = A$ + "X\4]7WXGOTLLFWUAG0aaLl[_>iXQkPS?Y=IWln\6_UJoo<mK<VSoj`a3K=6["
    A$ = A$ + "YocH]3ch<WIiWUN5gMl<j2PS7O;jI\WJ<7O>WiEnL0S0>kYg]MQjTA_6#VSW"
    A$ = A$ + "AU_GB52MMNo7LWcK^C>odhh`W[5o;Of4bS;kI`EZ>S4[0h=g5W1bLl_:OGGl"
    A$ = A$ + "l<g6mQo<mS0<hmMPBOnY`aceCZiVl:L69VRk\OA5?^2aHL_CnM6MbiW677nQ"
    A$ = A$ + "W:l<i:W1g]N4ke3ellN5g38MjbGUfQ666666666666666666666666666666"
    A$ = A$ + "666666666666666666Oj8>STicF8N>OV3SWQkY\li#TOoZh^:ma_YB_Lne9k"
    A$ = A$ + "ZhfmkaiCMUn9OWZ3o]CT_ihDU7Zh2Pk5bLjbn0V:MKU>]CO\S>S1kCVjRk[8"
    A$ = A$ + "hcL_bo_7oODFc1DFcQZhVo]XnE5DbS:=0g\;^XNMEJEa1IM07beaCSGVWEm>"
    A$ = A$ + "MU?XohgYZ^TO_Yjg\>IUO>j^i_7QS7bMLV2cU=l<Ek1fo2G5G4`I6^jgFi_R"
    A$ = A$ + "cjfEgmO[lQf8]DW9a9LQ9lPliaOBlQ\gEg`Q9gILa_7WSdEU;T?X]hZ`k`ii"
    A$ = A$ + "DeGALN[cj;hGbhnOAm7[ODa51h?5D1L^iidS_Sa`M25G7ToVOl>:oI6gn5gW"
    A$ = A$ + ":li4Vi;ZfVAN4Pi\i_o3O<:BOF_0o5dTb7d]L0WAn\<cb4^C:D]KDgQKQ<=A"
    A$ = A$ + "7PfGg=?N7>>Tk757_[Ol:>NEmZjK8[lIO<G0?SmWI<7Am=6h;9Da]b7=XhHk"
    A$ = A$ + "FnDa=0o]GU<]Cnc]aDj0T^_bmW[hhHN9\Nh<LLXoQ?d9o\\NM7>NEL3NGU?k"
    A$ = A$ + "[RScge[CihZdSm5P1>27O7M1cail1bj>OK#e6;:;AMKnn#oEg?[XhhhKn\Nh"
    A$ = A$ + "<LLTNAnQj25GCUNEiAELS_mRi]aU=eHEDn0Yc`aQoCAIgV797WU]LI8hfEe;"
    A$ = A$ + "EYYbgASiTbO[jMSSSb2[7>377mOTi3LN[ZGEjG<6g^hRi]E6Qogd[bGfM6>N"
    A$ = A$ + ">l\hh<O<omblkNVao`_gkR_4Jjl\?;7GI_4N^W[h]A8OGbg5Glmd^d9ko<_b"
    A$ = A$ + "aZ`a9g7gSRScaUWC5nNe^Ll#V[:O_[f>De^m:hh:KS`jkYfE1S9Yc^:XM07D"
    A$ = A$ + "f5=hg\O9o<Ll\MEh_AlXhhZi2bi5:WCCc\L[\OD4^KnkAhh:KRN5LLElVbaE"
    A$ = A$ + "e1AmEelWfe^:ANbO[m:VcI6?J>NTf\<X\;b>YIXScgK^:k[SaVOglhMhhZ_o"
    A$ = A$ + "O5LLf6`Q^i<Ll[f^:\_\oZ][bSVSg=N94`LQWVVLi=TMNlUhmOfg?7WUS[nf"
    A$ = A$ + "kIihZimoXhhI>UjmDLl[L>WMnOnM\MgEcakZ_DY9GNEca9KS[kV;_37_ZLXJ"
    A$ = A$ + "Gc?[b6ELmP:ODe[H^QZjPEfPi<LL>>Q\ZdEkbaIIB9Wi_7aaEYODLd8_E]Wf"
    A$ = A$ + "AobSM?BCnI<7hELNXZj]>kA_J_F4mQNULLEXbnhi`IihC^Cf`k];7_[?g8MQ"
    A$ = A$ + ">\cfM8PeJEE>W\F3Z#^=fZl7gcbigm^idChh\^=?6P^m<GN^F<7QWG4fS8LL"
    A$ = A$ + "VHk#T?MaMW_[[hh#gX:[IkGN4>N5?7fh1YKT7AO5Ejk#nZd3E?O7Kc6XB74Q"
    A$ = A$ + "#fh__OWgkBEP_[OP>6oFl<DVahLSiMPnQag_hk0T8>ik^WlldanU:nklj2WS"
    A$ = A$ + "Sj^7:[kQl\:^`F0hiPk0iXJ=Pb0mEUUC0HOWLj=Mm]aJbViG`VSln4;[_3Te"
    A$ = A$ + "58^`67MjbhIH=HWXOSl>_g9EegH]5`gDNehh0Xm70d_ibBN^Lib3SlL\I>1o"
    A$ = A$ + "<dNQS3;?<bfd^;^#ViW7?;?VPELLEIUiQLj=Im]Eca?2\]<SoViP0P?Yd3E?"
    A$ = A$ + "ORn=;oEjPLnW[7O5ihlMm3da[^;M#KLdW477ekgmghIkLg3=9^COFWn1mCSb"
    A$ = A$ + "ZBGLTeg6YMVOafLDY_AO[MjQZWOdkf9F7TSk>jCS_NXZOjkF^<<<<<<<<<<<"
    A$ = A$ + "<NdPmE:acboMecbn`0UO:QGC<nmidWAELDbAEjZl3<MY?kGDZli:E0_Ogj1Z"
    A$ = A$ + "lm:[lW9X<bbe>n#6EiUeMC;W_CPGS[>Ol17g:OXP:mD_?Wn<DaA]7=Fi7FDn"
    A$ = A$ + "B6eI2[K=7annH5G:onElk^lXRO?aO]<]>>WG:MgkTo3J5Dl5\nHL#]F6`F^["
    A$ = A$ + "fc3X>X;N`V\MLLei2Pg?5L0[38W>Lj7YcTm`2KGhLo[C:CIM8O^JSPZOd9_C"
    A$ = A$ + "U]j[:CH_]4U7FnaNoo^iWG1Zf;;Cg78ZmgET^lc`JCgiWBDf;F93ZcS\J_fQ"
    A$ = A$ + "d5[OG>`n06U?W92:O#2OVRjfoEZbDFnEj?\_4ZN7\^ai#83X<eenPOWlj4[f"
    A$ = A$ + "oB_bkIlcbaWNf3DeAZm`lZmQMeJR`bPZmTRSWKc0`L[LoK8MDkU;ecbWgRll"
    A$ = A$ + "#h`ZbDgN0=c_bYMgN4G]njhMEm_\RS[F7fg=DaaEOkO:77kK`8=hm1F57GMN"
    A$ = A$ + "JDLLnk^EW]ilN75YK^\R_?cb1;Oak0oIEN_#YFObZm6h:>>o<\G3cj2l=Yln"
    A$ = A$ + "\Jek48?6=^\I>nL>>g7IF_ck;8nmaNSXBnhd\b_YX>c7HoFPi2TKO`S_5YCe"
    A$ = A$ + "IM=NnZmgEU>[JmjAK#Fg1MVROU7oL>0ISOWLlDj8caogeGELlZiePiX1\[m4"
    A$ = A$ + "TAno=0NBGn7QEnOFd78:gEfP0]Ikf?Blk]RSGi72khGLlaibBm>iaYDm]>ca"
    A$ = A$ + "oWeGMWEP^cK`:kZPiacL7ITYj1\7Z[2Ho[7c7C=o[lNM?bCHkJEHU=ehh_JO"
    A$ = A$ + "GajS<OEmm=H3AnmbWU14glhDDnhGcagWS7YWjkX#77L\:kZPjXES7W3hl0Xl"
    A$ = A$ + "Q<8]cnEFEK1eNn7k;EEKb>KZYdIELLUN:_o]ci3>S6h>?#i[9k\AIgiegLlo"
    A$ = A$ + "ImURSScj3Z3#oaLMPbfQ\MEFaaEf6_bO4cfE1c1^:N`nhI^TJ=1PoJn<LLej"
    A$ = A$ + "0ee7^bfeZl:oN\MTZlCCVSo?eQC\[2Z3VH7>f^:[F38F^`HY[lg3IkZPn5Ea"
    A$ = A$ + ";Pjk<:i0c9DeO^BWYhh\N8bgZn`gQSWmgM[FG>4<7oOZ3gQScjh9SeI5WQm["
    A$ = A$ + "U`V8ELGEMT:N`Ng:KLXli<\m[gQS[j3?KoY>KLWSkZlJ:7?:kLmeG5>^JL5l"
    A$ = A$ + "cRn=he#4c_AIW_^e4D=O>>>:kDZn>L>`f\9oKLMYZ=HUOnFa5Eb;hd#>DmQ3"
    A$ = A$ + "nIX;aLSak`n:n8oIM>:7il:?GWhMDn>bLK[?E>^ZL3MB7O<[7Z\?N>PaJN5L"
    A$ = A$ + "LFVahV[2k`aWhSOk>Gj:i=GVWdo:hV8PeA=GNDkK8EN50f>_J>WAohZmobW2"
    A$ = A$ + "7Ge_BNohd]G7bSO\K_dUSK77G=^5>>Zj:U]Oil?GOemKMUi\OOiXLLeNT#9_"
    A$ = A$ + "\=ARgKBM1WG1P=EZF38UnTm59O:8k3>P=iRW3k80kU`f29_g=bnX3\?\ba5n"
    A$ = A$ + "2UlIo6#icBP=>b[S>\7Nnl[3oX#W?59gG=BcZjb8]hb<kG6DcQ#9_P3UiDih"
    A$ = A$ + "Xd3QlPaLTc?nLgce5XMVJ?^anIWlnP8K7YLje]6d_SXc>NZm>5hgimjVRG[R"
    A$ = A$ + ";_^h[h>LL#K_lc0?_:MINLg_eEVEnbl>i5S]Vg[;EbINn#ib8d;Me5XMAgnZ"
    A$ = A$ + "QeAIo8TBONglb[6\?iPe=inOk:oMn84lkE#]o#EneScjCAVh[#DnLU9nD5EJ"
    A$ = A$ + "3nJVCeY3`o7l]9jG\NbLNeE7GY?_K^Xak72nFeNl^2iaQmXc;3ScRS`g>JoY"
    A$ = A$ + "VKKHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
    A$ = A$ + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
    A$ = A$ + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
    A$ = A$ + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
    A$ = A$ + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
    A$ = A$ + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
    A$ = A$ + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
    A$ = A$ + "HHHHHHHHHHHHHHHHHHHHHHHlYSOogom_mWoiO:aOl7oag>JLSoVoMekShoKo"
    A$ = A$ + "f_mOokoj_n[o?4oMl>MiOllZd\Z\biATgMb]:?bXC_d9?6?74eQMQP70>`Th"
    A$ = A$ + "Rd=ZKc1`GDa?BohoGUVPWEmnlkDa_kb3dFB9gZl872iZ:][T7SG7>N^NNBLc"
    A$ = A$ + "mka?oGnUOiOU^od?mCo;^?72nCl^Ll`kcQhI1bUc>>8T_OmGoe_YTKENT3Q\"
    A$ = A$ + "a_g:iahnhhAMe?ocolohI1oh7nQOhofGgZh6YG4G^>?h1<G9RcgmMOgo:^Oo"
    A$ = A$ + "gombW5mg[NO>4?;#^Lb_GTNZWYTK8SH\=L8:GZno1DbSamba[h=ZnQihRWaY"
    A$ = A$ + "k>LlZWEmn:IM57_B^ifaPSSnQIM#4D]=Rh3i`Llg7>n4>F7GI:77O;8B3lMn"
    A$ = A$ + "[TS3>H0T7An5_3o]2VS[TEEI0bLT^oh?nSoGTUWllN[#Nnf6G;7_R;YN>?FU"
    A$ = A$ + "XNYR[DU^:>8\GA`=0WUOoZa>XhhZaS3KZTk[]SSc]KS#DnELlhiMS1oOU#R0"
    A$ = A$ + "K[:S[QScLXXN5ma]J^GHLkkbaSW[hP`V:ak6PCcZPRSGIG5HK6T7ES7G=Vk8"
    A$ = A$ + "4SCAaaidWAffUE8bcX=N83g=?iM6C\Ya4>>\m1hGk<FUXN4f7G5Z\MHEXJl_"
    A$ = A$ + "Mll:K7VihlkRaYdaaSWSf?:m??VM5<7oJihZaOPnDVHGUXnXbn4MLl#F2Kg5"
    A$ = A$ + "aCa3Ef>4][h#gLlRl#=V3TFELL^L61<>U0\<SnRaHQhaSo_B<A8BOg?nSQS["
    A$ = A$ + "V7G`KELLeL>EOGOeHE2i0[5ZjmSjKVK\cL>Aj78hMZnU[\iYJ\G#W0n;WF\M"
    A$ = A$ + "E>27gS7oibage^:WafQ:N#gk[Te>kZ4laXoLF6aL4il]bf?8ORfOELLHG5Nn"
    A$ = A$ + "WXON<>65#K8g?n[97OWiLZjkLWgG9[[hhZaU4Y??f7`eh#NL:AkU:>n:nY7?"
    A$ = A$ + "ncWS3KIXh=k`aI^RJ]lQM6EmW^cg1DbJW]3So_Jl#AO^:>^J\hLI[K_2d=V3"
    A$ = A$ + "HWn>H>nebaEQ>kSGaa[\7H>0KO_R35QX_dc`akf?9A8TEEKC<^Q^`Ihh6g?7"
    A$ = A$ + "7mi];7?h_Mke_lLbZ\mlAbo8Xhh[fKS`nX7QSg9oibZk?nN#DgW]e#6XN?KK"
    A$ = A$ + "PLLa_7m3SmW7NFfNPhk]hknH^Dlh=a_Sh6_G>^`f>MiO^]SZlVCOT7ZbH>o3"
    A$ = A$ + "TS?Shg3I9T;\nVl_K>nmSljgX#D?1kgaa5li:KUU]A03TV0ZmbdAbo>kSWgO"
    A$ = A$ + "0LN0N8;7LkWZi6FUfVSOo0[oB5F5G`mZN7lkP[PnC[TULoQao?NfIco:IA=_"
    A$ = A$ + "^>MA5FY3cU13333333333333333333333333333333333333333333333333"
    A$ = A$ + "33333333333333333333S07i>f6?;O_d`nNb^kZ6F6jRk:IROFnN;IJnO6Te"
    A$ = A$ + "3kho=[T9EiYZL`gMiMYCl\9gijIXBOU<`LY>NaMPM_S]klaZIMLELDgSC]>m"
    A$ = A$ + "bDn[NVjNfIglo<8WokLO1Z:;ZkJS>oV:hCLICMOk>m>GWK7^:PjlEgoI_BLL"
    A$ = A$ + "LOU`1hGeF5P?;[CWPdJ7>NU<=iNEIEnODTiBAm8^;=WhK2EU5^^0nl^Z0lAZ"
    A$ = A$ + "Lj`YOT>ZkaXL0gM0kba3I#MGH`Q#>OUhhEn\HFO[dW`70b1l]=emhDnKWi#n"
    A$ = A$ + "ni[BVDgW3ZhfUoZn_V<^V\^3nloYnOCEIQkCFiCYcj4h7OcQ`7h6mc`Y3[WZ"
    A$ = A$ + "^cec]mag9DLm\<`mm5_;;gh^JjMTS[NFWOmFiKJ1Dn_klkXBcYLl9iO^=G4F"
    A$ = A$ + "m=fLN3OmLl_Cdk\laLR8>Mn=m<b]=hk#?T>\NZjI:iGeW5kCMcQ^k]Sk`okN"
    A$ = A$ + "fklNLoHbnlk:M2nN^Z=MemDLTVakXBcMihMi?caG=^VLKQ\OHn8LLN\4Eg[Y"
    A$ = A$ + "Xn1j4hcccj\\>1j3F?EMW[[l;eZaXVeWkNW1o:ca3M27`M`:kO]i0dSMc;C="
    A$ = A$ + "fj\NQCCN>G8O>Jn[hhEmiWiTikY]YmCYdSioOEOTifMH<^II9[3cYSJlh`V:"
    A$ = A$ + "\O?ORlVSkTi4eY;OUhhlg5ig;k_\[2MSaMG>^:DaakboYg1cIK?TUEL?]5m]"
    A$ = A$ + ">E_gU?a_ga=EbSZNQKk=i>G_Z=:oNObLLEI:o^[Z3c]5^;>>Wo7QSWi;HlI`"
    A$ = A$ + ">?Mf#N27??NT>I3SA<VSYZ>QKk=i>GOJKb?M>NP:k5EYCbc3_JLIkbaEm=]b"
    A$ = A$ + "^:Zl?_>;id4fC38OglP#Nl0EfFEm]3I4C1LGdYFo28[ikJ;EKQLK?T_[^ceo"
    A$ = A$ + "ZcaAo:0hnR:7`Hc[d9Mc=KG>nI\[R:oAnQdDI3S0ibL`I`ccf\;7`MZEV3YR"
    A$ = A$ + "C>4jfP3GEo`fe#]^?ifNAmbTkLmZiGGY?odhhlh\SgU[GGmM0H;0U^lI`akb"
    A$ = A$ + "ODg`LLdW:#^?#fVQP7Y^Kfb][HiCYKES7GIG5dfA5?dfSkgF97#O[j?_BOnY"
    A$ = A$ + "caah1WnnEcIoIbaWXCFIGU9f<DeoO77W]I5Bk:^[R[XR7JkaLLEOo#O[JogY"
    A$ = A$ + "?OeihLo4hNKEY_iaK6U5nIXoW^`M`aWTo<P=ebe;in4j\IhZkh>EIA=gR^m?"
    A$ = A$ + "1_6EiOSiD:mTj>G_JLL:i5LL>MDgmkXMoM`aE]ai#N]HF5G<W^^`k<7G]n:k"
    A$ = A$ + "Hc`>>3gOCeLK#H7>n4K7Y6Ce4>n4>4BkkRSg]WdbmEQiLF5G\G#FaaZ6g`cR"
    A$ = A$ + "S_chFjj?XSCL4>^jkW[fOIINCg_Yd_Lnd=OlEj`Zknm9Ymc4H^o0lm1>T?<N"
    A$ = A$ + ";4?eMl=jk#MoIGaa`Loim50bGNnLHlV`6?ig1gcikToC#N_JU]Ka^YSZ\Pn#"
    A$ = A$ + "bga]hnK^knJ?gGMemb>0Z_#MGFWE=^[:iEY3Ga;^Sm[B6al_INMEk?Ul[R[j"
    A$ = A$ + "gGaahm5`Zic5?SG?JX;?Bn?1ImdI^3TEb46_GnkWlnC;3V7gmK:mK>OFeNMU"
    A$ = A$ + "><_>2kVf?C\j^bVij8NZkhk^k7k^l_;^ZO[j^gn8io4T;cWEGcbTjN5OWk[m"
    A$ = A$ + "9UcEgijk8_Ch5n^#g````````````h[0bk=]kFFj0\o=>Kjg]llX:KGIm`kB"
    A$ = A$ + "MkS2Zc=6kg=feG\D]naiePF]gLSW[lK8XnG]NMh<gU;?E1ei1XcgSPccoAR["
    A$ = A$ + "BgDiCHZF_I^N#mnLi=_We[dGMa1oV\PVbg^e`o^id<oNEIi8Ll^e>^RS3MK5"
    A$ = A$ + "7_CW6o6hGG57OGIPS;oKMLlEY[Zm?No:>jZjfZhmYaaInTJof[>?4[f7]MjG"
    A$ = A$ + "\oW[Bc\<QWak1?doF>PmkKGNSei;_66LMUjmaJa<9^ANX>c4Eka6f?YPc8G>"
    A$ = A$ + "DM6N`jdab:[7Em9QjfZm:DG#M>;bQ[HmT_2<QgRmFKeI=YZ\alDFoDMN5IoK"
    A$ = A$ + "3bW9nhP8mDn7W\?F8OVeZhhZm16f3?CRKl\MlG6Li#EfDlFlnELlL#EOQWE]"
    A$ = A$ + "?KaiXSCo84j2eI9j:fG#?K>N4DmSN6>>fC6ZcM>g?l>LlEeIEk?XSfgHELk>"
    A$ = A$ + "[6Chh`oWT?kc#WYNo9Ll#^AkO0\GAij1N?OZ>W1EbbE^_PNfLL5OZk\KV3Zn"
    A$ = A$ + "4ElFT^CihP7TW_gZj<N?]\;7GE_Zj7O7>>?FU8PmC9gnDeOAEiE=^:8_id\j"
    A$ = A$ + "<1QhZ>[LMLllNKlEUSWi=hIMkUiL0kc<FWYh]<g8okLLkZ7HN07gLIAY7DL1"
    A$ = A$ + "N\\H<>ZiWaiUZM>d=ElR:KZ0ol3`ZiAVe=Eff:BSLJfeWP:=`n^DY;jdc_BL"
    A$ = A$ + "L\W<clVMhhLLiiePlA=>?>daaQn4LhXlXZcbQ9LL>ockGd>>67G>daaEcW4Q"
    A$ = A$ + "En;8>TiXMnm9TVMW?U^f`C\MfMSELlLKm9nVi8X6k^BGYRW:daa[d]Ml#DNF"
    A$ = A$ + "e?>W^1gEMNohhRc>UJl7[hhQ\Den\bfQZPj\IZN_:K7fe69ggGGkWEnEbkVS"
    A$ = A$ + "Sn61jR;7Dm?SclHnIagkDSaGY_Zhh:OcPZOlEn^b9S7?RGU]khbVjmS`4>N<"
    A$ = A$ + "?15g2ckLWi>TiHEfjCmLlnZnP`hDD]gQMEZ>7B_BLL>\;7G5GEMSJ<=Lh8fE"
    A$ = A$ + "YJ\kEcgO:_AE_FIGUZiS[hh`VT0H^QLN][MEbmEEI;lhm[6?^JMobSM]b?U1"
    A$ = A$ + "l>aaESEYSS?MNA<?XZo[[RSW][bAhhCiHWefQH<4WUSW3ESSK7kTV7WBegdN"
    A$ = A$ + "e\[BUOHRe=Ef>\ZNLbH6EnF1EO:EfPI7>NlL\N6CF;OUm4NVLl#nSnE^B>>6"
    A$ = A$ + "77G^ZNOU_h>ZKbcKPU?lkANm:]g_F=7:L?P\37Gm\9fG7Wo?En`a5O3F5GUM"
    A$ = A$ + "gcaIU>#5>27oXfI4S]#EffM\:MiO4`IRVOoEflJenEIU_`m>7_B>T];lD>Ne"
    A$ = A$ + "h#ELD57G]g=`HkZ\Q<7g>>^b7K>QSGIOl>>nZd>?neES_[ZMC77O5?5[IfAh"
    A$ = A$ + "h[fG#hk\_2SG1ll\lRmkDfF_H>mlJ:b[G4_fSPgUWGEELc[]00O?EUWo:nn;"
    A$ = A$ + "7G<FaLj0Xl?c\lb[UAfgFX:_#gTO6T3hgHhfRIn=\k46;E^N0UA4G<6Q^l?G"
    A$ = A$ + "6[bo\?^#mnHnYE8bG\OP[nm\mRN50kG?b0O?;R7KS2ej5QbVbF6lcEn?4d?B"
    A$ = A$ + "eLdEk;RLkA4GElbf5Pe1\OJA1X7Dnd5>obj\:oA3hHMU=ELWToX<ZZ;DaCmn"
    A$ = A$ + "[TW8]kdK_BLLX;bb;l;aimf1R3OoAUO6lI`lcD__:^#_Pm_WJm4`hJ`g8bY1"
    A$ = A$ + "RK`7hlZco<Wc?6lgMih6o6WOih3>8gFD978Mbe3Lj=9ocYmTlGmnMj#T_Mj]"
    A$ = A$ + "G=>^QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ"
    A$ = A$ + "QQQQQQQQQQQaW6`mG<k3\OTiIhSbHoS=k78Q?Z30g5f:oef>Yk^a]BoTm=[:"
    A$ = A$ + "i:;gWA?LFMV:]DU7nNI_[ll>M7^[la^Io]gSX\\b?RVeai0d_EaOJj^CL[^S"
    A$ = A$ + "_AlZ^7ZIin<jQcZchf[MUWLkfb<D4gGI\bW]NemWgYSA0l6^nBMOX2oSYjN4"
    A$ = A$ + "Q3Xmj4IHbmBN4Rd1nfl^b3k;ifA?L6iUck9U7hkoJShgnOdmIo4h[8DncNU_"
    A$ = A$ + "A>lWPGEIQeaacHOd<N67g>oZ_jnkQS;l[oCT14GVKY^7WSWeMO9Fi[L?ZNHW"
    A$ = A$ + "bfZkJCEi1n?B>`j3hk^OUmYQkN7dn8hhMlFeMi`>g?:EaM7IHbMi0d?Zg_bG"
    A$ = A$ + "inXd3[hhOS2Zg1gAACR;kCQOe`>LlX<cLelLFD#=>WMZKEg5CG17OWdEm]o#"
    A$ = A$ + "G`gELE_?li\\?RmAY7FM_Po=:Daa[h1:>>lOj_RH7>>lOh0C^k5>;7_jkoCR"
    A$ = A$ + "kEeN#a;P=Ebn?iZk2VPG[VgnId37mnnj\LLeHEDLSG9DaaSj5<GU\?FGe?Ng"
    A$ = A$ + "M=0l9h[jo2SY;ZO`g9EeGZ`SVS[6C>ZOaLPQ\G5Df_k<jQkRScUo:^a[4fi^"
    A$ = A$ + "4_ZL<i^GHeh#ALhkkPG1>NDnPmaEQ9f><No8?bcKo<jQkVScgU>_SSE1mS7j"
    A$ = A$ + ";Do\j>]D5`M`gdnaS_oS_[[^CU`H4DblSTS7bC`?Eg9UhmEf]7O?CMghL6m`"
    A$ = A$ + "[bHEPMhDg56_:HWkII6?baSGMOYn87cJgHE`MAEUmi#M\jm[^KLNVjQ7iL>i"
    A$ = A$ + "kBWG=<US[j77mAUkWWAfV3kFgN5mOm8\c8:7COo\ME>27oEZOl:kZ`fLkE2W"
    A$ = A$ + "a^:0GahaOflfcJ;mS<FWSlm\G=kZDaaOUWc9GVEg;\i_iZNohkd`n;E8go5g"
    A$ = A$ + "^B]nlXNIWjFnnIFU^An_KLEgmfCFCVLPgk9kZ7fANkVWN47emV^J]?oThh[6"
    A$ = A$ + "GMnNklIUW#7_KoUCCgMR;c_ZRk^LlMd3k8_[hhEf721Lgao9aakf_?IKHMU["
    A$ = A$ + "GKeNMT]ij>[QM8OCCgho_CL[h5ihfaa[6gbS#NIk>U38>EU7HWT?=>>06C10"
    A$ = A$ + "O_0o8\?D>?SdWcc8>hkbALSO_JMBhkQi^dU_;GW4GlkiiCWSKloQ=ohaZYTa"
    A$ = A$ + "Md3k8_\>;SLLHk30I<g^2fC:onAlRWQaXn>aa3ko`UCeL6_BXJ;1nBgm[]JM"
    A$ = A$ + "BblWYYk^aUU3ELIiZB6?Z<LDM6g>X;>ln<Emn\]6^Knk^l^Zi;nX#NN[aoW]"
    A$ = A$ + "gZb^TH=IbHgdm8a=NNGLEbEW<nXTgYb`TjKek_Cib```````````````````"
    A$ = A$ + "hE37eg>M6dUO:OBCEl[R3B3fOAMdbk4O8FEjfE6DUEFVIi[b7HeUf[l[HOjX"
    A$ = A$ + "klIQm2aEWWCmK>POE5bW3HN?GPjmLHJiUi7ClQHEY;nMEJ<i<NbU;ngAIUCo"
    A$ = A$ + "LJgiGan:PEeiEe5?B>>>G0[T?\nL<77kA9eNRVg?ZZ#^O^Y]7[Tc^mL;n]^c"
    A$ = A$ + "=1WGZmS[J_aVCKeI40[=jMco^3>NDnEkEi[lLN`e7Anae]AnQcDJ>TOG\_#R"
    A$ = A$ + "e`V3`oWT3Zm6XZl61L6Lihbn#\#NDiEF6EnRW8Pm:B77WmeFEk_lZch#57oZ"
    A$ = A$ + "g7Y_bHbi0:O^6O4LLEo[H?mYnf<GoZjK6iEnIELlZm#:cmkRKeg72IXZOl9L"
    A$ = A$ + "LNoMI>nSUScjTEn8[:oJjD>>Ggan?XLK?>PakT3kba?CLAI<N787ZbmD>>>C"
    A$ = A$ + "XEWS=cagSScmOQc52[CnGEfRPJ\lC6[2fkX\O>8;_`7=Ee?idaZl8hhXl0o#"
    A$ = A$ + "BnI8<QS3o00f_lE]1>37?[SODfBkERSc1<Nc^na[\e5VK3ONdWhSQagVI>^Z"
    A$ = A$ + "_i8m[TM>^?;>N^m5hO7QSW3`^QiPihWSSS_g_jLBD]?liaA>QS7jolidP[?I"
    A$ = A$ + ">N4GNNPEQW97G=nLnk:kbaO6mS[TYgM<I\:hLW`Ukb:SD8B[EmScSE9kC[Ii"
    A$ = A$ + "XJLki#EKXW97GI[V:IOZMEDn4l[PS7]m`IG3SAlCWS[VcYZ?loEUX8<IlhZi"
    A$ = A$ + "L6jK^O_hIZfO\lFI7_W97G=71ELNU\[Bn\[mETS[6[2jOYk<EYjGHZMEDfmV"
    A$ = A$ + "3Hn`Lm^jKn?K>>k3S?37oIHG5nL4NgLckPSGI[Yc>Nl:>nT_EXTGTGLLOfLL"
    A$ = A$ + "f>WWQS3maSHlhOjh:hh\o=#QS`aEfAC=G>57G=FQ:kH[Vg=jkTSK5_GaOc]c"
    A$ = A$ + "PNRScSRS_ZlQ#lKOe\[bAhhkRYLlZe<Q3<GD=6m8dI;MEi]SkP#n^\RUeLIB"
    A$ = A$ + "e^cLLcai#57GIg>Emn4>NNm02di3abfaGaOc?SokLiiAbaESARUQlkn9Jk`X"
    A$ = A$ + "N2nBoXlQjglMUb:Old^8K[:\_D`Mo7j_3n?`\?W:k?obn^94G\VPIoD8kSWR"
    A$ = A$ + "O;GNcPmOBibKfoHUW;=#n>9#EVDng;elaQ^9[7bLlZO7i?kOEaj7PkT8^<7o"
    A$ = A$ + "F4WhgnD]M80KS:eMUbE?75f?;Qj=nIEcOEmllO3NQbO>YBg<he3HZ?4CI[_\"
    A$ = A$ + "?A5]EZV?>0[7HKJEmkEn9K\65Mf4hCefQij#f^OX>SOfEf^R]GedW=mm[:37"
    A$ = A$ + "eGFQfQZiB[Bgh_c?Sok:kd]BVZnm^bDGINR<IHHHHHHHHHHHHHHHHHHHHHHH"
    A$ = A$ + "HHlZQ>o0hS8oZl[O\?<C97LlklAPMa;WGE_GfgIdmKMnD`9Ue0EnEa9icDMU"
    A$ = A$ + "Z>X:_nd#en_lAiKljfWLEa1n>#>n[fo[Ea;WGEk]`<_hXnD`9Ue^mg8fO\Mi"
    A$ = A$ + "cDMeZb;G^nT#7?9fG6G]_a[B7Sm2J\W9DeK:oDgDOfHU_2DM^;DaiXnD`SDF"
    A$ = A$ + "i0lA2Ei3ol:MU:^Zlj^iS?J>>GW4kg^[dO7bLLnoSmA7G_7e=Zcl3>Go:N2N"
    A$ = A$ + "NW_2Ti2lI60aYc?GeMNbVDFEgGmLi1kEGEn`?_BGEM^hRj4nIOJnlCfGmXZ;"
    A$ = A$ + "_blS[Wb1`=DLfZclSj<8Pd:_OAE_;oLnLHFa3WbaWDFEnkX9WaS:>N4ZdEZj"
    A$ = A$ + "GU^Ai_ANW1ggUBg`UGNnA:XVc:kK8hl3kMO57_bgCPnMh#NoCGMVfEm1bYQR"
    A$ = A$ + "7>QScLbZbZJ\n`OhV?S7k`a[dECihhkGg=glAd_:?fChO7H>n:Oj6Z3hlR[W"
    A$ = A$ + "ij2LV2DLL^mAVScUS8T?G4EWC<EKjL0nmQS`aEU]YUEHWSlIGH7>NU^BaaEW"
    A$ = A$ + "3;eIchM5:MAeg[EmSgIc>LnBbm7XdaCZ;RPJNOWUS_BN0Gn8LLFVZ:[ZidRb"
    A$ = A$ + ";>KK1V>NLl^C;_hL5nYbaEOoTW3JGi]jlEEMF]DSc<7`lUVH_T[VS3kDXRgA"
    A$ = A$ + "hh<g[Z\RcKIUmEZ\MH77W3ELLUMU#oCO:S7Ge^VeUhkeigKbHE2M?g?^JnEl"
    A$ = A$ + "LNELLEnM5LlL8R3O_?4_kAihZfcZb:TOLVcZ:[CihMj:caofogILWO6^o#fQ"
    A$ = A$ + "S[6?>G7[\CHDG`bPb?6NF>>Kk1<7?^<Dm=nMhhMUEd_B083Ll#o4ZlQihMjZ"
    A$ = A$ + "MVciWbHEV`EaLSbWUE<VK<>>5bf30_gb<kKjkS7U]1?;7OUoF92H\J7QS?9X"
    A$ = A$ + "\QTBGYTg:>NW^bLLMXbnQ1fIlhC6gHUNGiWaO6LLT>kbaWjGdEmI[VOi>Ll>"
    A$ = A$ + "MeGA>^BG`O[;K;<nmIoFS2X]QJ<fZeb6O787Z6;iIhhZeoA=NH5?<G6ZFSmY"
    A$ = A$ + "UEeH3EfdL:7_CGYBgEjegM`eIMfQm\UIenR2m5V3ALELlEmgX:;MLlM\Ql^L"
    A$ = A$ + "lZk5>EIMbgCPo0CUV:>ndeeE5n:baac?[_bZRScb1j?UcOfV7WUS?eViMkK:"
    A$ = A$ + "EOf:i_[\fI[Dh_LgI=PFY[DiEnIOJLL<OnlJ6[l;P#_MVl2n[_ho7Y9l_J#_"
    A$ = A$ + "S_73od7?gE`5ZF[2EI1l:U_24go8Ljan?#f_0V77VbW2VOfTb:NNl\\_E<;C"
    A$ = A$ + "XN9:7\oYTCc9jZ\_a:W>OR[140??ahIXm<olcRLm#nk3ZWc?C9GLMAW<cYGl"
    A$ = A$ + "gllVAjYNn>nD#UlgEFE??c_AK6EnXNgEjZ\_H<okEjegM`fm;NFU?4lZc;T^"
    A$ = A$ + "EfPDUoMbe>oFGn<=^0[lSR[BK8SAjToNAlocf]MGoCi:m1KKP[^nf```````"
    A$ = A$ + "```````````````hn0f?hicDoSdW9==oZ>[XEo>B3ecklKLEn1]Ya7nY=f_4"
    A$ = A$ + "0OFe:di?nHmBELkTI8_kFnoD#gN8GMFNNFiGgn=7L7enlBU7X^\:DeNNROR;"
    A$ = A$ + "h7Mnb]9lW9n_:DV[R;nMU\0iMENLgLa71DW;:>LUgUMkTOMekH=XELlZc1cT"
    A$ = A$ + "dSGojZhgiWhDaMU>LbId6]O[R;:3knKi`WHoiZm:=GgRmc`c>oj>gbH_6EMN"
    A$ = A$ + ">h0f7SLjQngaN_;cak>;`icD?Woli`1?[KoO<I?XSkjlZn9`N8D5`N]BmL>="
    A$ = A$ + "ndf;FC>kC#oL5mW_CnYjS>GGd]O\i#gi68S<?DakhlYJ?M[NF7gIjI2]kL>4"
    A$ = A$ + "YCEOeELLnI#Wl9]O\Dl8hkdhmNL^Lcc_JZ_PKWl;7GTN:NC>PnjhlXSS3O[1"
    A$ = A$ + "fO\EbJUORS3hk#h<fS_AdM6CfQS[:chM#I\bGIXB?U>iCZ_Legm`lThmSLGm"
    A$ = A$ + "_:XV3c>i7kW:blP>onJEO[<77iIEOFZc3D>DiWh#N6]KEkckYLl^cL8oLXC#"
    A$ = A$ + "jXnNiGE>NP>OT=_oXceo[l5LQn6WCPSTO<7WiHPg\RS7iYJL=LLFYGhd5lV:"
    A$ = A$ + "kZPfhCf?fMci4m1T?_>i#^O3`]Wba[>_OOJLLEOFIM#gkEM^EFeoeTlSem<7"
    A$ = A$ + "7WY\EmgRj]>KAZhP:oMT:MSo]SWOEf>\RS[6O^j\n[hhL8W7g=WlAPZkmPMJ"
    A$ = A$ + "CT3H\fEj[^lCiS4>bLCcaS[gcO7BM^hhd\b?aQf6agiZ6;fZi`=m\mSaiW3:"
    A$ = A$ + "oBMU^Z:PdnClL^Qcb;0>_^i06gj^LlZaS?9ohjX8NEnDKUm3Ee_EnFMeIoDi"
    A$ = A$ + "OeZ6OL`]Ai1WWHemaa^f>\b6XZnXi#ehZh#egNoT][2F_2Un>k3Q`jRWmM`<"
    A$ = A$ + "`IR=?FUYiGUmabQ\_AWOOEmHeH?cfEYRcY2HN_lc0W?7PmR>;7G=F5^=5lG5"
    A$ = A$ + "LLV`aSfROBnFO5W3f`CY_EOoJgaS?=oRhn_Z#X#UM6ZZ7gInEChh8]cQ:oQ5"
    A$ = A$ + "dCEm?NF>>KGeMihg=?lIbaAo_i0FC?eL7cW[k:diSm[b?>NZa_T[ck\EC57W"
    A$ = A$ + "SGWN1OKAI[5EOXlkc[S:c9E[Y[ZMF57?gW0jkQScGE>Ngn921eH>Ndigde`X"
    A$ = A$ + "c6eA0]??;77mi[jONU_:5SYI7>NU<Faac]oEk=U_bLl0Qn]RSTG7S[PS?=oh"
    A$ = A$ + "#gn]XSo2^IeM577?dWhdkJThiEgAGA8Kc_:>nTm;EW?Q3O_\j_acn:ca3Tgg"
    A$ = A$ + "MHl3Io#6?Wc7Mn1^6Z_`_5]1bnk=ni\_J3oN`aIo1W:N8OEn>>X3Ho47NNf?"
    A$ = A$ + "^Qg;[obci<WnacaNf:kom0b]A#I9K37lnH^=Zd[BomERS7#a[OTf;MBnEIC["
    A$ = A$ + "ZWG=7h\lg=?I^L^SOR;\WBU_R[JO7bfTFI?C>MZl9LIKIQfMZhXdOg=gk>hj"
    A$ = A$ + "ii;nX]EJGnafS4kWPY?G]>jMaQ;[EonZd?g?LWnCE>V:KLLSo>o<n_kdCg=W"
    A$ = A$ + "c````````````````````````````````````````````````````````hm5"
    A$ = A$ + "MgINIO:l>g]NC_S0acFMo5Rd;7_En<jYYo4iLEL[bkEgSQMn^mMZWDj\^hOd"
    A$ = A$ + "dlM5[l?CX\>aoHW[kFUNC_o2Giki[:GCCoYUY9gSR8NC_73gYL]cMKHGlcYm"
    A$ = A$ + ">eY_cHR?8;l=1CRGnnO];]Dn;K>0OT`:o6Wj>NMWk7aEa3Lb9gkQ[:kA0nef"
    A$ = A$ + "^l6nTCf?1_:TKkf978]gY>mM6:oUZbo\ce9:O0OTFQ?MRe_lM4hTdWmQOA8R"
    A$ = A$ + "Sj>D8BcLIBiC2EYo4of=h_C^753^;gVDiWhDjP80M4l7NMn:JUn7nM^#>biY"
    A$ = A$ + "bGX7HBJRjdkVWNeLlEnC?4?foiQW]bGf[hhZWEagDYMW_a]:m[loOZdGi7Ki"
    A$ = A$ + "hDiGMEb3O7NRhbnl]^jY:iWmU^En9j9YIWOinM1?2>>?F1fGfcS]=N?emG8W"
    A$ = A$ + "W`_FZlSOij05O\jnAT3ChhC_75AjEaaDa5LKn>VI7>NDfhk;GEIJbmg;NfEi"
    A$ = A$ + "?GOghhlge`mj#em<2liH7mn;<GWaOK8c7f9mi`4>>k;UcgSRZdK:77jIU=Mf"
    A$ = A$ + "i^=DE6bjaZjY^jd?9>>\eUBgg5bnPh>K#PlMjmGHWm1jlIOCCOe_W3PS?mND"
    A$ = A$ + "T3acaHOIOMKE#Ik`M^K3ikV[#FEOgAEnidMbmWk[>VHoXZnXba9g_JWM=bla"
    A$ = A$ + "ZinceaEn[LfNI<VTn]5n_mggo3Zb07_^aH7i5kCK[2ifQkD?EMg6bg[5X>]S"
    A$ = A$ + "SceYOBS7WeeEj=egeP__^c^:\_0NjmU8gG42h>cZZl]:mk:kEndN57_K<fXO"
    A$ = A$ + "lX]?VC#WMEPoENeha[^K3ES=ROOhSWGUVX>mMfgfF=G6UOiF5_9jHN\cQ>Kj"
    A$ = A$ + "mUH>N:^AfNIX<]cma87VDfk^75EY7[?P=WGUg7I>WZnH`HliW]CMjMcCOdLL"
    A$ = A$ + "L7<<AOdIk`:kZDMo5ZZ3DmW_b^:Mg7SLP;k:k8[2H^IZdSU7eMIG>_QMEjF3"
    A$ = A$ + "X>iOej#51<gPEYiWZ]3EcaH7KYbLH`a[F;`Zk_`:>>?f3dnYRSgMO<b1N\DZ"
    A$ = A$ + "dC5fQcMTkVW[VS[F[Q_Bf>lZihLLDSUA]nJlLh`mH3OG1bLSYYoDN6gVZkND"
    A$ = A$ + "DaWE]9kVcI4FE?eMg6bQ#FEO7fLl777OWk;aEm9Qa8TiUkTnLH27_ZOHl]TY"
    A$ = A$ + "bKGHEmT:4jZ:KkXhcVSoHhhMk]34bgGRZn1ci7\e<O?M?mnHT3:>>7W^e`Y["
    A$ = A$ + "MIFNGaaIiHR]3[F7S:KonEQSSkb>\fhEfl_:N`V5iW1kQ`gmClJ_SO7f;Ykn"
    A$ = A$ + "B<7?\?\Z\11`Td7lW^kb?HO6^<DM?:6]Oika#UlbYK6\L`jo<bY=f34`^A8]"
    A$ = A$ + "P]\b_?RkTjdgI>NV?`fBIWhYN6_^i:>idk;A5?9KkS:KT?=miOCUFLLP=S[N"
    A$ = A$ + "NEi?d?Ii]B7YT3Foc0fmF5_ZgOWjdgIX^clf9NCNFGj?mnBTof`deVHEj?Y\"
    A$ = A$ + "caIemXhDiMZ>ZBo[ROEmTjikDWJHHHHHHHHHHHHHHL>TgGOklN`6_HOVNgUS"
    A$ = A$ + "WU>hCY<o^Rf5?ko=T[[he>4k=l^l8hfZenSmg8ZcQi4I=k7#ZFKc<G\coW4i"
    A$ = A$ + "Igi^XJmCE_Gl<Un:;;MWc9>^Mk[1d>Z:0MYjILjNgLbkRS_J]TkhiMkMT<?o"
    A$ = A$ + "AbacYeZmbBU_cI7M`ZmIcDOcD4Zd?Lj];77UCcaoOf_3\nSm7DHoB`Y?_OgD"
    A$ = A$ + "kG>\gG[>K58MkZo`JaE5Rg7[Y7caELW8?ie>E]WMEj0N_hPcT7WWZc^Qjld6"
    A$ = A$ + "j`8^MLlEWifZc`1FSoLXK]NO7AN\R\N=_O7hPJ_7Qhga;DkKI\?JgUSckG3e"
    A$ = A$ + "N<:ooALDkS#>mSWa[O]J?bZ>_6Cf[jH?1[hnlN74_?WGij8U_j0k]`^c9Mdf"
    A$ = A$ + "Q[kodhh0Lm2_76h#57WgoOChh[>o#ELLNOGX>OR8T?ke:>Neic<gG^bOCQiJ"
    A$ = A$ + "T?_ZCf?O#nEb<7Gl\:oFCNogXN_^jA\giHijCTSge7j>W7PlNBJG>NEMh:>>"
    A$ = A$ + "f?5ZaB`a?jKNJoh[:;iaWU?cmk`aEa]ZOl^cGEloEOC0kI=XSD1ca[iG7US3"
    A$ = A$ + "ORHf>6[Z3Eb#^oCENal7lMVES7?OfRbUUZidQa4T?7Vl_3m5kS2HID=NLX7H"
    A$ = A$ + "m3kWZES]7o>VgJUlW3VSogjQSbacmmTo>j^LlLMDlkZioYT_En]ilNaUg_MM"
    A$ = A$ + "fj3f>Lei>YKl5LJVeA[l=CMfEYbG0X2VSogjQ[PSSnnDWmoYLlX^W73Rj\LQ"
    A$ = A$ + "dKEohh\Nbc]8S:OJD<nmELlLIFikIifZH>eMLHEJU3a_eIgYL`LloF?L5SE9"
    A$ = A$ + "_6B7e^::K64]GDWii:iVCoEk=MehOakEiW>bUIHKJEk1ehaSd]c^:ES]_C7E"
    A$ = A$ + "I;BcaoKm`E=WcZeRH7kZ`nh?fgbRjd:iFIG5UM#cLDD>GEnZVcI57Ga5k\]j"
    A$ = A$ + "A][RJ]2RPiho]Nh:][bA6[BN<cMSEMRLGIk`LIQi3acDblD>NglCE?[CoL4k"
    A$ = A$ + "Z4oMUo[h[87ObjOPa=^;7_cG1Sj157?Kc`E[M>2En:]S`aELd8nEfn;7ZlEZ"
    A$ = A$ + "MLl>mSJ]lagJP=lEOcA=6n_ZLLegmEeI<_#]Fn<G1njTEf=Xl75b3TO5OnXL"
    A$ = A$ + "LU>Xbg[\JN]XMmIhhLLFioVELlEnJg?9\RS_b_lT?3jlLeFI[>lNMndi>K\Q"
    A$ = A$ + "dA9oZWOD>NgMf6GFjJC6YAf7LXB3ecjhhZe[TCSYfIjCVSWGc0Uo16kIJf6M"
    A$ = A$ + "ieh[bNKaka[]NllllQ#kXlJkTG_4F6cPGCM8o#Nc?7LEl\H<F`7>WOVZm:f3"
    A$ = A$ + "l\>8\IHf^jHoFaUI\gLba;KO9\NHZe83cADEnSdQGK=Fo`Y;dA\NoCUS3`n4"
    A$ = A$ + "4ff2hkKlleceICCKf^8CR7g^P1k7kE[e>N>o<<G1nILiPicMU5`SD8kG_IKT"
    A$ = A$ + "L6oF3WF[BGXSDnGY?APe:#iOPcll\=GQ^KR?h0mgT[WifA\<T1h[E8_VjIiG"
    A$ = A$ + "mLnIH>HlcDUSPWcjPXLYfC^H]^hb<k7Fhb1GFacjd?`gadYOhd5j8>M_K^XQ"
    A$ = A$ + "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQa[5noC#%%L2"
    btemp$ = ""
    FOR i& = 1 TO LEN(A$) STEP 4: B$ = MID$(A$, i&, 4)
        IF INSTR(1, B$, "%") THEN
            FOR C% = 1 TO LEN(B$): F$ = MID$(B$, C%, 1)
                IF F$ <> "%" THEN C$ = C$ + F$
            NEXT: B$ = C$: END IF: FOR j = 1 TO LEN(B$)
            IF MID$(B$, j, 1) = "#" THEN
        MID$(B$, j) = "@": END IF: NEXT
        FOR t% = LEN(B$) TO 1 STEP -1
            B& = B& * 64 + ASC(MID$(B$, t%)) - 48
            NEXT: X$ = "": FOR t% = 1 TO LEN(B$) - 1
            X$ = X$ + CHR$(B& AND 255): B& = B& \ 256
    NEXT: btemp$ = btemp$ + X$: NEXT
    btemp$ = _INFLATE$(btemp$, m.SIZE)
    _MEMPUT m, m.OFFSET, btemp$: _MEMFREE m
    BASIMAGE1& = _COPYIMAGE(v&): _FREEIMAGE v&
END FUNCTION

SUB SaveAsBMP (filename AS STRING)

    'This SUB adapted from SAVEIMAGE SUB from the QB64 wiki

    image& = _NEWIMAGE(_WIDTH - 200, _HEIGHT, 32)
    _PUTIMAGE (0, 0), _DISPLAY, image&

    bytesperpixel& = _PIXELSIZE(image&)
    'IF bytesperpixel& = 0 THEN PRINT "Text modes unsupported!": END
    IF bytesperpixel& = 1 THEN bpp& = 8 ELSE bpp& = 24
    x& = _WIDTH(image&)
    y& = _HEIGHT(image&)
    b$ = "BM????QB64????" + MKL$(40) + MKL$(x&) + MKL$(y&) + MKI$(1) + MKI$(bpp&) + MKL$(0) + "????" + STRING$(16, 0) 'partial BMP header info(???? to be filled later)
    IF bytesperpixel& = 1 THEN
        FOR c& = 0 TO 255 ' read BGR color settings from JPG image + 1 byte spacer(CHR$(0))
            cv& = _PALETTECOLOR(c&, image&) ' color attribute to read.
            b$ = b$ + CHR$(_BLUE32(cv&)) + CHR$(_GREEN32(cv&)) + CHR$(_RED32(cv&)) + CHR$(0) 'spacer byte
        NEXT
    END IF
    MID$(b$, 11, 4) = MKL$(LEN(b$)) ' image pixel data offset(BMP header)
    lastsource& = _SOURCE
    _SOURCE image&
    IF ((x& * 3) MOD 4) THEN padder$ = STRING$(4 - ((x& * 3) MOD 4), 0)
    FOR py& = y& - 1 TO 0 STEP -1 ' read JPG image pixel color data
        r$ = ""
        FOR px& = 0 TO x& - 1
            c& = POINT(px&, py&) 'POINT 32 bit values are large LONG values
            IF bytesperpixel& = 1 THEN r$ = r$ + CHR$(c&) ELSE r$ = r$ + LEFT$(MKL$(c&), 3)
        NEXT px&
        d$ = d$ + r$ + padder$
    NEXT py&
    _SOURCE lastsource&
    MID$(b$, 35, 4) = MKL$(LEN(d$)) ' image size(BMP header)
    b$ = b$ + d$ ' total file data bytes to create file
    MID$(b$, 3, 4) = MKL$(LEN(b$)) ' size of data file(BMP header)
    IF LCASE$(RIGHT$(filename$, 4)) <> ".bmp" THEN ext$ = ".bmp"
    f& = FREEFILE
    OPEN filename$ + ext$ FOR OUTPUT AS #f&: CLOSE #f& ' erases an existing file
    OPEN filename$ + ext$ FOR BINARY AS #f&
    PUT #f&, , b$
    CLOSE #f&

    _FREEIMAGE image&

END SUB

SUB Smooth
    FOR x = 0 TO _WIDTH - 201
        FOR y = 0 TO _HEIGHT - 1
            p1~& = POINT(x, y)
            p2~& = POINT(x + 1, y)
            p3~& = POINT(x, y + 1)
            p4~& = POINT(x + 1, y + 1)
            p5~& = POINT(x - 1, y)
            p6~& = POINT(x, y - 1)
            p7~& = POINT(x - 1, y - 1)
            p8~& = POINT(x - 1, y + 1)
            p9~& = POINT(x + 1, y - 1)
            r = _RED32(p1~&) + _RED32(p2~&) + _RED32(p3~&) + _RED32(p4~&) + _RED32(p5~&) + _RED32(p6~&) + _RED32(p7~&) + _RED32(p8~&) + _RED32(p9~&)
            g = _GREEN32(p1~&) + _GREEN32(p2~&) + _GREEN32(p3~&) + _GREEN32(p4~&) + _GREEN32(p5~&) + _GREEN32(p6~&) + _GREEN32(p7~&) + _GREEN32(p8~&) + _GREEN32(p9~&)
            b = _BLUE32(p1~&) + _BLUE32(p2~&) + _BLUE32(p3~&) + _BLUE32(p4~&) + _BLUE32(p5~&) + _BLUE32(p6~&) + _BLUE32(p7~&) + _BLUE32(p8~&) + _BLUE32(p9~&)
            PSET (x, y), _RGB(r / 9, g / 9, b / 9)
        NEXT
    NEXT
END SUB

SUB DrawMenu
    LINE (_WIDTH - 200, 0)-(_WIDTH, _HEIGHT), _RGB(96, 96, 96), BF
    LINE (_WIDTH - 200, 0)-(_WIDTH - 195, _HEIGHT), _RGB(164, 164, 164), BF
    _PUTIMAGE (_WIDTH - 190, 10), menu&

    IF quads = 1 THEN
        LINE (_WIDTH - 178, 64)-(_WIDTH - 143, 110), _RGBA(255, 255, 0, 100), BF
        LINE (_WIDTH - 178, 64)-(_WIDTH - 143, 110), _RGB(255, 255, 0), B
    END IF
    IF quads = 2 THEN
        LINE (_WIDTH - 142, 64)-(_WIDTH - 102, 110), _RGBA(255, 255, 0, 100), BF
        LINE (_WIDTH - 142, 64)-(_WIDTH - 102, 110), _RGB(255, 255, 0), B
    END IF
    IF quads = 3 THEN
        LINE (_WIDTH - 97, 64)-(_WIDTH - 58, 110), _RGBA(255, 255, 0, 100), BF
        LINE (_WIDTH - 97, 64)-(_WIDTH - 58, 110), _RGB(255, 255, 0), B
    END IF
    IF quads = 4 THEN
        LINE (_WIDTH - 56, 64)-(_WIDTH - 18, 110), _RGBA(255, 255, 0, 100), BF
        LINE (_WIDTH - 56, 64)-(_WIDTH - 18, 110), _RGB(255, 255, 0), B
    END IF

    Text _WIDTH - 55, 319, 22, _RGB(0, 0, 0), STR$(brushsize)
    Text _WIDTH - 57, 317, 22, _RGB(255, 255, 0), STR$(brushsize)

    LINE (_WIDTH - 160, 180)-(_WIDTH - 40, 300), _RGB(164, 164, 164), BF
    LINE (_WIDTH - 160, 180)-(_WIDTH - 40, 300), _RGB(255, 255, 255), B
    CIRCLE (_WIDTH - 100, 240), brushsize, _RGB(0, 0, 0)
    IF brushsize > 1 THEN PAINT (_WIDTH - 100, 240), _RGB(0, 0, 0)

    IF randfill = 1 THEN ran$ = "ON" ELSE ran$ = "OFF"
    Text _WIDTH - 32, 456, 22, _RGB(0, 0, 0), ran$
    Text _WIDTH - 34, 454, 22, _RGB(255, 255, 0), ran$

END SUB

   

Find my programs here in Dav's QB64 Corner
Reply


Messages In This Thread
RE: QuadDraw revisited - drawing program work in progress - by Dav - 05-31-2022, 12:44 AM



Users browsing this thread: 1 Guest(s)