Learn Custom User Views

Getting Started

Welcome to RNBO

Quickstart

RNBO Basics

Key Differences

Why We Made RNBO

Coding Resources

Fundamentals

Audio IO

Messages to rnbo~

Using Parameters

MIDI in RNBO

Messages and Ports

Polyphony and Voice Control

Audio Files in RNBO

Using Buffers

Using the FFT

Export Targets

Export Targets Overview

VST/AudioUnit
Max External Target
Raspberry Pi Target
Ableton Move Target

Move Intro and Setup

Using RNBO Takeover Mode

Exporting to Move

Importing and Exporting Packages

Patching for the Move

Custom User Views

The Web Export Target
The C++ Source Code Target

Code Export

Working with JavaScript
Working with C++

Special Topics

Sample Accurate Patching
Scala and Custom Tuning

RNBO and Max for Live

RNBO Raspberry Pi OSCQuery Runner

Metadata

Export Description

Raspberry Pi GPIO

Updating the RNBO Package

Custom User Views

Creating Custom Views for RNBO Patches on Ableton Move. Draw Directly to the LED Screen.

01-graph.jpg

User Views are a way for you to draw to the Move display from your patcher exports. You can define multiple views in a graph, layer views and selectively hide and reveal layers. You're able to draw not only static images, but also animations.

If you have any views defined in your graph, you should see the User Views menu entry become enabled and you should be able to navigate to the view from there. If you've enabled a paramview on the view, you should be able to edit parameters while the view is visible.

The User View concept is a new one so it will likely go thru some revisions. We're open to suggestions. They were first introduced in Takeover 0.0.1-beta.21.

buffers

You define a view by adding some metadata to a UInt8 type data buffer. Here is an example buffer with its metadata:

data waveform @type UInt8 @external true @size 1056 @meta system:true,view:0,hidden:true,viewname:'waveform viz',paramview:'Default'

The Move display requires 1024 bytes to draw to the entire screen and then there is an additional 32 bytes for a header, that gives us 1056. The 2 most important meta entries there are system: true and view:0. The hidden entry indicates that the buffer should be hidden from the move Device Data entries, not from the display, for that you use viewhidden.

Once you have a data buffer defined for a view, you can draw to the buffer using the display operator detailed below.

Meta entries

  • view - defines the view and gives an index for selecting this via the /rnboctl/userview/display OSC message.
  • system - this boolean indicates if the buffer should be shared via shared memory so that other processes can access it. system sharing is how views are seen by the RNBO control application.
  • viewname - an optional name for the view, the first viewname seen for a specific view index will be the one that is used if there are multiple. If you provide a viewname you should see it in the User Views submenu, which you can access from the top level menu on the Move. You'll only see the name though if you have more than 1 view because otherwise we just jump direct to the view instead of displaying a sub
    menu.
  • z - this defines a 'z' index to use while rendering the view, you can have multiple buffers share the same view index and then the z order will define how the buffer contents are layered, with higher values covering lower ones.
  • viewhidden - this is a boolean value that indicates if the associated data should be hidden initially or not. The default is false if it isn't supplied.
  • viewxor - this is a boolean value that indicates if the associated data should xor with the data in lower layers. This sets white to black and black to white for each bit set in this layer.
  • paramview - this string value indicates a Parameter View name that should be loaded and available while the view is loaded.

display operator

Here is the current state of the display operator, with the guts removed to make it easier to read. It is a pretty low level interface, we're open to suggestions for how this could be more intuitive.

This operator lets you see if a buffer is ready to be rendered to, learn some details about your display, render to it and the mark it dirty so that it can be drawn to the display.

NOTE that the move control application only reads in view buffer data while it visible on the screen, you can render once before the view is displayed but then ready() won't be true until the control application draws that to the screen and marks the data ready to be rendered to again.

Data layout

The data buffer represents a linear array of bytes.

  • The first 32 of those bytes are used for header data, unless you use other data access methods like poke, the display operator handles the header entirely so you don't need to worry about it.
    • Within the header are a few values that represent the width, height and an x, y offset of the image to display. The display operator handles these values via setsize(width,height) and offset(x,y). You can use these values to draw to a smaller section of the display and offset to not start at the top left.
  • The next 1024 bytes represent a binary color image (black/white). The first byte represents the top left most 8 horizontal pixels. The second byte then represents the next 8 along the horizontal. Once you've gotten beyond that first 128 pixels in a row, you get to the next row, down towards the bottom of the display. The value from rowbytes() gives you a count of the number of bytes per row. The pixel orientation within a byte is slightly confusing though, a 1 is mapped to the right most pixel in the byte, 2 is the pixel just to the left of that. So if you want to address the left most pixel in a byte, you need to start at the most significant bit of the byte, or 1 << (7 - bitindex). You can also just use the pixelbytebit(row, col) method and that will get you a tuple of 2 values, the first representing a byte index and the 2nd representing an index to the correct pixel in the byte. You turn a pixel on (white) by setting the corresponding bit in the byte for that pixel.

OSC

After you create 1 or more views via buffer meta data, you can further control some of there settings via OSC. Those details are in Controlling RNBO on the Move - OSC.

Example Codebox

Here is an example codebox that draws to a buffer and in turn to the Move display. This renders a waveform that is in the buffer called audio.

You must wait for draw.ready() to return true before you render to it. The rendering is happening in the low level ormask method. Finally, you call markdirty() to tell the display that the data is ready to be displayed.

Example Patcher

Check the end of this document for a basic loop player example patcher with custom drawing.

Sprite Sheets

With the release of Move Takeover 0.0.1-beta.23 which uses RNBO 1.4.3-alpha.1, you can now load bitmap files and draw them to your User Views.

There is a new operator called spritesheet that helps you do this drawing. This expands the possibilities for drawing that we introduced with User Views.

Here is an abbreviated paste of its programming interface:

Here is an example of how you'd use it in codebox. Note that this also uses the new CHAR_ constants.

As an explanation. This codebox creates 2 state objects: draw and sprites. The first represents the display and the second represents the spritesheet. The spritesheet object indicates that each sprite is 8 pixels wide and 16 pixels high. With that information you can query details about the spritesheet, like how many sprites there are, etc.

The codebox uses the draw and sprites objects to make sure that both the display is ready to be drawn to and that the spritesheet is loaded with valid data. If that is true, we clear the display, bind the sprites to the display (this sets some internal state that lets us correctly draw sprites to the display), and then we draw sprites using the draw_code method. draw_code is exactly the same as draw for the sprite sheet except it takes a sprite index based on ASCII codes, so the CHAR_ constants are convenient here.

Example

Below is an example .maxzip project that includes 2 different rnbo patchers and 2 sprite sheet bitmaps.

The first draws individual characters to the display, the location of those characters is driven by 2 oscillators. You can control the frequency of those via the xfreq and yfreq parameters.

The second draws an image that covers the entire display and has a parameter that changes which sprite is shown effectively animating the text "RNBO" exploding.

If you run either of these patchers you can view the drawing by navigating to User Views via the Menu on the move.

SpriteSheetDrawing_20251223_113839.maxzip (28.8 KB)

Creating Sprite Sheets

The current implementation of spritesheet only loads a very limited type of bitmap. It should be uncompressed, 1-bit, and use the WINDOWS BITMAPINFOHEADER. See the Wikipedia entry on BMP for more info.

The operator expects that each of your sprites are the same size and tiled without any padding between them.

We hope to create some utilities in Max that help you do this but in the mean time you should be able to create an image in most any image editor and then use imagemagick to convert it to the correct format, see the final step in the list below.

How to create sprites from a BDF font

Here is how we created the spritesheet with the spleen font on macOS.

  • install fontknife: pip install .
  • install imagemagick: brew install imagemagick
  • checkout spleen
  • create sprite sheet: fontknife convert spleen-8x16.bdf spleen-8x16.png
  • convert to 1-bit bmp: magick spleen-8x16.png -depth 1 -compress none -monochrome BMP3:spleen-8x16.bmp

Example Patcher

The patcher below has a basic loop player with parameters for playback rate, volume and play/stop. It also defines 2 different views. The first view shows a waveform with a cursor indicating the current playback position, the second is a simple meter connected to the output of the groove~ used to play the loop.

----------begin_max5_patcher----------
17264.3oc68k1biaqrnedleE3oTuikSj0PRsXqYRN0jLdRc88lIYpY49k3T9
PQBYwLTj5QR4kjJyu8W2.fTbmThTdQFYwVV.DDnafF8d+2O+Ycl5dC0uC4kj
em7rm82O+YOi8U3W7Lwe+rNKzuwvV2m0sNz+xT23qc5waZodfwbKmKuviZDv
GlgS5qziL5jA3uFNJ7mj+P7HVlrwwc5edznvgwY0BKGaZ.6Uns9KcWED9sJ3
W9OO+43O5Uy4pC8Z30D9RtR2yQeAk0hmyT2u96G+GgsEPuIXcCjWGXAuXxOs
Z1Lp26s0uk5U8JVQC+k5P1BWSK1RluLBtcIk+.c7stzQ2tSu3ex1xGFubfRm
rAPoAhuEWFWQ87sbcXiiZ+g80Nxv0Ivy0tuVhECr13fPAL7YclYYSi8zp8De
u9xkw95mE6QP.+e5xFnI8h9JKG9WoF8UdzqrBedknuU2C.oA.7bkGG8by3gc
VOLtlTOmUVrQh+kvV.wThgrQzp+Rci031vmtyZrj5fgL7ihB9qIZpregaSCA
5OqiIcl9J6fKlA.pn8J+hdv5w6ROKSeq+RfHUYauUGEeLf4CfI8m6dsu.7FN
RJQSZ2EKnNA5d2xdAQCN9PIaK5QXaHY8NmMkoNFGGuD+HRhuuriJYNtb0JSO
8qgc8w6PzYlkjbaOmSJC3.+wiY+5X9Ik3XfTa8GnDe.Sr+ePxFhSoHVK3dAK
mYtwf.w.AvSRol9m43Gn6XPOSzQ0dw5gt2krsWwGg3CA.GftPCRzdhN.iQPf
2u48dO2koGdbOm0kTeNfTLRIa2xW21RO8JiMr32Gh1iCBY6k.BN5Sso48bPK
FyCaTM8qaotm9hbdLS5R.SpGPMyow.2UvV8baQP1CwRSWuk8YINw8+pauh2K
kNwZO5btXG6p.Za.mYiSq.kueAkECorbzZC.ENL6.3jxNFNwnRjyJKB9It0s
L32f1A9M3oI76hKV54NEH9CzkUaCHYxA7QHLs9vtkt12tbtqys0GtoUHb68g
CFwcFIXNk3uZpfsj9s+EMpOHfv06hliTKAGPuYoqO8JWKCJaV52F3h2xFTxR
pGgMxDAyz9g3Fj+bcKGpIg8RoAP6jttN12RtBvAlDKGR3tCKiXnR+C2aQlSc
csqBUNS21mVB1Lh44lhA+DSrvLmjxe9ALykKSA6IHF+aWLMKpw8WcC9HHFyY
NuS+Ffw5k.u+Bg.KF+fxa1FnGjaeBNXj.WhsqtYGIruJXOiRjPw.sAN3MycA
hb9rSHWqeK7a8f3DsXuOehtGmbG7Vsol8IG3asXoM8.fbmG4fEVlVGbH4ZKa
ah9p.2E5AVF51.cP3GtHfKbblAc+7.KGPrYf4.x6N6zyHNtAT+9jOBnM76rB
vsCGrxm5IFdGWGZ3v6esEbFFNSOi+vmGvoMKdQ.4YhtiIAjPzK.dhf4XKgu8
UNnnDl6aDeovMnQZpBQKn9oP3WmzS4ncjrGoBxzhwp38hHhKZSgWara7z299
O7127ie5sm1m7YewtFwq.tM0Ofpa1WRknRpDv7fZcEEUEWqfVbIhQ7qD2o+I
LC7IWRC3Wqx3OlLyycAQm3ScL+JhorLorlEW4RLsP0JATD5hGJAoBH1.jxw3
1C6Qfy3.8fkTGeD3w6QXy8fyuva.95nCytAyCYIa+iQpXmkQBZLUMGC3zrSz
7Qr3sM.KPsBmyeftzV2fhJFkfiIireRdv5QPUVea.pwQBpwNSx2n1i7MZDZf
QeNs9oTXaGajDXebHzMLb8LwmBF4U3qPRPnZBBqrL8CtscXa6mny0uxBvn.i
0eiBbop0+uUTxY.Ia7teRWw1tCIKn5fvR5S8C7zMBXRNgTMzIr8gjOe1o83e
7kh6q0INzqi2J.YAD7KIvkYLjOvH.mRCmzB1HIel52inCfPUlEmBoGvW33mt
z1cJ7cMhn.a3Sry444uKpikyxUAILaQ1MQQ1fvxIsdehYPso5nsGVK5eJyok
qp4RObl.L2V+1eM7ENCEAmOvI52b27zMloqwWD.9jmZpyJSqS4JKZCTPa5Uw
texOX6m7C1kS9DHezFrq2rkro4T6kQqmbN8yOg+ayxXcwjVfj+3IZycI0SWP
LM94wNBM+bFaZOTar1fwizRzCfxfC.odOe5b1ukb8E+bDaJcA8Ffn3EHIWqo
fLI9EYwqTbxERD34YuzNMXJsjhQxF77JzaVh0U7KNDThddYR.j3gSnZziT6W
F.geMhvXh4ZfRV2.oZrzsSssh2TwX1zFNOMPt.CnWjQzyXRwrFSu.CpWrQ0q
1v5EYb8rzoqvH6oLz9nIb6rOVXtctsdOQIoYdqgw1qmA2qoQ2Kyv6UX78TFf
Ou8R4XA9rzLSZI9LsWkE4SZzcKGhJ40hILof6px2H7GyPHbrzHk7rAe9dsRm
LcIto5S+lSXsdkrMFyh8poZMOq1mEbUCq2WrE7yY3P9QLo2joaY5W4b1l8VN
XYRxylDUpr3xY7rRlOqfAzJYBsbFQqjYzxYHsZS1HNR3Xh2fdaZ4QxJSR7S3
sMRD1sBRLftTEI7M7DESIjgrZLwBZfdaiF9Qx+8G+seEk9eA7XTTsrdnj6BC
mgeDesvNFclJBPj1zaYB2gbl3gOhAx4ySajWgTgVKDWN8wVeJky326Dv37FH
NG7tdlbtiFjYixyKeiSBgBy.oSxFeUash3pHqSCrcBPld+3UH7hq.ANYdlVk
XWiPTKF5TkHlkHVSNh1jUFFKmNYtDLlHL4zbRVcyoCEIISNRyb7HsAiNdrVl
2QNRzjjhd5MCUKYSdbEDR3oSmZL3IjRvx4hbYkoXAEJRXA.B97h10WlX0sJK
h.y5egLiLqF7DpNfwG3.MFugCOtkXJTabobEp8nfqPXJs42ioVJcCbHa8qft
euigi3JXoGcADinZ07NfJmqkA4bB6nkfmRI3zfPs4FTP8dfq76WbUA92WU9X
ZgHKs6NjkVkHKMIxpDjkM04xf4sMe4ycul.RpgbZC2q3iHN7xmNOsklsFXCK
+VWTUTXG1QF.I.hDE.LsX8Wbqc82ularc7hu+QX3cFKqOUQT4eczlHgRsEAI
i8lRKAxZIOXBDTgjGs70Y4ZYkJECo2lr705rM5+Y2covlIe0VK2Ymp19sELJ
1.QCyirbBgCysCorDRdco9BHpNXf5vAZCUOtNRHprCjPLjraFsbD65Qk9Jap
3iHb4h7E6YykfjAje.HCIU+K5KV9UxHkZHFo1XVTUpMlYbgSZKaKno1xhQlB
uIViWj+6ZKvchA7A.9yx4qjA0Ayc7I7vVlI5+fQ0GyIrxeo3Os8.iCkMRlZt
bNw80wLJPbvtkqLkGmZPHa3SUnXoRi4IMlmzXdRi4IMl2SIi4kqaG13KdK2y
DatA69ZEVr6qUZxtu1.QxNRc7ngiFMdfxf6Kq1EiVeVwxZhI8Dr0q0FF06qO
5jHScfV+QsuDYpSt6jHK66JEpS6QmDYZ0AyMTiKQl1tPhLEoDYa9ECZRIxjR
jIkHSJQlThLoDYRIxt6jHSSJQ19mDYJMms9GFRjEPlh+asC8FUUVnQI3uudB
i0S7+kJT1IkxTuZoL0OXOlo9eiQUivnZRFP5hNXQ5D8vS.29qdryy79jp4+.
FLscJdRq13IMIdpT7zfcJdRs13oAR7Tw3I3V4KuD3.ns4o+S.y4BOmxcVTJN
wmXhYWP31AQp5ZcWD2Izmbdv5+8s5XNxh0BKk73i+AgZwxbN5jqm6ZGNF8Hy
rc0C5QvENlJdPusoWhQS2mXYByBqYVfDCfDDbFmiM65ZACCLD8H1GlblbFK4
64QYYPLG20OSuXeev0tgqCXPbCv76ELIsfEAN6gYLaN1WpvfGBNF4xR8RtsN
3rXCL5tffjBBdd6zVd93ckjSEEaX6BdaZIO8jwXP6sjZDa.s2RZPKtjZzMlM
PlVwULkJWaQ8IobWAMw8OGqMbhxPkAiZK2+Lg3kAWjunPat49BtKDsDUWF9D
UK63PlqUNfm2FFy+0IXj5kQjPLgZLSjnNTJwFPajI7vAMLObnhRtVlvjJ47v
Qv0u+ctNtrLIh4+N8TvHLszX3BhTRdy+0O9qe7kjyXJA5GHZu5bmWCRZFPI.
.L.9FL8d8yV2PM+Y797ezyS+1trG5v0cEyVGhtJzYT2y6b0pyg6QT0NAfkCw
NeNSmSWXtZwhagda4nx9RqYjt3.z2ipada2COj72m6PXiYeCaptWW9CSH3ii
lYzGdZ75IKGb5x+di4qb9x50A6omSstbdP2CIufuLi57Rcy0cUM5q8bu1e82
yFQxQjtZjuEehCW+tbs8uP8kgbzIdaWaYFLGdYGkbDmda.0O0DK7qiVYnpd6
hOfEzEkWA+56ESYh028cBHBeHYocMX.PHHLw3yxuCmfhwhPdwKLmt9APHFz4
tXEAA5XWMk9vyY6dopRW3fRW3qUT6wAr+t0ebH7O..C68q3CBhfXCx2y1Sf8
IbBQhF8A3XxaEmMv2hixvWASF+Et.+g7G3eDyKQO+AVOil3Bf6pENwPC15KV
10yckiIeV7sB3+g8fCAge9UwF.DzF64YiGLWNIQerBxzk+urtv6TDBwiiP7f
EOt8.9TL7AevbmMCX4DABQ3lui3cHLQCwyuJr6QCqAeXMfgkMegOlXbE6+Qy
D3+kth2v2QLf07M+7OeXz.9Oge.QR3ph7uIJ0Xbv2INVpJJvF1ktW2UCn0Ae
DGiCyL9re8ObfCa.Wn68ESKufaYaggV5zF5C0w0.XMOW9x63qOitPWD4.YtD
lyhYluWRrSRrSRrSRrqsI1UMKy2GJ12i5Sa8DovGvAkkDm4j+vT0NOwCFK7W
Irzzh+tNiKndeorlZpgwcPRUH+fZceVCYO3ScB4GnsO4QI0LwiPuYoWaqAd1
XJUz7l5xL0KsjW.dTvxcqZHEtlwXUVfUA7JCBVbPrs49qhe+mpt8T1RzT9N8
TlxzTAHu3BS0lXPr.ffiMAGbzi0.VR30eqtz9W1+kfDS7DoKZRJEdICvwE3P
zS2e9gRzaEn2.uU0A6FSL51D4dpKCWgtjH.T7YtsH9d5S9zbKeB7er5nFz9r
U1beKCqWD7eL05RliKRPMb52m7F7yWRcPcZi6GXaEBlScHA5egxJ3.3+.ui.
qET4Nis6f+8PdVoVIZj7Gh66TjR0IKj7GfFXFyJrmT91tHo8jxi4mTFSpngo
9lT5jAizFOPY7fchEkDyuKx0lIatYkBWt2+9sHyOtuZE403dLxmOyI3DxqgF
wjmNPtCHmSdMRPjnpLZL40nKeR7u0Oft3kXimeduqrnW+RUwGvU3KO3pUGoc
.7MysLMoNgcjQMh06CNkSc3fZ6tjCzhUyvaS2kbOvaIy6c1TIH+IzucBvJzE
5R+jor5MOAeSXXA.G55+DKLnpk.l0TIL34ocPBE8i3wTKGxG0wRxg+8fKStG
DHaUEDYETj5K.Si28rCvz+Zji58F3E3Ps8eZlIYaWjku2t3PI6vHAXhgJwQs
.NR38I6P5lfvhn7cFnOjdMJtmOuFx1Kd4fcAZJSxT3u+BQekokKYomqApJAm
K20NqdGeAA9FKzn5CtXQc61TDBO1u2WnVv9BgTVriF6Z0LruriAfUK1YaXdm
kMHnNVCyL2M6Z1DhEKjzIhjKdu.iWCx.K7kDBpIC5nGM016JdCNnrHpACZdV
rr3xhXEgbzO0cBAGTIB16.N49YKGSx6zuwZwpEL2.I5Mg5x.Q.7h0ykVWQct
u0X+igSP8mLYTMEykIEZaePho5VhX3gSSqbBtCXCafbiQEaLTqyobgxtaSC7
gI5gPZoLMWWHAUomUTpmUro47GrX111Hye1BiWT.i9hkns3c8He9C+BRn11U
2D3pBSx+LzaeYh.pBzS3Szp95BZPH3r1o34rtrXkcflHvdGO7PINoVZkfo3u
VFyTtNESR4anLam0BhI.j+r2Aj+ri4.RXnqa4i73XahE2DcNup8P5h5DdYVm
LakiAiAGaqufNphS2aNrGxFDvLzMbOTwakCOAJofjRUweLS34JRxo07nan8u
a8bq105VAbFWXnHDm3tJv2xD3k00y1T5EQo8akl3.nK2xvMnBjnoI+nJWVRg
fk72kD+UKu.qrDe2YNF1qfyCm4PdOG+ks23D9RAyqcD8RlsD2qDPYKyVh2U9
W3L2lkKH1J+q49MMkD50JMzwJaAuTok70xPmyngKnZ4LFszTl6hBMECTt3Ca
etEguKt7blYd4zzT9BZtcYCxsHiFMQQY3wiFbeUZ4RJ4mR+Ly2PsojMkZFJn
Q1VVyLyF67pH.8hb81wM2yUyPkMkaqlXKRGaL2hklNSRuYk4xmX+J2mV8cW4
YD5ZmhBzNIqWfZRw3PmQAMVewLAC14sxca21IHV..q8LTCiM+65In1lLAUuO
.gpaxLb78ALTYS1FN4d.FF9RqOL7NeFhmN0dHuOLj9QsOJeuLAUausgwZbcK
QeZ8JHZdkJnDVOeqHXDVGHB7Kmi2TdAC.y++GNf8yw4EK.0LN.RjCrNN9asn
..nXm+uZlDhg95rHLguHXysyyy6l77BAEF.5hry3huDO2POgCm2oH0qz8V+9
V4465gYoBqDBEEqXFQJrO4URbNVqu1nnXAYxfb2EDG8NtPzqVgnWkT.wzwXQ
bLZkwyQ9wxQ7yzcPocRqppjjFJyt4IJ867QJY6EpKgR0iPI9yeolrtXcGTpd
CJVmAkKeSEpzOICxcVrJsAY1N37hLoRzsEJe+BJKFRkIwTrc.pLQjX6.mT1w
voBB3mxJ4QofeWbwRO2o.0qroy9sCRlb.eDBSqOraoq8sKm65ba8gaZEB2de
3fE55H9qltjqDf9sOgR0GDP35Qn7H0RvAnBp8oW4ZYP4oSo1.W7V1fRVR8Hr
QlHzcSjKRJzbNUjCmvLTtOoKKt8uBvAnigPB2cXYDCU5e3dKxLq0UpQ70mBa
FXEXSaCL3mvAJ6Io7me45+U6OHl7LeQcMZYJ7SVOrZ6POH2pnE+ogdRUGIru
JXOiRDR3wy0tMvAuYtKPjiWTEtVGM2mdPbhVr2mOqJEHdq1Ty9jC3d4wA.4N
OxAKrLsN3PtScnuJvEsKjgtMPGT3nqzvwAMr34ff9FtKPCN9tyN8LLOnfgrz
G4NGKwhkD7OXEHlnX3cbcngCu+0VAXscX1L9Ced.m1bLOpE8lZV9Tjm1TvLd
j3suxAYE1bei3KEtAMpVphnETGBH7Kc3zrdGI6QpfLsXrJduHh3h1T30F6FO
8su+Cu8M+3md6o8IX5OJ9tc31T+.ptYeIUhJoR.yCp0UzPE3zXzBZ8W1H9Uh
6z+DlA9DPxc90pwJDd5rxUxWQLE5mPLmMgekKwzB0KBPQnKdnDqFK1.jxw31
CYtMFlkxnN9Hvi2ivlQekGdCvWGcX1kUEW3GoObO9rLRPyFOJGC3zrSz7Qr3
sM.KPsBmyeftzV2fh04Frf2vI6mjGrdDJlJqBPUlw7rZSx2n1i7MZDZfQeNs
9oTzoCvQRf8wgP2vv0yDepvRoijfP0DDVYY5Gba6v11OQmqekkKyOB9FEBWy
ujy.R13c+jthscGRVP0Agkzm5G3oy7ETNUCLcjA6CIe9rS6w+3KE2WqyRD3w
ZEfr.B9kLeQh4AhNz0tiHuQR9L0uGQG.gprhHTH8.9BG+zk1tSyV5z2LhBrg
+44aekD6hJvAjRtIp3Da1lWgjJMImkofpNCEAOq6LkuqHUfuiTlAuJNwmUdk
isbELldUrz0uQy+jN0PwoGsjtCSNmgR3JLnjZIZLogZVlnsh7+kj99xPswZC
FORKQOJ2sWxZ0o5ZIqT7CEdT54Yu5KMXJs7VQbX+7Jz9Th0UbxuhyyOuL9nS
7vITv3Qp8UpsY3JxVUEW4ZyyLbKyXlqjL6GGPiRyKPyYMszxkwZJeiKsP+O4
abljzRHVNhq3RwlKOAnlg9IfNMlaAP0fUd7EwMiG1I4PB6E7bVYk5hyjT7h.
Dr5+S9GEVauuQiYV3av3SXkMWEElY+N9DkT4.tPZvWjnNC8K5o1VboGrqQD5
w+NQcDaPGkdrfIHP5zGXHvWfaBGwjmr3UGYcgmHm3EgObx1S7nQpiqvMTLyu
Vk2SsoEZJd0btvhXL5V63LwOzs18w.tDyYeD8P0YbEEcRUxzUbQU9KQ44Fdx
4VWhBQzM.H3PDnCjeFkCYpO.Gla.Nbfdxxqf9tnZI3uNWG3MtjMnVNvF5.+j
wO+Tps60om2niRvhIXbxOt5TIn1XF5dDemznH6GWVBBrIkSYk6+z6nkyWIZj
WKP7jLWDlKbZ7j9ifiXi40o5I0OkKJtotL34nRgmkWQwT2iKO0wk3mAO3Bmw
Oao0Qlp9piQDKHvOX.w1NxO3HopByvm3wedgfmMM9yCu4pkQh.0EPHX2q3oz
+bta7YxXiLMlSFEUOTQdsVTTkGxhIQMq10xb+wFEnU2UUN47zbPiu3sRkKTh
pDxQcBY0a.vyVogPSdsmT3x75Q8CfliTGOZ3HPtKkZEAMp6fHnIjHSmNaZrt
.K8KxkOyMOTWPn3CAN3IpqYfu.8wURlSOTD2MIyoWFC7C1CXfWxPnjgPICgR
FBkLD9zhgvZajrz6G4o5i74QTsF7HVz01MlSwJXTrR9Da.ahCOdj1fQGOV6w
HShWjKqLaCOhO.XQDlNK8m6F7Uxn9ips9cU0XJ38jAsDigGWJigZaLiga99A
ggHU5uwQHeDD7hbWIa99hnA7gv1C5lo3eUtARxO9J2hMFCafITdnHwvtHYlF
sy9ELVBPStEZSbo3CaHeMUH9vNJK.srzjwRwbazqPSkUzVDzcNihGFQlGqKN
58DRb1ifi7gO3xZP7mZ2BkfSMN.MLdpNzyOPvil6Lr7chPthhRklx+UNYmrj
4h+bZO08D4ziMHU2nN43gCmL9X0cRQODlbWjKA7s39vTYnsczMg4WFIKV4XZ
bqaOdB6WGieYlaxP+IYlvQUTJ9VNsM5VNbPCcCEUs9kq1Lkbd3HH62+NWGWl
mzX9uSOELBcMqWCWDBDQPesf7CL+AUHgR2yE9ex4XBjP6D.VL7vWcty4NhGA
Xb.ftAvSgNIEuE90UPKv2pH9R7.2ElqVr3V3KsbTYeo0LRW7c12ipada2CI+
q+E6w9+7Cgi6gj+9bGRr2B7oWgeC6wXUmgt74CgfuBCWa+KTg9wZ+ZKyf4vv
dDQ8Uw5wpENPOfcEKV1Eeceq3w5APRwGiOldtW6GNhyoXlim8JiZb5s.ymgc
H7uSLqvuYpUPXeVZcC0V7cc4uRXJc3qHu3E7BGNkozBNsJX.Yt8x0XL0MC4U
i4qKqG7E59eAFYUx2+8guneW8OXSPbT5xlkHl3Uvu9d1pA9z28cBPq.ThZRw
+KcCG.k+f7cP2+1n0WO16gut+G9Km8bKz89hokWvsrE7+zoMXTOV0eNC8s30
86LMJtJKy2K2mK2m2x6yq9tx6CwP1xDZa4tdzGvAkEDP7iBnu5wc4VjiJKGq
.3ddNOm9O0KcMnGy2xf+7qz36yhyUqZoa1zSRAnDT0FsLJIeS5KqALabdymU
42aY0ljW0jWpfjJM7Sixj5BFuZSz3m7rt7RtYVANE3AYNFm411bw28k4R8JN
.lIieT.xKNK0sIFDikbbrI3fGqRV3S5R6eY+WB7dyijDzzrJ7nO0wE3b0S2e
9gRzaEnWLFIpUwzKRXp1D4dpKCWgFVG.J9Liuium9jOgAIhEFxF12hsOakM2
bnXnGy+wTqKYlemfp3vuO4M3muj5f50B2Obsnfj3PBvZ4FF6p3+foDcqET4N
is6f+NRI2pMMeim+PrSTKcE5qMe0ClTms4wdQJk1VzvTeE2dxfQZiGnLdvNQ
ush42E4pVxMW2sgK26eKYx72GtdbHuF2CR97YNAmPdcXA6gGXYuFI6PTUFMl
7ZzIAH925GPW7RrwyOuGFGZuTA9ve8RU3mysLMoNwa7FWO1eVC0HqwTdqvIK
Gc7lXK87RKsoUprZCLc5fGLNaY12YSEPaqJeF6yQLUsDotl53HrPeripU1Mn
veHi4sVt5WKp.JsLltVUDkVUsgOEPV7Z+RaenrzZAiDGso3ncPQMOEcy6f5e
cyn7JJ+M9cjJAMT+KB3w989B0B1WD5KL3QCoZyqMYjE6rMLuyx11xGSNNl6l
cMaBwhER5DQRBuWfwqAYfE9RBA0jAczwPZ6cEuAGzjoWGQ17lKG8Sca76fJQ
vdGvI2Oa4XRdm9MVKVsf4kEQuovzsD2wduz5JpSeoEnq7DT+ISFUSwbYRg11
GjXJqkHFdBKUTcGvF1.4FiJ1XnVmS46fH5.i2uPZoLcUWHAUo2Jzjv4HCxLa
wSn4HyeFqgB3tjWrDsusqG4ye3WBKpB.WUvm3n29xPDuBzS3Szp9OBZ9G3r1
o34rty.jRv.sdD1GFO7PINoVZkHrHE2lXlJpuzIn7MTlGLZAwDBqZzsL4O6X
N0SOBK4fB73Xah4PdcNupr5LfNgm+dIyV4vRI4DaqufN+gS2aNrGxFDvLzMb
u9vakCON5UPRop7X1h6MHRxo07nan0ta8rtw05XBYkkTMByG7tqBXkchqc8r
MkdlSa5TkK2Ru4uBjnoI+nJWVRgfk72kD+UKOqprThxYNF1qfyCm4PdOG+ks
23D9RAyqcD8RlGc1qDPYKyiN2U9r2L2NUoGr12+ZteCz7PuVogNqXK3kJksZ
6U+ETnyYzvETsbFiVZJycQglhAJW7gsOZ846hKO2ZlW1tJk2elaW1fX1eznI
JJCOdTq46maZ32lTxOk9YlugZSICQsHAMx1xZlY1X2UEAnWjq2Nt49pZFpro
bT0jk4Ar.BTQAVf4ymX+J2KV8cW4YD5ZmhbHDIqWfZBaxsbXTPi02g79tU9W
61N+FsAyuiuGleC2f4m18v7aPqN+h035Vh9z54ezrJkeUud1Vg+T24J8nRYR
mvZ4QNEylHWtdIojdkiCQORkkPMFqvKdD45PzIRaFwSXYElxvJNgXjqaMGu3
4To6LmuqLmn.5fW1mVRssqDtKFoVurpoTVYUS8gUQGWojhkHVJYaC3LabZEn
78KnrXH0EWrzycJb3Ka0HY6.YIGvc.r6tqDOlovfjB1kn3eUO3VwUtw2GNXY
qI56sEQy5cP+H0RvA4Ve2ZJt3srAkrLrT1RDrdG4gKBEePMWmM07IcYgx3U.
N.sqW7B08ZT49WQwsDkiUiPNLE1Lpbl0TL3mvAJ6Io7me4Z9bYopMG7SVCju
cnGjaKzfMzPCgKKSvUB6SWsKaJN3MycAhbgkiOTas5AwIZwKh2DzCjhJ.ll8
IGvMR2A.4NOxAKrLsN3PtM4vZmIpVOCcafNnvOkngiCpW3yAoZLbWf5K9cmc
5YXngidb9G491DVF+fsCGrBDUWL7NtNzvg2+ZK3LLl0m3O74AbZywbHJzY33
Uq3nBRt3suxAYkybOthjGV6SIcP3WyJ6vhwp38hYqJpMc23ou88e3su4G+za
OsOAyHDw2si0r9.ptorXhWMUhTUS2FiVPk2yFwuR.4rgY.uNgytVMVIORm3S
cL+JhoPy7xKA3rqbIlVnX8.Egt3gRPp.hM.obLt8PlU+wD2B0wGAd7dD1L5p
ivaHr9xiGlcClGxR19GiTwNKGUMwiAbZ1IZ9HV71lvRrbS2u7A5RacCJqHCg
iIireRdv5QvpP7sAnFeXNFmI4aT6Q9FMBMvnOmV+TJZyHbjDXebHzMLb8Lwm
BF4U3qPRPnZBBwKu0ME69Sz45WY4xLCz2nP3pembFPxFu6mzUrs6PxBpNHrj
9T+.Oclq7voZfYnEXeH4ymcZO9Geo39ZcVV1LVq.jEPvujYJYlCj3PW6MI7F
I4yT+dDc.d0HOF8.9BG+zk1tSylRq2LhBrg+44qM4j0Z67sebxMQEmqW17Bm
Ro48k5VVTx2RxEX5uxTterUlV6txzpXkws0HZQO8KolMZ4kzjUEmtaRZrybN
hkvPmYp35EWd5K15loJHLZi0FLdjVxRjdoF0L9l0pMl4e+7BYWJ7j1yydyXZ
vTZwwhX.+4UnbpDqq3TmEG2edYrYm3gSn+QLeCWB.IgoRKwVLorU5fzMUL9M
ZuRAfZTbeAhNqsSVtLVS4a8jE5+Ieqyjjp52xQbGXJ9f4IMtLDXADpwbK.tF
rxiuHtYbxLSOqBv34rxJ0MqIIIFAHXIM87OLDOA+nvrnk1vgLKZonvrr0wmn
jJI+DRk9hDYm8eQO0NiK8fMNhXK62iJNioGKXFBjf7AVF7EHmvQL4gKdIpSW
3pYIdQ3Cmr8DOZjB6JYOEyJiUYf71tXWFqZ0WFQz7qeMpJwJ4kG2VEvFUYIu
rn6Akk7RYIuTVxKktpqrjW9TpjWVmxhdoWd+LYcub68eyFW2KU2Sp6kKsVho
4yZvX3I7rzIuLOM7j1huvSZ4Rd48CigsdEs3GcDJIFCQZJwjBzExmDvSYFD2
jpfQKEmnYcUrlirOkicKVJfmNIQvZDH7VKn6DD.KwoeOmRU22OgoVqPw1dk+
7VOOdE3tjSFk4oDbFEwDgMyZJLN0dpmzl7C3.xcCXugI4NQZ75QOPdmjNxpK
TtpDKGtAXeaa9C0R5P6wg21EznaPLIVvEiazxsYWwdGUlkUakUYYbx0.I1QQ
0JUl8b6PJaVkWWpub6GopdxwSFMVUa3NopafSuKxWrvMW9Z1Z89WBarvPxpJ
l0VFaMMdovPqsjwdRCJAFOTjwdWjq4hzWzK3koVfRbnQskBZugpHtBKwritE
dYowJewJtsWTDNUgJbi1hftqYT7tHRLLcwQumfXeOBNxG9fKoNvepcKTBN03
.Dw3YhJrREyU2s6LrhkgPthhBkldmXNIOljbzlS6IukHudrAYh.0IGOb3jwG
qtStODlbWjOE7M+5vzYPm6maCCHp0WWyiizxbqbOnlxdv8f6B8O9abkgvrJG
QkzkSF3v92C2BteopRd8Y0u0yamyohKcPRrgNDtOHCIb2zBLgbvro85tH1G2
mbdv5+8s5XDEwZgE.C93ePnVr3LPmb8bWaZzcarbBZOBdQAROGudnWhQS2mX
YByBqYVf7OSukv4TH1rqqELLvP.WTdXxYxYrPUzixh2JG20OSuXeev0tgqCX
PbwzI6LXRZAKBb1CyX1bruj0sB11xtR+gNiYUvnAafQ1LLs7ELl8PjgqFqGg
1jhbCXuRP.qTVrJpOI49nQLYMVa3DkgJCFsSXxhyhUVlC1bVrtSXvJ+JmZt4
QFlmbpMl4CmimvXi5DkSxgOJzeamI7jWkRXfRaiXfBG0P+zkUiOKi+Jkbd3H
.62+NWGWluFa9uSOELBce8WC7XAxog9fK4GXgTiveZ5ddjC5dNPnQU6D.bL7
vWcti3Q3YlnvGROPGdB7Ampa7ky6fcD5JWEALM4.8Tk8k3UmWXtZwB7qrb3e
o0LRWbRz2ipada2CI+q+E+wNj72m6PhFBkWw9KrmLiBzk+hHD1ExlVKf9.+r
Ke1cHq23XyZ5eSzDCGu+Ft19X+wQ6ZKyf4c4Ofn04qb9BhJdI4Ll2G8CDCpk
MendA6gi2cO2qmda.MZ.C+6nYXT2VXYF1o4TrhL.K2WPzdU5NcgJzMQ+OR.7
vdfdgWWraVL.B7qumMafO8ceWzBjORtylAWztdEXQ910KrWEumHjC16G8cQu
EC9aw.eKQOIwHwqhvdb3HW2E8vn3R.++cCx2IlB+wgGFMz+S3JIZ05GCFaqu
XY2HHv2RfQDNCF9EGlXRiP3oVAgfykV2PsEeWW3grN7UjW7BLlHQkQfqHtj1
vfQfqAIWSEyNxTps60qmVu3ErSDQwOF7pMsoI.W59eA2RS99uObV76p+QVnm
GG54APObcBeJEf6EuXoquUf0UBmdy.3gi5stc1BCcNS+uzM7Eo7G.bcML5Hh
2g.fJbGWO1jaMfBeGNzK0292A7oReC+C+CreIPtrgbgt2WXmbYGBfV5zF9gV
rJOel6.80mQWnGLO2FEr3j46kTCkTCkTCkTCuyoFVMW22GZKaKSO7kqtrOfC
JKmLvIXh9SDODGQISsb.bttM2DA9O08oncfqwluuWHcBu5pURtwnaYjRdV39
Yxpp11TU0vBFSaqwX1XJUL5FZS6lUaRDrn2pJ9mqqMBmwGdd+BS8W11bKt5K
qNIUb.LSRXrHegMlvWsIFDSuW3XSvAOVsgxmzk1+x9uDjwgG69nITT3IDHGW
fWcOc+4GJQuUfdC7VQqU4oMRr61D4dpKCWggUJ.T7YgdJ9d5S9DVMgf+ikkT
g1msxlGLfX1fh+ioVWxB9TBJFleexavOeI0A0RNte3ZQI9xgDfUGULcBg+C5
.oVKnxcFa2A+GpdGb9CwNwvVUXCn7s2PRa.kG6EoL.TQCS8MCzICFoMdfx3A
6Dq.IleWjucN1baAEtdu+c4FV3tGpxOxqwsgjOelSvIjWGVE7HHcSxqQJODU
kQiIuFCPVh+s9AzEuDa77y6ckE85Wp.eXtkoI0I9Wiq5WdPz63Jq+5.nE1we
1Scvo7iiGTee+QjiXFNZCb9mdh+uTm.ZPCbBnAOXB3zruylJA2VUupZwqXTd
TJ0ccCsJQk0psi6mlWos1mwfaj6b0RwGbXIGqkwz0pDj8zw26ZIjEuXq01GJ
Ks3qIwQaJNR3AI6P5lf7YnHUFnaFdMJgkOOor2Kd9UeAZPOxT3u+BQekokKY
omqAJ8tyk82wTdE0aN+NOEzQpRsq759666KpJdcwiFRspWaxHK1YaXdmkssk
OluRM2M6Z1DhEKjzIhjSdu.iWCx.K7kDBpIC56hDvvavAMp5XwB2AQ8WhKG8
Sc2.vAUhf8NfSte1xwj7N8arVrZAyQLhdSntLPD.OTMuz5JpSeoApq7DT+IS
FUSwbYRg11GjX5xkHFd3zzJmf6.1vFH2XzBdtvtHF8wjgYHsTllrKjfpzYFZ
R.5mMKbkob20bj4OiU8NbWxKVhl+10i74O7KgkAOfqJLU3vPu8k4O4JPOgOQ
q5dInogfyZmhmy5xBmxAZhX+b7vCk3jZoUBlh+ZYLS45TLIkugxjDeKHl.P9
ydGP9yNlO+fQ2rkOxiisIlBvz47pxpLb5DdIUgLakCqHRQrs9B5aHNcu4vdH
aP.yP2vcJDuUNbu+VAIkpxyBGbmEQRNslGcCsDdqmR5uV2Jfy3RTLG3tJfUn
.u10y1T53NsoOWtbKc3+JPhll7ipbYIEBVxeWR7Wsb7pxpW.m4XXuBNOblC4
8b7W1diS3KELu1QzKYQlXuR.ksrHSbW4Reyb6TkdvZe+q49MSVD50JMzWFaA
uTokRjogNmQCWP0xYLZooL2EEZJFnbwG19DDBeW7WK04PyqTvjx4PysKaPBB
YznIJJCOdTq4ZnaZbbmTxOk9YlugZSICQsHAMx1xZlY1XuYEAnWju6Nt4txZ
Fxr2O9wJPAQccgsqf5dZIIBkvBEnRakN4FJqoc4StQVS6j0ztmIqocRwMj0z
tm8Tpl1oViZZWQ2a+LY4ra6Y+rwkytr7xjhMQslVO6RVblswjTZ4EEYFebX+
JmCRd9nQrkNboPxxamIrA1xgInc7Nqw67Vwc6VOCGrIyPkb67BKyk.CigjEl
n1eDlvjY71F6OtqWYJavJCqwC24vdLSZ+vd2QHXodvvI2GyvVe66X0IrsriF
Da+6nAUr+MViqaI5SqW4QqmTxitdclNCallc20BgpQtgK5YZkojqbmrPYbjx
f3BdplTvy3RTNJ93UTXIlNuY1hK7LBfudcC2v34RTAAv0MXoaJ0pV6rE8nAb
QuUUySn6JD3Ngv1pEBazJD1DGpU48p+c7qm.FQDJx444cYZNWjx.PWjcpVr5
Vx6NT1nz4tAkhIwpTU7q7PjCT44hedMoQog3Q0sYOdZfVZEkDG0UoBRxW4Hw
o4kierkjvYYxusM0WlR0HRwhoUpHZkHdVohlUrXYkJRVwhiUtnXEqsi3D6Sv
HaAFvIIJprTQdSp7IsXsgIei6TfPPoYft.gBK.HjWMfosfBacseolqzxp2Kk
UqWJuNuTnzc0n9tTgUEp3hhnZ5xns+Zh3V+dWeIgMv9VUW1yuk+3iYkF7A07
Jh7xVCItpXXgWULnvqJFbGeUAm7RsuqPsviQBaJh9VB9UsxU.2sz4KHeITVF
JLoBJ5fqb01.X9Qf.z+KmLr5gHL8c3d1mRW5VWjQtfjB7TxbvVZsL1RqlXKM
I1ppXzHE1ZABSakCWLGYwZFgWKVXiK0mn7XjjUQ4yfhius7fpZ6Nnp5SRnpi
Ka82Ff0yXfS.tx+votTemCBxkBydBrcqHreWHp0ZgKXn+RDonTdg1Lol5U8z
ly0wFAMaSNMZ3LWqEl4a4st6BIUEWSUFciFdwTCf2Bp8s3jSs8lbgDMagyea
.QysRFdaTvwhEiOSyoE90dKjjehhFHKuphVKJHu8EYkScSEj2d2JH+U5dqKH
5152lqP9bsShMSdME1lf0NCLuR+Ztprpmz+CYpIdxvMP5+Bk7evVnres6XI+
uJ7tzlxhx6Sp4vGGx8n9XQtmn7AgYqgvvaN4mLVO38IOMUYSNwa01AT4EUkH
6jjnJprK.sp2UV8nRYcB2B0JZQLZzRaPh960R6TlD5rbCSaXNuvzLSC1ShSm
NObTCUSI6lrCw7VRAPOMnLoiRlAR6iKTyxC7yrn26PTqZNnVAaqKxcI+HyBs
2Q38RPm.c+15zJenZ1oUKm8lSqJEi0D.8xwZpswoUKm6PTaYmVycIuWdZsw3
8hQm9Azk9sAB8TqqvDhfH4HvT9.lKfzEtOA5LAvzxvihkmT1K8Qt8eZ1QYsB
QoeLGfSZD5IsvAYLzRbxDzQaGx+iF51hzzmOIbfAd+su8oMVt3qYeaHzubD8
ws.htsbEt3owsHISjdAWVb6ZsAwBYlZ6rbIOd5zN7PgUqLcGBNbrfa1jjqmj
s2fa3d8VQm5PMi9+lSUcMyAuwEiYRENTM9hy299O7127ie5sm9RBhrviW1tW
iwrI.2IGHdc3o3Cf6Tg6N0Mebf7Ta6CVmxAE7iUUhfZK5d+HYgqGkfE+bDfv
R9gr3zLAgPL6XfmyBKGSe3W+oeifDBo6sG0xEaUQLYVD1rBFXGVL1dkiUP6f
l4qGT0klTfSUqo7Ci3KHy8dRz8lht+Lhmp.MOpDWUycaTyZwn6235bE0KvGj
PANYamw4uQEXCst9kxhe6NOM4n4StjXpk9sQo+vpvmJEiOwvOdmgQcxSG5L4
QQbptQvprX7mnn1eFCC7sA4NoXbaTeZJJ82vABI0d8bKi4QVTJElymmCMAx0
9XZkA3uEs7sHfEX4kXr5shg3gIiqJGrqL9gsLXQ2.CBAet6Arve3.VVn+.ac
3iG9zlZdwZd5C.NBYKhghphNfVkLqsq1xDsUQrIwet60jUKYWeyhnG7lcr3a
utixMKa4lkipjUuZsYYPIZqj5XZ0R768QXr1E1n9gG1KaZ9rfptcgpjDAUmU
M+akvktQfcKY3fyN8rvPvzFNg5D4nohujmlWiNN2eeEqVOMPdTIV5CgjuYMj
j6xt8q53YIZFIaxSZaEEaWjvjjRhUZhPJKl93xb4kkanaCUhBvbA90CH5kjg
lI+9ZsjQNh74O9VxqEsnDpSr+n+9pVwpC8adJZtXDV6gt1fLos7Jz5lfryd3
aGDG84wjSsi0fF3hqsd3dj1gPaP3SToSftKhPh8PDw1tZpu2NtEgo.mZPQQo
P1VS5X+YaudgovQpiGqNTUYnZix3.0MQ2DQxHov5w8ZR0DIy3DRQkXJllHTR
I5h6YWJoFwPuHQK42u9VmDumz5xMAqJ4nYvjsuNS4E+ai6NCoVuorGTxmKz7
AI+1HwUNRs94OnzAmwlEGI7sa2MoDBLig8ULoPnPd8Wnvci5KVRRc+UdgIhl
5I7bAkFOcXUyTBkHCjTZ7hn8HHdQ7oWhYUL+1vMu+DyVQh6ePiIF6ueAGeXs
.M3jk2V5pTrz4VmGuALeNVxOqLNknXQAj9gAhpDGYLZW0dYZOngXQD11JwlR
HhRlSJZ0LHR3sGsAN5+AFKBpHcBaDuawEpOjDkrJo4camDVD6Pg6tvWvTdXG
xQBFRJgrC2SNZqjBBqjGytqXttOYFvGs+bp4SNvdEwQ2FFcmZkD76wrpS+mj
tn58WJDo.1YJkgfVgaq1OqhjkcgZqWisheicTdirS4TA2zqGZBDMOGjaSx9F
0hP5VnoHl.wEponrslTz8rsWOMEooNX33Slbh1jVKiVvlJWjUh5MSWD7Ezci
tH91uVkRGTXIjhAGyyJkrzLds04Pg5anURF0I.8eq.t2fbG829fAnyy82sKL
+jcEH+jRf3Z2uP73IukjB0jN2sfD0DYqEk9mPdcbkwRzpmh43ouUMdYRqgYv
kikIvkG3JI3AUBbA1yJSgKxT3xyjovEYJb4YxXP891s9kwf5y1miAUYRV4wX
x1Pl6T1uPmx7R1iw7SkLcisOgNkowl6SzWcSiMxDP0im6EqUBnRldTjoGEY5
QQldTjoGEY5QQldTjoGk8UTqL8nHy3EaCSzxzihbyhL8nHSOJxzihL8nDo4Y
Y5Q4wfjXxzihL8nzfCmxzixVbEpL8nHSOJxziRS7jPY5QYmmdTpQ9OQoEx+I
gdc2dRVQIUTOrYgmwcYRQw21xj9UhlB7eUDtEppp77fB6WhfjowgjjRgQbwf
sL9X3KoKxN5aXINlML2cAJC5inkDoLXyjWKNMRNRC9rvYbzhp2w8SE.Mp0Ci
NfGpYiNtEBflwx.nQF.MxJfrL7YjgOiL7YjgOiL7YjgOiL7YjgOiL7YjnSY3
yHCeFY3yHCeFY3yHCeFY3yHCeFY3yHCeFY3yHQ2xvmQF9LxvmQF9LxvmQF9L
xvmQtYQF9LxvmQF9LxvmQF9LxvmQF9LxvmQdEpL7YjgOiL7YjgOy8c3yTXPx
7TKTXTpejvjNrFREDFCd3DJLW545dE8qDDpLU23KjWa65tjnRdMtOygZ6igZ
g+sNF3QQh9TeW6UAzZUSYzlLlEiEZi1zhGblOUTjWLbKBjlA2wQdAayPaD3E
gnHb.223P5NHzJ9yUKVF31FXh+6UXIeykrz02J.nWS5tv+Pl96fMJdAQGl5e
GW2GUevoyfhwFSoWtIJxoXjwufzqfC9Ljf7Xwy1z55Kb8d6gFzuQhF1xCDvM
TpsRULGjh1WewR6P26purn+lCrVSBquaf0HuisRXLBiSnCK1c4b.30S.686Q
.ZNRHeZHOxIeasK+ZP7PBNf8HybsQ+JzDUUtN4+n7ePyY9eT+O8P2FEAO9uf
5v9M6A.IC5uuVg2aNSoFdt99yzMaEIDdKCri9SFZtCfaWz9Egu.zWFXx1g7A
y3NkYeZVS.b.XCvG6h9U5V1rgQPXaA.dPAWuWtXW8AcUzNk+Y2Nm19HLN9bc
gGJvmvoAmtZ1rVyPjOLCuX9RrM.imMir.vcV3VX9nxb3VehtGte2vF9sIJD2
TJZ2OydbiQ.6L4.eiUddTm.6aQ27x5pnAYkOZ1P3HlkiI8FxuqPlB.4VypQO
Z29yAOskuR+SbfMfd.biLrkWqUu5EOxg5tqUhj7nnBIRif.ZA8h89ONx8GO3
tyG4HdgqY6D0GngNVX4.D1r32R3K3SF3dDvRnWL3SXrKS5pzuu5gQbMirssv
x11xmZ3B29uuIzdnIE9cRG15moNY9RG+3B+LAAZDNl8nUfg4iY4X4vAr49XV
vZbKmuewUWdTac10SB6my3vyl5bYvbD+Fpu9vlMrsBadOFcGBTPzbjEKZDxN
ZDaeqomxVQwmZ+tfeIbYrBUc8ercFGn0sWKW4sE.OYS0sScsMXJgpwrASnBT
b4tvp8LE8UtL8auBmZ.DjoTrGfyKlBj1x40Fpznsv2.DFPsPuCHu1SZt275Q
c8PfgGO3DkSzN9tvAAhy1R5a+pvd3hk3EYLY6lkcBCgT2MlFmKQSbSiOyB1e
a5sZARynut0rpR0fCYV9dzwrbMn5jIaPtFrr7M3fBs5s5CFqdmd72V43+IXy
LWfCjU1PovwQGcpW3nv9lJ2qzVSUnBEeq+hB38VQUTvPgQ3xGC4Z9NUbOkGE
oxsFnxDjPcKgoVKj9aBE8eeN+40D0z50VGN3r6jC66RXcLRQ6.5P8IeR+Kfr
rnlbudN0AUZa.byaOL.7bMX2J.hXb4b35B3u+BQekokKYomqAFQpYsGUaPIK
R0BOIr0Q3Zc+A2VR9mhsM9ot0s.XvhVEg+t3pdrsw50NUv8z375iSLWEGIW3
+T+PogMUuULV5avAhqfXWm.pSfeRaN+jHiV2F.xe1xwjDlwCQGBNZzC0.OOP
gtz5JpyScmon+jIi5zlFwrjM3LchEZASXW9JmfcLqFCj97TQm31A43bVLbmK
wJo6BTo6Bf50rMPH+rkHs18hk5b6O94O7KHgOL24vyaRspOL8fEMTR5GqkrH
7mvnwB16eJtuu6L..GLPqGg8gwCO7IK7kKY5lExUZagNdRRUY3S7LjZojVra
IRK1XR4PjSwDdqGbOtsI5FD5b9p5w74AhuECsMakiA6RbaK3dd3F6t2bXO7p
d3B+a3owIuUNDLHSIJHYJU7G3Lt8c2xGgGkByIksRxd3Zcq.9kzLvsH4C6iI
h3qc8rMeRkwGb+U2fON285yb.QENyweI0PXqWUYl23dLyavS9Iaap2.mbWJX
1pinGxbbzCRFi2hbbT663WLKjWlNKZOahuYN.VSbtoPqOusoRks2hyMvCiBM
D61l6Qpx3qMw4m7ZBzrX1W2bGcR3NLE5nSoyDXo7xo7d754kSpiFMQQY3wiF
bm3kSIDfHUpMIja1jYHjH7Qm7SCJJ4mxRpqySIfbWjwye1rBraHB3tw4ofcs
eknUg+QoovbLpgiYoKjg4Wbci42SZageOobm62SsRTbKbxaVhHFnzK7m+qsB
lKB7HsmZt8Tkg6JCtzFrTI.1kI76dt1DycoW6fOxcwhVpNCAGjA1UcuByfxh
Q8opz3R4EdbIuP4okwA6BwI15nJXiurIUoKpytRbiRXGEYvnPdQyzXRVgxzb
MYDcxISFnM93iqLe7o1BLhFiLZQI8t5xAItduHCCTalu2yfY2g7NpVqTLWsY
cTUx5XzoYUIqiRVGkrNJYcTx5nj0wcMqipRVG2KXcTc607XQrNFgh5XiIvh3
aVWyMIi0Or874oz2ckmQXfSJzPJIIWflvdUKGlcQh0OsQPGUI+QsXocSmDmT
yIw.E9jHVGWXYtD3zLba7Xs9i.9aGovxjxCFG8WICgzPhCJ2qKG0L8Ka0guU
mXGW2IlFui6jIw35NIT1gShg0bRbxNdNnUmidiqZW+fwmfazGqMr+nwZvmzF
Mp+ww9lc3JPsNnR0cHXTq16pGtKmEpaBMLkpogMlGL7CTlD8W2kzvp85Qa7F
sdTOQkuyr3Ej587BZTwjk01ISM0Q0bpsK2.qV2Cy67IQsNKOZWNKpMSQGuKm
EZavcTp2kGkp8LiQ2W8tjrk5FQFVqLxVZpCXbOpo0WUYx.jn0fwo9pGjKMs6
Z1JUUZL8q0x135afkPmUlKQUffO7IJJghA1gqXjKLbclYcYzzKbx0wX4xi3c
Y8Te85BaEUnRltDe0Y3t71K3I3WpigEMipsu1yJfdwTX04c6EggBRbshmTZN
T.OzKyhmSlBWFI5zEb3ZeXVlqgCBWiW4Gbj9pRVlI5vQVN94uPWZu5RKm0yA
dNDESLZIzGYX+hTwAp0duUozPHrmw3K5WRuf6OPH.zuvMbgqj+qIJkrLd6Uv
q.c3Ynaa9JXXovPpXr2AudRgPvP6gjrij2dCCjEa9F8ncl7+bzG90e525eA0
1W+Hi.69WDXrrOFtc18ORzZCmc51WB68r4JRpipB7u0ex+dVq4rFddxOH9c3
ZiaChyhYfHwLuyY+V32lU2FQaAAJ0VqmiqMGwQqOF1IP+xTJzIoddhQ5I4Ti
qStsdtkVCfqmc4L4Rla6JXB1aadYZ49xz1XnARYB0flgtwbZZ.Rh3FJhH7ZU
zlvSJ6X4+VQNmLhbJV6t7ob8hGehDcFnCrupr2.1bydAn1UK6MvZOmWgZguh
y63Na14cHvucNe8KLIbESxh95WE+xiNvkFK8EZzMNXFujIBk+liG9wv9EtFD
5NMNdGNi335EqgPPRLekULLX4XOZnb8rDEZHFpOR4sq2ykn69qlF0vmg8dy.
tFhRrjcnKllr3qlYItFhGGQG+xrPCAnFUN4hQG+hK7W5m6isxzS+ZAFIh3Xd
jXMV44C7GUydeMfxPC5Td+yNQSFgc0c4kXu4F.T39RqPkzItWO8t+D6AxxNE
OoteQbrl15KQcf87I0Cc7KfpZWaAabKauahsuEwuRrcvE0knoEtEOdCw2Nmf
eszajycubJyJjIpJS38B4fCyXUppwjosHABz8nyJzsKp.3wGfb6U+E52fq3L
8FicYVu+5KN00fwXn+Kdm9MjIuHDk6m8gb8ScgcL.J1AwR9jgiNY7zQJFFzQ
GqZneLcvzSlMSeBUYv3YGaFGL77rAJvc31wYJJ2Y6BUZ+cgJ8Gc+tK72U+i5
sQD53luW7jVXu3rICFQg8czAioZ5lmLVezTsAyLTNY1HiiOQ6gydw4VWN+A4
lwDWxucTDSbgelgHmq8Sb2bN9PSA2+WwiULi.YevhVLM+BhjLH7v5JlTaBK+
D8EZJZCUFoocOczlZnNzvTY1IiGQGYLQel1vIGehwIlTyoCFaj+Q6PMYkl2d
judSzK.nFA439Agr06tLvZg0eEojrN+VjrfchJJ2WvqMXIXhd0Jwz1br5D53
QSOZhoA8HUUp4Q53epaXRGhpMSUSPUJ0bKZRUxzis6wcVVtBWO2rbtxx2JsS
EEqC1tNWlPIWe82OdMY9XcbgqYXtxVImlAzkWPxAJuQIjP0fT3kmG9SN4X1J
Ile2xWYI82VDtrJTIC44PsCYYm5gGqwrpE2gCfsuQpAMm7TcTS3fmV.4Ddeq
55Wb18AB.TttkaJWxUcWrxgipsvROlb0IV5ZOjW5CFMpEV5qUZQhU9fcvJm8
xS5uPb.QZc7K.Gk6KKEnV+X1hKC.eSdOp038n1v2SRa6UsWer8uHs6pWj5V8
h36LzWtLFyjr2Abj3O49m2jdOOjiyncac7nHM+XLe1Q2CNlD.mQV4woOeyXd
QKnCRR2yANQw2UxtDZs4Q7WpaDlrItoyy+mm++GLYpkXI
-----------end_max5_patcher-----------