diff --git a/lib/ntk b/lib/ntk deleted file mode 160000 index dae1771..0000000 --- a/lib/ntk +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dae177189b12f74ea01ac2389b76326c06d9be78 diff --git a/session-manager/doc/API.html b/session-manager/doc/API.html deleted file mode 100644 index 66188b0..0000000 --- a/session-manager/doc/API.html +++ /dev/null @@ -1,615 +0,0 @@ - - - - - -Non Session Management API - - - -
-

Non Session Management API

-

-
-Jonathan Moore Liles <male@tuxfamily.org>
-
-Version 1.2 -
logo
-
-
-

Table Of Contents

-
-

1. Non Session Management API

-

-The Non Session Management API is used by the various components of the Non audio production suite to allow any number of independent programs to be managed together as part of a logical session (i.e. a song). Thus, operations such as loading and saving are synchronized. -

-

-The API comprises a simple Open Sound Control (OSC) based protocol, along with some behavioral guidelines, which can easily be implemented by various applications. -

-

-The Non project contains an program called nsmd which is an implementation of the server side of the NSM API. nsmd is controlled by the non-session-manager GUI. However, the same server-side API can also be implemented by other session managers (such as LADISH), although consistency and robustness will likely suffer if non-NSM compliant clients are allowed to participate in a session. The only dependency for client implementations liblo (the OSC library), which several Linux audio applications already link to or plan to link to in the future. -

-

-The aim of this project is to thoroughly define the behavior required of clients. This is an area where other attempts at session management (LASH and JACK-Session) have failed. Often the difficulty with these systems has been not in implementing support for them, but in attempting to interpret the confusing, ambiguous, or ill-conceived API documentation. For these reasons and more all previous attempts at Linux audio session management protocols are considered harmful. -

-

-You WILL see some unambiguous and emphatic language in this document. For the good of the user, these rules are meant to be followed and are non-negotiable. If an application does not conform to this specification it should be considered broken. Consistency across applications under session management is very important for a good user experience. -

-

1.1. Client Behavior Under Session Management

-

-Most graphical applications make available to the user a common set of file operations, typically presented under a File or Project menu. -

-

-These are: New, Open, Save, Save As, Close and Quit or Exit. -

-

-The following sub-sections describe how these options should behave when the application is part of an NSM session. These rules only apply when session management is active (that is, after the announce handshake described in the 1.2. NSM OSC Protocol section). In order to provide a consistent and predictable user experience, it is critically important for applications to adhere to these guidelines. -

-

1.1.1. File Menu

-

1.1.1.1. New

-

-This option may empty/reset the current file or project (possibly after user confirmation). UNDER NO CIRCUMSTANCES should it allow the user to create a new project/file in another location. -

-

1.1.1.2. Open

-

-This option MUST be disabled. -

-

-The application may, however, elect to implement an option called 'Import into Session', creates a copy of a file/project which is then saved at the session path provided by NSM. -

-

1.1.1.3. Save

-

-This option should behave as normal, saving the current file/project as established by the NSM open message. -

-

-UNDER NO CIRCUMSTANCES should this option present the user with a choice of where to save the file. -

-

1.1.1.4. Save As

-

-This option MUST be disabled. -

-

-The application may, however, elect to implement an option called 'Export from Session', which creates a copy of the current file/project which is then saved in a user-specified location outside of the session path provided by NSM. -

-

1.1.1.5. Close (as distinguished from Quit or Exit)

-

- This option MUST be disabled unless its meaning is to disconnect the application from session management. -

-

1.1.1.6. Quit or Exit

-

-This option may behave as normal (possibly asking the user to confirm exiting). -

-

1.1.2. Data Storage

-

1.1.2.1. Internal Files

-

-All project specific data created by a client MUST be stored in the per-client storage area provided by NSM. This includes all recorded audio and MIDI files, snapshots, etc. Only global configuration items, exports, and renders of the project may be stored elsewhere (wherever the user specifies). -

-

1.1.2.2. External Files

-

-Files required by the project but external to it (typically read-only data such as audio samples) SHOULD be referenced by creating a symbolic link within the assigned session area, and then referring to the symlink. This allows sessions to be archived and transported simply (e.g. with "tar -h") by tools that have no knowledge of the project formats of the various clients in the session. The symlinks thus created should, at the very least, be named after the files they refer to (some unique component may be required to prevent collisions) -

-
-
-samples/drumbeat-1.wav
-samples/drumbeat-2.wav
-
-

1.2. NSM OSC Protocol

-

-All message parameters are REQUIRED. All messages MUST be sent from the same socket as the announce message, using the lo_send_from method of liblo or its equivalent, as the server uses the return addresses to distinguish between clients. -

-

-Clients MUST create thier OSC servers using the same protocol (UDP,TCP) as found in NSM_URL. liblo is lacking a robust TCP implementation at the time of writing, but in the future it may be useful. -

-

1.2.1. Establishing a Connection

-

1.2.1.1. Announce

-

-At launch, the client MUST check the environment for the value of NSM_URL. If present, the client MUST send the following message to the provided address as soon as it is ready to respond to the /nsm/client/open event: -

-
-
-/nsm/server/announce s:application_name s:capabilities s:executable_name i:api_version_major i:api_version_minor i:pid
-
-

-If NSM_URL is undefined, invalid, or unreachable, then the client should proceed assuming that session management is unavailable. -

-

-api_version_major and api_version_minor must be the two parts of the version number of the NSM API as defined by this document. -

-

-Note that if the application intends to register JACK clients, application_name MUST be the same as the name that would normally be passed to jack_client_open. For example, Non-Mixer sends "Non-Mixer" as its application_name. Applications MUST NOT register their JACK clients until receiving an open message; the open message will provide a unique client name prefix suitable for passing to JACK. This is probably the most complex requirement of the NSM API, but it isn't difficult to implement, especially if the application simply wishes to delay its initialization process breifly while awaiting the announce reply and subsequent open message. -

-

-capabilities MUST be a string containing a colon separated list of the special capabilities the client possesses. e.g. :dirty:switch:progress: -

-

-executable_name MUST be the executable name that the program was launched with. For C programs, this is simply the value of argv[0]. Note that hardcoding the name of the program here is not the same as using, as the user may have launched the program from a script with a different name using exec, or have created a symlink to the program. Getting the correct value in scripting languages like Python can be more challenging. -

-
- - - - - - - -
-Fig. 1.1. Available Client Capabilities -
NameDescription
switchclient is capable of responding to multiple `open` messages without restarting
dirtyclient knows when it has unsaved changes
progressclient can send progress updates during time-consuming operations
messageclient can send textual status updates
optional-guiclient has an optional GUI
-

1.2.1.2. Response

-

-The server will respond to the client's announce message with the following message: -

-
-
-/reply "/nsm/server/announce" s:message s:name_of_session_manager s:capabilities
-
-

-message is a welcome message. -

-

-The value of name_of_session_manager will depend on the implementation of the NSM server. It might say "Non Session Manager", or it might say "LADISH". This is for display to the user. -

-

-capabilities will be a string containing a colon separated list of special server capabilities. -

-

-Presently, the server capabilities are: -

-
- - - - - -
-Fig. 1.2. Available Server Capabilities -
NameDescription
server-controlclient-to-server control
broadcastserver responds to /nsm/server/broadcast message
optional-guiserver responds to optional-gui messages--if this capability is not present then clients with optional-guis MUST always keep them visible
-

-A client should not consider itself to be under session management until it receives this response. For example, the Non applications activate their "SM" blinkers at this time. -

-

-If there is an error, a reply of the following form will be sent to the client: -

-
-
-/error "/nsm/server/announce" i:error_code s:error_message
-
-

-The following table defines possible values of error_code: -

-
- - - - - -
-Fig. 1.3. Response codes -
CodeMeaning
ERR_GENERALGeneral Error
ERR_INCOMPATIBLE_APIIncompatible API version
ERR_BLACKLISTEDClient has been blacklisted.
-

1.2.2. Server to Client Control Messages

-

-Compliant clients MUST accept the client control messages described in this section. All client control messages REQUIRE a response. Responses MUST be delivered back to the sender (NSM) from the same socket used by the client in its announce message (by using lo_send_from) AFTER the action has been completed or if an error is encountered. The required response is described in the subsection for each message. -

-

-If there is an error and the action cannot be completed, then error_code MUST be set to a valid error code (see 1.2.5. Error Code Definitions) and message to a string describing the problem (suitable for display to the user). -

-

-The reply can take one of the following two forms, where path MUST be the path of the message being replied to (e.g. "nsm/client/save": -

-
-
-/reply s:path s:message
-
-
-
-/error s:path i:error_code s:message
-
-

1.2.2.1. Quit

-

-There is no message for this. Clients will receive the Unix SIGTERM signal and MUST close cleanly IMMEDIATELY, without displaying any kind of dialog to the user and regardless of whether or not unsaved changes would be lost. When a session is closed the application will receive this signal soon after having responded to a save message. -

-

1.2.2.2. Open

-
-
-/nsm/client/open s:path_to_instance_specific_project s:display_name s:client_id
-
-

-path_to_instance_specific_project is a path name assigned to the client for storing its project data. -

-

-The client may append to the path, creating a sub-directory, e.g. '/song.foo' or simply append the client's native file extension (e.g. '.non' or '.XML'). The same transformation MUST be applied to the name when opening an existing project, as NSM will only provide the instance specific part of the path. -

-

-If a project exists at the path, the client MUST immediately open it. -

-

-If a project does not exist at the path, then the client MUST immediately create and open a new one at the specified path or, for clients which hold all their state in memory, store the path for later use when responding to the save message. -

-

-No file or directory will be created at the specified path by the server. It is up to the client to create what it needs. -

-

-For clients which HAVE NOT specified the :switch: capability, the open message will only be delivered once, immediately following the announce response. -

-

-For clients which HAVE specified the :switch: capability, the client MUST immediately switch to the specified project or create a new one if it doesn't exist. -

-

-Clients which are incapable of switching projects or are prone to crashing upon switching MUST NOT include :switch: in their capability string. -

-

-If the user the is allowed to run two or more instances of the application simultaneously (that is to say, there is no technical limitation preventing them from doing so, even if it doesn't make sense to the author), then such an application MUST PRE-PEND the provided client_id string to any names it registers with common subsystems (e.g. JACK client names). This ensures that multiple instances of the same application can be restored in any order without scrambling the JACK connections or causing other conflicts. The provided client_id will be a concatenation of the value of application_name sent by the client in its announce message and a unique identifier. Therefore, applications which create single JACK clients can use the value of client_id directly as their JACK client name. Applications which register multiple JACK clients (e.g. Non-Mixer) MUST PRE-PEND client_id value to the client names they register with JACK and the application determined part MUST be unique for that (JACK) client. -

-

-For example, a suitable JACK client name would be: -

-
-
-$CLIENT_ID/track-1
-
-

-Note that this means that the application MUST NOT register with JACK (or any other subsystem requiring unique names) until it receives an open message from NSM. Likewise, applications with the :switch: capability should close their JACK clients and re-create them with using the new client_id. Re-registering is necessary because the JACK API does currently support renaming existing clients, although this is a sorely needed addition. -

-

-A response is REQUIRED as soon as the open operation has been completed. Ongoing progress may be indicated by sending messages to /nsm/client/progress. -

-
1.2.2.2.1. Response
-

-The client MUST respond to the 'open' message with: -

-
-
-/reply "/nsm/client/open" s:message
-
-

-Or -

-
-
-/error "/nsm/client/open" i:error_code s:message
-
-
- - - - - - - -
-Fig. 1.4. Response Codes -
CodeMeaning
ERRGeneral Error
ERR_BAD_PROJECTAn existing project file was found to be corrupt
ERR_CREATE_FAILEDA new project could not be created
ERR_UNSAVED_CHANGESUnsaved changes would be lost
ERR_NOT_NOWOperation cannot be completed at this time
-

1.2.2.3. Save

-
-
-/nsm/client/save
-
-

-This message will only be delivered after a previous open message, and may be sent any number of times within the course of a session (including zero, if the user aborts the session). -

-

-

1.2.2.3.1. Response
-

-The client MUST respond to the 'save' message with: -

-
-
-/reply "/nsm/client/save" s:message
-
-

-Or -

-
-
-/error "/nsm/client/save" i:error_code s:message
-
-
- - - - - -
-Fig. 1.5. Response Codes -
CodeMeaning
ERRGeneral Error
ERR_SAVE_FAILEDProject could not be saved
ERR_NOT_NOWOperation cannot be completed at this time
-

1.2.3. Server to Client Informational Messages

-

1.2.3.1. Session is Loaded

-

- Accepting this message is optional. The intent is to signal to clients which may have some interdependence (say, peer to peer OSC connections) that the session is fully loaded and all their peers are available. Most clients will not need to act on this message. This message has no meaning when a session is being built or run--only when it is initially loaded. Clients who intend to act on this message MUST not do so by delaying initialization waiting for it. -

-
-
-/nsm/client/session_is_loaded
-
-

-This message does not require a response. -

-

1.2.3.2. Show Optional Gui

-

-If the client has specified the optional-gui capability, then it may receive this message from the server when the user wishes to change the visibility state of the GUI. It doesn't matter if the optional GUI is integrated with the program or if it is a separate program \(as is the case with SooperLooper\). When the GUI is hidden, there should be no window mapped and if the GUI is a separate program, it should be killed. -

-
-
-/nsm/client/show_optional_gui 
-
-
-
-/nsm/client/hide_optional_gui
-
-

-No response is message is required. -

-

1.2.4. Client to Server Informational Messages

-

-These are optional messages which a client can send to the NSM server to inform it about the client's status. The client should not expect any reply to these messages. If a client intends to send a message described in this section, then it MUST add the appropriate value to its capabilities string when composing the announce message. -

-

1.2.4.1. Optional GUI

-

-If the client has specified the optional-gui capability, then it MUST send this message whenever the state of visibility of the optional GUI has changed. It also MUST send this message after it's announce message to indicate the initial visibility state of the optional GUI. -

-

-It is the responsibility of the client to remember the visibility state of its GUI across session loads. -

-
-
-/nsm/client/gui_is_hidden
-
-
-
-/nsm/client/gui_is_shown
-
-

-No response will be delivered. -

-

1.2.4.2. Progress

-
-
-/nsm/client/progress f:progress
-
-

-For potentially time-consuming operations, such as save and open, progress updates may be indicated throughout the duration by sending a floating point value between 0.0 and 1.0, 1.0 indicating completion, to the NSM server. -

-

-The server will not send a response to these messages, but will relay the information to the user. -

-

-Note that even when using the progress feature, the final response to the save or open message is still REQUIRED. -

-

-Clients which intend to send progress messages should include :progress: in their announce capability string. -

-

1.2.4.3. Dirtiness

-
-
-/nsm/client/is_dirty
-
-
-
-/nsm/client/is_clean
-
-

-Some clients may be able to inform the server when they have unsaved changes pending. Such clients may optionally send is_dirty and is_clean messages. -

-

-Clients which have this capability should include :dirty: in their announce capability string. -

-

1.2.4.4. Status Messages

-
-
-/nsm/client/message i:priority s:message
-
-

-Clients may send miscellaneous status updates to the server for possible display to the user. This may simply be chatter that is normally written to the console. priority should be a number from 0 to 3, 3 being the most important. -

-

-Clients which have this capability should include :message: in their announce capability string. -

-

1.2.5. Error Code Definitions

-
- - - - - - - - - - - - -
-Fig. 1.6. Error Code Definitions -
Symbolic NameInteger Value
ERR_GENERAL-1
ERR_INCOMPATIBLE_API-2
ERR_BLACKLISTED-3
ERR_LAUNCH_FAILED-4
ERR_NO_SUCH_FILE-5
ERR_NO_SESSION_OPEN-6
ERR_UNSAVED_CHANGES-7
ERR_NOT_NOW-8
ERR_BAD_PROJECT-9
ERR_CREATE_FAILED-10
-

1.2.6. Client to Server Control

-

-If the server publishes the :server-control: capability, then clients can also initiate action by the server. For example, a client might implement a 'Save All' option which sends a /nsm/server/save message to the server, rather than requiring the user to switch to the session management interface to effect the save. -

-

1.2.7. Server Control API

-

-The session manager not only manages clients via OSC, but it is itself controlled via OSC messages. The server responds to the following messages. -

-

-All of the following messages will be responded to, at the sender's address, with one of the two following messages: -

-
-
-/reply s:path s:message
-
-
-
-/error s:path i:error_code s:message
-
-

- The first parameter of the reply is the path to the message being replied to. The /error reply includes an integer error code (non-zero indicates error). message will be a description of the error. -

-

-The possible errors are: -

-
- - - - - - - -
-Fig. 1.7. Responses -
CodeMeaning
ERR_GENERALGeneral Error
ERR_LAUNCH_FAILEDLaunch failed
ERR_NO_SUCH_FILENo such file
ERR_NO_SESSIONNo session is open
ERR_UNSAVED_CHANGESUnsaved changes would be lost
-
-
/nsm/server/add s:executable_name
-
-

-Adds a client to the current session. -

-
-
/nsm/server/save
-
-

-Saves the current session. -

-
-
/nsm/server/open s:project_name
-
-

-Saves the current session and loads a new session. -

-
-
/nsm/server/new s:project_name
-
-

-Saves the current session and creates a new session. -

-
-
/nsm/server/duplicate s:new_project
-
-

-Saves and closes the current session, makes a copy, and opens it. -

-
-
/nsm/server/close
-
-

-Saves and closes the current session. -

-
-
/nsm/server/abort
-
-

-Closes the current session WITHOUT SAVING -

-
-
/nsm/server/quit
-
-

-Saves and closes the current session and terminates the server. -

-
-
/nsm/server/list
-
-

-Lists available projects. One /reply message will be sent for each existing project. -

-

1.2.7.1. Client to Client Communication

-

-If the server includes :broadcast: in its capability string, then clients may send broadcast messages to each other through the NSM server. Clients may send messages to the server at the path /nsm/server/broadcast. -

-

-The format of this message is as follows: -

-
-
-/nsm/server/broadcast s:path [arguments...]
-
-

-The message will then be relayed to all clients in the session at the path path (with the arguments shifted by one). -

-

-For example the message: -

-
-
-/nsm/server/broadcast /tempomap/update "0,120,4/4:12351234,240,4/4"
-
-

-Would broadcast the following message to all clients in the session (except for the sender), some of which might respond to the message by updating their own tempo maps. -

-
-
-/tempomap/update "0,120,4/4:12351234,240,4/4"
-
-

-The Non programs use this feature to establish peer to peer OSC communication by symbolic names (client IDs) without having to remember the OSC URLs of peers across sessions. -

-
- - diff --git a/session-manager/doc/API.mu b/session-manager/doc/API.mu deleted file mode 100644 index 2ee3475..0000000 --- a/session-manager/doc/API.mu +++ /dev/null @@ -1,611 +0,0 @@ - -! title Non Session Management API -! author Jonathan Moore Liles #(email,male@tuxfamily.org) -! revision Version 1.2 -! extra #(image,logo,icon.png) - --- Table Of Contents - -: Non Session Management API - - The Non Session Management API is used by the various components of - the Non audio production suite to allow any number of independent - programs to be managed together as part of a logical session (i.e. a - song). Thus, operations such as loading and saving are synchronized. - - The API comprises a simple Open Sound Control (OSC) based protocol, - along with some behavioral guidelines, which can easily be - implemented by various applications. - - The Non project contains an program called `nsmd` which is an - implementation of the server side of the NSM API. `nsmd` is - controlled by the `non-session-manager` GUI. However, the same - server-side API can also be implemented by other session managers - (such as LADISH), although consistency and robustness will likely - suffer if non-NSM compliant clients are allowed to participate in a - session. - - The only dependency for client implementations `liblo` (the OSC - library), which several Linux audio applications already link to or - plan to link to in the future. - - The aim of this project is to thoroughly define the behavior - required of clients. This is an area where other attempts at session - management (LASH and JACK-Session) have failed. Often the difficulty - with these systems has been not in implementing support for them, - but in attempting to interpret the confusing, ambiguous, or - ill-conceived API documentation. For these reasons and more all - previous attempts at Linux audio session management protocols are - considered harmful. - - You *WILL* see some unambiguous and emphatic language in this - document. For the good of the user, these rules are meant to be - followed and are non-negotiable. If an application does not conform - to this specification it should be considered broken. Consistency - across applications under session management is very important for a - good user experience. - -:: Client Behavior Under Session Management - - Most graphical applications make available to the user a common set - of file operations, typically presented under a File or Project - menu. - - These are: New, Open, Save, Save As, Close and Quit or Exit. - - The following sub-sections describe how these options should behave when - the application is part of an NSM session. These rules only apply - when session management is active (that is, after the `announce` - handshake described in the #(ref,Non Session Management API::NSM OSC Protocol) section). - - In order to provide a consistent and predictable user experience, it - is critically important for applications to adhere to these - guidelines. - -::: File Menu - -:::: New - - This option may empty\/reset the current file or project (possibly - after user confirmation). *UNDER NO CIRCUMSTANCES* should it allow - the user to create a new project\/file in another location. - -:::: Open - - This option *MUST* be disabled. - - The application may, however, elect to implement an option called - 'Import into Session', creates a copy of a file\/project which is - then saved at the session path provided by NSM. - -:::: Save - - This option should behave as normal, saving the current - file\/project as established by the NSM `open` message. - - *UNDER NO CIRCUMSTANCES* should this option present the user with a - choice of where to save the file. - -:::: Save As - - This option *MUST* be disabled. - - The application may, however, elect to implement an option called - 'Export from Session', which creates a copy of the current - file\/project which is then saved in a user-specified location - outside of the session path provided by NSM. - -:::: Close (as distinguished from Quit or Exit) - - This option *MUST* be disabled unless its meaning is to disconnect - the application from session management. - -:::: Quit or Exit - - This option may behave as normal (possibly asking the user to - confirm exiting). - -::: Data Storage - -:::: Internal Files - - All project specific data created by a client *MUST* be stored in - the per-client storage area provided by NSM. This includes all - recorded audio and MIDI files, snapshots, etc. Only global - configuration items, exports, and renders of the project may be - stored elsewhere (wherever the user specifies). - -:::: External Files - - Files required by the project but external to it (typically - read-only data such as audio samples) *SHOULD* be referenced by - creating a symbolic link within the assigned session area, and then - referring to the symlink. This allows sessions to be archived and - transported simply (e.g. with "tar -h") by tools that have no - knowledge of the project formats of the various clients in the - session. The symlinks thus created should, at the very least, be - named after the files they refer to (some unique component may be - required to prevent collisions) - -> samples/drumbeat-1.wav -> samples/drumbeat-2.wav - -:: NSM OSC Protocol - - All message parameters are *REQUIRED*. All messages *MUST* be sent - from the same socket as the `announce` message, using the - `lo\_send\_from` method of liblo or its equivalent, as the server uses - the return addresses to distinguish between clients. - - Clients *MUST* create thier OSC servers using the same protocol - (UDP,TCP) as found in `NSM\_URL`. liblo is lacking a robust TCP - implementation at the time of writing, but in the future it may be - useful. - -::: Establishing a Connection - -:::: Announce - - At launch, the client *MUST* check the environment for the value of - `NSM\_URL`. If present, the client *MUST* send the following message - to the provided address as soon as it is ready to respond to the - `\/nsm\/client\/open` event: - -> /nsm/server/announce s:application_name s:capabilities s:executable_name i:api_version_major i:api_version_minor i:pid - - If `NSM\_URL` is undefined, invalid, or unreachable, then the client - should proceed assuming that session management is unavailable. - - `api\_version\_major` and `api\_version\_minor` must be the two - parts of the version number of the NSM API as defined by this - document. - - Note that if the application intends to register JACK clients, - `application\_name` *MUST* be the same as the name that would - normally be passed to `jack\_client\_open`. For example, Non-Mixer - sends "Non-Mixer" as its `application\_name`. Applications *MUST - NOT* register their JACK clients until receiving an `open` message; - the `open` message will provide a unique client name prefix suitable - for passing to JACK. This is probably the most complex requirement - of the NSM API, but it isn't difficult to implement, especially if - the application simply wishes to delay its initialization process - breifly while awaiting the `announce` reply and - subsequent `open` message. - - - `capabilities` *MUST* be a string containing a colon separated list - of the special capabilities the client - possesses. e.g. `:dirty:switch:progress:` - - `executable\_name` *MUST* be the executable name that the program - was launched with. For C programs, this is simply the value of - `argv[0]`. Note that hardcoding the name of the program here is not - the same as using, as the user may have launched the program from a - script with a different name using exec, or have created a symlink - to the program. Getting the correct value in scripting languages - like Python can be more challenging. - -// Available Client Capabilities -[[ Name, Description -[[ switch, client is capable of responding to multiple `open` messages without restarting -[[ dirty, client knows when it has unsaved changes -[[ progress, client can send progress updates during time-consuming operations -[[ message, client can send textual status updates -[[ optional-gui, client has an optional GUI - -:::: Response - - The server will respond to the client's `announce` message with the - following message: - -> /reply "/nsm/server/announce" s:message s:name_of_session_manager s:capabilities - - `message` is a welcome message. - - The value of `name\_of\_session\_manager` will depend on the - implementation of the NSM server. It might say "Non Session - Manager", or it might say "LADISH". This is for display to the user. - - `capabilities` will be a string containing a colon separated list of - special server capabilities. - - Presently, the server `capabilities` are: - -// Available Server Capabilities -[[ Name, Description -[[ server-control, client-to-server control -[[ broadcast, server responds to /nsm/server/broadcast message -[[ optional-gui, server responds to optional-gui messages--if this capability is not present then clients with optional-guis MUST always keep them visible - - A client should not consider itself to be under session management - until it receives this response. For example, the Non applications - activate their "SM" blinkers at this time. - - If there is an error, a reply of the following form will be sent to - the client: - -> /error "/nsm/server/announce" i:error_code s:error_message - - The following table defines possible values of `error\_code`: - -// Response codes -[[ Code, Meaning -[[ ERR_GENERAL, General Error -[[ ERR_INCOMPATIBLE_API, Incompatible API version -[[ ERR_BLACKLISTED, Client has been blacklisted. - -::: Server to Client Control Messages - - Compliant clients *MUST* accept the client control messages - described in this section. All client control messages *REQUIRE* a - response. Responses *MUST* be delivered back to the sender (NSM) - from the same socket used by the client in its `announce` message - (by using `lo\_send\_from`) *AFTER* the action has been completed or - if an error is encountered. The required response is described in - the subsection for each message. - - If there is an error and the action cannot be completed, then - `error\_code` *MUST* be set to a valid error code (see #(ref,Non Session Management API::NSM OSC Protocol::Error Code Definitions)) - and `message` to a string describing the problem (suitable - for display to the user). - - The reply can take one of the following two forms, where `path` *MUST* be - the path of the message being replied to (e.g. "/nsm\/client\/save"): - -> /reply s:path s:message - -> /error s:path i:error_code s:message - -:::: Quit - - There is no message for this. Clients will receive the Unix SIGTERM - signal and *MUST* close cleanly *IMMEDIATELY*, without displaying - any kind of dialog to the user and regardless of whether or not - unsaved changes would be lost. When a session is closed the - application will receive this signal soon after having responded to - a `save` message. - -:::: Open - -> /nsm/client/open s:path_to_instance_specific_project s:display_name s:client_id - - `path\_to\_instance\_specific\_project` is a path name assigned to - the client for storing its project data. - - The client may append to the path, creating a sub-directory, - e.g. '\/song.foo' or simply append the client's native file extension - (e.g. '.non' or '.XML'). The same transformation *MUST* be applied - to the name when opening an existing project, as NSM will only - provide the instance specific part of the path. - - If a project exists at the path, the client *MUST* immediately open - it. - - If a project does not exist at the path, then the client *MUST* - immediately create and open a new one at the specified path or, for - clients which hold all their state in memory, store the path for - later use when responding to the `save` message. - - No file or directory will be created at the specified path by the - server. It is up to the client to create what it needs. - - For clients which *HAVE NOT* specified the `:switch:` capability, - the `open` message will only be delivered once, immediately - following the `announce` response. - - For clients which *HAVE* specified the `:switch:` capability, the - client *MUST* immediately switch to the specified project or create - a new one if it doesn't exist. - - Clients which are incapable of switching projects or are prone to - crashing upon switching *MUST NOT* include `:switch:` in their - capability string. - - If the user the is allowed to run two or more instances of the - application simultaneously (that is to say, there is no technical - limitation preventing them from doing so, even if it doesn't make - sense to the author), then such an application *MUST PRE-PEND* the - provided `client\_id` string to any names it registers with common - subsystems (e.g. JACK client names). This ensures that multiple - instances of the same application can be restored in any order - without scrambling the JACK connections or causing other - conflicts. The provided `client\_id` will be a concatenation of the - value of `application\_name` sent by the client in its `announce` - message and a unique identifier. Therefore, applications which - create single JACK clients can use the value of `client\_id` directly - as their JACK client name. Applications which register multiple JACK - clients (e.g. Non-Mixer) *MUST PRE-PEND* `client\_id` value to the - client names they register with JACK and the application determined - part *MUST* be unique for that (JACK) client. - - For example, a suitable JACK client name would be: - -> $CLIENT_ID/track-1 - - Note that this means that the application *MUST NOT* register with - JACK (or any other subsystem requiring unique names) until it - receives an `open` message from NSM. Likewise, applications with the - `:switch:` capability should close their JACK clients and re-create - them with using the new `client\_id`. Re-registering is necessary - because the JACK API does currently support renaming existing - clients, although this is a sorely needed addition. - - A response is *REQUIRED* as soon as the open operation has been - completed. Ongoing progress may be indicated by sending messages to - `\/nsm\/client\/progress`. - -::::: Response - - The client *MUST* respond to the 'open' message with: - -> /reply "/nsm/client/open" s:message - - Or - -> /error "/nsm/client/open" i:error_code s:message - -// Response Codes -[[ Code, Meaning -[[ ERR, General Error -[[ ERR_BAD_PROJECT, An existing project file was found to be corrupt -[[ ERR_CREATE_FAILED, A new project could not be created -[[ ERR_UNSAVED_CHANGES, Unsaved changes would be lost -[[ ERR_NOT_NOW, Operation cannot be completed at this time - -:::: Save - -> /nsm/client/save - - This message will only be delivered after a previous `open` message, - and may be sent any number of times within the course of a session - (including zero, if the user aborts the session). - - If able to, the client *MUST* immediately save the current - application specific project data to the project path previously - established in the 'open' message. *UNDER NO CIRCUMSTANCES* should a - dialog be displayed to the user (giving a choice of where to save, - etc.) - - However, if the client is incapable of saving at the specific moment - without disturbing the user (e.g. a JACK client that can't save - while the transport is rolling without causing massive XRUNS), then - the client may respond to "/error" with ERR_NOT_NOW and a string - explaining exactly why the save could not be completed (so that, in - this example, the user knows that they have to stop the transport in - order to save). - -::::: Response - - The client *MUST* respond to the 'save' message with: - -> /reply "/nsm/client/save" s:message - - Or - -> /error "/nsm/client/save" i:error_code s:message - -// Response Codes -[[ Code, Meaning -[[ ERR, General Error -[[ ERR_SAVE_FAILED, Project could not be saved -[[ ERR_NOT_NOW, Operation cannot be completed at this time - -::: Server to Client Informational Messages - -:::: Session is Loaded - - Accepting this message is optional. The intent is to signal to - clients which may have some interdependence (say, peer to peer OSC - connections) that the session is fully loaded and all their peers - are available. Most clients will not need to act on this - message. This message has no meaning when a session is being built - or run--only when it is initially loaded. Clients who intend to act - on this message *MUST* not do so by delaying initialization waiting - for it. - -> /nsm/client/session_is_loaded - - This message does not require a response. - -:::: Show Optional Gui - - If the client has specified the `optional-gui` capability, then it - may receive this message from the server when the user wishes to - change the visibility state of the GUI. It doesn't matter if the - optional GUI is integrated with the program or if it is a separate - program \(as is the case with SooperLooper\). When the GUI is - hidden, there should be no window mapped and if the GUI is a - separate program, it should be killed. - -> /nsm/client/show_optional_gui - -> /nsm/client/hide_optional_gui - - No response is message is required. - -::: Client to Server Informational Messages - - These are optional messages which a client can send to the NSM - server to inform it about the client's status. The client should not - expect any reply to these messages. If a client intends to send a - message described in this section, then it *MUST* add the - appropriate value to its `capabilities` string when composing the - `announce` message. - -:::: Optional GUI - - If the client has specified the `optional-gui` capability, then it - *MUST* send this message whenever the state of visibility of the - optional GUI has changed. It also *MUST* send this message after - it's announce message to indicate the initial visibility state of - the optional GUI. - - It is the responsibility of the client to remember the visibility - state of its GUI across session loads. - -> /nsm/client/gui_is_hidden - -> /nsm/client/gui_is_shown - - No response will be delivered. - -:::: Progress - -> /nsm/client/progress f:progress - - For potentially time-consuming operations, such as `save` and - `open`, progress updates may be indicated throughout the duration by - sending a floating point value between 0.0 and 1.0, 1.0 indicating - completion, to the NSM server. - - The server will not send a response to these messages, but will - relay the information to the user. - - Note that even when using the `progress` feature, the final - response to the `save` or `open` message is still *REQUIRED*. - - Clients which intend to send `progress` messages should include - `:progress:` in their `announce` capability string. - -:::: Dirtiness - -> /nsm/client/is_dirty - -> /nsm/client/is_clean - - Some clients may be able to inform the server when they have unsaved - changes pending. Such clients may optionally send `is\_dirty` and `is\_clean` - messages. - - Clients which have this capability should include `:dirty:` in their - `announce` capability string. - -:::: Status Messages - -> /nsm/client/message i:priority s:message - - Clients may send miscellaneous status updates to the server for - possible display to the user. This may simply be chatter that is - normally written to the console. `priority` should be a number from - 0 to 3, 3 being the most important. - - Clients which have this capability should include `:message:` in their - `announce` capability string. - -::: Error Code Definitions - -// Error Code Definitions -[[ Symbolic Name, Integer Value -[[ ERR_GENERAL, -1 -[[ ERR_INCOMPATIBLE_API, -2 -[[ ERR_BLACKLISTED, -3 -[[ ERR_LAUNCH_FAILED, -4 -[[ ERR_NO_SUCH_FILE, -5 -[[ ERR_NO_SESSION_OPEN, -6 -[[ ERR_UNSAVED_CHANGES, -7 -[[ ERR_NOT_NOW, -8 -[[ ERR_BAD_PROJECT, -9 -[[ ERR_CREATE_FAILED, -10 - -::: Client to Server Control - - If the server publishes the `:server-control:` capability, then - clients can also initiate action by the server. For example, a - client might implement a 'Save All' option which sends a - `\/nsm\/server\/save` message to the server, rather than requiring - the user to switch to the session management interface to effect the - save. - -::: Server Control API - - The session manager not only manages clients via OSC, but it is - itself controlled via OSC messages. The server responds to the - following messages. - - All of the following messages will be responded to, at the sender's - address, with one of the two following messages: - -> /reply s:path s:message - -> /error s:path i:error_code s:message - - The first parameter of the reply is the path to the message being - replied to. The `\/error` reply includes an integer error code - (non-zero indicates error). `message` will be a description of the - error. - - The possible errors are: - -// Responses -[[ Code, Meaning -[[ ERR_GENERAL, General Error -[[ ERR_LAUNCH_FAILED, Launch failed -[[ ERR_NO_SUCH_FILE, No such file -[[ ERR_NO_SESSION, No session is open -[[ ERR_UNSAVED_CHANGES, Unsaved changes would be lost - -= /nsm/server/add s:executable_name - - Adds a client to the current session. - -= /nsm/server/save - - Saves the current session. - -= /nsm/server/open s:project_name - - Saves the current session and loads a new session. - -= /nsm/server/new s:project_name - - Saves the current session and creates a new session. - -= /nsm/server/duplicate s:new_project - - Saves and closes the current session, makes a copy, and opens it. - -= /nsm/server/close - - Saves and closes the current session. - -= /nsm/server/abort - - Closes the current session *WITHOUT SAVING* - -= /nsm/server/quit - - Saves and closes the current session and terminates the server. - -= /nsm/server/list - - Lists available projects. One `\/reply` message will be sent for each existing project. - -:::: Client to Client Communication - - If the server includes `:broadcast:` in its capability string, then - clients may send broadcast messages to each other through the NSM - server. - - Clients may send messages to the server at the path - `\/nsm\/server\/broadcast`. - - The format of this message is as follows: - -> /nsm/server/broadcast s:path [arguments...] - - The message will then be relayed to all clients in the session at - the path `path` (with the arguments shifted by one). - - For example the message: - -> /nsm/server/broadcast /tempomap/update "0,120,4/4:12351234,240,4/4" - - Would broadcast the following message to all clients in the session - (except for the sender), some of which might respond to the message - by updating their own tempo maps. - -> /tempomap/update "0,120,4/4:12351234,240,4/4" - - The Non programs use this feature to establish peer to peer OSC - communication by symbolic names (client IDs) without having to - remember the OSC URLs of peers across sessions. diff --git a/session-manager/doc/MANUAL.html b/session-manager/doc/MANUAL.html deleted file mode 100644 index 4c66890..0000000 --- a/session-manager/doc/MANUAL.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - -Non Session Manager User Manual - - - -
-

Non Session Manager User Manual

-

-
-Jonathan Moore Liles <male@tuxfamily.org>
-
- -
logo
-
-
-

Table Of Contents

-
-

1. User Manual

-

1.1. The Non Session Manager Graphical Interface

-
- - - -
-Fig. 1.1. Non Session Manager -
fig. 1.1
-

-The Non Session Manager is a graphical interface to the NSM Daemon (nsmd). By default, running the command non-session-manager will start both the GUI and an instance of the daemon. -

-

-If a different session root than the default is desired, it may be specified on the command-line as follows: -

-
-
-non-session-manager -- --session-root path
-
-

-This command will instruct the instance of nsmd that the GUI starts to use path as the session root. -

-

-All session data is stored in per-session sub-directories of the Session Root. -

-

1.1.1. Session Operations

-

1.1.1.1. Open

-

- There are two ways to open a session. -

-

-The first is to click the Open button and type in the exact name of an existing session. The second is to click on the desired session name in the session list panel on the left side of the interface. -

-

-Either way, opening a session saves the current session and switches to the new one. Clients which are capable of switching projects without restarting are instructed to do so, resulting in very fast session open times when such clients are participating in both sessions. -

-

-Clients cannot be added until a session is open, either by Open or New. -

-

-As each client launches, a status bar representing it will be added to the client list on the right half the interface. For clients which are capable of reporting their progress, a progress bar will also become active. -

-

-Only clients supporting the NSM protocol can be told what to open and when to save. Clients not supporting NSM may still be added to the session, but their behavior is undefined other than that NSM can invoke and kill them. -

-

1.1.1.2. Close

-

-This option saves and closes the current session. All clients participating in the session are told to quit. Note that, as mentioned in the preceding section, in NSM it is not necessary to close one session before opening another. -

-

1.1.1.3. Abort

-

-This option closes the current session without saving. -

-

1.1.1.4. Save

-

-This option saves the current session, instructing clients supporting the NSM protocol to save. -

-

1.1.1.5. New

-

-This option saves the current session (if one is open) and creates a new one. The user is prompted for a session name. Session names are paths under the defined Session Root. A session name may include any number of hierarchical elements, which need not be pre-existing. -

-

-For example, one might name a session as follows: -

-
-
-Albums/Magnum Opus/The Best Song Ever Produced
-
-

-When inspecting Session Root in a file manager, the above represents exactly the path you would see. -

-

-Renaming a session is not currently supported, but one may simply move directories around under Session Root and NSM will detect the new layout upon the next invocation. The session name is not stored anywhere except in its path. -

-

-

1.1.1.6. Duplicate

-

-Templates are supported in by the Non Session Manager via duplication. Clicking on the Duplicate button with a session open will prompt the user for a new session name. The daemon will then perform a recursive file copy of the session and open the copy. -

-

-Obviously, this should be avoided for sessions containing audio data, as the copy would be very time consuming. -

-

-To create a template in the first place, simply use New to start a new session (preferably with a name beginning with "Templates/"), add the desired clients to it, and configure them (e.g. add plugins, make JACK connections, etc.) Now, any time you want to start a session from that template, simply switch to the template session and click Duplicate to create a new session based on it. -

-

1.1.1.7. Add Client

-

-This option will prompt the user for the executable name of the client to be added to the session. It is not necessary to type the full path (the PATH environment variable will be searched to find the executable). -

-

-When controlling an NSM session distributed across multiple machines, the user will also be required to choose which server to invoke the client on. -

-

1.1.2. Removing a Client From a Session

-

-If a client dies unexpectedly or is closed by the user (e.g. by closing its main window), Non Session Manager will detect this and two buttons will appear on that Client's status bar. One button, the arrow, causes the client to be restarted and to reopen its project file where it left off. The X button causes the client to be permanently removed from the session. -

-

1.2. Saving and Restoring Aspects of the Environment

-

-NSM manages clients together in a session. That's it. NSM doesn't know or care what Window Manager or audio subsystem those clients use--nor should it. Specific clients must be written to persist these environmental factors, and added to sessions when required. -

-

-For saving and restoring the JACK connection graph, a simple headless client named jackpatch has been developed and included in the NSM distribution. Simply add jackpatch do your basic template session and all the sessions you base on it will have their JACK connection graphs automatically saved and restored. -

-

1.3. The NSM Daemon

-

-The NSM Daemon (nsmd) is launched automatically by the Non Session Manager interface whenever one is not found to be already running at the URL specified in the environment. -

-

-Users who are not attempting to setup advanced modes like shared sessions between machines will not normally need to even know that nsmd is running. -

-

-But for those advanced users, here are the command-line options for launching nsmd separately from the GUI. -

-
-
-nsmd [--session-root path] [--osc-port port] [--detach]
-
-

-The --session-root option allows one to override where Session Root is, from the default of "$HOME/NSM Sessions" (this option can also be passed to the GUI, which will hand it over to the daemon). -

-

---osc-port instructs the daemon to bind to a specific UDP port number instead of selecting an available port automatically. -

-

---detach instructs the daemon to close its standard input and output and go into the background. This is useful for starting the daemon remotely with rsh. -

-

-When nsmd starts, it will print a string of the following form its standard output. -

-
-
-NSM_URL=osc.udp://foo.bar.net:17551/
-
-

-This is the OSC URL for the daemon process. If this URL is included in the environment (by either using a fixed port number or starting nsmd early in the initialization process [like in your .xinitrc] extracting the URL from its output) then any NSM capable client will join the current session when started, even if started from outside the Non Session Manager interface (for example, by your Desktop Environment's program launch menu). -

-

1.3.1. Multiple NSMD Instances

-

-When dealing with multiple instances of nsmd, whether they be on the same host or separate hosts, it is most convenient to use fixed port numbers specified with the --osc-port command-line option. -

-

1.3.1.1. Distributed Session Management

-

-In some situations it is necessary to have different audio programs running on different machines, connected by S/PDIF, analog wiring, or over TCP/IP as achieved by netjack. Usually the reason for doing this is that neither machine is powerful enough to do all the DSP or synthesis alone. -

-

-Needless to say, these configurations have historically been extremely difficult to manage--requiring heavy scripting and/or lots of manual setup. -

-

-NSM is the first--and currently only--system capable of managing these sessions. -

-

-Let us assume the following conditions for our example: -

-
  1. We want to distribute a session across two hosts, Host-A and Host-B, on the local area network. -
  2. Each host has a completely independent file system (i.e. not NFS). -
  3. We have appropriate access to both hosts. -

-The first step is to decide what port numbers to use. Let's choose 6661 for Host-A and 6662 for Host-B. -

-

-If either host is running a firewall, then these ports must be opened explicitly! -

-

-To start the daemon on host A: -

-
-
-user@host-a:~$ nsmd --detach --session-root "$HOME/distributed-nsm-sessions" --osc-port 6661
-
-

-To start the daemon on host B (conveniently from host A, via rsh) -

-
-
-user@host-a:~$ rsh host-b nsmd --detach --session-root "\$HOME/distributed-nsm-sessions" --osc-port 6662
-
-

-Note that in the above example, there is a backslash in "$HOME", this is because otherwise the variable would be expanded on the local machine, giving the local value rather than what we intended. -

-

-Now that both daemons are running, we can start the Non Session Manager interface with the following command: -

-
-
-user@host-a:~$ non-session-manager --nsm-url osc.udp://host-a:6661 --nsm-url osc.udp://host-b:6662
-
-

-The Non Session Manager interface will then connect to the daemons on both hosts. Creating a new session will create separate session files on each host. When adding a client, the interface will present the user with a choice of which host to invoke the client on. Aside from that it is just like managing any other session. Sessions can be opened, saved, switched between, etc. and the desired effect will be seen on each host. -

-

1.3.1.2. Multiple Sessions On One Host

-

-Simply starting two (or more) instances of the Non Session Manager interface on the same machine (when the NSM_URL environment variable is unset) will result in the ability to have two different sessions open at the same time on the same host. A lock file prevents the two instances from opening the same session. -

-

-Imagining a useful application of this feature is left as an exercise for the reader. -

-

Distribution

-

-Development of the Non Session Manager can be followed with Git: -

-
-
-git clone git://git.tuxfamily.org/gitroot/non/non.git
-
-

-There are no pre-compiled binaries available. -

-
- - diff --git a/session-manager/doc/MANUAL.mu b/session-manager/doc/MANUAL.mu deleted file mode 100644 index e4c2990..0000000 --- a/session-manager/doc/MANUAL.mu +++ /dev/null @@ -1,266 +0,0 @@ - -! title Non Session Manager User Manual -! author Jonathan Moore Liles #(email,male@tuxfamily.org) -! extra #(image,logo,icon.png) - --- Table Of Contents - -: User Manual - -:: The Non Session Manager Graphical Interface - -/ Non Session Manager -< nsm.png - - The Non Session Manager is a graphical interface to the NSM Daemon - (nsmd). By default, running the command `non-session-manager` will - start both the GUI and an instance of the daemon. - - If a different session root than the default is desired, it may be - specified on the command-line as follows: - -> non-session-manager -- --session-root path - - This command will instruct the instance of nsmd that the GUI starts - to use `path` as the session root. - - All session data is stored in per-session sub-directories of the - /Session Root/. - -::: Session Operations - -:::: Open - - There are two ways to open a session. - - The first is to click the /Open/ button and type in the exact name - of an existing session. The second is to click on the desired - session name in the session list panel on the left side of the - interface. - - Either way, opening a session saves the current session and switches - to the new one. Clients which are capable of switching projects - without restarting are instructed to do so, resulting in very fast - session open times when such clients are participating in both - sessions. - - Clients cannot be added until a session is open, either by /Open/ or - /New/. - - As each client launches, a status bar representing it will be added - to the client list on the right half the interface. For clients - which are capable of reporting their progress, a progress bar will - also become active. - - Only clients supporting the NSM protocol can be told what to open - and when to save. Clients not supporting NSM may still be added to - the session, but their behavior is undefined other than that NSM can - invoke and kill them. - -:::: Close - - This option saves and closes the current session. All clients - participating in the session are told to quit. Note that, as - mentioned in the preceding section, in NSM it is not necessary to - close one session before opening another. - -:::: Abort - - This option closes the current session *without saving*. - -:::: Save - - This option saves the current session, instructing clients - supporting the NSM protocol to save. - -:::: New - - This option saves the current session (if one is open) and creates a - new one. The user is prompted for a session name. Session names are - paths under the defined /Session Root/. A session name may include - any number of hierarchical elements, which need not be pre-existing. - - For example, one might name a session as follows: - -> Albums/Magnum Opus/The Best Song Ever Produced - - When inspecting /Session Root/ in a file manager, the above - represents exactly the path you would see. - - Renaming a session is not currently supported, but one may simply - move directories around under /Session Root/ and NSM will detect the - new layout upon the next invocation. The session name is not stored - anywhere except in its path. - - Advanced users may choose to use symbolic links to organize their - sessions. For example, one could store all their songs under - 'Songs\/' and create an 'Albums/\' directory structure which uses - symlinks to point at the songs stored. - -:::: Duplicate - - Templates are supported in by the Non Session Manager via - duplication. Clicking on the /Duplicate/ button with a session open - will prompt the user for a new session name. The daemon will then - perform a recursive file copy of the session and open the copy. - - Obviously, this should be avoided for sessions containing audio - data, as the copy would be very time consuming. - - To create a template in the first place, simply use /New/ to start a - new session (preferably with a name beginning with "Templates\/"), - add the desired clients to it, and configure them (e.g. add plugins, - make JACK connections, etc.) - - Now, any time you want to start a session from that template, simply - switch to the template session and click /Duplicate/ to create a new - session based on it. - -:::: Add Client - - This option will prompt the user for the executable name of the - client to be added to the session. It is not necessary to type the - full path (the PATH environment variable will be searched to find - the executable). - - When controlling an NSM session distributed across multiple - machines, the user will also be required to choose which server to - invoke the client on. - -::: Removing a Client From a Session - - If a client dies unexpectedly or is closed by the user (e.g. by - closing its main window), Non Session Manager will detect this and - two buttons will appear on that Client's status bar. One button, the - arrow, causes the client to be restarted and to reopen its project - file where it left off. The /X/ button causes the client to be - permanently removed from the session. - - -:: Saving and Restoring Aspects of the Environment - - NSM manages clients together in a session. That's it. NSM doesn't - know or care what Window Manager or audio subsystem those clients - use--nor should it. Specific clients must be written to persist - these environmental factors, and added to sessions when required. - - For saving and restoring the JACK connection graph, a simple - headless client named `jackpatch` has been developed and included in - the NSM distribution. Simply add `jackpatch` do your basic template - session and all the sessions you base on it will have their JACK - connection graphs automatically saved and restored. - -:: The NSM Daemon - - The NSM Daemon (nsmd) is launched automatically by the Non Session - Manager interface whenever one is not found to be already running at - the URL specified in the environment. - - Users who are not attempting to setup advanced modes like shared - sessions between machines will not normally need to even know that - `nsmd` is running. - - But for those advanced users, here are the command-line options for launching - nsmd separately from the GUI. - -> nsmd [--session-root path] [--osc-port port] [--detach] - - The `--session-root` option allows one to override where /Session - Root/ is, from the default of "$HOME\/NSM Sessions" (this option can - also be passed to the GUI, which will hand it over to the daemon). - - `--osc-port` instructs the daemon to bind to a specific UDP port - number instead of selecting an available port automatically. - - `--detach` instructs the daemon to close its standard input and - output and go into the background. This is useful for starting the - daemon remotely with `rsh`. - - When nsmd starts, it will print a string of the following form its - standard output. - -> NSM_URL=osc.udp://foo.bar.net:17551/ - - This is the OSC URL for the daemon process. If this URL is included - in the environment (by either using a fixed port number or starting - nsmd early in the initialization process [like in your .xinitrc] - extracting the URL from its output) then any NSM capable client will - join the current session when started, even if started from outside - the Non Session Manager interface (for example, by your Desktop - Environment's program launch menu). - -::: Multiple NSMD Instances - - When dealing with multiple instances of nsmd, whether they be on the - same host or separate hosts, it is most convenient to use fixed port - numbers specified with the `--osc-port` command-line option. - -:::: Distributed Session Management - - In some situations it is necessary to have different audio programs - running on different machines, connected by S\/PDIF, analog wiring, - or over TCP\/IP as achieved by `netjack`. Usually the reason for - doing this is that neither machine is powerful enough to do all the - DSP or synthesis alone. - - Needless to say, these configurations have historically been - extremely difficult to manage--requiring heavy scripting and\/or - lots of manual setup. - - NSM is the first--and currently only--system capable of managing - these sessions. - - Let us assume the following conditions for our example: - -+ We want to distribute a session across two hosts, Host-A and Host-B, on the local area network. -+ Each host has a completely independent file system (i.e. not NFS). -+ We have appropriate access to both hosts. - - The first step is to decide what port numbers to use. Let's choose - `6661` for Host-A and `6662` for Host-B. - - If either host is running a firewall, then these ports must be opened explicitly! - - To start the daemon on host A: - -> user@host-a:~$ nsmd --detach --session-root "$HOME/distributed-nsm-sessions" --osc-port 6661 - - To start the daemon on host B (conveniently from host A, via rsh) - -> user@host-a:~$ rsh host-b nsmd --detach --session-root "\$HOME/distributed-nsm-sessions" --osc-port 6662 - - Note that in the above example, there is a backslash in "$HOME", - this is because otherwise the variable would be expanded on the - local machine, giving the local value rather than what we intended. - - Now that both daemons are running, we can start the Non Session - Manager interface with the following command: - -> user@host-a:~$ non-session-manager --nsm-url osc.udp://host-a:6661 --nsm-url osc.udp://host-b:6662 - - The Non Session Manager interface will then connect to the daemons - on both hosts. Creating a new session will create separate session - files on each host. When adding a client, the interface will present - the user with a choice of which host to invoke the client on. Aside - from that it is just like managing any other session. Sessions can - be opened, saved, switched between, etc. and the desired effect will - be seen on each host. - -:::: Multiple Sessions On One Host - - Simply starting two (or more) instances of the Non Session Manager - interface on the same machine (when the NSM\_URL environment - variable is unset) will result in the ability to have two different - sessions open at the same time on the same host. A lock file - prevents the two instances from opening the same session. - - Imagining a useful application of this feature is left as an - exercise for the reader. - -; Distribution - - Development of the Non Session Manager can be followed with Git: - -> git clone git://git.tuxfamily.org/gitroot/non/non.git - - There are no pre-compiled binaries available. diff --git a/session-manager/doc/Makefile b/session-manager/doc/Makefile deleted file mode 100644 index d2ed882..0000000 --- a/session-manager/doc/Makefile +++ /dev/null @@ -1,25 +0,0 @@ - -SRCS=$(wildcard *.mu) - -OBJS=$(SRCS:.mu=.html) - -%.html: %.mu - @ echo Mupping $<... - @ mup.wrapper html $< - -.PHONY: all clean - -all: $(OBJS) - -upload: all - @ ln -sf MANUAL.html index.html - @ rsync -L mup.css MANUAL.html API.html index.html *.png ssh.tuxfamily.org:/home/non/non.tuxfamily.org-web/htdocs/nsm - @ rm -f index.html - -install: - @ install -d "$(DESTDIR)$(DOCUMENT_PATH)"/non-session-manager - @ cp $(OBJS) *.png mup.css ../../COPYING "$(DESTDIR)$(DOCUMENT_PATH)"/non-session-manager -# @ ln -sf $(PIXMAP_PATH)/logo.png $(DOCUMENT_PATH) - -clean: - rm -f $(OBJS) diff --git a/session-manager/doc/icon.png b/session-manager/doc/icon.png deleted file mode 120000 index 1ad72bf..0000000 --- a/session-manager/doc/icon.png +++ /dev/null @@ -1 +0,0 @@ -../icons/hicolor/256x256/apps/non-session-manager.png \ No newline at end of file diff --git a/session-manager/doc/mup.css b/session-manager/doc/mup.css deleted file mode 100644 index 10aceae..0000000 --- a/session-manager/doc/mup.css +++ /dev/null @@ -1,461 +0,0 @@ - -/* Example CSS Style for MUP */ - -body -{ - font: normal normal 14pt "Helvetica", sans-serif; -/* background: url("http://non.tuxfamily.org/background-pattern.png") fixed; */ - background-color: #121212; color: lightgray; padding: 0; margin: 0; -} - -a:link { - color: white; -} -a:visited { - color: olive; -} -a:active { - color: white; -} -a:link:hover { - text-decoration: underline; -} - -/* #(url) */ -a.ext:link { - color: red; - text-decoration: none; - border-bottom: dashed silver 1; -} -a.ext:visited { - color: darkred; - border-bottom: dashed silver 1; - text-decoration: none; -} - -/* #(ref) */ -a.int:link { - border-bottom: dashed silver 0.15em; -} -a.int:link:hover { - text-decoration: none; - color: white; -} - -/* - a[href^="#"]:link { - border-bottom: dashed silver 0.15em; - } - a[href^="#"]:link:hover { - text-decoration: none; - color: white; - } - */ - -p:contains("Warning:") { - background: #d00; - color: white; - border: dotted gray 0.5em; - display: block; -} - -/* First letter of first paragraph of every chapter */ -/* - h1 + p:first-letter { - text-transform: uppercase; - float: left; - line-height: 0.8em; - font-size: 350%; - font-family: Serif; - letter-spacing: 0; - margin-right: 0.1em; - margin-top: 0.1em; - border: solid gray 1px; - padding: 1px; - color: #d00; - text-shadow: #666 3px 3px 3px; - } - */ -/* First paragraph of every chapter */ -/* - h1 + p { - text-indent: 0; - } - */ - -/* cover */ -#cover * { - background: transparent; -} -#cover { - position: relative; -/* background: #da0;*/ - background: #555; - color: #aaa; - text-align: center; - margin: 0; - padding: 0.5em; - border-top: 4px solid black; - border-bottom: 4px solid black; -} -#cover h1, #cover h3 { - text-shadow: #222 0.2em 0.2em 0.2em; - color: white; - border: none; - letter-spacing: 0.2em; - line-height: 0.8em; - margin-left: 2em; - margin-right: 2em; -} -#cover h1:before, #cover h1:after { -/* content: "::"; */ - font-size: 300%; - color: black; -} -#cover h1:before { - position: absolute; - top: 0.2em; - left: 0.1em; -} -#cover h1:after { - position: absolute; - top: 0.2em; - right: 0.1em; -} -#cover hr { - display: none; -} - -hr:first-child { - display: none; -} - -hr { - height: 0.2em; - background: #555; - color: #555; - margin-left: 0.5em; -} - -#cover a:visited { - color: black; -} - -/* endnote */ -#endnote { - color: black; -} - -/* TOC */ -#toc { - position: relative; -} -#toc hr { -} -#toc h1 { -} -#toc ul { - font-size: 125%; - font-weight: bold; - margin-bottom: 1em; -} -#toc ul ul { - font-size: 90%; - font-weight: normal; - margin-bottom: 0; -} -#toc li { - list-style: none; - -} -#toc a:link { - border-bottom: 0; -} - -/* */ -#body { - position: relative; - margin: 0 auto; - padding: 0.5em; - max-width: 900px; - background-color: #1c1c1c; -} -/* ;, : */ -h1 { - color: #fff; - border-bottom: solid #444 0.1em; - text-shadow: 1px 1px 2px #000; - -} -/* ::, :::, ::::, :::::, :::::: */ -h2, h3, h4, h5, h6 { - color: #fff; - text-shadow: 1px 1px 2px #000; - -} - -/* tables, figures */ -.fig caption { - color: gray; - text-align: center; - /* Required for Mozilla */ - margin: auto; -} -.fig table { - border: none; - margin: auto; -/* border-collapse: collapse; */ -} -/* / */ -.fig.table th { - border: none; - background: gray; - color: black; -} -/* [ */ -.fig.table td { - border: none; - background: silver; - color: black; - padding-left: 1em; - padding-right: 1em; - padding-top: 0.2em; - padding-bottom: 0.2em; -} -/* < */ - -.fig.image table { - border: none; - background: transparent; - max-width: 100%; -} -.fig.image tr, .fig.image td { - border: none; - background: transparent; - padding: 0; -} - -.fig.image img -{ - max-width: 900px; -} - -/* */ -p { - margin-right: 2%; - text-align: justify; - text-indent: 1em; -} -/* > */ -.example * -{ - background: transparent; -} -.example table -{ - margin: 0; - padding: 0; - table-layout: fixed; - width: 100%; - caption-side: top; - overflow: auto; -} -.example caption -{ - caption-side: top; - -} -.example { -} -.example p { - display: inline; - margin: 0; - padding: 0; - text-align: center; -} -.example pre { - margin-top: 0; - font-family: Monospace; - padding: 1em; - border: solid 1px black; - background: #222; - color: white; - display: block; - overflow: auto; - /* Every browser should support border radii */ -/* -moz-border-radius: 0.5em; - border-radius: 0.5em; */ -} -/* " */ -/* - .quote:before { - float: left; - font-size: 500%; - content: "\201C"; - } - */ -/* - blockquote:after { - content: "\201D"; - }*/ -.quote blockquote { - padding: 0.5em; - margin-left: 0.5em; - font-family: Serif; - border-left: solid 0.4em gray; - /* background: #333; */ - color: white; -} -/* ^ */ -small { -/* - color: silver; - font-size: 50%; - */ -} -.footnote p { - color: silver; - margin: 0; -} - -/* Popup footnotes */ -.footnote p { - display: none; -} -.footnote p:target { - display: block; - overflow: auto; - position: fixed; - left: auto; - bottom: 0; - right: 0; - max-width: 50%; - border: solid 0.3em white; - -moz-border-radius: 0.5em; - background: black; - padding: 0.2em; -} - -/* { */ -.admonition * { - background: transparent; - color: white; -} -.admonition dl -{ - display: table; - margin: 0; - padding: 0; - background: #333; - border: dotted black 0.3em; - width: 90% - margin-top: 0.5em; - margin-bottom: 0.5em; -} -.admonition dt -{ - display: table-cell; - vertical-align: center; - border-right: solid silver 0.4em; - font-weight: bold; - font-size: 115%; - font-family: Serif; - background: gray; - width: 0; - text-shadow: black 0.15em 0.15em 0.15em; -} -.admonition dd -{ - padding-left: 0.4em; - display: table-cell; - width: 100%; - text-align: justify; -} - -.admonition table -{ - margin: 0; - padding: 0; - background: #333; - border: dotted black 0.3em; - width: 90% - margin-top: 0.5em; - margin-bottom: 0.5em; -} -.admonition td { - width: 100%; - text-align: justify; -} -.admonition td:first-child:contains("Warning:") { - background: #900; -} -.admonition td:first-child:contains("Caution:") { - background: #960; -} -.admonition td:first-child:contains("Note:") { - background: #690; -} -.admonition td:first-child { - border-right: solid silver 0.4em; - font-weight: bold; - font-size: 115%; - font-family: Serif; - background: gray; - width: 0; - text-shadow: black 0.15em 0.15em 0.15em; -} - - -/* #(b) */ -/* b { color: olive; } */ -/* #(c) */ -tt { - color: #7f0; -} -/* ! keywords ... */ -p em { - color: gray; - font-style: normal; - font-weight: bold; -} - -/* *, + */ -/* Bullet, numbe */ -li { - color: #f0f; -} -/* Text */ -li span, li p { - color: white; -} -li p { - color: red; - display: block; -} -ul { - list-style-type: square; -} -dl { - margin-left: 2%; - margin-top: 1em; -} -/* = */ -dt { - background: #181818; - padding: 0.2em; - font-variant: small-caps; - font-weight: bold; - color: #f0f; -} -dd { - color: white; - text-align: justify; - margin-right: 5%; -} -dt a:link, dt a:visited { - color: #f0f; -} -dt a:link:hover { - color: silver; - text-decoration: underline; -} diff --git a/session-manager/doc/nsm.png b/session-manager/doc/nsm.png deleted file mode 100644 index 921b595..0000000 Binary files a/session-manager/doc/nsm.png and /dev/null differ diff --git a/session-manager/icons/hicolor/128x128/apps/non-session-manager.png b/session-manager/icons/hicolor/128x128/apps/non-session-manager.png deleted file mode 100644 index 5a026df..0000000 Binary files a/session-manager/icons/hicolor/128x128/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/16x16/apps/non-session-manager.png b/session-manager/icons/hicolor/16x16/apps/non-session-manager.png deleted file mode 100644 index 9621293..0000000 Binary files a/session-manager/icons/hicolor/16x16/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/192x192/apps/non-session-manager.png b/session-manager/icons/hicolor/192x192/apps/non-session-manager.png deleted file mode 100644 index 440825d..0000000 Binary files a/session-manager/icons/hicolor/192x192/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/256x256/apps/non-session-manager.png b/session-manager/icons/hicolor/256x256/apps/non-session-manager.png deleted file mode 100644 index a851d91..0000000 Binary files a/session-manager/icons/hicolor/256x256/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/32x32/apps/non-session-manager.png b/session-manager/icons/hicolor/32x32/apps/non-session-manager.png deleted file mode 100644 index 5550873..0000000 Binary files a/session-manager/icons/hicolor/32x32/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/36x36/apps/non-session-manager.png b/session-manager/icons/hicolor/36x36/apps/non-session-manager.png deleted file mode 100644 index 9d1b450..0000000 Binary files a/session-manager/icons/hicolor/36x36/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/48x48/apps/non-session-manager.png b/session-manager/icons/hicolor/48x48/apps/non-session-manager.png deleted file mode 100644 index c249a03..0000000 Binary files a/session-manager/icons/hicolor/48x48/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/512x512/apps/non-session-manager.png b/session-manager/icons/hicolor/512x512/apps/non-session-manager.png deleted file mode 100644 index c2e3cc7..0000000 Binary files a/session-manager/icons/hicolor/512x512/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/64x64/apps/non-session-manager.png b/session-manager/icons/hicolor/64x64/apps/non-session-manager.png deleted file mode 100644 index 366088a..0000000 Binary files a/session-manager/icons/hicolor/64x64/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/72x72/apps/non-session-manager.png b/session-manager/icons/hicolor/72x72/apps/non-session-manager.png deleted file mode 100644 index 8f02ceb..0000000 Binary files a/session-manager/icons/hicolor/72x72/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/96x96/apps/non-session-manager.png b/session-manager/icons/hicolor/96x96/apps/non-session-manager.png deleted file mode 100644 index 46f4692..0000000 Binary files a/session-manager/icons/hicolor/96x96/apps/non-session-manager.png and /dev/null differ diff --git a/session-manager/icons/hicolor/scalable/apps/non-session-manager.svg b/session-manager/icons/hicolor/scalable/apps/non-session-manager.svg deleted file mode 100644 index 39104f6..0000000 --- a/session-manager/icons/hicolor/scalable/apps/non-session-manager.svg +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/session-manager/icons/icon-16x16.xpm b/session-manager/icons/icon-16x16.xpm deleted file mode 100644 index dc18af9..0000000 --- a/session-manager/icons/icon-16x16.xpm +++ /dev/null @@ -1,774 +0,0 @@ -/* XPM */ -static char *icon_16x16[] = { -/* columns rows colors chars-per-pixel */ -"512 512 256 2 ", -" c #0003019B0002", -". c #0B09037F037C", -"X c #07BB087C069A", -"o c #0B920C470A64", -"O c #13EB03D003F2", -"+ c #1C1C047D0484", -"@ c #121207070808", -"# c #134F0AC70A37", -"$ c #1D060AC90B4D", -"% c #0E5710590E57", -"& c #171710430EDC", -"* c #12CE14B412C0", -"= c #170219041702", -"- c #1A59193E178A", -"; c #215F044E045E", -": c #289F091F0960", -"> c #32DC09AF09FA", -", c #396408400873", -"< c #2FB00F0F1010", -"1 c #26321685161C", -"2 c #2CD713F61495", -"3 c #378E16ED17A3", -"4 c #1EC520C71EC5", -"5 c #28A920201EDF", -"6 c #3F3F1F1F2020", -"7 c #22AF239D21E2", -"8 c #28962727256E", -"9 c #2B8A2D8C2B8A", -"0 c #3549297828BC", -"q c #2E3230342E32", -"w c #35DD364734CB", -"e c #373239343732", -"r c #47940A720AC2", -"t c #58220801081C", -"y c #5DCC0AD90B15", -"u c #521F0F0F1010", -"i c #47D2191419FF", -"p c #5DA2132F13B3", -"a c #57C81A9D1B6E", -"s c #64F10C060C49", -"d c #6BCE09110922", -"f c #79D30B380B58", -"g c #6D6D0F0F1010", -"h c #663E176817FB", -"j c #743B164116DE", -"k c #7D2713B61425", -"l c #7D0E1ACE1B79", -"z c #551A1F1F2020", -"x c #6CED1F1F2020", -"c c #461823792452", -"v c #54C8231B2435", -"b c #58EB262E2766", -"n c #5C3F2A562BDB", -"m c #4545356C366D", -"M c #545437B83858", -"N c #62AD229623C1", -"B c #6B1F29212A76", -"V c #784828F92A25", -"C c #7CA12EE63055", -"Z c #6A32359A3742", -"A c #799235AB3750", -"S c #3F3F40403F3F", -"D c #7EBE3E7E4080", -"F c #4572454544A6", -"G c #4C324D264C2D", -"H c #53A946F14815", -"J c #543255195422", -"K c #5ACA5B7B5A92", -"L c #6CA84F6550FA", -"P c #5F5F60605F5F", -"I c #61AA62AB61AA", -"U c #676768686767", -"Y c #6B786C796B78", -"T c #75EC67046941", -"R c #76B877B976B8", -"E c #87190C550C55", -"W c #94260C310C31", -"Q c #9D5F0CB00CB0", -"! c #885C174C17E3", -"~ c #9D51132813BA", -"^ c #972D19721A08", -"/ c #A8BF0A650A65", -"( c #B2820D6D0D6D", -") c #B8DE0B1C0B1C", -"_ c #A7DF18931924", -"` c #B502151515B1", -"' c #B2701B5D1BF3", -"] c #A0E01F1F2040", -"[ c #86F229B62AE9", -"{ c #9581241A2543", -"} c #979726262828", -"| c #8AED2ECC307F", -" . c #89B7353136D7", -".. c #86353AF53CEC", -"X. c #9966342335BE", -"o. c #A78627DD2961", -"O. c #B78F260826FF", -"+. c #B9632ED93086", -"@. c #A72F38A73A6D", -"#. c #B89038603A47", -"$. c #C6240D1B0D1B", -"%. c #D7770CED0CED", -"&. c #C5AB132D1360", -"*. c #C82418CA196F", -"=. c #D820199619E7", -"-. c #EA3F0E230E23", -";. c #FBFB02B402B4", -":. c #F41E0EE40EE4", -">. c #FBFB0B550B55", -",. c #ED56176217AE", -"<. c #FBFA138C138C", -"1. c #F54D1823187D", -"2. c #FBFA1B211BAE", -"3. c #CF4F1F1F2020", -"4. c #EEEE1F1F2020", -"5. c #F4F41F1F2020", -"6. c #FBFB1F1F2020", -"7. c #C6602753284A", -"8. c #D807270127E5", -"9. c #C8E33A6A3BB1", -"0. c #D672343435E0", -"q. c #EB9524FE25FF", -"w. c #ED752B9A2C8A", -"e. c #F455266F2770", -"r. c #FBFA22FE23FF", -"t. c #FBFB27272828", -"y. c #FBFA2B392C3A", -"u. c #EB842F2F3030", -"i. c #F4F42F2F3030", -"p. c #FBF82F2F3030", -"a. c #EDA7329733EE", -"s. c #EAF637D639C6", -"d. c #F45735D23729", -"f. c #FBFB331C341D", -"g. c #FBF936E038E2", -"h. c #FBF93B063D08", -"j. c #899A3EA540EB", -"k. c #95953EE94096", -"l. c #B54E3ED84141", -"z. c #CD0C3F3F40C1", -"x. c #F5B53E7E4080", -"c. c #FBFA3EC040C2", -"v. c #8909436E4585", -"b. c #986F4A0D4CA4", -"n. c #8F7956AF58B1", -"m. c #A7C547CF4A2C", -"M. c #B93845704787", -"N. c #AAD5507B535E", -"B. c #B5D356DE59C3", -"V. c #BEBE5EDF61E2", -"C. c #8F3E6E2A70D5", -"Z. c #AFD46EC4714C", -"A. c #C7D3460C4831", -"S. c #D87845754747", -"D. c #CA66538C5639", -"F. c #D7F856A85943", -"G. c #E69349B74BDE", -"H. c #FBFB42C444C6", -"J. c #FBFB46F148F3", -"K. c #F4334B764D62", -"L. c #FBFA4AD34CD5", -"P. c #E5E54E4E50FB", -"I. c #F3524ECF50F1", -"U. c #FBFA4ECC50CE", -"Y. c #E55C569B596A", -"T. c #F4BB52FD55E4", -"R. c #FBFA524A54CA", -"E. c #FBFA5659595C", -"W. c #FBFA5A7C5D7F", -"Q. c #D4B25E08612E", -"!. c #E5E55EAB6161", -"~. c #F3605E156118", -"^. c #FBFA5E6A616D", -"/. c #D89F67036A5C", -"(. c #CA946F1072C3", -"). c #E5CD65E66957", -"_. c #FBFA62316534", -"`. c #F35965436868", -"'. c #FBF866666969", -"]. c #FBFA6A4B6D4E", -"[. c #E5FF6E2171F2", -"{. c #F5346DEE71F2", -"}. c #FBFB6E3571DE", -"|. c #E7E7722275C5", -" X c #FBFA720A760E", -".X c #F48675D77985", -"XX c #FBFA75D979DD", -"oX c #FC2E79E87DEC", -"OX c #7F7F80807F7F", -"+X c #A1217E5E8161", -"@X c #D3D37B7B8080", -"#X c #E4637DFE8282", -"$X c #FCFB7E3C8240", -"%X c #878188828781", -"&X c #94268BB08D8D", -"*X c #98BE99BF98BE", -"=X c #AE748E0291CB", -"-X c #9F9FA0A09F9F", -";X c #B4099C9CA0A0", -":X c #A803A8C8A803", -">X c #B9B9A868AD6D", -",X c #B2F2B2F2B2F2", -"Xq X X X X X X X X X X X X X X X X X X X X X X X w >XUXUXUXUXUXUXIX", -"UXUXUXUXUXUXUXUXUX>Xq X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 9 >XUXUXUXUXUXUXUXUXUX", -"UXUXUXUXUXUXUXUXUXUXUX;X8 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 9 ;XIXUXUXUXUXUXUXUXUXUXUX", -"UXUXIXUXIXUXIXUXUXUXIXUXUX-X7 X X X X X X X X X X X X X X X X X X X 7 -XUXUXUXIXUXUXUXUXUXIXUXUXIX", -"IXUXIXUXUXIXUXIXUXIXUXIXIXUXKX&X4 X X X X X X X X X X X X X X X X X X X - &XPXUXIXUXIXUXIXIXUXIXUXIXUXIXUX", -"UXIXUXIXIXUXIXUXIXUXIXUXUXUXUXUXPX&X- . X X X X X X X X X X X X X X X X X X X X X X X - &XPXUXUXIXUXIXUXIXUXUXIXUXIXUXIXUXIX", -"IXIXIXUXUXIXIXUXUXIXIXUXIXIXUXIXUXIXJXOX% X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X * OXKXIXIXIXIXUXIXUXIXUXIXIXIXIXUXIXIXIXIX", -"UXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXHXC.% X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X # OXHXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXUXIXUXIXIX", -"IXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXHXT % X X X X X X X X X X X X X X X X X X X X X X X X % T ZXUXUXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIX", -"KXIXIXIXIXIXIXIXIXKXIXIXIXIXKXIXKXIXIXIXIXIXIXIXZXR . . X X X X X X X X X X X X X X X X X X X X X X X X X X T ZXUXPXIXIXIXIXIXIXIXIXIXIXIXIXKXIXPXIXIXIXIXIXIXIX", -"IXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXIXKXIXIXIXPXIXmXP X X X X X X X X X X X X X X X X X X X P ZXIXIXIXIXKXIXIXIXIXIXIXIXIXKXIXIXIXIXIXIXIXIXIXIXKXIX", -"KXIXIXKXKXIXIXKXIXIXKXIXIXKXIXIXKXIXIXKXIXIXKXIXPXIXIXIXzXK X X X X X X X X X X X X X X X X X X X X X X X X X X X X X I mXIXKXIXIXIXKXIXIXKXIXIXIXIXKXIXIXIXKXIXIXIXKXIXKXIXKXIXIX", -"IXKXIXKXIXKXIXIXKXIXKXIXIXKXIXKXIXIXKXIXKXIXKXIXIXIXIXIXIXIXzXG X X X X X X X X X X X X X X X X X X X X X X X X X X X X J zXIXIXKXIXIXKXKXIXKXIXKXIXIXKXKXIXKXIXIXKXIXKXIXIXIXIXKXIXKXIX", -"IXKXIXKXKXIXKXIXKXKXIXKXKXIXKXIXKXIXIXKXIXKXIXKXKXKXKXKXKXKXKXIXuXF X X X X X X X X X X X X X X F uXPXKXKXIXIXKXKXIXIXKXIXKXIXKXKXIXIXKXIXKXIXKXKXIXKXKXKXKXIXKXIXKX", -"KXKXIXIXIXIXKXKXIXKXIXIXIXIXKXKXIXIXKXIXKXIXIXKXIXKXKXIXKXIXIXKXKXPXuXS X X X X X X X X X X X X X X X X X X X X X X X X X X X X X S uXIXKXKXIXKXKXKXKXIXIXKXKXIXIXKXKXIXKXIXKXKXIXIXKXKXIXIXKXKXIXIXKXKXIX", -"IXKXKXKXKXKXKXIXKXIXKXKXKXKXKXIXKXKXKXKXIXKXKXIXKXKXKXIXKXKXIXKXKXPXKXPX>Xw X X X X X X X X X X X X X X X X X X X X X X X X X X w ,XIXKXKXIXKXKXKXIXKXIXKXKXKXIXKXKXIXKXKXIXKXIXKXKXKXIXKXKXIXKXIXKXKXIXKXKX", -"KXIXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXIXKXKXKXKXIXKXKXKXKXKXKXKXKXKXKXKXIXKXKX>Xq X X X X X X X X X X X X X X X X X X q >XKXKXKXKXKXKXKXIXKXKXKXKXKXKXKXIXKXKXKXKXKXKXKXKXIXKXKXKXKXKXKXIXKXIXKXKXKXIX", -"KXKXKXKXKXKXKXKXKXIXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXIXKXKXKXKXKXKXKXKXKXKX=X8 X X X X X X X X X X X X X X X X X X X X X X 8 -XKXKXGXKXIXKXKXKXKXKXKXIXKXKXKXKXKXKXKXIXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKX", -"KXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXIXKXKXKXKXKXKXKXKXKXKX-X5 . X X X X X X X X X X X X X X X X X X X X X X X X X 7 =XGXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKX", -"KXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXFX&X- X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X = &XGXKXKXKXKXKXKXKXGXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXGXKXKXKXKXKXKXKXKX", -"KXKXKXKXKXKXGXKXKXKXKXKXKXKXKXKXKXKXKXGXKXKXKXGXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXKXFX&X- X X X X X X X X X X X X X X X X X X X X X & &XGXKXKXKXGXKXKXKXKXKXKXKXKXKXKXKXFXKXKXGXKXKXKXKXGXKXKXKXKXKXKXKXKXKXGXKXKXKXKXKXKXGXKXKXKXFX", -"KXKXGXGXKXGXKXGXKXKXKXGXGXKXGXGXKXKXKXGXKXGXKXGXGXKXGXKXKXGXGXGXGXKXGXGXGXGXKXGXGXGXGXKXKXGXKXZXOX* X X X X X X X X X X X X X X X X X X X X X X X X * C.AXKXKXGXKXKXGXKXGXKXGXGXGXGXKXGXKXKXKXKXKXGXGXKXKXKXKXGXKXGXGXGXKXKXKXGXGXKXKXGXGXKXGXKXKXKXKXKX", -"GXKXKXGXKXKXKXKXKXGXGXKXKXGXGXKXGXGXKXKXGXKXKXKXGXKXKXGXGXKXKXGXKXGXGXKXKXGXKXKXKXKXGXGXGXKXGXGXKXZXC.* X X X X X X X X X X X X X X X X X X X X % C.AXKXKXKXGXKXGXKXKXGXKXGXKXKXKXKXGXKXGXKXFXKXGXKXGXKXGXKXGXKXGXKXGXKXGXGXKXKXKXKXGXKXGXKXKXKXKXKXKXFX", -"GXGXKXGXGXGXGXGXGXKXGXGXGXKXGXGXGXKXGXGXGXGXGXGXGXGXGXKXGXGXKXGXGXKXGXGXKXGXGXGXGXGXGXKXKXGXGXKXKXKXKXZXT % X X X X X X X X X X X X X X X X X X X X X X X X X X X o T ZXPXGXGXKXGXGXGXGXGXKXGXGXGXGXGXGXGXKXGXGXKXFXKXKXGXGXGXKXGXKXFXKXGXGXGXGXKXGXGXGXGXGXKXGXGXFXKXFXKXFXKX", -"GXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXZXT X X X X X X X X X X X X X X X X X X X X . X T ZXFXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXKXFXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGX", -"GXGXGXGXGXGXGXGXGXGXGXGXFXGXGXGXFXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXGXFXGXGXGXGXGXGXGXGXGXFXGXGXGXGXGXGXGXFXzXL . X X X X X X X X X X X X X X X X X X X P zXGXGXFXGXGXGXGXGXGXFXGXGXGXGXGXGXGXFXGXGXGXGXFXGXFXGXGXGXGXFXGXGXGXGXGXGXGXGXGXGXGXGXGXGXFXGXGXGXGXGXGXGXFXGXGX", -"GXFXGXFXFXGXFXGXGXFXFXGXGXFXGXFXGXFXFXGXFXGXGXFXGXFXGXFXFXGXFXGXGXFXGXFXGXFXGXFXFXFXGXFXFXGXGXGXGXFXFXFXFXGXFXGXGXzXK . X X X X X X X X X X X X X X X X X X X X P zXGXFXGXFXGXGXFXGXFXGXFXGXFXGXFXGXFXGXFXGXFXFXGXFXFXFXGXGXFXGXFXGXFXGXFXGXFXFXGXFXGXFXGXGXFXGXFXFXGXFXGXFXGXGXFXFXGX", -"FXGXFXGXGXFXGXFXGXFXGXFXFXGXFXGXFXGXGXFXGXFXFXGXFXGXFXGXGXFXGXFXFXGXFXFXFXGXFXGXGXGXFXGXGXFXFXFXFXGXFXFXGXFXGXFXFXFXFXzXJ X X X X X X X X X X X X X X X X X X X X X X X X X X X X J uXFXFXGXGXFXGXFXFXGXFXGXFXGXFXGXFXGXFXFXFXGXFXGXGXFXGXFXGXFXFXGXFXGXFXGXFXGXFXGXGXFXGXFXGXFXFXGXFXGXGXGXGXFXGXFXFXGXGXFX", -"FXGXFXFXFXFXFXGXFXFXFXGXFXFXFXFXFXGXFXFXFXFXGXFXFXGXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFX>XF X X X X X X X X X X X X X X X X X X X X X X X X X X X G uXGXFXGXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXFXGXFXFXFXFXGXFXFXGXFXFXFXFXFXGXFXFXFXFXFXFXFXFXFXFXGXFX", -"FXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXeXS X X X X X X X X X X X X X X X X X X X X X X X X m uXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX", -"FXFXDXFXDXFXFXFXFXFXFXDXFXFXFXFXFXDXFXFXFXDXFXFXFXFXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXFXFXFXDXFXFXFXFXFXFXFXFXFXDXFXFXFXFX;Xw X X X X X X X X X X X X X X X X X X X X X q ;XFXFXDXFXDXFXFXFXFXFXDXFXDXFXDXFXFXFXFXFXDXFXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFX", -"DXFXFXFXFXFXFXDXDXFXFXFXFXFXDXFXFXFXFXFXFXFXDXFXDXFXFXFXFXFXFXDXDXFXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXDXFXFXDXFXDXFXGX;Xq X X X X X X X X X X X X X X X w ;XDXFXFXFXFXFXFXFXDXFXDXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXDXFXFXFXFXDXFXDXFXFXFXFXDXFXDXFXFXFXFXFXFXDXFXDXFXDXFXFXFXDXFXDXFXFX", -"FXFXDXFXFXFXDXFXFXDXFXDXFXFXDXFXFXDXFXFXDXFXDXFXDXDXFXDXFXDXFXFXDXDXFXDXFXDXFXFXDXFXDXFXDXDXFXFXFXDXFXFXDXFXFXFXDXFXFXDXFXDXFXFXFXFXDXFXFX=X5 X X X X X X X X X X X X X X X X 5 =XDXFXDXFXDXFXFXDXFXFXFXDXFXFXFXDXFXFXFXDXFXDXFXFXDXDXFXFXDXDXFXFXDXDXFXFXDXDXFXFXFXDXFXFXDXFXDXFXFXDXFXDXFXDXDXFXFXFXDXFXFXDXFXDXFXFXFXDXFX", -"DXDXDXDXDXDXDXDXDXDXDXFXDXDXDXDXDXDXDXDXDXDXFXDXDXFXFXDXDXDXDXDXDXFXFXDXDXDXDXDXDXDXFXDXFXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDX=X5 X X X X X X X X X X X X X X 8 =XSXDXFXDXDXDXFXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXFXDXDXDXDXDXDXDXFXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXFXDXFXDXDXDXDXDXDXDXDXDXDXFXDXDXDXDX", -"DXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXAX&X& X X X X X X X X X X X X X X X X X X X X X X X = +XAXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDX", -"DXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXAXC.- X X X X X X X X X X X X X X X X X X X X X X X X = +XAXFXFXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDX", -"DXDXDXDXDXSXSXDXDXDXDXDXDXDXDXSXDXDXSXDXDXDXSXDXDXDXDXDXSXDXDXDXDXDXDXDXSXDXDXDXSXDXDXDXDXDXDXSXSXDXDXDXDXDXDXDXDXDXDXSXDXDXDXDXDXDXDXDXDXSXDXDXDXDXSXDXAXC.o X X X X X X X X X X X X X X X X X X X X X X o C.VXAXDXDXDXDXDXDXDXDXDXDXDXDXDXSXDXDXSXDXDXDXDXSXDXDXSXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXDXSXDXDXDXSXDXDXDXDXDXSXDXDXDXSXDXDXDXDXDXDXSX", -"DXSXSXDXSXDXDXDXSXDXSXSXSXDXSXDXDXSXDXSXSXSXDXDXDXSXDXSXDXSXSXDXDXSXDXSXDXSXSXDXDXDXSXDXSXDXSXDXDXDXSXDXSXDXSXSXSXDXDXDXDXSXSXDXDXSXDXSXSXDXSXDXSXSXDXDXDXDXZXC.# X X X X X X X X X X X X X X X X X X X X X X X % C.ZXAXDXFXDXDXAXSXDXSXDXSXDXSXDXSXDXDXSXDXDXSXDXSXDXDXSXDXDXSXDXDXSXDXSXSXDXSXDXDXSXDXSXSXDXSXDXSXSXSXDXDXSXDXSXDXSXDXSXSXSXDXDXDXSXDXSXSXDXSXDXDXDXSXDXSXDXSXDX", -"SXDXSXDXSXSXSXSXSXSXSXDXSXSXSXDXSXDXSXDXSXDXDXSXSXSXDXDXSXSXSXSXSXSXDXDXSXSXSXSXSXSXSXSXSXDXSXDXSXSXSXDXSXSXSXDXSXSXSXSXSXDXSXDXSXDXSXDXSXSXSXSXSXDXDXSXDXSXAXAXxXT X X X X X X X X X X X X X X X X X X o T xXAXDXDXSXSXSXAXSXSXSXDXSXSXSXSXSXDXSXSXSXSXSXSXDXDXSXSXSXSXSXSXDXSXSXSXSXSXSXDXSXDXSXSXSXSXSXDXSXDXSXDXSXDXSXSXSXSXDXSXSXSXDXDXSXSXDXSXDXSXSXSXSXSXSXSXSXSXDXSXDX", -"SXSXSXSXDXSXDXSXSXDXSXDXSXDXSXSXSXDXSXSXSXSXSXSXSXSXSXSXSXDXDXSXSXSXSXSXSXDXDXSXDXSXSXDXSXSXSXSXDXSXSXSXSXDXSXSXDXSXDXSXSXSXSXSXSXSXSXSXSXDXDXSXSXSXSXSXSXSXDXSXSXAXxXT X X X X X X X X X X X X X X X X X o T xXSXSXAXDXSXSXDXSXDXSXDXSXSXSXDXSXSXSXSXSXSXDXSXDXSXSXSXSXSXDXSXDXSXSXDXSXDXSXDXSXSXSXSXSXDXSXDXSXSXSXSXSXSXSXSXSXDXSXSXDXSXDXSXSXSXSXSXSXSXSXSXDXDXSXDXSXSXDXSXSXSXSX", -"SXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXxXL . X X X X X X X X X X X X X X X X X K dXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSX", -"SXSXSXSXSXCXSXSXSXSXSXSXSXSXCXSXSXSXSXCXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXCXSXSXSXSXSXSXSXSXCXSXSXSXSXSXSXSXSXSXSXCXSXSXCXSXSXSXSXSXSXSXSXSXSXSXSXSXCXSXSXSXSXSXSXSXSXSXAXAXzXL X X X X X X X X X X X X X X X X X X X X X X X X K dXSXSXSXSXSXSXSXSXSXSXSXSXSXCXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXSXCXSXCXSXSXSXSXSXSXSXCXSXSXSXSXSXCXSXSXSXSXSXSXSXSXSXSXSXSXSXCXSXCXSXSXSXSXSXSXSXSXCXSXSXSXSXSXSXSXSXCXSX", -"CXSXSXCXSXCXCXSXCXSXCXCXSXCXSXCXCXSXCXSXCXCXSXCXCXCXCXSXCXSXSXCXCXSXSXCXSXCXSXSXCXSXCXSXSXCXSXCXSXCXSXCXCXSXCXSXSXCXSXSXSXCXCXSXCXCXCXSXCXSXSXCXSXCXSXSXSXSXCXSXSXCXSXCXCXCXCXCXuXH X X X X X X X X X X X X X X H uXCXCXCXSXCXSXSXCXCXSXCXSXCXSXCXSXSXSXCXSXSXCXCXSXSXCXSXCXCXSXCXSXSXCXCXSXSXCXSXSXCXSXCXSXSXCXSXCXCXSXCXSXSXCXSXCXSXCXSXCXSXCXSXCXSXCXSXCXSXSXSXCXCXSXSXCXSXCXCXSXCXSXCXSXSXCXSXCX", -"CXSXCXSXCXSXSXSXSXCXSXSXSXSXCXSXSXCXSXSXSXSXCXSXCXSXSXCXSXCXSXCXSXCXCXSXCXSXCXSXSXCXSXCXCXSXCXSXCXSXCXSXSXCXSXCXCXSXCXSXCXSXSXSXSXSXSXCXSXCXCXSXCXSXSXCXCXCXSXCXCXSXCXSXAXCXSXSXCXCXuXH X X X X X X X X X X X X X X X X X X X X X X X H uXCXCXSXCXSXCXSXCXCXSXSXCXSXCXSXCXSXSXCXCXSXCXSXCXSXSXCXSXCXSXSXCXSXCXSXCXSXCXCXSXCXSXSXCXSXCXCXSXCXSXSXCXSXSXCXSXCXSXCXSXCXSXCXSXCXSXSXSXCXSXCXSXCXSXSXCXCXSXCXSXSXSXSXCXSXCXCXSXCXSX", -"CXCXSXCXCXSXCXCXCXCXCXCXCXCXCXSXCXSXCXCXCXCXCXCXCXSXCXCXCXCXCXSXCXCXSXCXCXSXCXCXCXCXCXCXCXSXCXCXCXCXSXCXCXSXCXCXCXSXCXCXCXCXCXCXCXCXCXCXCXCXCXSXCXSXCXCXCXCXSXCXCXCXCXCXCXCXCXCXCXSXCXCXeXe X X X X X X X X X X X X X X X X X X X X X m eXSXCXCXCXCXCXCXSXCXCXCXSXCXCXCXCXCXSXCXCXCXCXCXCXCXSXCXCXSXCXCXCXCXCXCXSXCXCXCXSXSXCXCXCXCXCXSXCXSXCXCXCXCXSXCXCXCXCXCXCXCXSXCXCXSXCXCXCXCXCXCXCXCXCXCXCXCXCXSXCXCXSXCXCXCXCXCXCXCXSXCXCX", -"CXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCX;X0 X X X X X X X X X X X X X X X X X X X X X X X X w eXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCX", -"CXCXCXCXCXVXVXCXCXCXCXCXVXCXCXVXCXVXVXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXVXVXCXCXCXCXCXVXCXCXCXCXCXCXCXCXCXCXVXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXVXVXCXCXCXCXCXVXCXCXCXCXVXVXCX=X8 X X X X X X X X X X X X X q ;XCXCXCXCXCXCXCXCXCXCXCXCXCXCXVXCXCXCXCXCXCXCXVXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXVXVXCXCXCXCXVXVXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXVXVXCXCXCXCXCXCXCXCXCX", -"VXVXCXVXCXVXCXCXVXCXCXVXCXCXVXCXCXVXCXCXVXCXCXVXVXCXVXCXVXCXVXVXVXVXCXVXCXVXCXCXVXCXCXVXCXCXVXCXVXCXVXVXCXVXCXVXCXVXCXVXCXVXVXCXVXCXVXCXVXCXVXVXCXVXVXCXVXVXCXVXCXVXCXCXVXCXCXVXCXCXCXCXCXVXCXCXCXVX=X7 X X X X X X X X X X X X X X 5 =XVXVXVXCXVXCXVXVXVXCXVXVXCXVXCXVXCXCXCXVXVXCXVXCXCXVXCXVXCXVXVXCXVXVXVXVXVXCXVXCXVXVXCXVXVXCXVXVXVXCXCXVXCXVXCXCXVXCXCXVXCXCXVXCXCXVXVXCXVXVXCXVXVXCXVXCXVXCXCXVXVXCXVXVXCXVXCXVXCXCXVXCXCXVXVXCXVXCX", -"CXVXCXVXCXCXVXCXVXVXVXCXCXVXCXVXCXVXCXVXCXCXVXCXVXVXCXCXVXCXVXCXCXVXVXVXCXCXVXCXVXVXCXCXVXCXVXCXVXCXVXCXVXCXCXVXVXCXVXVXCXVXCXVXVXCXVXCXVXVXCXVXCXVXCXCXVXCXVXCXVXCXVXCXVXVXCXVXCXCXVXCXCXVXCXVXCXVXCXVX=X4 X X X X X X X X X X X X X X X X X X X X X 4 =XBXVXVXCXVXVXVXCXCXVXCXVXCXCXVXCXVXCXVXCXCXCXVXCXCXCXVXCXVXCXCXVXVXCXVXVXCXCXVXCXVXVXVXSXVXVXVXVXSXVXVXSXVXVXVXVXCXVXVXVXCXCXVXCXCXVXCXCXVXCXCXVXVXCXCXVXVXCXCXVXVXCXCXVXCXCXVXCXVXCXVXCXCXVXCXVXCXCXVXCX", -"CXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXCXVXVXVXVXVXVXVXVXCXCXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXCXVXVXVXVXVXVXVXVXVXVXVXVXVXBXBXC.- X X X X X X X X X X X X X X X X X X 4 C.BXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXCXVXVXVXVXVXVXVXVXVXVXCXCXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX", -"VXCXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXSXBXC.- X X X X X X X X X X X X X X X X - C.BXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVX", -"VXvXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXBXVXVXVXVXVXBXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXxXC.% X X X X X X X X X X X X X o C.BXBXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXBXVXVXVXBXVXVXVXBXVXVXVXVXVXVXVXBXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVX", -"VXVXVXVXvXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXBXVXBXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXBXVXVXVXVXBXVXVXVXVXVXVXVXVXBXVXVXBXVXBXVXVXVXVXVXVXVXVXVXBXVXVXVXBXxXC.% X X X X X X X X X X X o C.dXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXBXVXVXBXVXVXBXVXVXVXVXBXVXVXVXVXVXVXBXVXVXVXVXvXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXVXBXVXVXVXVXVXVXVX", -"VXvXVXVXVXVXVXvXVXVXBXVXvXVXvXVXBXVXBXBXVXBXBXBXBXVXBXVXVXVXvXVXBXVXBXBXBXVXVXBXBXVXBXVXVXVXvXVXBXBXVXVXVXBXBXVXVXBXVXBXVXvXVXVXBXBXBXVXBXVXVXBXVXVXVXBXBXBXVXVXBXBXBXVXBXVXBXVXVXBXVXBXVXVXBXVXBXBXBXVXBXVXVXBXVXBXVXBXBXdXT o X X X X X X X X X X X X o T xXVXBXVXBXVXBXVXBXBXVXBXVXBXBXVXBXVXVXvXVXVXVXBXVXBXVXBXBXVXBXVXVXBXBXVXBXVXVXVXVXvXVXVXBXVXBXVXVXVXVXBXBXVXVXVXBXVXBXVXBXVXVXVXvXVXVXVXVXVXBXVXBXVXBXBXBXVXVXBXBXVXBXVXBXVXVXVXVXvXvXVXVXvXVXvXBXVXVXvXBXVXVXVXBXVXBXBXVXBX", -"vXVXvXVXvXVXVXvXVXBXVXVXVXVXVXVXBXBXBXVXBXVXVXBXVXBXVXVXvXVXvXVXBXBXBXVXVXBXBXBXVXBXVXVXvXVXvXVXBXVXVXBXBXBXBXVXBXVXBXVXBXVXVXvXBXVXBXBXVXBXBXBXBXBXVXBXBXVXVXBXBXVXVXBXBXBXBXVXBXVXVXBXBXBXBXBXBXVXBXBXVXBXBXBXBXVXBXBXBXBXBXdXT X X X X X X X X X X X X X X X X . T dXVXBXBXBXBXVXBXBXBXBXVXBXVXBXBXvXVXVXvXVXvXVXvXBXBXBXVXBXBXBXVXBXVXBXBXBXBXVXBXBXVXBXVXvXVXVXvXBXVXBXBXBXBXVXBXBXBXBXBXBXVXBXBXvXVXvXVXVXvXVXvXBXVXBXBXBXVXBXBXBXBXBXVXVXBXVXBXVXvXvXVXVXVXVXVXVXvXVXVXBXVXBXVXBXBXBXBXVXBXBXBX", -"VXvXVXvXVXVXvXVXvXVXvXvXVXvXvXVXBXBXBXBXBXBXBXvXBXBXvXvXVXvXVXvXBXBXBXBXBXBXBXBXBXBXvXvXVXvXVXvXBXBXBXBXBXBXBXBXBXBXBXBXBXvXVXvXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXcXdXL X X X X X X X X X X X X X X X X X X X X X . H dXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXVXvXVXVXvXVXVXvXvXVXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXvXVXvXVXVXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXVXvXVXVXvXVXVXvXBXBXvXVXBXBXBXBXBXBXBXBXBXBXvXVXvXVXvXVXvXVXvXvXvXVXVXvXBXBXvXBXBXBXBXBXBXBXBXBX", -"BXvXVXBXvXVXVXVXvXVXvXVXVXvXVXvXBXBXBXBXvXVXvXBXBXBXBXBXVXVXvXVXBXBXBXBXBXBXBXBXBXVXBXBXVXVXvXVXBXBXBXBXVXvXVXBXBXBXBXBXvXVXvXVXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXuXL X X X X X X X X X X X X X X X X X X X X X X X X X X X L uXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXvXVXVXVXvXVXvXVXVXVXVXvXVXvXVXvXBXBXBXBXBXBXBXBXVXvXVXvXVXvXVXvXBXvXBXBXBXBXBXBXBXBXBXBXBXBXBXBXVXvXVXVXVXvXvXVXVXvXVXvXVXvXVXvXBXBXBXBXBXBXBXBXvXVXVXVXvXVXvXVXVXVXVXvXVXvXVXvXBXBXBXBXBXBXBXBX", -"vXVXVXvXVXvXvXvXVXvXVXvXvXVXvXVXBXBXBXBXVXvXVXvXvXVXVXvXvXVXvXVXBXBXBXBXBXBXBXBXBXvXVXvXvXVXvXVXBXBXBXBXvXVXvXBXBXBXBXBXVXvXVXvXBXBXBXBXBXBXBXBXBXBXvXBXvXBXBXBXBXBXBXBXBXBXBXBXBXBXvXBXBXBXBXBXBXBXBXBXBXBXBXBXBXvXBXBXBXBXBXBXBXBXBXvXBXeXH X X X X X X X X X X X X X X X X X X X X X H eXVXvXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXBXVXvXvXvXVXvXVXvXvXvXvXVXvXVXvXVXBXBXBXBXBXBXBXBXvXVXvXVXvXVXvXVXBXVXvXVXBXBXBXBXBXBXBXBXBXBXBXBXvXVXvXvXVXvXVXvXvXVXvXVXvXVXvXVXBXBXBXBXBXBXBXBXVXvXvXvXVXvXVXvXvXvXvXVXvXVXvXVXBXBXBXBXBXBXBXBX", -"vXVXvXvXVXvXVXvXvXvXvXvXvXvXvXVXBXBXBXvXvXVXvXBXVXvXvXvXvXvXvXvXBXvXBXBXBXBXvXBXVXvXvXvXvXvXvXvXvXBXvXBXBXvXBXBXvXVXvXVXvXVXVXvXvXBXBXBXBXBXBXBXBXBXBXvXBXBXvXBXBXBXBXvXBXBXvXBXBXBXBXBXBXvXBXBXvXBXBXBXBXBXvXBXBXBXBXvXBXBXvXBXvXBXvXBXBXBXBXeXH X X X X X X H eXvXvXBXBXBXBXBXBXvXBXvXvXBXBXBXBXBXBXBXvXBXBXBXVXvXVXvXvXVXvXVXvXvXVXvXvXVXVXvXBXBXBXBXvXBXvXBXvXvXvXVXvXvXvXvXBXvXBXvXBXvXBXvXBXBXBXBXBXBXBXvXVXvXVXvXvXVXvXVXvXVXVXvXvXVXvXvXBXvXBXvXvXVXBXvXVXvXVXvXvXVXvXVXvXvXVXvXvXVXVXvXBXvXBXvXBXBXBXvX", -"vXvXBXvXvXvXvXvXvXVXvXvXVXvXvXvXvXvXvXBXvXVXvXvXvXvXVXvXvXVXvXVXvXBXvXvXvXBXvXBXvXvXVXvXvXVXvXVXBXvXBXvXBXvXvXvXvXvXvXvXvXvXvXvXBXBXvXvXvXBXlXBXvXvXvXBXvXBXvXBXvXvXBXvXvXvXBXvXvXvXvXvXBXvXvXvXBXBXvXvXvXvXBXvXvXvXvXBXvXBXvXvXvXBXvXvXvXBXvXvXvXeXm X X X X X X w eXBXBXvXBXBXvXvXvXvXvXBXvXBXvXvXvXvXBXcXvXvXvXBXBXlXvXvXvXvXvXvXvXvXvXVXvXvXvXvXvXvXvXvXvXvXBXvXBXvXVXvXvXvXvXVXvXVXBXvXBXvXvXBXvXBXvXBXvXvXvXvXBXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXVXvXvXBXvXBXvXvXBXvXvXvXvXvXvXvXvXvXvXVXvXvXvXvXvXvXvXBXvXBXvXvXBXvX", -"vXvXvXvXVXvXvXvXVXvXvXvXvXvXvXvXvXBXvXvXvXBXvXvXvXvXvXvXvXvXvXvXBXvXvXvXvXBXvXvXvXvXvXvXvXvXvXvXvXvXvXvXBXvXvXvXvXvXvXvXvXVXvXvXvXBXBXvXBXvXBXvXvXBXvXBXvXvXvXvXvXBXBXvXBXvXvXBXvXBXvXvXvXBXvXvXvXvXBXBXlXBXBXBXvXBXvXvXvXvXvXvXBXvXvXvXBXvXvXvXvXvXBX=Xm X X X X X X X X X X X m 1XcXBXcXvXvXvXvXvXvXvXvXvXBXBXvXBXvXBXBXBXvXBXvXBXvXBXvXvXvXvXvXvXvXvXvXvXvXvXVXvXvXvXBXvXvXvXvXvXBXvXBXvXvXvXvXvXvXvXvXvXVXvXvXBXvXBXvXvXBXvXvXvXBXvXBXvXvXvXvXvXvXvXvXvXvXVXvXvXvXvXvXvXvXvXvXvXVXvXvXvXvXvXvXvXvXvXvXvXvXvXVXvXvXvXBXBXvXvXvXvXBXvXBX", -"vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXBXvXvXvXvXvXvXvXvXvXvXvXBXlXvXvXvXvXBXvXvXvXvXvXvXvXvXvXBXvXvXBXBXlXlXBXvXvXvXvXBXvXvXvXvXvXvXvXvXvXvXvXBXvXvXvXvX=X0 X X X X X X X X X X X X X X X X X X 0 =XBXBXBXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXBXlXBXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX", -"vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXlXvXvXBXvXvXvXvXvXvXvXvXlXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXlXBXlXlXlXBXlXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXlXBXlX+X8 X X X X X X X X X X X X X X . 5 =XkXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXBXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvX", -"vXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXlXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXlXvXlXvXlXvXvXlXvXvXlXvXvXvXvXvXvXlXvXvXvXlXvXlXvXvXvXvXvXvXvXvXlXvXlXBXvXlXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXlXvXlXvXvXlXvXlXvX+X5 X X X X X X X X X X X X X X X X X X X X 1 +XlXvXlXvXlXvXlXvXlXvXvXvXvXvXvXvXvXvXvXvXvXlXvXlXvXvXlXlXvXlXlXvXlXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXlXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXlXvXlXvXvXvXvXvXlXvXlXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXvXlXvXvXvXvXvXlXvXvXvXvXvX", -"vXlXlXvXvXlXlXvXlXlXlXvXlXlXvXlXlXvXlXlXvXlXlXvXvXlXlXvXlXlXlXvXvXvXvXkXvXkXkXvXkXvXvXvXvXvXvXkXvXvXvXvXvXkXkXvXkXvXvXvXvXvXvXkXvXkXkXvXvXvXvXvXkXvXvXvXvXvXvXkXvXvXvXvXvXkXkXvXvXkXvXkXkXvXvXvXlXvXvXlXlXvXvXlXvXlXlXlXvXlXlXvXlXlXvXlXlXvXvXlXlXvXlXlXvXlXlXvXvXlXlXC.- X X X X X X X X X X X X X X X X - C.lXvXlXlXvXvXlXlXvXlXlXvXlXlXvXlXlXlXvXlXlXvXlXlXvXlXlXvXlXlXlXvXvXlXvXkXvXvXvXkXvXvXkXvXvXvXkXkXvXvXvXvXkXvXvXkXkXvXvXvXvXkXkXvXvXkXvXvXvXkXvXvXvXvXvXkXvXvXkXvXvXvXkXlXvXkXlXvXkXkXvXvXkXvXvXvXlXvXvXlXvXvXkXvXvXvXlXvXkXvXvXvXlXlXvXkXlXvXkXkXvXvXvXlXvXvXkXvXvXkXvX", -"lXlXvXlXlXlXvXlXvXvXlXvXvXvXlXvXlXlXvXvXlXlXvXlXlXvXlXlXvXvXlXvXkXkXvXvXvXvXvXvXvXvXkXvXvXkXvXvXkXkXvXkXvXvXvXvXvXvXkXvXkXkXvXvXvXvXvXvXkXvXkXkXvXvXkXvXvXkXvXvXkXkXvXkXvXvXvXvXvXvXvXvXvXvXkXvXvXlXlXvXlXlXlXvXlXlXvXvXlXlXvXlXvXvXlXvXvXlXlXvXlXlXvXvXlXlXvXlXlXvXlXlXkXC.& X X X X X X X X X X X X X X = C.jXlXlXlXvXlXlXlXvXvXlXlXvXlXlXvXlXlXvXlXvXvXlXlXvXvXlXlXvXvXlXvXlXlXlXlXlXvXvXkXvXkXvXvXvXvXkXvXvXvXvXvXkXvXvXvXkXvXvXvXkXkXvXvXvXvXkXvXvXkXvXvXvXkXvXkXvXkXvXvXvXvXkXvXvXvXvXvXvXvXvXvXlXlXvXvXlXlXvXkXvXvXkXvXvXvXkXkXvXvXvXvXkXkXvXvXlXvXvXvXvXvXlXkXvXvXkXlXvXvXlXlXvX", -"lXlXvXlXlXlXvXlXlXlXlXlXlXlXlXlXlXlXvXlXlXlXvXlXlXlXlXvXlXlXlXlXvXkXvXvXkXvXvXkXvXkXvXkXkXvXkXvXvXkXvXvXkXvXkXvXkXvXvXkXvXkXvXvXkXvXvXkXvXkXvXvXvXkXvXkXkXvXkXvXvXkXvXvXkXvXvXkXkXvXkXvXvXkXvXkXkXvXlXlXlXvXvXlXlXlXvXlXlXlXvXlXlXlXlXlXkXvXlXlXlXlXvXlXlXlXvXlXlXlXlXlXlXvXjXC.% X X X X X X X X X X @ n.jXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXkXvXvXvXvXkXvXkXkXvXkXvXvXkXvXkXkXvXkXvXvXvXvXkXvXvXkXvXvXvXvXvXvXkXkXvXkXvXvXvXvXkXvXkXkXvXkXvXvXkXkXvXkXvXkXvXvXlXkXvXlXlXvXlXlXkXvXkXkXvXvXkXvXkXlXvXvXvXkXvXvXvXkXvXvXvXkXvXlXlXlXlXkXvXkXvX", -"lXlXlXkXlXlXlXlXkXlXlXlXlXkXlXlXlXlXkXlXlXlXlXlXkXlXlXlXlXkXlXlXkXvXkXkXvXkXvXkXvXkXkXvXkXkXvXkXkXvXkXvXkXkXvXkXvXkXkXvXkXvXkXvXvXkXvXkXkXvXkXvXvXkXkXvXkXkXvXkXkXvXkXkXvXkXvXkXkXkXvXkXvXkXkXvXlXkXlXlXlXkXkXvXlXlXlXkXlXlXlXlXlXkXlXlXlXkXlXlXlXlXkXlXlXlXlXlXlXlXlXlXlXlXlXlXdXC.% X X X X X X X X X X X % C.dXcXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXlXvXkXkXkXkXvXkXvXvXkXvXkXkXvXkXvXvXkXvXkXkXkXvXkXkXkXvXvXkXkXkXkXkXvXkXkXvXkXkXkXkXvXkXvXvXkXvXkXlXkXvXkXlXlXlXlXkXvXkXkXvXkXkXvXkXvXkXvXvXlXkXvXkXvXkXkXkXlXvXkXkXkXlXkXkXlXlXvXkXvXkXvXvXkXvXkX", -"kXlXlXkXkXlXkXkXlXlXkXlXlXkXlXlXkXlXlXkXkXlXkXkXlXlXkXlXlXkXlXlXkXkXvXhXkXvXkXkXkXkXkXvXvXkXkXvXkXvXkXkXkXvXkXvXkXhXvXkXkXkXvXkXkXvXkXkXvXkXkXkXkXkXkXvXkXkXvXvXkXkXkXvXkXvXkXkXvXvXkXkXvXkXkXkXkXkXlXkXkXlXlXkXkXlXkXlXkXlXkXkXlXkXlXlXlXkXlXlXkXlXlXkXkXlXlXkXlXlXkXlXlXkXlXlXhXkXdXL X X X X X X X X o L dXhXvXlXlXlXkXlXkXkXlXkXlXlXlXlXlXlXkXlXkXlXlXlXkXkXlXlXkXkXlXkXlXlXkXkXlXlXkXlXkXlXkXkXvXkXvXvXkXvXkXhXvXkXvXkXkXvXkXkXvXkXvXkXkXkXvXkXkXvXkXkXkXkXkXkXvXvXkXkXvXkXvXhXvXvXkXhXkXkXvXlXkXvXvXvXkXkXkXkXkXkXlXkXvXkXkXkXlXvXkXkXvXkXkXvXkXkXvXvXkXkXvXkXlXkXvXkXkXlXkXkXlXvXkXkXkXlXkX", -"lXkXkXlXlXlXlXlXkXlXlXkXkXlXlXkXlXkXkXlXlXlXlXlXkXlXlXkXkXlXlXkXvXkXkXvXkXvXkXvXkXvXkXkXkXkXvXhXvXhXkXvXkXvXkXkXkXvXvXkXvXkXkXkXkXkXkXvXkXkXvXkXkXvXkXkXkXvXkXkXvXkXkXkXkXvXkXvXkXkXvXkXkXkXvXkXlXlXlXlXlXlXkXlXlXkXkXlXlXlXlXlXkXlXlXkXlXkXkXlXlXkXkXlXlXlXkXlXkXlXlXkXlXkXkXlXkXlXlXlXdXL X X X X X X X X X X X X X X X X L dXvXkXvXhXlXlXlXkXlXlXlXlXlXlXkXkXlXkXkXlXkXlXlXkXkXlXlXlXlXlXlXlXkXlXlXkXlXkXlXlXlXlXlXlXkXvXkXkXkXkXkXvXkXkXkXvXkXvXkXkXkXkXkXkXkXvXkXkXvXkXkXkXvXkXvXvXkXkXkXkXkXkXkXvXvXkXkXkXvXkXkXkXkXlXkXkXkXkXvXvXkXvXkXvXkXkXvXkXvXkXkXlXkXkXkXvXkXlXlXkXkXlXkXkXlXkXkXvXkXlXkXlXvXkXkXlXkXlXkXvX", -"lXkXkXlXlXkXkXlXkXlXkXkXkXlXkXkXlXkXlXkXlXkXkXlXkXlXkXkXkXlXkXkXvXkXkXkXvXhXhXvXkXvXkXkXkXvXvXkXvXkXkXkXvXhXhXvXhXvXhXkXvXkXkXkXvXkXkXkXvXkXkXkXkXvXkXkXkXkXvXkXkXkXkXvXkXkXkXvXkXkXkXkXkXvXkXkXkXlXkXkXlXkXkXkXlXkXkXlXlXkXkXlXkXlXkXkXkXlXlXkXlXkXlXkXlXkXkXlXkXkXkXlXkXlXlXkXlXkXlXkXkXkXrXL X X X X X X X X X X X X X X L rXhXvXhXvXkXvXkXlXkXlXkXkXlXkXkXkXkXlXlXkXkXlXkXlXlXkXkXlXkXkXkXkXlXkXkXlXkXlXkXkXlXkXkXlXkXkXvXhXhXvXkXkXkXkXkXvXhXkXkXkXkXvXkXvXvXkXkXvXkXkXvXkXkXkXkXkXvXhXkXvXkXvXkXkXvXkXhXkXkXvXvXkXkXvXkXkXvXkXkXkXkXkXkXkXlXkXkXlXkXlXkXkXkXlXkXlXkXkXlXkXkXlXkXkXkXlXkXkXlXkXkXvXkXkXkXkXlXkXkXlXkXkX", -"kXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXkXhXkXkXkXkXkXhXkXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXjXkXeXL X X X X X X X X X X X X X X X X X X L eXhXvXhXkXkXhXhXvXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXkXhXkXkXkXkXkXhXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkX", -"kXkXkXkXhXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXhXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXhXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXkXhXkXkXkXkXkXkXkXhXkXkXkXhXkXkXkXhXkXkXkXhXkXkXkXkXkXhXkXkXkXkXkXkXkXhXkXkXkXhXkXkXkXhXkXkXkXhXkXkXkXhXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXlXkXeXM X X X X X X X X X M eXhXhXhXkXkXhXvXhXkXkXkXhXhXkXvXhXhXhXkXkXhXkXkXkXhXkXkXkXkXkXhXkXkXkXkXkXkXhXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXhXkXhXkXkXkXkXkXkXkXkXkXkXhXkXkXhXkXkXkXhXkXkXhXkXkXkXkXkXkXkXkXkXkXhXkXkXkXkXhXkXkXkXhXkXkXkXhXkXkXkXkXkXkXkXkXkXkXhXkXkXkXhXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXhXkXkXkXhX", -"kXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXhXhXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXhXkXkXkXkXkXkXkXkXkXkXkXhXkXhXkXkXkXkXhXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXhXhXkXkXkXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXhXlXkXkXkXkXhXkXhXkXkXkXkXhXkXkXkXkXkXkXkXkXeXM X X X X X X X X X X X X X X X H 1XlXkXkXkXhXvXkXkXkXhXhXhXkXhXvXkXhXkXkXvXkXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXhXkXhXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXhXkXhXkXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXhXkXkXkXkXkXkXkXkXkXkXkXkXkXkXhXkXkXhXkXkXkXkXkXkXkXkXkXhXkXkXhXkXkXkXkXkXkXkXhXkXhXkXkXkXkXkXkXkX", -"hXkXkXkXhXkXkXhXkXhXhXkXhXkXkXkXhXkXkXkXhXkXkXhXkXkXhXkXhXkXkXkXhXkXhXhXkXkXhXkXkXkXhXkXhXhXkXkXhXhXkXkXkXkXkXhXkXhXhXkXhXkXkXkXkXkXkXkXhXkXhXkXkXhXhXkXkXkXkXkXhXkXkXkXhXkXhXkXkXkXhXkXhXkXkXkXhXkXhXhXkXkXhXkXkXkXkXkXhXkXhXhXhXkXhXkXkXkXhXkXkXkXkXkXhXkXhXhXhXhXkXkXhXkXkXhXkXhXhXkXhXkXkXkXkXkXkXkXhXkX1Xw X X X X X X X X X X X X X X m 1XjXkXkXkXhXkXkXhXhXkXhXhXkXvXhXkXkXkXhXhXkXhXkXhXhXkXkXhXkXhXkXkXhXhXkXkXkXkXkXhXkXkXkXhXkXhXhXhXkXkXhXkXkXhXkXhXhXkXhXkXkXkXhXhXkXkXkXhXkXhXhXkXkXhXkXkXhXkXkXhXhXkXkXhXkXhXkXhXkXhXhXkXhXkXhXkXkXkXhXkXkXhXhXkXkXkXhXkXhXhXhXkXkXhXhXkXhXkXkXkXhXkXkXkXkXkXhXkXkXhXkXhXhXkXhXkXkXhXhXkXkXkXkXkXkXkXhXkXhXkX", -"hXhXhXhXhXhXkXhXhXkXhXkXhXhXhXhXhXhXhXhXhXhXkXhXhXkXhXkXhXhXhXhXkXhXhXkXhXhXhXhXhXhXkXhXhXkXhXhXhXkXhXhXhXhXkXhXhXkXhXkXhXhXhXhXhXhXhXhXhXkXhXhXhXkXhXkXhXhXhXhXhXhXhXhXhXkXhXhXhXkXhXkXhXhXhXhXhXkXhXkXhXhXhXhXhXhXhXhXhXkXhXkXkXhXhXkXhXhXhXhXhXhXhXhXhXkXhXkXhXkXhXhXkXhXkXhXhXkXhXkXhXhXhXhXhXhXhXhXhXhXhXhX1X0 X X X X X X X X 0 1XkXhXhXkXhXhXhXhXhXkXhXkXhXkXhXhXhXhXhXhXkXhXkXhXhXkXhXhXkXhXhXkXhXhXhXkXhXhXhXhXkXhXhXhXkXhXhXkXhXkXhXhXkXhXkXhXhXkXhXkXhXhXhXhXhXkXhXhXkXhXhXkXkXhXkXhXhXkXhXhXhXkXhXhXkXhXhXkXkXhXhXkXhXhXkXhXhXhXhXhXhXhXkXhXkXhXhXhXkXhXhXkXhXhXkXhXhXhXkXhXhXhXhXhXhXhXhXhXhXhXkXhXhXkXhXkXhXhXkXhXhXhXhXhXhXhXhXhXhXkXhXhX", -"hXhXhXhXhXhXkXhXhXhXhXhXhXhXhXhXhXhXhXhXhXkXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXkXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXkXhXhXhX=X0 X X X X X X X X X X X X 5 =XgXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXkXhXhXhXhXhXhXhXhXhXhXkXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXkXhXhXhXhXhXhXhXhXhXhXhXhXhX", -"hXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXkXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXkXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXgXgX+X5 X X X X X 5 =XhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXkXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXkX", -"hXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXgXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXgXgXZ.4 X X X X X X X X X X X X 4 Z.gXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXgXhXhXhXhXgXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhX", -"hXhXgXhXgXhXgXhXgXhXgXhXgXhXhXgXhXhXgXhXgXhXgXhXgXhXgXhXgXhXhXhXhXgXhXgXhXgXhXhXhXhXgXhXgXhXhXgXhXgXhXhXgXhXgXhXgXhXgXhXgXhXhXhXgXhXgXhXgXhXhXgXgXhXgXhXhXgXhXgXhXhXgXhXgXhXhXgXgXhXgXhXgXhXhXhXhXgXhXhXgXgXhXhXhXgXhXgXhXhXgXhXhXgXhXgXhXgXhXhXhXgXhXgXhXhXgXhXhXgXhXhXgXhXgXhXgXhXgXhXgXhXhXgXhXhXgXhXgXhXgXhXhXgXhXgXhXhXhXgXC.- X X X X X X X X X X X X - C.gXgXhXgXhXgXhXgXhXhXgXhXhXhXhXhXgXhXgXhXgXhXhXgXhXgXhXhXhXgXhXgXhXhXgXhXhXgXhXgXhXgXhXgXhXhXgXhXgXgXhXhXhXgXhXhXhXgXhXhXgXhXgXhXgXhXgXhXhXgXhXgXhXgXhXhXgXhXgXhXhXgXhXgXhXhXgXhXhXhXgXhXhXgXhXgXgXhXgXhXhXgXhXgXhXhXgXhXgXhXgXhXhXgXhXgXhXhXgXhXgXhXgXhXhXhXgXhXhXgXhXgXhXhXgXhXhXhXgXhXhXgXhXgXgXhXgXhXhXhXgXhXgXhXgXhXgXhXhXgX", -"gXhXgXgXhXgXhXgXhXgXhXgXhXgXhXgXgXhXgXhXgXhXgXhXgXhXgXhXhXgXhXgXgXhXgXhXhXgXhXgXhXgXhXgXhXhXgXgXgXhXgXhXgXhXgXhXgXhXgXhXhXgXhXgXhXgXhXgXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXhXgXhXgXgXhXgXhXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXgXhXgXhXgXhXgXhXhXgXhXhXgXgXhXgXhXhXgXgXhXgXhXgXhXgXhXgXhXgXhXgXgXhXgXhXhXfXC.$ X X X X X X X $ C.fXhXhXgXgXhXgXhXgXhXgXhXgXhXgXgXgXhXgXgXhXgXhXhXgXgXhXgXhXhXgXgXhXhXgXhXgXhXgXhXgXhXgXhXgXhXhXgXgXhXhXgXhXgXgXhXgXhXgXhXgXhXgXhXgXhXhXgXgXgXhXgXhXgXhXgXhXgXgXhXgXhXgXhXhXgXgXhXhXgXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXhXgXgXhXgXhXgXhXgXhXhXgXgXhXhXgXhXgXgXhXgXhXhXgXhXhXgXgXhXgXhXhXgXgX", -"gXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXhXpXn.% X X X X X X X X X % n.fXgXgXgXgXgXgXhXgXgXgXgXhXgXgXgXhXgXhXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgX", -"gXgXgXgXgXgXgXgXgXgXhXgXgXgXgXhXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXgXgXgXgXfXpXn.o X X X X X X X % n.pXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXgXgXhXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXhXgXgXgXgXhXgXgXgXgXgXgXgXhXgXgXgXgXgXhXgXgXhXgXgXgXgXgXgXhXhXgXgXgXgXgXgXgXhXgXgXgXgXhXgXgXgXgXgXhXgXgXgXgXhXgXgXgXgXhXgXgXhXgXgXgXgXgXgXgXgXgXgXgXhXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgX", -"gXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXhXtXL % X X X X X X X X X X X X X @ L rXhXgXgXgXgXgXgXfXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgXgX", -"gXgXgXgXgXsXgXgXgXgXgXgXgXgXgXgXgXsXgXgXsXgXsXgXsXgXgXsXgXgXgXgXgXsXgXsXgXgXgXgXgXgXgXgXgXgXsXgXgXgXgXgXgXsXgXgXgXgXgXsXgXgXgXgXgXgXgXgXgXsXgXsXsXgXsXgXgXgXgXgXgXgXgXgXsXgXgXsXgXgXgXsXgXgXgXgXsXgXgXsXgXgXgXgXgXgXgXgXgXgXsXgXgXgXsXgXgXgXgXgXgXgXgXgXsXgXgXsXgXgXgXsXgXgXgXgXgXgXgXgXgXgXsXgXgXsXgXgXgXgXsXgXgXgXgXgXsXgXgXsXgXgXgXsXgXgXgXgXgXrXL X X X X X X X X X X X X X X L tXgXhXgXsXgXgXgXgXgXsXgXsXgXgXgXgXsXgXgXgXgXgXgXgXgXgXgXgXgXgXgXsXgXgXgXgXgXgXgXgXgXgXgXgXsXgXgXgXgXgXgXgXgXgXsXgXsXgXgXgXgXgXsXgXsXsXgXgXsXsXgXgXsXgXsXgXgXgXgXsXgXgXgXgXgXsXgXsXgXgXgXsXgXgXgXsXgXgXgXgXsXgXgXgXgXsXgXsXgXgXgXgXsXgXgXsXgXgXgXgXsXgXgXgXgXgXsXgXgXgXgXsXgXgXgXgXsXgXgXgXgXgXsXgXsXgXgXsXgXgXsXgXgXgXsXgXsXgXgXgXgXgXgXgXgXgXgXsXgX", -"sXsXsXsXsXgXsXgXsXsXsXsXsXsXsXsXgXsXsXsXgXgXsXsXgXsXgXsXsXsXsXgXgXsXgXsXsXsXsXgXsXsXsXsXsXgXgXsXsXsXsXsXsXgXsXsXgXsXgXsXsXsXsXgXsXsXsXgXgXsXgXsXgXgXsXgXgXsXsXsXsXsXsXsXsXgXsXsXgXsXgXsXsXsXsXgXgXsXgXsXsXsXsXgXsXsXsXsXsXgXgXsXsXgXsXgXsXsXsXsXsXsXsXgXgXsXgXsXgXsXgXsXsXsXsXgXsXsXsXsXsXgXgXsXgXsXsXgXsXsXgXgXsXsXsXgXgXsXgXsXgXgXgXsXsXsXsXgXaXgXhX8XL X X X X X X X X X L rXsXgXgXfXfXgXsXsXsXsXsXgXgXsXgXgXsXsXgXsXgXsXsXsXsXsXsXsXsXsXsXsXgXgXsXsXgXsXsXsXsXsXsXgXsXsXgXsXsXsXsXsXsXsXsXgXsXsXgXsXsXsXgXgXsXgXsXsXgXsXgXgXsXgXsXgXsXsXgXsXsXgXgXsXsXsXgXgXsXgXsXsXgXgXsXsXgXsXgXsXsXsXgXsXsXsXsXgXgXsXgXsXsXsXgXsXgXsXgXsXsXsXsXsXsXsXsXsXgXsXsXsXgXsXgXsXsXsXsXsXsXsXsXgXsXsXgXsXgXgXsXgXsXsXgXgXsXgXsXsXsXsXgXsXsXsXsXsXgXgXsX", -"gXgXsXgXsXgXsXgXsXgXgXgXsXgXgXsXsXgXgXsXsXsXsXsXsXgXsXgXgXsXgXsXsXgXsXgXgXsXgXsXgXsXsXgXgXsXsXsXgXgXsXgXgXsXgXsXsXgXsXgXgXsXgXsXgXsXgXsXsXgXsXgXsXsXgXsXsXgXsXgXsXgXsXgXgXsXsXsXsXgXsXgXgXsXgXsXsXgXsXgXgXsXgXsXsXgXsXgXgXgXsXsXgXsXgXsXsXgXsXgXgXsXgXsXsXgXsXgXsXgXsXgXgXsXgXsXgXsXsXgXgXsXsXsXgXsXgXsXsXgXsXsXgXsXgXsXsXgXsXgXsXgXsXgXgXsXgXsXgXgXgXsXgX8XL X X X X X X X X X L 8XfXgXsXgXsXgXsXsXgXgXgXsXsXsXsXgXsXsXgXsXgXgXsXsXgXgXsXsXgXgXsXsXgXgXsXsXsXgXsXsXgXgXsXsXgXsXgXsXgXgXgXsXgXsXgXgXsXgXsXgXsXgXsXgXsXsXgXsXgXgXsXgXsXsXgXsXgXgXsXgXsXsXgXsXsXsXsXgXsXsXgXsXgXgXsXsXgXgXsXsXgXsXgXsXgXsXgXsXsXsXsXgXsXsXgXsXgXgXsXsXgXsXgXsXsXsXgXsXgXsXgXgXsXgXsXsXgXsXgXsXsXsXgXgXsXsXgXgXsXgXsXsXsXgXsXgXsXsXgXsXgXgXsXgXsXgXsXsXgXgXsXsXsX", -"sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXaXsXfXfXgXfX1XM X X X X X H 1XfXgXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXaXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXgXsXsX", -"gXaXaXgXsXsXsXsXsXsXsXsXsXsXsXaXsXsXsXsXsXaXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXsXsXsXsXsXsXsXaXsXsXsXsXsXaXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXgXsXsXsXsXsXaXsX1XM X X M 1XsXaXfXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXaXsXsXsXsXsXsXsXaXsXsXsXsXaXsXsXaXsXsXsXsXsXsXsXaXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX", -"aXgXaXaXaXsXaXaXsXsXsXaXaXsXaXsXsXaXaXsXaXsXsXaXaXsXaXsXaXaXsXaXaXaXsXaXsXaXaXsXaXsXaXsXsXaXsXaXsXaXaXsXaXsXaXsXaXsXaXsXaXsXaXsXsXaXsXsXaXsXaXsXsXsXsXsXsXaXaXsXsXsXsXaXaXsXaXsXsXaXsXaXaXsXaXsXsXaXsXaXaXsXaXsXaXsXaXsXsXaXsXaXaXsXsXaXsXaXsXaXaXsXaXsXaXaXsXaXaXsXaXsXsXaXsXaXaXsXaXsXaXsXsXaXsXaXaXsXaXsXsXaXaXsXaXsXsXaXsXaXsXaXsXaXaXsXaXaXaXaXsXaXaXsXaXsXaXsXaX1Xc X X X X X c 1XaXaXsXaXaXaXsXaXsXsXaXaXsXsXaXsXaXsXaXaXsXaXsXsXsXsXaXsXaXaXsXsXsXsXaXsXsXaXsXsXsXsXaXsXaXaXsXsXsXsXaXaXsXaXsXsXaXsXaXsXaXaXsXaXsXaXsXsXaXsXaXaXsXaXsXsXsXaXsXsXaXsXaXaXsXaXsXsXaXsXaXaXsXaXsXsXaXaXsXaXsXaXsXaXsXsXaXsXaXaXsXaXsXsXaXsXsXsXaXaXsXaXsXaXsXsXaXsXaXaXsXsXsXsXsXsXaXaXsXaXsXsXaXsXaXaXsXaXsXaXsXsXaXsXaXsXsXaXaXaXsXaXsXaXsXaXaXaXsXaXaXsXsXsXaXaXsXaXsX", -"aXaXgXaXsXaXaXaXsXsXsXsXaXsXsXaXsXsXsXsXsXsXsXsXaXsXaXsXsXsXsXsXsXsXsXsXaXsXaXsXsXsXsXsXaXsXsXaXsXsXaXaXsXsXsXsXsXaXsXaXaXsXsXaXaXsXsXsXsXaXsXaXsXaXsXsXaXsXsXaXsXaXaXaXsXsXsXsXaXsXsXsXsXaXaXsXaXsXsXsXsXaXaXaXsXsXsXsXaXsXsXaXsXaXsXaXsXsXsXsXaXsXsXaXsXsXsXsXsXaXsXaXaXsXsXsXsXsXsXsXsXsXaXsXsXsXaXaXsXsXsXsXsXaXsXaXaXsXsXsXaXsXsXsXsXaXsXsXaXsXaXsXsXsXsXsXaXsXsXaXfX1X0 X X X X X X X X X X X X X w =XiXaXaXsXaXsXsXsXsXaXsXsXaXsXaXsXsXsXsXaXsXaXgXsXsXsXaXaXsXsXsXsXaXsXaXaXsXsXsXsXaXsXaXaXsXsXsXsXaXsXaXaXaXsXsXsXsXaXsXsXaXsXsXaXaXsXsXsXsXaXsXsXsXsXaXaXsXaXsXaXsXsXaXaXsXaXsXsXaXaXsXaXsXsXaXsXaXaXsXaXsXsXsXsXsXaXsXaXsXsXsXsXaXsXsXsXsXaXsXaXsXaXsXsXaXaXsXaXsXsXsXsXaXsXaXaXsXsXsXsXsXsXaXaXsXsXsXsXsXsXsXsXsXaXsXsXaXsXaXaXaXsXsXsXsXsXaXsXsXsXaXaXaXsXsXsXsXsXsXsXaX", -"sXaXaXsXaXaXaXaXaXaXaXaXaXaXsXaXaXaXaXaXaXaXaXaXsXaXsXaXaXaXaXaXaXaXaXsXaXaXaXaXaXaXaXaXsXaXsXaXaXaXaXaXaXaXaXaXsXaXaXsXaXaXaXaXaXaXaXaXsXaXaXaXsXsXaXaXaXaXsXaXaXsXaXaXaXaXaXaXaXaXaXaXsXaXaXaXaXaXaXaXsXaXaXaXaXaXaXaXsXaXsXaXsXaXaXaXaXaXaXaXaXaXsXaXaXaXaXaXaXsXaXsXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXsXaXsXaXaXaXaXaXaXaXaXsXaXaXaXsXaXaXsXaXaXaXaXsXaXaXaXaXaXaXZ.0 X X X X X X X X X X X X 0 (.aXaXaXaXaXaXaXaXaXaXaXaXaXsXaXsXaXaXaXaXaXsXaXaXaXaXaXaXsXaXaXaXaXsXaXaXsXaXaXaXaXaXsXaXsXaXaXaXaXsXaXaXsXaXaXaXaXaXaXsXaXsXaXaXaXaXaXaXaXaXaXaXaXaXaXsXaXsXaXaXsXaXaXaXsXaXaXsXaXaXaXsXaXaXsXaXaXaXsXaXaXaXaXaXaXaXaXaXsXaXaXaXaXaXaXaXaXaXaXaXsXaXaXsXaXaXaXaXsXaXaXaXaXaXaXaXsXaXaXaXaXaXaXaXsXaXaXaXaXaXaXaXaXaXaXsXaXsXaXaXsXaXaXaXaXaXaXsXaXaXaXsXaXaXaXsXaXaXaXaXaXaXsX", -"aXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXZ.8 X X X X X X X X X X 5 Z.aXfXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX", -"aXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXiXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXyXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXiXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXpXZ.1 . X X X X X 1 Z.aXaXiXaXaXaXaXiXaXaXaXaXaXiXaXaXaXaXaXaXaXaXiXaXaXaXiXaXaXaXiXaXaXaXaXaXaXiXaXaXaXiXaXaXaXaXiXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXaXiXaXaXaXaXyXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXiXaXaXaXiXaXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXiXaXiXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaX", -"iXaXaXaXaXaXaXiXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXiXaXaXaXaXaXaXiXaXiXaXaXaXaXaXiXaXaXaXaXiXaXaXaXiXaXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXiXaXiXaXaXaXiXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXaXiXaXaXaXiXaXiXaXaXaXaXaXaXaXaXaXiXaXaXiXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXiXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXaXpXC.& . X X X X X X X . 1 C.tXaXaXaXaXaXaXaXaXaXaXaXiXaXiXaXaXaXiXaXiXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXyXaXaXaXaXaXaXaXaXaXaXiXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXaXaXiXaXaXaXaXaXaXaXiXaXaXaXaXaXaXaXyXaXaXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXiXaXiXaXiXaXaXaXaXiXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaXaX", -"aXaXaXaXyXaXaXaXaXaXaXiXaXaXaXaXaXiXaXiXaXiXiXaXiXaXiXaXaXaXiXaXiXaXiXaXaXaXaXaXaXiXyXaXaXaXaXaXaXaXiXaXiXaXiXaXiXaXaXiXaXiXaXaXiXaXaXiXiXaXaXaXaXaXiXaXaXaXaXaXyXaXaXaXaXyXaXyXaXaXaXaXaXaXaXyXaXaXaXaXaXiXaXiXaXiXiXaXiXaXiXaXaXiXaXiXaXaXiXaXaXaXaXaXiXaXiXaXaXiXaXiXaXaXiXaXiXaXaXaXiXaXiXaXiXaXiXaXaXiXaXiXaXiXaXiXaXaXiXiXaXiXaXaXiXaXaXaXaXiXaXiXaXiXaXiXaXaXiXiXaXaXiXaXiXaXiXaXaXiXyXC.* X X X X = C.yXiXaXaXaXaXaXiXaXaXaXiXaXaXaXaXaXiXaXaXaXaXaXaXiXaXiXaXiXaXaXiXaXaXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXaXaXiXaXiXaXiXaXiXaXaXiXaXiXaXaXaXaXyXaXaXaXiXaXiXaXiXaXaXiXaXaXaXiXaXiXaXiXaXiXaXiXaXiXaXaXaXiXaXaXaXyXiXaXiXaXaXaXiXaXiXaXiXaXaXiXaXaXaXiXaXiXaXiXaXaXaXaXaXaXaXaXaXaXaXyXaXaXaXaXaXiXaXiXaXiXaXiXiXaXiXaXaXiXiXaXiXaXiXaXaXiXiXaXiXaXiXaXaXaXaXaXiXaXaXaXiXaXaXaXaXiXaXaXaXyXiXaXiXaXiXaX", -"iXaXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXaXiXaXiXaXiXaXaXiXaXiXiXiXaXiXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXiXiXaXiXiXaXiXaXiXaXaXiXaXaXaXiXaXiXaXaXiXaXaXyXaXaXiXaXaXiXiXaXiXaXiXaXiXaXiXaXaXiXiXiXaXiXaXaXiXaXiXaXiXaXiXaXiXiXiXaXiXiXiXaXiXaXiXaXaXiXiXaXiXaXaXiXaXaXiXaXaXiXaXiXaXiXiXaXiXaXiXaXaXiXiXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXiXaXaXiXaXiXaXtXn.o X X X X X X X % n.tXaXaXiXaXiXaXaXiXaXaXiXiXaXiXaXiXaXiXaXiXiXiXaXiXiXiXaXiXaXiXaXiXiXaXiXaXaXiXaXiXiXaXaXiXiXaXaXiXiXaXiXaXiXaXaXiXiXaXaXiXiXaXiXaXaXyXaXaXaXiXaXiXaXiXaXiXaXiXaXiXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXiXaXaXiXaXiXaXiXaXaXiXaXiXaXaXaXiXaXiXaXaXiXaXiXaXiXaXiXaXiXaXiXaXiXiXaXaXiXiXaXiXaXiXaXaXiXaXaXiXaXiXaXaXiXiXaXaXiXaXiXaXaXiXiXaXiXaXiXaXiXaXiXaXiXaXiXiXaXiXaXaXiXiXaXiXaXaXiXaXiXaXaXiXaX", -"iXiXiXaXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXaXyXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXaXiXiXiXaXiXaXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXyXaXyXaXiXiXiXiXaXiXiXiXiXiXaXiXiXiXiXiXaXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXaXiXiXiXiXiXiXaXiXaXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXaXiXaXpXrXn.% X X X X X X X o n.rXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXaXiXiXiXiXyXaXaXyXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXaXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXaXyXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXaXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXaXyX", -"iXiXiXiXaXaXiXiXaXiXiXaXaXiXiXiXiXiXiXaXiXiXiXiXaXiXiXiXiXiXaXiXiXaXiXiXiXiXiXiXaXyXaXyXaXaXaXyXiXiXiXaXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXaXiXiXiXiXiXiXiXiXiXiXaXaXyXaXyXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXaXiXiXiXiXaXiXaXiXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiX0XL o X X X X X X o L 0XiXiXiXaXiXiXiXiXiXiXiXaXiXiXiXiXiXaXiXiXiXiXaXiXaXiXiXiXiXiXiXiXaXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXaXiXiXaXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXaXaXyXaXaXiXiXaXaXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXiXiXaXiXiXiXaXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXaXiXaXaXiXaXyXiXaXiXiXiXiXiXaXiXiXiXaXiXiXiXiXiXiXaXiXiXiXiXiXiXaXiXiXiXiXiXiXiXiXiXiXiXaXiXiXiXiXiXaXiXiXaXaXiXiX", -"iXiXiXiXyXyXaXyXiXiXyXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXyXaXyXaXyXaXyXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXyXaXyXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiX0XL . X X o L 0XiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXyXyXaXyXiXiXyXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXyXyXaXyXaXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXiXyXyXiXiX", -"yXaXiXyXyXyXiXyXiXyXiXiXaXyXiXyXiXyXiXiXiXyXiXiXiXiXyXiXiXiXiXyXiXiXiXyXiXiXiXiXaXyXyXaXyXyXaXyXiXiXiXiXiXiXiXyXiXiXiXiXiXiXyXiXiXiXyXiXiXiXiXyXiXiXyXiXiXiXyXiXiXyXiXiXiXyXiXiXyXyXyXaXaXyXaXyXiXiXyXiXyXiXiXiXiXiXiXyXiXiXiXyXiXiXiXyXiXiXyXiXiXiXyXiXiXiXiXiXiXyXiXiXiXiXiXiXiXiXyXiXyXiXiXiXiXiXiXiXyXiXiXiXiXiXyXiXiXiXyXiXiXiXiXyXiXiXiXiXiXiXiXiXiXyXiXiXwXiXiXiXiXiXiXiXiXiXiXiXwXiXiXiXwXiXiXiXiXiXiXiX8XZ X X X X X X X Z 8XiXyXiXiXiXiXiXiXiXyXiXiXyXiXiXiXiXiXiXiXyXiXiXyXyXiXiXiXiXiXyXiXiXiXiXiXiXiXiXiXiXiXyXiXiXiXyXiXiXyXiXiXiXyXiXiXiXiXyXiXiXiXiXyXiXiXiXyXiXyXiXiXyXaXiXiXiXyXiXiXyXiXiXiXiXiXiXiXyXiXiXaXiXiXyXaXiXiXiXyXiXiXiXyXyXiXiXiXyXiXiXiXyXiXiXiXiXyXiXiXiXyXiXiXyXiXiXyXiXiXiXyXiXiXiXyXiXiXyXiXiXiXyXiXiXiXyXiXiXyXiXiXyXiXyXiXiXyXiXiXiXiXiXiXiXiXiXiXyXiXiXiXiXiXiXiXiXyXiXiXiXyXiXiXiXiXiXiXiXiXiXiXyXiXiXyXyXaXyXyX", -"yXyXyXaXyXaXyXiXiXyXyXiXyXiXyXaXyXiXyXiXyXiXyXiXyXyXiXiXyXiXyXiXyXiXyXiXyXyXyXiXyXyXyXaXyXaXyXyXyXyXyXiXiXyXyXiXyXiXyXyXyXyXiXiXyXyXiXiXyXiXyXiXyXiXiXyXyXyXiXiXyXiXyXiXyXiXyXiXiXaXyXyXyXyXyXyXiXyXiXyXiXiXyXyXiXyXiXyXiXyXiXyXyXiXyXiXyXiXiXyXyXiXiXyXyXiXyXyXyXiXyXiXyXyXyXyXiXyXiXyXiXiXyXyXiXyXyXiXiXyXyXiXyXyXiXiXyXiXiXyXyXiXyXiXyXyXyXiXyXiXyXiXyXiXyXiXiXiXiXwXiXiXiXyXyXiXwXiXiXiXiXwXiXiXiXwXwXiXiXwXiXiX1XL X X X X X X M 8XwXiXyXiXyXiXiXyXyXyXiXyXyXiXiXiXyXyXiXyXiXyXiXyXiXyXiXiXyXyXiXiXiXyXyXiXwXiXyXiXwXiXiXiXiXyXiXyXiXyXiXiXiXyXiXyXyXiXyXiXiXyXyXiXyXiXiXyXyXiXiXyXyXiXyXyXyXiXyXiXyXiXiXiXyXyXyXyXiXyXaXyXyXyXyXiXyXyXiXyXiXyXiXyXiXyXiXyXyXiXiXyXyXiXiXiXyXyXyXiXiXyXiXyXyXiXiXiXyXyXiXyXiXyXiXyXiXyXyXiXiXyXiXyXiXyXyXiXiXyXiXiXyXiXyXiXiXyXiXyXyXiXyXyXiXyXyXiXyXyXiXiXyXyXyXyXiXyXiXiXyXiXyXiXyXiXyXyXyXiXyXyXyXiXiXiXyXaXiXyXyXaX", -"iXyXyXyXyXyXyXyXyXiXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXiXyXiXyXyXyXyXyXyXiXyXiXyXyXyXyXyXyXyXyXyXyXyXiXyXyXyXiXyXiXiXyXiXyXyXyXiXyXyXyXyXyXiXyXyXyXiXyXiXyXyXyXiXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXaXyXyXiXyXyXyXyXyXyXyXiXyXiXyXiXyXiXyXyXiXyXiXyXyXyXiXyXyXyXyXyXiXyXiXyXyXyXyXyXiXyXyXiXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXiXyXiXyXyXyXyXyXyXiXyXiXyXyXyXyXyXyXyXyXyXyXiXwXiXiXwXiXwXiXwXiXwXiXiXwXiXiXiXwXiXiXwXiXiXwXyXyXyXyX1XM X X X X X X X X M 1XiXwXiXiXiXyXyXyXyXyXiXyXyXiXyXyXyXyXyXyXyXiXyXiXyXiXyXiXwXiXyXiXyXiXwXiXwXiXwXiXyXiXiXyXyXiXwXiXyXiXyXyXyXyXyXyXyXiXyXyXyXyXyXyXyXyXyXiXyXiXyXiXyXiXyXyXyXyXyXyXyXyXyXyXyXyXyXiXyXyXyXyXiXyXyXyXyXyXyXiXyXyXiXiXyXyXiXiXyXyXyXyXyXyXyXyXyXyXyXiXyXyXyXyXyXiXyXyXyXyXyXyXyXiXyXiXyXiXyXiXyXyXyXyXiXyXyXyXyXyXyXyXyXyXyXyXiXyXyXyXyXiXyXyXyXyXyXyXyXyXyXyXyXyXyXiXyXyXyXyXyXyXyXyXyXiXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyX", -"yXyXiXyXyXyXyXaXyXyXiXyXiXyXyXyXyXiXiXyXyXiXiXyXyXiXyXyXyXyXyXiXiXyXyXyXyXyXiXyXaXyXyXyXyXyXaXyXyXyXiXyXyXyXyXyXyXyXyXyXyXiXyXyXyXiXiXyXyXyXyXiXyXyXyXyXyXiXyXyXyXiXyXiXyXiXyXiXyXyXyXaXyXyXyXyXyXyXiXyXiXyXyXyXyXyXyXyXyXyXyXyXiXyXyXyXyXyXiXyXyXyXiXyXiXyXyXyXyXyXyXiXyXiXyXyXyXyXiXyXiXyXyXyXyXiXyXiXyXiXyXiXyXiXyXyXyXyXyXiXiXyXyXyXyXyXyXyXiXyXiXyXiXyXiXyXwXiXwXiXiXwXiXyXiXyXiXiXwXiXwXiXwXiXwXiXiXwXiXiXyXiXyXyXyXwX1XM X X M 1XyXyXiXiXiXwXyXyXyXiXyXiXyXyXyXyXiXyXiXyXyXyXyXyXyXyXyXyXyXyXiXwXiXwXiXwXiXyXiXyXiXyXiXwXwXiXiXwXiXyXyXyXiXyXiXyXiXyXyXiXyXyXiXyXiXyXiXyXyXyXyXyXyXyXyXyXyXyXyXiXyXiXyXiXyXiXyXyXyXyXiXiXyXyXyXyXiXyXiXyXyXyXyXyXyXyXyXyXyXyXyXiXyXiXyXiXyXiXiXyXyXyXiXyXiXyXyXyXiXiXyXyXyXyXyXyXyXyXyXyXyXyXiXyXiXyXyXyXiXyXiXyXiXyXyXiXyXyXyXyXyXiXyXiXyXiXyXiXyXyXiXyXyXyXiXyXyXyXiXiXyXyXyXiXyXiXyXyXyXyXiXyXiXyXiXyXiXyXyXyXyXiXyXiXyXyX", -"yXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXiXiXiXwXiXwXiXwXiXiXwXiXiXwXiXiXiXiXiXwXwXiXwXiXwXwXiXwXiXwXiXiX(.m X X X X m @XyXyXyXyXyXyXyXyXyXyXyXyXyXiXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXiXwXiXiXwXiXiXyXiXwXiXiXwXiXiXwXyXiXwXiXiXwXiXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyX", -"yXyXyXyXwXyXyXyXyXyXwXyXyXyXyXyXyXyXyXyXyXyXwXyXyXyXyXyXyXyXwXyXyXyXyXyXwXyXwXyXyXyXyXyXyXwXyXyXyXyXyXyXyXyXyXyXyXyXyXwXyXyXwXyXyXyXyXyXyXyXyXyXyXwXyXyXwXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXwXyXyXyXyXyXyXyXyXyXyXyXwXyXyXyXyXyXyXyXyXwXyXyXwXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXwXyXyXyXyXyXwXyXyXyXyXyXyXyXwXyXwXyXyXyXyXyXyXyXyXyXyXwXyXyXyXyXwXyXyXwXyXyXwXwXiXwXwXiXwXiXwXwXiXwXwXiXwXwXwXwXiXwXiXwXiXwXwXiXwXiXwXiXwXwXpXpX(.c 0 (.wXyXyXyXyXyXyXyXyXyXyXyXyXyXyXwXyXwXqXyXyXyXyXyXyXyXyXqXyXyXyXyXyXyXwXyXwXwXyXwXwXwXwXyXwXwXwXiXwXwXiXwXwXiXwXyXwXwXyXyXwXyXyXyXyXyXyXyXyXyXyXyXwXyXwXyXyXyXyXyXyXyXyXyXwXyXwXyXyXyXyXyXyXyXyXyXyXyXwXyXyXyXyXyXyXyXyXwXyXyXyXyXyXyXyXyXyXyXyXwXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXwXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXwXyXqXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXqXyXyXyXyXyXyXqXyXyXyXyXyXyXyXyXyXyXyXyXwXyXyXyX", -"yXwXwXyXyXyXyXwXwXyXyXwXwXyXwXyXwXyXyXwXwXyXyXyXwXyXwXwXyXwXyXwXyXwXwXyXyXwXyXyXwXyXyXwXyXwXwXyXwXyXwXyXyXwXyXyXyXwXyXwXwXyXyXwXwXyXwXyXyXwXwXyXyXwXwXyXwXyXyXwXwXwXwXyXwXyXyXwXyXyXwXyXyXwXwXyXyXwXyXwXwXyXwXyXyXwXwXyXwXyXyXwXyXwXwXyXyXyXyXwXwXyXwXwXyXwXwXyXyXwXyXyXyXwXyXwXyXwXyXwXyXwXyXwXyXwXwXyXwXyXyXwXyXwXyXyXwXyXwXyXwXyXwXyXyXwXyXwXwXyXyXyXyXwXwXyXyXwXwXwXwXwXwXwXwXwXwXwXyXwXwXwXwXwXwXwXiXwXiXwXwXiXwXwXwXwXwXiXyXwXwXwXZ.0 X X X X X X 0 Z.yXwXwXyXwXwXwXyXwXyXyXwXwXyXwXyXyXwXwXyXyXyXyXyXyXyXyXyXyXyXyXyXqXyXyXyXwXwXyXwXwXiXwXyXwXwXyXwXwXwXwXyXwXwXyXwXyXwXwXiXwXyXyXwXwXyXwXwXwXyXwXwXyXwXyXwXwXyXyXwXwXyXwXwXwXyXyXyXyXwXwXyXyXwXyXwXwXyXwXyXyXyXyXwXwXyXwXyXyXwXwXyXwXwXwXyXwXyXyXwXyXwXwXyXwXwXyXwXwXyXwXwXyXyXyXqXqXyXqXyXqXyXqXyXyXqXyXqXwXyXwXyXyXwXyXwXyXwXyXyXwXyXwXyXwXyXwXwXyXwXyXwXyXyXyXyXyXyXyXyXqXyXyXyXyXyXyXyXqXyXyXyXyXyXyXyXwXwXwXyXwXyXyXwXyXyXwXyXyXwXwXyX", -"wXyXyXwXwXyXwXyXyXyXwXyXyXwXyXyXyXwXwXyXwXyXwXyXyXwXyXyXyXyXwXyXwXyXyXwXwXyXyXwXyXwXwXyXwXyXyXyXyXwXyXwXwXyXwXwXwXyXwXyXyXwXyXyXyXwXyXwXwXyXyXwXwXyXwXyXyXyXwXyXyXyXyXwXyXwXwXyXwXyXyXwXwXyXyXwXwXyXwXyXyXwXyXwXwXyXyXwXyXwXyXwXwXyXwXyXwXyXwXyXyXyXwXyXwXyXyXwXwXyXwXyXwXyXwXyXyXyXwXyXwXyXwXyXwXyXyXwXyXwXwXyXwXyXwXyXyXwXyXwXyXwXyXyXwXyXwXyXwXyXwXyXwXyXyXyXwXwXiXwXwXiXwXiXiXwXiXwXwXwXiXwXiXwXiXwXwXwXwXwXwXwXwXiXiXwXwXwXwXyXiXwXwXwXZ.5 X X X X X X 5 Z.wXyXwXyXyXwXyXyXyXwXyXwXwXyXyXwXyXwXwXyXyXwXyXyXqXyXyXqXyXqXqXyXyXqXyXyXqXyXyXiXwXyXyXwXyXwXyXiXwXyXiXwXyXwXwXyXwXyXwXyXwXwXyXwXyXyXyXwXyXyXyXwXyXyXyXyXwXyXyXyXwXyXyXwXyXyXwXyXwXyXwXyXyXyXyXyXwXyXyXwXyXwXwXyXwXyXyXwXyXwXwXyXyXwXyXyXyXwXwXyXwXyXwXyXyXyXyXyXwXyXyXwXyXyXqXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXyXwXyXwXwXyXwXyXwXyXwXwXwXyXyXwXyXwXyXyXyXyXwXyXyXyXqXyXyXqXyXqXyXyXyXqXyXqXyXyXyXyXyXqXyXqXyXyXyXyXyXwXyXwXwXyXwXyXyXwXwXyXyXwX", -"wXyXwXwXwXyXwXwXwXwXwXwXyXwXwXwXwXwXyXwXwXwXyXwXwXyXwXwXwXwXwXyXwXwXwXyXwXwXyXwXwXwXyXwXwXwXyXwXwXwXwXyXwXwXwXyXwXyXwXwXwXyXwXwXwXwXwXyXwXwXwXyXwXyXwXwXwXyXwXwXwXwXwXyXwXwXwXyXyXwXwXwXwXyXwXwXyXwXwXyXyXwXwXyXyXyXwXyXyXwXwXyXwXyXwXwXwXyXwXwXwXwXwXwXwXwXwXwXyXwXyXwXwXyXwXyXqXyXyXwXwXyXwXyXyXwXwXyXwXwXwXyXwXwXwXwXwXyXwXwXwXyXwXwXwXyXyXwXwXyXwXwXwXyXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXyXwXwXwXwXyXwXZ.1 X X 1 Z.wXwXwXwXwXwXwXwXwXwXwXyXwXwXwXyXyXwXwXwXwXyXwXwXqXyXyXqXyXyXqXyXyXyXqXyXyXqXyXyXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXyXwXwXwXwXyXwXwXyXwXwXwXyXwXwXwXwXwXyXyXwXyXwXwXyXyXyXwXyXwXwXwXyXwXwXwXyXwXwXwXwXyXwXwXwXyXwXyXwXwXwXwXyXwXwXwXwXwXyXwXyXwXwXwXyXwXwXwXyXwXwXwXwXyXwXyXqXyXyXyXqXyXyXqXyXyXqXyXyXqXyXyXwXwXwXwXyXwXyXyXwXwXyXyXwXwXyXyXwXwXyXwXyXwXyXqXyXyXyXyXyXqXyXyXqXyXyXqXyXyXqXyXqXyXyXqXyXyXqXwXwXwXyXwXwXwXyXyXwXwXwXwXyXwXwX", -"wXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXwXwXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXyXqXwXwXwXqXwXyXyXqXwXwXwXqXwXyXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXyXwXwXwXwXqXyXwXwXwXwXwXyXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqX9XC.1 X X X 2 C.0XwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXyXyXqXyXqXqXyXyXqXyXyXqXyXqXqXyXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXyXqXyXwXwXqXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXyXqXyXqXyXqXqXyXqXqXyXqXyXyXqXwXwXwXwXwXwXwXwXwXwXwXwXqXwXwXwXwXwXwXwXqXwXwXqXyXyXqXqXqXqXyXyXqXyXqXyXyXqXqXyXqXyXqXyXyXqXqXyXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX", -"wXqXwXwXwXqXwXwXwXwXwXwXwXwXwXwXwXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXqXwXwXwXqXwXwXqXwXwXwXqXwXwXwXqXwXwXqXwXwXwXqXwXwXwXwXqXwXwXwXqXwXwXqXwXwXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXqXwXwXwXwXwXqXqXqXwXwXwXwXwXqXqXwXwXwXqXwXwXwXwXwXwXwXwXwXwXwXwXqXqXwXwXqXwXqXqXwXwXqXwXqXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXwXqXqXn.& X X - n.9XwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXqXyXqXqXyXyXqXqXqXqXqXqXyXqXyXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXyXqXqXyXqXwXqXyXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXyXqXqXyXyXqXqXyXyXqXqXyXyXqXqXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXwXwXwXwXwXwXwXqXqXqXqXqXyXyXqXyXyXqXqXqXqXyXqXyXyXqXqXqXqXyXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwX", -"wXwXwXwXwXwXwXwXwXwXwXqXwXwXqXwXwXwXwXwXqXwXwXqXwXwXqXwXwXqXwXwXwXwXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXwXwXqXwXwXqXwXwXwXqXwXwXwXqXwXwXqXwXwXwXqXwXwXqXwXwXqXwXwXwXwXqXwXwXwXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXwXwXwXwXwXwXwXqXwXwXwXwXwXwXwXwXwXwXwXwXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXwXwXqXwXwXwXyX8Xn.* X X X X X X X X X * n.0XqXqXwXqXwXwXwXwXwXwXwXwXwXwXqXwXwXwXqXwXwXqXwXwXwXqXwXwXwXyXqXqXyXqXqXqXqXyXyXqXyXqXyXqXqXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXwXqXwXwXqXwXwXwXqXwXwXwXqXwXwXqXqXwXwXqXwXwXwXwXwXwXqXwXwXwXqXwXwXqXwXwXqXwXwXqXqXwXwXqXwXwXwXqXwXwXwXwXwXwXqXwXwXwXqXwXwXqXwXwXwXqXwXwXqXwXwXqXqXyXqXqXyXqXqXyXqXqXyXqXqXqXyXyXqXwXwXqXwXwXqXwXwXqXwXwXqXwXwXqXwXwXwXqXwXwXqXwXyXqXyXyXqXqXqXqXqXqXyXqXyXqXqXyXqXqXqXyXyXqXqXyXwXwXqXwXwXqXwXwXqXwXwXwXqXwXwXwX", -"wXwXwXwXwXqXqXwXqXwXwXwXwXwX9XwXqXqXwXqXqXwXqXqXwXwXwXwXqXqXwXqXqXwXqXwXqXwXqXwXqXqXwXwXqXwXqXwXwXwXqXwXqXwXwXqXwXqXqXwXwXwXqXwXwXqXqXwXwXwXqXwXqXwXwXwXqXwXqXwXqXwXwXqXqXqXqXwXqXwXwXqXwXwXqXwXwXwXqXqXwXqXwXwXqXwXwXqXwXwXqXwXqXqXyXqXqXyXwXqXqXwXqXqXyXqXqXwXwXqXqXwXwXwXqXwXqXwXwXwXqXwXwXwXqXwXqXwXqXwXqXwXqXwXqXwXqXqXwXwXwXqXwXwXqXwXwXqXwXwXqXwXwXqXwXwXqXwXwXwXqXwXqXwXwXwXqXwXqXwXwXqXwXwXwXwXwXqXqXwXqXwXwXwXwXwXwXqXqXwXqXwXwXqXwXwXqXwXwXqXwXwXqX0Xn.X X # n.8XqX9XwX9XwXwXwX9XwXwXwXwXwXwXwXqXwXwXqXwXwXqXwXwXqXwXqXwXwXwXqXyXqXqXqXqXqXyXqXqXyXqXqXyXqXqXyXwXwXqXwXwXwXwXqXqXwXwXwXwXqXqXwXwXwX9XwXwXwX9XwXwXqXwXwX9XwXwXqXwXqXwXwXqXwXwXqXwXwXqXwXwXqXwXwXqXqXwXwXqXqXwXqXqXwXqXwXwXqXwXwXqXwXwXwXqXqXwXqXqXqXwXwXqXwXqXwXqXqXwXwXqXqXwXqXwXqXwXwXqXwXwXqXwXqXwXqXwXwXwXqXqXyXqXqXyXqXyXqXwXwXqXwXwXwX9XwXwXqXwXwX9XwXwXqXqXyXqXqXyXqXyXqXqXyXqXqXyXqXqXyXqXwXqXyXwXqXqXqXqXyXqXwXqXwXqXqXqXwXwXqXwXqXwXwXwXqXwXqXwXwXqXwX", -"9XwX9XwX9XwXqXwXqXwX9XwX9XqXwXwXqXwXqXwXwXqXqXwXqXqXqXqXqXwXwXqXqXqXwXqXqXqXwXqXqXwXqXqXqXqXqXwXqXqXqXqXwXqXqXqXqXwXqXqXqXqXqXqXqXwXqXqXqXqXqXqXqXqXqXqXqXwXqXqXqXqXqXqXqXqXqXqXqXqXqXwXqXqXqXqXqXqXqXwXwXqXqXqXqXqXwXqXqXqXqXqXwXqXqXqXqXqXqXqXqXwXqXqXqXwXqXqXqXwXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwXqXqXwXqXqXwXqXqXwXqXqXwXqXqXqXqXqXqXqXqXqXwXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwXqXqXqXqXwXqXqXqXwX9XwX9XwX9XwXqXwXqXwX9XwX9XwX9XwXqXqXqXqXqXqXqXqXqXqXqXwXqXqXqXqX9X8XL . X X . L 8XqXwXwXwXwXwXwX9XwXwXwX9XwX9XwX9XwXqXqXwXqXqXqXqXqXwXqXqXqXqXqXqXqXqXqXqXyXyXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwXqXqXqXwX9XwXqXwXwXqXwXqXqXwXwXqXwXqXqXqXqXqXqXqXqXwXqXqXqXqXqXqXqXqXwXqXqXqXqXwXwXqXqXqXqXqXwXqXqXqXqXqXqXqXqXwXqXwXqXqXqXqXqXqXwXqXqXwXqXqXqXwXwXqXqXqXqXqXqXqXqXwXqXqXqXwXqXqXqXqXqXqXqXqXqXqXqXqX9XwXwX9XqXwXwXqXwXqXqXwXwXqXwXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwXqXqXqXqX", -"qXqXwX9XwX9XqXqX9XwXwX9XwX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwX9XwX9XwX9X9XwXwX9XwX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX3XD . X X o L 3XqXqXqX9XqXqXqX9XwXwX9X9XwXwX9XwX9XwX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwX9XwX9XqXqXqXqX9XqXqXqXqXqX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XwXqXqXqXqX9XqXqXqXqXqX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", -"qXqX9XwX9XwXqXqXqXqX9XwX9XwXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XwX9XwX9XwXqXwXqXqX9XwX9XwXwX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXwXwX1XZ X X X M 3XqXqXqXqXqXqXqXwX9XwX9X9XwXwX9X9XwX9XwX9XwXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XwX9XwXqXqXqXwXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX", -"9XwX9XqXwX9XqXqX9X9XqX9X9XqX9XwXqXqXqX9XqXqXqX9X9XqXqXqXqXqXqX9XqXqXqXqX9XqXqXqXqXqXqX9XqXqXqXqXqXqXqX9XqX9XqXqXqXqXqXqXqXqX9XqXqXqXqXqXqX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XqXqXqXqXqXqXqXqXqXqXqX9XqXqXqXqXqXqX9XqXqXqXqXqXqXqXqXqXqXqX9XqXqXqXqXqXqXqXqX9XqXqXqXqXqXqX9XqXqXqXqX9XqXqXqXqXqX9XqXqXqXqXqX9XqXqXqXqXqX9XqXqXqXqX9XqXqX9XwX9XqXwX9XqX9X9X9XqX9X9XqX9XwXqXqXqXqXqX9XqXqXqXqXqXqXqXqX9XqXqXqX9XqX9XwX7X1XZ X X X X Z 1X7XqXqXqX9XqXqX9XwX9XqX9XwX9X9X9X9X9XwX9XwX9X9XqXqXqXqXqXqXqXqXqXqX9XqXqXqXqXqXqXqXqXqX9XqXqXqXqXqXqXqXqX9XqXqXqXqXqX9XqX9XqXqXqXqXqXqXqXqX9XqXwX9XqX9XwX9XqX9X9XwX9XwX9XwX9XqXqX9XqXqXqXqX9XqXqXqXqXqX9XqXqXqX9XqXqXqXqXqX9XqXqXqXqXqXqXqXqXqXqXqX9XqXqXqXqXqXqXqX9XqXqXqXqXqX9XqXqXqXqXqXqX9XqX9XqXqXqXqX9XqXqXqX9XqXqXqXqXqXqXqXqXqXqXqXqXqX9XqXqX9XwX9XqXqX9XwX9XwX9XwX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XqXqXqXqXqXqXqXqXqXqXqXqXqXqX9XqXqXqX9XqXqXqXqXqXqX9X", -"qX9X9X9X9XqX9XqX9XwX9XqXwX9XqX9XqX9XqXqXqX9XqXqXqXqX9XqX9XqX9XqX9XqX9XqXqXqX9XqXqX9XqXqXqX9XqX9X9XqX9XqXqXqX9XqXqX9XqX7XqX9XqX9XqX9X9X9XqXqX9XqXqX9XqX9X9XqX9X9XqXqXqX9X9XqX9XqX9XqX9X9XqXqX9XqX9XqX9X9X9X9X9XqX9X9X9XqX9X9X9XqX9XqXqX9X9XqX9XqXqX9X9X9XqX9XqX9XqX9X9X9XqX9XqX9XqX9XqX9X9XqX9X9X9XqX9XqX9X9X9XqX9X9XqXqX9X9XqX9XqXqX9XqX9X9XqXqXqX9XqX9X9XqX9XqX9XqXqX9X9XqX9XqXqX9X9X9XqX9XqX9XqX9X9X9X9XqX9XqX9XwX9XqXwX9XqX9X9XqX9XqX9XqX9XqX9X9X9XqX9XqXqX9XqX9XqX9X9X9X9X9X9X1XM X X X n 1XqX9X9X9XqX9XqX9XqXqX9X9X9X9XwX9XwX9XwX9X9X9XwX9XwX9X9X9XqX9X9X9XqX9X9XqXqXqX9XqX9X9XqX9X9XqXqX9XqX9XqX9XqX9XqX9XqX9XqX9XqXqXqX9XqXqX9XqX9XqX9XqX9XqX9X9XwXqX9X9XwX9X9XqX9XqX9X9X9XqXqX9XqX9X9XqXqXqX9XqX9XqX9X9XqXqXqX9XqX9XqX9XqX9XqX9XqX9XqX9X9X9X9XqXqXqX9XqX9XqX9XqX9X9X9X9XqXqXqX9XqX9XqX9XqXqXqX9XqX9X9XqXqX9X9XqXqXqX9XqX9X9XqX9XqX9XqX9X9XqX9X9XwXqX9XqX9X9X9XqX9XqX9X9X9X9XqX9XqX9XqX9X9X9XqX9XqX9X9X9XqXqXqXqX9XqXqX9XqXqXqX9X9X9XqX9X9XqX9XqX9XqX9XqX9XqXqX9XqX9XqX9XqX", -"9X9X9XqXqX9X9X9X9XqX9X9X9XqX9X9X9X9X9X9X9X9X9X9X9X9X9X9X9XqX9X9XqX9XqXqX7XqXqX9X7XqX9X9X7XqX9XqX9XqX9X9XqX9XqX9X9XqX9XqXqXqX9XqX9X9X9XqX9X9X9XqX9X9X9X9XqX9X9X9XqX9XqX9X9X9XqX9X9X9X9XqX9X9X9XqXqX9X9X9XqX9X9X9X9XqX9X9X9XqX9X9XqX9X9X9X9X9XqX9X9X9X9XqX9XqX9X9X9X9X9XqX9XqX9XqX9X9X9X9XqX9X9X9X9XqX9X9X9XqX9X9X9XqXqX9X9X9X9X9X9X9X9XqX9X9X9X9X9X9X9XqX9X9XqX9X9XqX9X9X9X9XqX9X9X9X9XqX9XqX9X9X9X9XqX9XqX9X9X9X9XqX9X9X9XqX9X9X9X9XqX9X9X9XqX9X9XqX9X9XqX9X9X9XqX9X9X9X9XqX9XqX9X9X9X(.M X M (.wX9X9X9XqX9X9X9XqX9X9X9X9X9XqX9X9X9X9X9XwX9X9X9X9X9X9X9XqX9X9X9XqX9X9X9XqX9X9XqX9X9X9XqX9X9X9X9X9X9X9X9X9XqX9X9X9XqX9X9XqX9X9X9X9X9XqX9X9X9X9X9XqX9X9X9X9X9X9X9X9X9X9X9X9XqX9X9X9X9XqX9X9X9XqX9X9X9X9X9X9X9XqX9X9XqX9X9X9X9X9X9XqX9X9X9X9XqX9X9X9X9X9X9X9XqX9X9X9X9X9XqX9X9X9X9XqX9X9X9X9X9X9X9XqX9X9X9X9X9XqX9X9X9X9X9XqXqX9X9X9X9X9X9X9XqX9X9X9X9XqX9X9X9X9X9X9X9XqX9X9X9XqX9X9X9XqX9X9XqX9X9X9X9X9X9XqX9X9X9XqX9X9XqX9X9X9X9X9X9XqX9X9XqX9XqX9X9X9X9X9X9XqX9X9X9XqX9X9X9X9X9XqX9X9X", -"9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X7X7XqX7X7XqX9X9X9X9XqX7X9X9X7X9X9X9X7XqX7X9X9X9X9X7X7XqX7X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X(.c c (.9X9XqX9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X", -"9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9XqX7XqX9X9X9XqX7XqX7XqX7XqXqXqX7XqX7XqX9X9XqX7XqX9X9X9XqX9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X(.0 X 0 (.9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X", -"9X9X9X9X9X7X9X9X7X9X9X9X7X9X9X9X7X9X9X9X9X7X9X9X7X9X9X9X9X9X9X7X7XqX7X9XqX7X9X7X7XqX7XqX7X7X7XqX9X9X7X9X7X9X9X7X9X9X9X7X9X7X9X9X9X9X9X9X7X9X9X9X7X9X9X9X7X9X9X9X7X9X9X9X9X7X9X9X9X9X9X9X9X7X9X9X7X9X9X9X7X9X9X9X9X9X9X9X7X9X9X9X9X9X7X9X9X9X7X9X7X9X9X9X7X9X9X9X9X9X9X9X9X7X9X9X9X9X7X9X9X9X7X9X7X9X9X9X9X7X9X9X7X9X9X9X9X9X9X7X9X9X9X9X9X7X9X9X9X7X9X9X9X9X9X7X9X9X7X9X9X9X9X9X9X9X9X9X9X7X9X9X9X9X9X9X9X7X9X9X9X7X9X9X7X9X9X9X9X9X7X9X9X9X9X9X9X9X7X9X9X9X7X9X9X9X7X9X9X9X7X9X9X7X9X9X9X9X7X9X7XZ.3 0 Z.7X9X7X9X9X7X9X9X9X7X9X9X9X9X7X9X9X9X9X9X9X9X7X9X9X9X9X9X7X9X9X9X9X9X9X9X9X7X9X9X9X9X9X9X7X9X9X7X9X7X9X9X9X9X9X9X7X7X9X9X9X9X7X9X9X9X9X9X9X7X9X9X9X7X9X9X9X7X9X9X9X9X9X9X9X7X9X9X9X9X9X9X9X9X9X9X7X9X9X9X9X9X7X9X9X7X9X9X9X9X7X9X9X9X9X7X9X9X9X9X7X9X9X7X9X9X9X9X9X9X9X9X9X7X9X9X9X9X7X9X9X9X9X7X9X9X9X7X9X7X9X9X9X9X9X9X7X9X9X9X9X9X7X9X9X9X9X9X9X7X9X9X9X9X9X9X7X9X9X9X9X7X9X9X9X9X9X9X9X9X9X9X7X9X9X9X7X9X9X9X9X9X9X7X9X9X9X9X9X9X9X7X9X9X9X7X9X7X9X9X9X9X9X9X9X7X9X9X9X9X7X9X9X9X9X9X9X7X9X9X9X", -"7X7X9X9X9X9X7X9X9X9X9X9X9X9X7X7X9X7X9X7X7X9X7X9X9X9X7X7X9X7X9X7X9X7X7X9X7X7X9XqX7X7X7X7X7X7XqX7X7X9X9X9X7X9X7X7X9X7X7X9X7X7X9X9X7X9X9X9X7X9X7X7X9X9X9X9X9X9X7X7X9X7X9X7X9X7X7X9X7X7X9X9X9X9X7X9X9X9X9X9X9X9X7X7X7X7X9X7X9X7X9X7X7X9X7X9X7X9X9X7X9X9X9X7X9X9X7X7X7X7X9X9X9X9X7X9X7X9X9X7X7X9X7X9X9X7X9X7X9X7X7X9X9X9X7X7X9X7X9X7X9X7X7X9X7X7X9X9X7X9X7X9X7X9X9X9X7X9X9X9X7X9X7X7X9X7X9X9X9X9X7X9X9X9X7X9X9X9X7X9X9X9X9X7X9X9X7X7X7X9X9X9X7X7X9X7X7X9X9X9X7X9X9X7X7X9X7X9X7X9X9X9X7X9X7X9X7X9X9X9X7X7X7XZ.5 2 Z.9X7X7X9X9X9X9X9X9X7X7X9X7X9X7X7X9X7X9X7X7X9X9X9X9X7X9X9X7X7X7X7X7X9X9X7X7X9X7X9X7X9X7X7X9X7X9X9X7X9X7X9X9X9X7X7X9X7X9X9X7X9X7X7X9X7X9X7X7X9X9X7X9X7X7X9X9X9X9X9X9X7X7X7X9X9X7X9X7X9X7X9X9X7X7X9X7X7X9X9X7X7X9X7X7X9X9X9X7X9X7X7X9X7X9X7X9X9X7X9X7X7X9X7X9X9X7X9X7X7X9X9X9X7X9X9X9X9X7X9X9X7X9X7X9X9X7X7X9X9X7X9X9X9X7X9X9X7X9X9X7X9X7X9X9X7X9X9X7X9X7X7X9X7X9X9X7X7X7X7X7X9X7X9X7X7X9X9X9X7X7X9X7X7X9X9X7X7X9X7X7X9X9X7X9X9X9X7X7X9X7X7X9X9X9X7X9X9X7X9X9X9X7X7X9X7X7X9X7X9X7X9X7X7X9X7X7X9X9X7X9X7X9X", -"7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X9X9X7X7X9X7X7X9X7X7X7X7X9X7X9X7X7X7X9X7X7X7X7X7X7X7X9X7XqX7X7X7X7X7X7X7X7X7X7X9X7X7X9X7X7X7X9X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X9X9X7X7X9X7X7X9X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X9X9X7X7X9X7X7X7X7X7X7X9X7X7X7X9X7X7X7X7X7X7X7X7X9X7X9X7X7X7X7X7X7X9X7X7X7X7X7X9X7X9X7X7X9X7X7X9X7X7X7X7X9X7X9X7X7X7X9X7X7X7X9X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X9X7X7X7X7X7X7X7X7X7X9X7X9X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X9X9X7X9XB.5 X - Z.6X7X7X7X7X7X7X7X7X7X7X7X9X9X7X7X9X7X7X9X7X7X9X7X7X7X7X7X7X7X9X7X7X7X9X7X7X7X9X7X7X9X7X7X7X7X7X7X9X7X9X7X7X7X7X7X7X7X7X7X9X9X7X7X9X7X7X9X7X7X9X7X7X7X7X7X9X7X7X7X7X7X7X7X9X7X7X7X7X9X7X7X9X7X7X7X9X7X9X7X7X7X9X7X7X7X9X7X7X9X7X7X9X7X7X7X7X7X9X7X7X7X9X7X7X7X7X9X7X7X9X7X7X7X7X7X7X7X7X7X9X7X7X7X7X9X7X7X9X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X9X7X7X9X7X7X9X7X7X9X7X7X7X7X9X7X9X7X7X7X9X7X7X7X9X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X9X7X7X7X7X9X7X7X7X9X9X7X7X9X7X7X9X7X7X9X7X7X7X7X7X7X", -"9X7X7X9X7X7X9X7X7X9X7X7X7X7X7X9X7X7X7X9X7X7X9X7X7X7X9X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7XqX7X7X7X9X7X7X7X7X7X9X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X9X7X7X9X7X7X9X7X7X7X7X9X7X7X7X9X7X7X9X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X9X7X7X7X9X7X7X7X7X7X7X9X7X7X7X7X9X7X7X7X7X7X9X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X9X7X7X9X7X7X7X9X7X7X9X7X7X7X6Xn.$ 1 N.6X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X9X7X7X9X7X9X7X7X9X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X9X7X7X7X7X7X7X7X9X7X7X7X9X7X7X7X7X7X7X9X7X7X7X7X7X7X9X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X9X7X7X7X9X7X7X7X9X7X7X7X7X7X9X7X7X7X7X7X9X7X7X9X7X7X9X7X7X7X9X7X9X7X7X7X9X7X7X7X9X7X9X7X7X9X7X7X9X7X7X7X9X7X9X9X7X7X9X", -"7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X9X6Xn.& # n.5X9X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7XqX7X7X7X7X9XqX7X7X7X7X7X7X7X7X7X7X", -"7X7X9X9X7X7X7X7X9X7X7X9X7X7X9X9X7X7X7X7X7X7X7X9X7X7X9X7X9X9X7X7X7X7X7X9X7X7X7X7X7X9X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X3Xn.& & n.3X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X9X7X7X7X7X7XqX7X7X7X7X7X7X7X7X7X7X7X7X7X5X7X7X7X7X7X7X7X7X7X9X9X7X9X7X7X9X7X7X7X7X7X7X$X7X7X7X7X7X$X7X7X7X7XqX7X7X7X7X7X", -"9X$X$X7X7X7X9X$X9X$X7X9X$X7X$X7X7X7X9X$X9X$X7X9X$X7X9X$X7X$X7X7X7X7X7X$X7X7X7X7X7X$X7X7X7X7X$X7X5X7X7X5X7X5X7X7X5X7X5X7X7X7X7X7X5X7X7X5X7X5X7X5X7X7X5X5X7X5X5X7X5X5X7X5X5X7X5X5X7X5X7X7X4X7X7X4X5X7X5X5X7X7X5X7X5X7X7X7X5X7X5X7X5X7X7X5X7X7X7X7X7X5X7X7X7X7X5X7X5X7X7X5X7X5X7X7X7X5X7X5X7X7X5X7X5X7X5X7X7X5X7X5X7X5X5X7X5X5X7X7X7X5X7X7X7X5X5X7X5X7X5X7X5X7X5X7X5X7X7X5X5X7X7X7X5X7X5X7X5X7X7X5X7X7X5X7X5X7X7X7X7X5X5X7X7X7X7X7X5X7X7X7X5X7X5X7X5X7X7X5X7X7X6X7X7X5X7X5X7X7X5X7X5X7X5X6X5X7X5X7X5X7X7X7X5X5X7X7X7X5X5X9X3Xv.# % v.3X5X7X7X7X6X7X5X7X5X7X5X7X5X7X5X5X7X7X5X7X5X5X7X7X5X7X5X5X7X7X5X7X5X7X7X7X7X5X7X5X7X7X5X7X5X7X7X7X7X5X7X7X7X7X5X7X5X7X6X7X5X7X5X7X5X7X7X5X7X5X7X7X5X7X5X7X5X7X7X5X7X5X7X5X7X5X7X5X7X5X5X7X5X5X7X7X5X7X5X5X7X7X5X7X5X7X7X7X5X7X5X5X7X7X5X7X5X7X7X7X7X5X7X7X7X5X7X5X7X7X5X7X7X5X5X7X5X7X5X7X7X5X7X5X7X5X5X7X7X5X7X5X7X5X7X5X7X5X7X5X7X7X5X7X7X7X7X5X7X7X5X7X7X7X7X5X7X7X7X5X7X7X7X7X7X7X7X5X7X7X9X$X9X$X7X9X9X$X$X7X7X7X9X$X7X5X5X7X5X7X7X5X7X7X5X7X7X9X$X7X5X7X$X7X7X9X$X7X9X$X7X9X9X$X7X7X7X7X9X$X7X7X7X7X9X$X$X7X7X7X9X$X", -"7X$X9X7X7X7X$X7X7X7X7X7X7X7X7X7X7X5X7X7X7X5X7X7X5X5X7X7X7X7X5X5X7X7X7X5X7X7X7X5X7X5X7X7X7X5X7X7X4X5X7X5X7X5X7X7X7X4X7X4X7X7X7X7X5X7X5X5X7X7X7X5X7X7X7X5X7X5X7X7X7X5X7X5X7X7X7X5X7X5X7X7X5X7X7X7X5X7X5X7X7X7X5X7X5X7X7X5X7X5X7X7X7X7X5X7X5X7X7X7X5X5X7X7X7X5X7X7X7X5X7X7X7X5X7X7X7X5X5X7X7X7X5X7X7X5X7X7X6X7X7X7X5X7X5X7X7X7X5X5X7X7X7X5X7X7X5X7X7X5X7X7X5X7X7X7X5X7X5X7X7X7X5X7X5X7X7X7X5X5X7X5X7X7X5X7X7X5X7X5X7X7X5X7X5X7X5X5X7X5X7X7X5X7X5X7X5X7X5X5X7X5X7X7X5X7X7X5X5X7X5X7X5X7X5X7X5X7X5X7X7X5X7X7X7X5X5X7X7X7X5X7X7X5X#XZ Z 3X7X5X7X7X7X5X7X7X5X7X5X7X7X7X5X7X5X7X7X7X5X5X7X7X7X5X7X5X7X7X7X5X7X7X7X5X5X7X7X7X7X5X7X7X5X5X7X7X7X7X7X7X7X4X7X5X7X7X7X5X7X7X5X7X7X7X5X7X4X7X7X5X7X7X5X7X5X7X7X7X5X7X7X5X7X7X5X7X7X7X5X7X5X7X6X6X7X7X7X5X7X5X7X7X5X7X7X7X5X7X7X5X7X5X7X7X7X5X7X5X7X7X7X5X5X7X7X7X5X7X7X7X7X7X7X5X5X7X7X5X5X7X4X7X7X7X7X5X7X5X5X7X7X7X7X7X5X7X5X7X5X7X5X7X5X7X5X7X5X7X5X7X5X7X5X7X7X7X5X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X$X5X7X7X7X7X7X7X7X5X7X7X5X5X7X7X7X5X7X7X7X5X7X5X7X7X7X5X7X5X7X7X7X5X7X7X5X7X7X5X7X5X7X7X7X5X7X5X7X7X7X5X5X7X7X", -"7X7X7X7X5X7X7X7X7X5X7X7X7X$X7X7X5X5X5X5X5X5X5X7X5X7X5X5X5X5X5X7X5X5X5X7X5X5X5X7X7X5X5X5X7X5X7X4X7X7X7X5X7X5X4X7X7X7X7X7X7X4X7X4X5X5X5X7X5X5X5X7X5X5X5X7X5X5X5X5X7X5X7X5X5X5X5X5X5X5X5X5X5X5X5X7X5X7X5X5X5X5X5X7X5X5X5X7X5X7X5X5X5X5X5X7X5X5X5X7X5X7X5X5X5X7X5X5X5X7X5X5X7X5X5X5X7X5X7X5X5X5X5X5X5X5X5X5X5X5X5X7X5X7X5X5X5X5X5X7X5X5X5X7X5X5X5X5X5X5X5X5X7X5X5X5X7X5X5X5X5X5X5X7X5X5X5X7X5X7X7X5X5X5X5X5X7X5X5X5X5X5X5X5X5X5X5X7X7X5X5X5X5X7X5X5X5X5X5X7X5X7X5X5X5X5X7X5X5X5X5X7X5X5X7X5X7X5X5X5X5X5X5X5X7X5X7X5X4X7X7X4X5X5X7X5X7X6X7X5X5X5X7X5X5X5X7X5X5X5X5X7X5X7X5X5X5X5X5X7X5X5X5X7X5X7X5X5X5X5X5X5X7X5X7X5X5X5X7X5X5X5X5X7X5X5X4X7X4X7X5X7X5X5X5X5X5X5X5X7X5X5X5X7X5X7X4X7X5X7X5X5X5X5X7X5X5X5X7X5X5X5X5X5X5X5X5X7X5X7X5X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X7X5X5X5X5X7X5X7X5X5X4X7X7X5X5X5X5X4X7X5X7X5X7X5X7X7X7X4X7X5X7X5X7X5X7X4X7X4X4X7X7X5X7X5X7X5X7X5X5X5X5X7X5X5X5X7X5X7X5X5X5X7X5X5X5X5X5X5X5X5X5X5X5X$X9X9X$X$X7X7X7X7X7X7X7X$X7X$X7X5X5X5X5X7X5X7X5X5X5X7X5X5X5X7X5X5X5X5X7X5X7X5X5X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X7X5X5X5X7X5X7X5X5X", -"9X$X$X9X5X5X5X5X$X$X7X$X$X7X$X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X4X7X4X7X5X5X4X5X5X5X5X5X4X4X7X4X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X5X5X4X7X4X7X5X5X5X5X6X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X4X4X7X5X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X4X7X7X4X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X4X7X5X5X4X7X5X5X7X4X5X5X5X5X5X5X4X7X7X4X4X7X5X5X5X5X7X4X7X4X7X4X5X5X5X5X5X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X9X7X$X5X5X7X7X7X7X7X7X7X7X7X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X", -"7X7X9X$X5X5X5X5X7X7X7X7X7X5X5X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X4X7X4X7X5X4X7X4X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X4X7X4X5X5X5X5X6X4X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X4X7X4X4X5X5X5X5X5X5X5X5X4X4X7X4X5X5X5X5X5X5X5X5X5X5X5X5X5X5X4X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X4X5X5X5X4X5X5X4X7X5X5X5X5X5X5X7X4X5X4X7X4X5X5X4X5X4X7X4X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X$X$X7X9X7X7X$X7X$X7X$X7X$X7X$X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X", -"$X7X9X7X$X7X7X7X4X7X5X5X7X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X4X5X5X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X5X4X7X5X7X4X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X4X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X4X5X5X5X5X5X5X5X5X5X5X7X7X4X7X5X5X5X5X5X5X5X5X5X5X5X5X5X7X4X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X4X7X5X5X5X5X5X5X5X4X5X5X5X5X5X5X4X4X7X4X5X5X5X5X7X7X4X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X7X7X9X7X$X9X7X$X5X5X5X5X7X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X5X", -"$X7X$X7X$X7X$X7X5X4X5X5X$X7X$X5X5X5X5X4X5X5X4X5X5X5X5X4X4X5X4X5X4X5X5X4X5X5X5X5X5X5X4X5X5X5X4X7X7X4X4X4X5X4X5X5X4X5X5X4X5X4X4X4X5X5X5X5X5X4X5X5X4X5X5X5X5X4X5X5X5X4X5X5X5X5X4X5X5X5X4X5X5X5X4X5X5X5X4X5X4X5X5X5X4X5X4X5X5X5X5X4X5X5X5X4X4X5X4X5X5X5X5X4X5X4X4X5X5X5X5X5X5X4X4X5X5X5X4X5X5X5X2X5X4X5X5X5X5X4X5X5X5X5X5X4X5X4X5X5X4X5X5X4X5X5X5X5X5X5X4X5X4X5X4X5X5X4X4X5X4X5X5X5X4X5X4X5X5X5X5X2X5X5X5X4X5X5X4X5X5X5X5X4X5X5X5X5X4X5X5X5X5X5X5X4X5X5X5X5X5X4X5X5X4X5X4X5X5X5X5X5X4X5X5X5X4X5X5X4X4X5X5X5X4X5X5X5X4X5X5X5X5X5X5X5X5X4X5X5X5X4X4X5X5X5X4X5X4X5X4X5X5X5X4X5X5X4X5X5X4X5X4X5X5X5X5X4X5X5X4X5X4X5X5X5X4X5X4X5X5X5X5X5X5X4X5X5X4X4X4X4X5X5X4X5X5X5X5X5X5X5X4X5X4X5X5X4X5X5X2X5X4X5X5X5X5X4X5X5X5X4X5X5X5X5X4X5X4X5X4X5X5X5X4X5X5X5X5X5X5X5X5X5X4X5X2X5X5X4X5X5X4X5X5X5X5X4X5X5X4X5X4X5X5X4X5X4X5X5X4X5X4X7X4X5X5X5X5X4X4X7X4X5X5X5X4X5X4X4X4X4X4X7X4X5X5X5X5X4X5X5X4X5X5X5X5X4X5X5X5X4X4X5X5X4X5X5X4X5X5X4X4X5X4X5X5X4X7X$X$X7X9X$X7X7X4X5X5X4X5X5X$X5X5X5X5X4X5X5X4X5X5X4X4X5X4X5X4X5X4X5X4X5X5X5X5X4X5X5X5X4X5X5X4X5X5X5X4X5X4X5X4X5X4X5X4X5X5X5X5X4X", -"7X7X$X7X7X7X$X7X4X4X5X4X4X5X7X5X5X4X5X4X4X4X4X5X4X5X4X5X5X4X5X5X4X5X4X5X4X5X4X4X5X4X5X5X4X4X4X4X4X4X4X7X4X5X4X5X5X4X7X4X4X4X4X7X5X4X4X5X4X5X5X4X5X4X5X4X4X5X4X5X4X4X5X4X4X5X5X4X4X5X5X5X4X4X4X5X4X5X4X5X4X5X5X4X4X5X4X5X4X5X4X4X5X4X5X4X4X5X4X5X2X5X5X5X4X5X4X5X2X5X5X4X4X5X4X5X4X4X5X4X5X5X5X5X4X5X4X5X4X4X5X4X2X5X4X5X4X5X4X5X4X5X4X5X4X5X2X5X4X5X4X5X5X4X4X5X4X5X4X5X4X5X5X4X4X5X4X5X5X5X5X4X5X4X5X4X4X5X4X5X5X4X5X5X4X5X4X5X5X4X5X4X5X4X4X4X5X4X4X5X4X5X4X5X5X4X5X5X4X5X4X5X5X4X5X4X5X4X4X5X4X5X4X5X5X4X5X4X4X4X5X4X4X5X4X5X4X4X5X4X4X5X4X5X5X4X4X5X4X5X4X4X4X5X4X5X4X5X4X5X4X5X4X5X4X5X4X4X4X5X5X5X5X4X5X4X5X4X5X5X4X5X4X5X4X5X4X5X4X5X5X4X5X4X5X4X4X4X4X4X4X4X5X5X4X5X4X5X5X5X4X5X5X4X5X4X4X5X4X5X4X5X5X4X4X4X4X5X4X5X4X5X5X5X5X4X2X5X5X4X4X5X5X4X5X4X5X5X4X5X5X4X5X4X4X4X4X5X4X5X5X4X5X4X5X4X4X4X5X4X5X5X4X5X5X4X5X4X4X5X4X5X5X4X4X5X4X7X4X4X4X7X4X4X7X4X5X4X4X4X5X4X5X4X5X4X4X5X5X4X4X5X5X4X4X5X5X4X4X5X4X5X4X5X4X5X5X4X$X9X$X9X$X7X7X$X4X5X4X5X$X5X7X5X5X4X5X4X4X5X5X4X4X5X4X5X5X4X5X5X5X4X5X4X5X4X4X4X5X4X5X4X4X4X4X5X4X5X4X5X5X4X5X5X4X5X4X5X5X4X4X4X", -"$X7X7X$X$X7X7X$X4X4X4X4X4X5X5X$X4X4X4X5X4X4X5X4X4X4X4X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X2X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X5X4X5X2X4X4X4X4X4X4X5X2X2X5X4X4X4X4X4X4X4X5X2X2X5X2X4X5X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X5X4X4X4X5X2X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X2X4X4X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X4X4X4X4X4X4X5X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X2X5X4X4X4X4X4X4X4X4X4X4X4X4X2X5X5X4X5X4X4X4X4X4X2X5X2X5X4X4X4X4X4X4X4X4X2X5X2X5X5X2X4X4X4X5X4X4X5X4X4X4X4X4X4X5X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X5X$X5X7X$X7X$X7X$X$X7X4X4X5X5X5X5X5X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X4X4X", -"4X4X4X4X5X$X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X2X4X4X4X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X4X2X5X2X2X5X2X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X2X4X4X4X2X4X4X2X5X2X2X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X2X4X2X4X4X4X5X2X5X4X4X2X5X2X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X$X5X4X4X4X4X4X4X$X4X4X4X$X5X4X$X5X4X$X5X5X4X4X4X4X4X4X$X4X4X4X4X$X4X4X4X$X5X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X", -"4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X5X4X4X4X4X4X4X$X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X2X5X4X4X4X2X4X4X4X5X2X5X2X2X5X2X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X2X4X4X4X4X5X4X4X5X2X5X2X2X4X2X4X4X4X4X2X4X4X4X4X2X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X5X4X4X4X2X4X4X4X4X4X4X4X2X4X4X4X4X2X4X4X2X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X2X4X4X4X4X4X4X5X2X5X2X2X5X2X4X2X5X4X4X4X4X2X5X4X4X4X4X4X$X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X$X4X4X5X4X4X$X4X4X5X4X4X4X5X4X4X$X4X4X4X4X4X4X4X4X5X4X5X4X4X4X4X4X4X5X5X4X4X5X$X4X4X4X4X4X4X5X4X4X4X4X5X4X4X4X4X4X4X4X5X4X4X$X4X4X4X4X4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X4X", -"$X4X4X4X4X$X5X4X4X4X4X4X$X4X$X5X4X$X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X$X4X4X4X$X4X4X4X4X4X4X4X4X$X$X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X2X4X2X2X4X2X4X2X4X4X2X4X4X4X2X4X2X4X4X4X4X4X4X4X2X4X4X2X4X2X2X4X4X2X4X4X2X4X2X4X2X4X4X2X2X4X4X2X2X5X4X4X4X4X2X4X2X2X5X2X2X5X2X4X4X2X2X4X4X2X4X4X4X4X2X4X2X4X5X2X4X4X2X4X2X4X2X2X5X2X4X2X2X5X2X4X2X4X4X4X2X4X4X4X4X2X4X2X4X4X2X4X4X2X4X2X2X4X2X4X2X4X4X4X2X4X4X4X4X$X4X4X4X4X4X4X4X$X$X4X4X4X4X4X$X4X4X$X4X4X4X4X$X4X4X4X$X4X$X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X$X4X$X4X$X4X4X4X4X4X$X4X4X4X4X4X4X4X2X4X4X4X4X2X2X4X4X4X2X4X2X4X4X2X2X4X4X2X4X4X2X4X4X2X2X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X4X4X4X$X4X4X4X$X4X4X4X4X4X4X4X4X$X4X4X4X$X4X$X4X4X$X4X$X4X4X4X4X4X4X2X4X4X2X4X4X4X4X4X4X4X2X4X2X4X4X4X2X4X2X2X4X2X4X2X4X4X2X4X4X4X4X2X2X2X2X2X2X5X2X4X2X4X5X2X2X4X4X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X$X4X5X4X4X4X4X$X$X4X$X4X4X4X4X5X4X$X4X$X$X4X$X4X4X4X4X4X4X4X$X5X$X5X$X4X$X5X4X$X4X4X4X4X$X5X4X4X4X4X4X4X4X$X5X4X$X4X4X4X5X4X4X$X4X4X4X4X$X5X4X4X4X$X4X4X4X4X4X4X4X4X4X4X4X$X4X4X4X4X4X$X4X4X4X4X4X4X4X$X4X4X4X", -"$X4X4X$X4X4X$X4X$X4X$X4X4X4X4X$X4X4X$X4X4X$X4X$X$X4X4X$X4X4X4X4X$X4X$X4X$X4X4X4X$X4X4X$X$X4X4X4X$X4X4X$X4X4X$X4X$X4X$X4X$X4X4X$X2X4X2X4X2X4X2X4X4X2X2X2X4X2X2X4X4X2X4X2X2X2X2X2X2X2X2X2X2X4X2X4X2X2X4X2X2X2X4X2X2X4X2X4X2X4X2X2X4X2X2X2X2X2X2X2X2X2X5X2X2X2X4X2X2X2X2X4X2X2X4X2X2X2X2X2X2X4X2X2X2X2X2X4X2X4X2X4X2X4X2X2X4X2X2X5X2X4X2X2X2X2X4X2X2X2X2X4X4X2X2X2X2X2X4X2X2X4X4X2X2X4X2X4X2X2X2X2X$X4X4X4X4X$X4X$X4X$X4X4X$X4X4X$X4X$X4X4X4X4X$X4X$X4X$X4X$X4X4X4X$X4X4X$X4X$X4X4X$X4X$X4X$X4X4X$X$X4X4X4X4X4X4X4X4X$X4X4X$X4X$X4X2X2X4X2X4X2X2X2X2X4X2X2X2X4X2X4X2X2X4X2X2X2X4X2X2X4X2X4X2X4X2X2X4X$X4X$X4X$X4X$X4X4X$X4X4X$X4X4X$X4X$X4X$X4X4X4X$X4X4X$X$X4X4X4X4X$X4X4X4X4X$X4X4X4X2X4X4X$X4X$X4X2X2X2X4X2X2X4X$X4X2X2X4X2X4X2X2X4X2X4X2X4X2X4X4X2X2X4X2X2X2X4X2X2X5X2X5X2X2X2X2X4X2X2X2X2X4X2X$X4X$X4X4X4X4X$X4X$X4X4X$X4X$X4X$X4X$X4X$X4X$X4X4X4X$X$X4X$X4X$X4X4X4X4X$X4X$X4X$X4X4X4X4X4X4X4X$X4X$X4X4X$X4X4X$X5X$X5X$X5X$X4X$X4X4X$X4X4X$X4X$X4X$X4X$X4X4X$X4X4X$X4X4X$X$X4X$X4X4X$X4X4X$X5X$X4X$X4X$X4X$X4X$X4X$X4X$X4X4X4X4X$X4X$X4X4X$X4X$X4X$X4X4X4X4X$X", -"4X$X4X$X$X4X$X4X4X4X$X4X$X$X4X$X$X4X$X$X4X$X4X4X4X$X4X$X4X$X4X$X4X$X4X4X$X4X$X4X4X$X4X$X4X4X$X4X4X$X4X$X$X4X$X4X4X$X$X4X4X$X4X$X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X4X2X2X2X2X2X2X2X2X2X2X2X4X2X2X2X2X2X2X2X2X2X4X2X2X2X2X2X2X2X4X2X2X2X2X2X2X2X2X2X2X2X4X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X4X2X2X2X2X2X2X2X4X4X4X$X4X$X4X$X4X$X4X4X$X4X$X4X4X$X4X$X4X$X4X4X$X4X$X4X4X$X4X$X4X4X$X4X4X$X4X$X4X4X$X$X4X4X$X4X$X$X4X$X4X4X$X$X4X4X$X4X$X4X4X$X4X2X2X2X2X2X2X4X2X2X2X2X2X4X2X2X2X2X2X4X2X2X2X2X2X2X2X2X2X2X2X4X2X4X$X4X4X$X4X4X$X$X4X$X4X4X$X4X$X4X$X4X4X$X4X$X4X4X$X4X$X4X4X$X4X$X4X$X4X$X4X4X$X$X4X4X$X4X$X4X4X$X4X2X2X4X$X4X2X4X2X2X2X$X4X2X2X$X4X$X2X$X4X2X2X$X4X$X4X4X$X4X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X4X4X$X4X$X$X4X$X4X$X4X$X$X4X4X$X4X$X4X4X4X$X4X$X4X$X4X4X$X4X$X4X4X$X4X4X4X$X4X$X4X4X$X4X$X4X$X4X$X4X4X$X$X4X$X4X$X5X$X$X5X$X$X$X4X$X4X4X$X4X$X4X4X$X$X4X4X$X4X$X$X4X4X$X4X$X4X$X4X$X4X4X4X$X4X$X4X$X$X4X$X4X$X4X4X$X4X$X4X4X$X4X4X$X4X$X$X4X$X4X4X4X$X4X$X$X4X$X", -"$X4X4X4X4X4X4X$X$X$X4X$X4X4X$X4X4X$X4X4X$X4X$X$X$X4X4X4X$X4X$X4X$X4X$X4X4X$X4X$X$X4X$X4X4X$X4X4X$X4X4X4X4X4X4X$X$X4X4X$X$X4X$X4X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X4X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X4X2X2X2X2X2X2X4X2X2X2X2X2X2X2X2X2X2X2X4X2X2X2X2X2X4X2X2X2X2X2X2X2X2X2X2X2X2X$X4X4X$X4X$X4X4X4X$X$X4X$X4X$X4X4X$X4X4X4X$X4X$X$X4X$X4X4X$X4X$X$X4X4X$X4X4X4X$X$X4X4X$X$X4X4X4X4X4X4X$X$X4X4X$X$X4X$X4X$X4X4X$X2X2X2X4X2X2X2X2X2X2X2X2X2X2X2X4X2X2X2X2X2X2X2X4X2X2X2X4X2X2X2X2X$X4X$X4X4X$X4X4X4X$X4X$X4X$X$X4X$X4X$X4X4X$X4X$X$X4X$X4X4X$X4X4X4X$X4X$X$X4X$X4X$X4X$X4X$X4X$X4X4X$X2X2X2X2X2X2X$X2X2X4X4X$X2X2X4X2X4X2X4X2X2X4X4X$X2X2X2X4X$X4X2X2X2X2X4X2X2X2X4X2X2X2X2X2X2X2X$X$X4X$X4X4X$X4X$X4X$X4X4X4X$X4X$X4X$X$X$X4X4X4X$X4X4X$X4X$X4X4X$X4X$X$X$X4X4X4X$X4X4X$X4X$X4X4X4X4X$X4X4X$X4X$X5X$X$X5X$X$X5X$X$X4X4X$X4X4X4X$X$X4X4X$X$X4X$X4X4X$X$X4X$X4X$X4X$X4X4X$X$X4X$X4X4X4X4X4X4X$X4X$X$X4X$X4X4X$X4X4X$X4X$X4X4X4X4X$X$X$X4X$X4X4X$X4X", -"$X4X$X$X4X$X4X$X$X4X$X4X4X$X4X$X$X4X4X$X4X$X$X4X$X4X$X$X$X4X$X3X4X4X$X$X$X$X4X4X4X4X$X$X$X4X$X$X$X4X$X$X4X$X4X$X4X$X$X4X4X$X4X$X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X$X2X2X2X2X2X$X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X$X2X2X2X2X2X2X2X2X2X2X4X$X$X4X$X4X4X$X4X$X4X$X4X$X$X4X$X4X$X$X$X$X4X4X4X4X$X$X$X$X4X4X$X4X$X$X$X$X4X$X4X$X$X4X$X4X$X$X4X$X4X$X$X4X$X4X4X$X4X$X4X$X$X4X2X2X$X2X2X2X2X2X2X2X2X2X2X2X$X2X2X2X2X$X2X2X2X2X2X2X2X2X2X2X2X$X4X$X$X4X$X$X4X$X$X4X$X4X$X4X$X4X4X4X$X$X$X$X4X4X4X4X$X$X$X4X$X$X$X$X4X4X$X$X4X4X$X$X4X4X4X4X$X$X2X2X2X$X2X2X$X4X2X2X4X$X2X2X$X4X2X2X$X4X$X2X4X$X2X2X$X4X2X$X4X$X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X2X$X4X$X4X4X$X4X$X$X4X$X4X$X$X4X$X4X$X$X4X$X4X$X$X4X$X$X4X$X4X$X$X4X$X$X4X$X4X$X$X4X$X$X$X$X4X4X$X$X$X4X$X$X4X$X4X5X$X5X$X$X5X$X$X$X4X$X$X4X$X4X$X$X4X$X4X4X$X4X$X$X4X4X$X4X$X$X4X$X4X$X$X$X4X$X4X$X4X$X$X$X$X4X4X4X4X$X$X$X4X$X$X$X4X4X$X4X$X4X$X$X4X$X4X4X$X4X$X", -"$X$X$X4X$X$X$X4X$X$X4X$X$X$X4X$X4X$X$X$X4X$X4X$X$X$X4X$X$X4X$X$X$X$X$X4X$X4X$X$X$X$X$X4X$X$X4X$X$X$X$X4X$X$X$X4X$X$X4X$X$X$X4X$X$X2X$X2X$X2X2X$X2X$X2X2X$X2X$X2X2X$X2X$X2X2X$X2X2X2X$X2X2X$X2X$X$X2X$X2X2X2X$X$X2X2X$X2X$X2X$X2X2X$X2X$X2X2X$X2X$X2X$X2X$X2X$X2X$X2X$X2X2X$X2X$X2X2X$X2X$X2X$X2X$X2X$X2X$X2X2X$X2X2X2X$X2X$X2X2X2X$X$X2X2X2X$X2X2X2X$X$X2X$X$X2X$X2X$X2X2X2X$X$X2X2X$X2X$X2X$X2X$X$X4X$X$X$X$X$X$X4X$X$X$X4X$X$X$X$X4X$X$X4X$X$X$X$X$X4X$X4X$X$X$X$X$X4X4X$X$X4X$X$X4X$X$X$X4X$X$X$X$X4X$X$X4X$X$X$X4X$X$X$X4X$X$X2X2X$X2X$X$X2X$X2X$X2X$X2X2X$X$X2X$X2X2X$X2X$X2X$X$X2X$X2X$X2X$X4X$X$X$X4X$X$X4X$X$X$X$X4X$X$X$X$X$X4X$X4X$X$X$X$X$X4X$X$X4X$X$X4X$X$X4X$X$X$X4X$X$X$X$X$X$X4X$X2X$X2X2X$X2X$X2X$X$X2X$X2X$X$X2X$X2X$X2X$X$X2X$X2X$X$X2X$X$X4X2X$X2X$X$X2X$X2X2X$X$X2X2X2X$X2X$X$X4X$X$X$X4X$X$X4X$X$X$X4X$X$X4X$X$X4X$X$X4X$X$X$X4X$X$X$X$X$X4X$X$X4X$X$X$X4X$X$X4X4X$X$X$X$X$X4X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X$X$X$X4X$X$X4X$X$X$X4X$X4X$X$X$X4X$X$X4X$X$X$X4X$X4X$X$X$X$X$X4X$X4X$X$X$X$X$X4X$X$X4X$X$X$X4X$X$X$X$X4X$X$X4X$X$X$X4X$X", -"$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X$X$X$X4X$X2X$X$X$X2X$X$X2X$X2X$X$X2X$X$X2X$X$X$X2X$X$X$X$X2X2X$X$X2X2X$X$X$X2X$X$X$X$X2X$X2X$X$X$X2X2X$X$X2X2X$X$X$X2X$X$X$X$X$X$X$X$X$X$X2X$X$X2X2X$X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X2X$X$X$X2X$X$X$X2X$X$X$X2X$X$X$X2X$X$X$X2X2X$X$X$X2X$X$X$X2X2X$X$X$X$X$X$X$X$X$X$X$X$X2X$X$X$X3X$X$X$X$X$X4X$X$X$X$X2X$X$X$X2X2X$X$X4X$X$X3X$X$X$X$X$X$X$X2X$X$X$X2X$X$X2X$X$X$X$X$X$X2X2X$X$X$X$X2X$X$X$X$X2X2X$X$X$X$X$X$X2X$X$X$X$X2X$X2X$X$X$X2X$X$X$X2X2X$X$X2X$X$X$X2X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X2X$X$X$X$X$X$X$X$X4X$X$X$X$X2X$X$X2X$X$X$X$X$X2X$X$X$X$X$X$X$X2X$X$X$X2X$X$X2X$X$X$X2X2X$X$X$X2X$X$X$X$X$X2X$X$X$X$X$X$X$X$X$X$X2X$X$X$X2X$X$X$X$X$X$X$X2X$X$X$X2X$X$X$X2X$X$X$X$X$X$X$X$X3X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X", -"$X4X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X3X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X2X$X$X2X$X$X$X2X$X$X$X$X2X$X$X2X$X$X$X2X$X$X$X$X$X$X$X$X$X$X2X$X$X2X$X$X$X$X$X$X2X$X$X$X$X$X$X$X$X2X$X2X$X$X$X$X$X2X$X$X$X$X$X2X2X$X$X$X2X$X$X$X4X$X$X$X$X$X$X3X$X$X$X$X$X$X$X$X$X$X2X$X$X2X2X$X$X2X2X$X$X2X2X$X$X2X2X$X$X$X2X$X$X$X2X2X$X2X$X2X$X$X$X$X2X$X$X$X$X$X$X2X$X2X$X2X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X2X$X2X$X$X$X2X$X$X$X$X2X$X2X2X$X$X$X$X2X$X4X$X$X2X$X$X$X$X2X$X$X$X3X$X$X$X$X2X$X2X$X$X2X2X$X2X$X2X$X$X$X$X2X$X2X2X$X2X$X$X$X$X$X$X4X$X$X$X$X2X2X$X$X2X$X$X$X2X2X$X$X2X2X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X2X$X2X$X2X$X$X$X$X$X$X$X$X$X2X$X2X$X$X$X$X2X$X$X$X2X2X$X2X$X$X$X2X$X$X$X$X$X$X$X$X$X2X2X$X$X2X2X$X$X$X4X$X$X$X$X$X$X$X2X$X$X$X2X$X$X$X$X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X$X4X$X$X$X$X$X$X$X$X$X4X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X4X", -"$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XQ.b.D n n c c c b M D b.V.$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X2X$X$X$X$X$X$X2X$X$X$X$X$X$X$X$X$X2X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X#XB.b.Z b c c c c n Z v.B.(.$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X.XB.v.Z n c c c c n Z v.N.(.$X$X$X$X$X$X$X$X$X$X$X$X$X$X2X$X$X$X2X$X2X$X$X$X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X(.b.D c c c c c c Z v.B.#X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X2X$X$X$X2X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X2X$X$X$X$X$X$X4X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X", -"$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XXX$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XoX$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XB.n o 3 D [.$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XV.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.B.$X$X$X$X$X$X$X$X$X$X$X$X$X|.v.3 # n N.$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X[.v.3 $ n N.$X$X$X$X$X$X$X$X$X$XoX$XoX$X$X.Xb.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X.XN.c . . 6 b.|.$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XV.b.b.b.b.b.b.b.b.b.b.b.b.b.V.$X$X$X$X$X$X$X$X$XN.b.b.b.b.b.b.b.b.b.b.b.b.b.(.$X$X$X$X$X$X$X$X X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XXX$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XXX$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X", -"$X$X$X$X$X$X$X$X$X$X$X$X$X$X X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X X$X$X$X$X$XXX$X$X$X$X$X$X$X$X$X$X$X$XXX$X$X$X$XXX$X$X$X$X$X$X$X$X$XoX$X$XoX$X$XoX$XoX$X$XoX$X$XoX$X$XoX$X$X$XoX$X$X$X$XoXoX$X$XoXoX$X$XoX$X$XoX$XoX$XoXoX$XoXoX$X$X$XoX$XoX$X$XoX$XoX$X$X$X.Xv.& 6 V.$X$X$X$XXX$X$X$XXX$X$X$X$Xn 1 $X$X$X$X$XXX$X$X$X$X$X/.b # A |.$X$X$X$XoX$X$XoXoX$X$XoXXX$X$X$X$X$X/.c @ A |.$XoX$X$X$XoX$X$XoX$XoX$X[. X $XXX$X$X$X$XXX$X$X$X$X$X$XoX|.D @ . n /.$X$X$XXX$X$X$X$XoX$X$X$X$X$Xb & $X$X$X$X$X$XXX$X$X2 v.$X$XXX$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XXX$X$X$X$XXX$X$XXX$X$X$X$XXX$X$XXX$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X.X$X$X$X$X$X$X$X$X$X$X$X$X$X$XXX$X$X$X$X$X X$X X$X$X$X$X$X$X$XXX$X$X$XXX$X$X$X$X$X$XXX$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XXX$X$X$X$XXX$X$X$X$X$X$X", -"$XXX$X$X$X$X$X$X$X$X$X X$X$X$X$XXX$XXX$X$X$X$X$X$X$X$X X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XXX$X$XXX$X$X$X$XXX$X$X$X$X$XXX$X$X$X$X$X$XoXoX$X$X$XoX$XoX$XoX$X$XoXoX$XoX$X$XoXoX$X$XoX$XoXoX$X$X$XoX$X$X$XoX$X$XoX$XoX$X$X$X$XoX$X$X$XoXoX$X$X$XoXoX$XoX$X$XoXV.$ . 6 /.$X$X$X$XXX$X$X$X$X$X$Xn 1 XX$X$XoX$X$X$X$X$XXXZ . v.$X$X$X$X$XoX$X$X$XoX$X$X$X$X$X.XZ o v.oXoXoX$X$XoXoX$XoX$X$X[. . $X$X$X$X$X$X$XXX$XXX$X$XoXB.# D $X$X$X$X$XXX$X$X$X$X$X$X$Xb V.$X$X$X$X$X$X$X$X2 v.oX$X$X$X$X$X$X$X X$X$X$X$X X$X$X$X$X$X$X$XXX$X$X$X$X$X$XXX$X$X$XXX$X$X$X$X$X$X$X X$X$X$X$X$X X$X$X$X$X$X X$X$X$X$XXX$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$XXX$X$X$X$X$X$X X$X$X$X$X$X$X$XXX$X$X$X$X$X$X$X$X$X", -"XX$X$XXXXX$X$X$X$X X$X$X X$X$X$X$X$XXX$X$XXX$X$X$X X$X$X X$X$X$X$XXXXX$XXX$X$XXX$X$X$X$X$X$X$X$X$XXX$X$X$X$XXX$XXX$XXX$X$XXXXX$XoX$XoX$XoXoXoX$XoXoXoX$XoX$XoX$X$XoXoX$X$XoXoX$XoX$XoX$X$XoXoX$XoXoXoX$X$XoXoX$X$XoXoX$X$XoXoXoXoX$X$XoXoX$X$XoX$XoX$XD @ N.$X$X$X$X$XXX$XXX$X$Xn 2 $X$X$X$X$XoX$X$X/.3 c [.$XoXoXoX$XoXoXoX$X$XXX$X[.2 c |.$XoXoX$XoX$X$XoX$X[. $X$X$X$XXXXX$X$X$X$X$X$XA 2 |.$X$XXX$X$X$X$X$XXX$X$Xb Z XXXX$X$XXXXX$X$X3 v.oX$X$X$X$X$XXX$X$X$X$X$X$X X$X$X$XXX$X$X$X$XXX$X$XXX$X$X$X$XXX$X$X$X$X$X$XXX$X$X$X$X$X$X$X X$X$X$X$X$X$X$X$X$X$XXX$X$XXXXX$X$XXX$X$X$X$X X$X$X$X$X$X X$X$X$X$X$XXX$X$XXXXX$X$XXX$X$X$X$X$X$X X$X X$X$X$X X$X$X$X$X$X$XXXXX$X$X$XXX$X$XXXXX$X$XXX", -"$XXX$XXX$X$XXX$X$X$X X$X X$X$X X$XXX$X$XXX$X$XXX$X$X X$X X$X$X X$X$XXX$X$XXX$X$XXXXX$XXXXX$XXXXX$X$X$XXXXX$X$XXX$XXX$XXX$X$XXX$X$XoXoXoXoXoXoXoXoX$XoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoX$XZ N.XXXX$XXX$X$X$X$X$Xn 1 XX$XXXXX$XXX$X/.& 2 [.$XoXoXoXoXoXoX$XXX$X/.$ 2 .XoXoXoXoXoXoXoXoX[. . $X$X.X$X$XXX$XXX$XXX$Xn $ [.$XoXoXXX$XXX.X$XXX$Xb $ $XXX$X$XXX$X$X$X2 v.$XXXXX$XXXXX$XXX$X X$X X$X$X X$X$X$X$XXXXX$X$XXX$X$X$XXXXX$X$XXX$XXXXX$XXX$X$XXX$X X$X X$X$X X$X$X$X$X$X$X X$X X$XXX$XXX$X$XXX$X X$X.X$X X$X$X$X$X X$X$X X$X X$X$XXX$X$XXX$X$XXX$X X$XXX.X$X$X$X$X$X$X X$X$X X$X$X$XXX$X$XXXXX$XXX$X$XXX$X$XXX$X", -"XX$XXXXXXXXX$XXX$X X$X$X$X X$X$XXXXX$XXX$X.X$X X$X$X X$X$X X$X$XXXXX X$X.X$XXXXX$XXX$XXXXX$XXX$XXX$XXXXX$X.X$XXXXX$X$XXX$X$X.X$XoXoXoXoXXXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXXXoXoXoXoXoXXXoXoXoXoXXXoXoXoXoXoXoXoXXXoXoXoXoXoXoXoXoXoXoXoXoXoXoXXXoXoXb. . V.$XXX$XXXXXXXXXXXn 1 $XXX$XXXXX$X.X2 6 $X$XXX$XoXoXoXoX$X.X2 6 $XXXoXoXoXoXoXoX[. $XXX$XXXXX$XXXXX$XXXZ 1 [.XX$XXX$XXXXX$XXX$Xv Q..X$XXXXX$XXXoX2 j.XXXX$XXXXX$X.X$X$XXX$X X$X$X X$X X$XXXXX$X XXX$X X$X$X X$X X$XXXXXXX$XXXXX$X$X X X$X$X$X X$X X$X$X$X$X X$X X$X.XXX$XXX$X$XXXXX$XXX$X X$X X$X$X X X X$X$X$XXXXX$XXX$XXXXX$XXXXX$X X$X$X.X$X X$X$XXX$XXXXX$XXX$X X$X X X$X$X X X$XXX$X X$X X X$X X", -"$XXXXX$X$XXXXX$X X$X$X XXX$X X$XXX$XXX$X$X X X$X$X X.X$XXX$X X$XXX$X$X$X$XXXXX$XXX$XXX$X$X.X$XXX$XXX$X$XXX$XXX$XXXXXXX$XXXXX$XXXoXoXoXoXoXoXoXoXoXoXXXoXoXoXoXXXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXoXXXoXoXoXoXoXoXoXXXoXoXoXoXoX[.. 3 XXoXoXXX$XXX$X$Xn 1 XX$XXX$X$X.Xj. N..X$XXXoXoXXXoXXXD N.$XoXoXoXoXoX.X[. . XX$XXXXX$XXX$X$XXXN. n $XXX$XXXXX$X.X$X$Xb D $XXX$XXXXX$XoX2 v.XX$XXX$X$XXXXXXXXX$X X$X$X X$X$X$XXX$X$X$X$XXXXX$X.X$X$X X$XXX$XXX$XXX$X$X X X$X$X$X{.$X X$X$X$X X X$X$X$X$X X$X$XXXXXXXXX$X$XXX$XXX$X X$X X X$X$X$X$X XXX$X$XXX$XXX X$XXX$X$XXX$X X$X X X$X$X X$XXXXX$XXX$X$X X X$X$XXX$X$X$X X$XXX$XXX$X$X$X$X", -"XX$XXX$XXX$XXXXX X$X X$XXXXXXX$X$XXXXX$X X$X X$X X$X X$X$XXXXXXXXXXXXX X$XXX$X XXXXXXXXXXX$XXX$X X$X$XXXXX$XXXXX$XXX$XXXXXXXXXXXoXXXoXoXoXoXoXoXXXoXoXoXXXoXoXoXXXoXXXoXXXoXXXoXoXoXXXoXXXoXXXoXoXoXoXXXXXoXoXoXoXoXoXXXoXXXoXoXoXoXoXoXoXoXoXoXA B.oXXXoXoX$XXX$Xn 2 XXXXXXXXXX.X@ 2 $XXXXXoXoXXXoX.X@ 3 XXXXXXoXXXoXXX[. XX$XXXXXXXXXXXXX|.# B.XXXX$X$XXXXX$XXXb 1 $X$XXX$XXX$XoX2 j.XXXXXXXXXX$X$XXXXXXXXX$X X$X X X X$X$XXX X$XXX$X X$X$X X$X XXXXXXXXXXXXX$X X$X X$X X X$X$X$X$X X$X X$X.X X$X X$XXX$X$XXX$XXXXX$X X$X X$X$X$XXXXX$X X X$X$XXX$XXX$X X$X X$XXX$XXX X$X X$X$X X X$XXX$XXXXXXX$X X$X$X X$XXX.XXXXX$XXX$XXX$X.X$X X$X", -"XXXXXXXXXX$XXX$X$X X$X X$XXXXXXX XXXXXXX$X X$X X$X X$X XXX X$X$XXX$XXX$XXXXX$X.XXX$XXX$XXXXXXXXX.X XXXXXXXXXXX$XXXXXXXXXXX$XXXXXoXXXXXXXXXXXXXXXoXXXXXoXXXXXXXoXXXoXXXoXXXoXXXXXXXoXXXXXXXoXXXoXXXXXoXXXoXXXXXXXXXXXXXoXoXXXXXXXXXXXXXXXXXoXXXXX& Z XXoXXXXXXXXXXXn 1 XX$XXX$XXXb. /.XXXXXXoXXXoXb. /.XXXXXXXXoXXX[. XXXXXX$XXX$XXXXXA 2 .XXXXXXXXXXXXX$Xb Q.XXXXXXXXXXoX2 j.XX$X$XXXXXXXXXXX$XXXXXXX$X X$X.X$X XXXXXXX.XXX$X$X X X$X X$X$XXX$XXX$XXX.X$X X$X X$X X.X X X{.$X$X X X$X X X$X XXXXXXXXXXXXXXXXX$X X$X X X X$X$X X$X X.XXX X.X$X.X$X X$XXX X.X$X$X X$X X X$X X.XXX.X$X$XXXXX$X X X$X X$XXXXXXX$XXXXXXXXX X$X X X", -"XXXXXXXXXXXXXXXX{.$XXXXXXXXXXXXX X$X X X$X X X$X X X$X.X X$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXQ. 2 XXXXXXXXXXXXXXn 1 XXXXXXXX$Xn b.XXXXXXXXXXXXn m.XXXXXXoXXXoX/. XXXXXXXXXXXXXX|.. N.XXXXXXXXXXXX.Xv A XXXXXXXXXXoX2 . j.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXX.XXXXXXXXXXXXXXX$X X X$X X X X$X X X$X$X{.$X X X.X$X X$X$X X$X$XXXXXXXXXXXXXXXXX X X X X$X XXXXX X$XXXXXXX$XXXXX XXXXXXXXX$XXXXXXXXXXXXX$XXXXXXXXXXXXXXXXXXXXXXX$XXXXXXXXXXXXXXX$X X X.X X X$X X", -"XXXXXXXXXXXXXXXX X XXX XXXXXXXXX X X$X X$X X X$X X$X X X X XXXXXXXXXXX X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXb. 3 b.j.i {.XXXXXXXXXXXXn 1 XXXXXXXXXX$ . Z b.A @ Z XXXXXXXXXXXX$ . Z b.A # Z XXXXXXXXXXXX). . XXXXXXXXXXXXXXb.. . A b.v c XXXXXXXXXXXX$Xb 2 XXXXXXXXXXoX2 j.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX{.$X X X X$X X X$X X X X$X}.$X$X X X X}. X X}. XXXXXXXXXXXXXXXXX{.$X$X X$X X XXX X XXXXX X XXXXXXXXXXXXX X XXXXXXXXXXXXX X.XXXXXXXXXXXXXXXXXXXXX X.XXXXX X.XXXXX X$X X$X$X X$X X", -"XXXXXXXXXXXXXXXX X X X.XXXXXXXXX X X X X X$X.X X X$X X$X X.X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXn 3 .XXXXX.X2 V.XXXXXXXXXXXXn < XXXXXXXX|.. m.XXXXXXN. 6 XXXXXXXXXX). m.XXXXXXN. 6 XXXXXXXXXXXX[. XXXXXXXXXXXXXXv V.XXXXXX3 . {. XXXXXXXXXXXb /.XXXXXXXXXX2 j.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$X X X$X X X X$X$X X$X X X$X}. X X X X$X$X X$X X X XXXXXXXXXXXXXXXXX X X X X.XXXXXXX$X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X$X X X X X X X X X X X", -" XXX XXXXX XXX X X$X X$XXXXX XXX$X X$X X X X X X X X X X X$XXX XXXXXXXXX XXX XXX XXX XXXXX XXX XXX XXXXX XXX XXX XXXXX XXX XXX X XXX XXXXX XXX XXX XXXXXXXXX XXX XXX XXX XXXXX XXX XXX XXXXXXXXXXX XXXXXXXXX XXXXXXX XXXXX XXX XXXXX XXX XXXXXi b.XXXX XXXA B.XXXX XXXXXXXn 1 XXX X XQ. # XXXXXXX X. 2 XX XXXXX XQ. & XXXXXXX X. 2 XX XXXXX XXX). . XX XXX XXXXXXX& 2 XXXXXXXA V.XX XXXXX XXXb j.XX XXX XXX2 j. XXX XXX XXXXXXXXXXX XXX XXX XXX XXXXX X XXX XXX XXXXX XXX X.X X X X$X X X X X X X X X X}.$X$X X X X X X X}.$X$XXX XXX XXXXX XXX$X X$X X X XXXXX X.XXX XXX XXX X XXX XXXXX XXX XXX XXX XXX XXX X XXX XXXXX XXX XXX XXX X X X$X X$X X X$X X$X X X", -"XX XXX X XXX X X XXX X X X XXX X XXX X X XXX X XXX XXX X XXX XXX X XXX X XXX XXXXX X XXX XXX XXX XXX X XXX X XXX XXX XXX XXX X XXX X XXX XXX XXX XXX X X X XXX XXX XXX X XXX XXX X XXX XXX XXX X XXX XXX XXX X XXX XXX X XXX XXX X XXX XXX XXX2 ). XXX XXXv. b. XXX XXX X Xn < 6 6 6 6 3 i 6 6 6 6 n XX X XXXN. b XX X X XXX$ @ XX X XXX XN. n XXXX X X X$ # X XXX XXX X). XXX X XXX X[. v XXX XXXm. b. XXX X XXX Xb 3 XX XXX X X2 j.}.XXXXXX}.XXXX XXX XXX X XXX XXX XXX X XXX XXX XXX XXX XXX X XXX XXX XXX$X}. X X X X X X$X X X X$X}. X X X$X X X X X$X X X X}.$XXX XXX X XXX XXXXX XXX X XXX X XXX XXX X XXX X X XXX X XXX XXX X X XXX XXX XXX X XXX XXX X$X}. X X X$X}. X X X$X", -" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X@ X X X X Xm. .. X X X X X Xn j.XX X XXX XXX X X X X X X X X Xb. Z X X X X X2 X X X X}.b. A XX X X XXX2 X X X X XXX). . XX X XXX X XQ. n X X X XB. A X X X X X Xb /. X X X X2 j.XX X}.XXXX}. X X}.XX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X}. X X X X X X X}.}. X X X X}. X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X}.", -" X X X X X X X X X X X X XXX X X X X X X XXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXX X X X X X X X X X XXX X X X X X X X X X X X XXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXX X X X X X X XX X X X XN. .. X X X X X Xn j.}. X X}. XXX X X X X X X X X Xk. A X X X X X3 {. X X X Xj. A X X X X X3 {.XX X X X X). . X X X X XXXD. Z X X X XB. Z }.XX XXX}.XXv j. X XXXXX2 j.XX X XXXXXXX X X XXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X$X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X", -" X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X}. X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X {. X X X}.N. A X X X X X Xn j. X X X X X}. X X X X X X X X X.. Z X X X X X6 {. X X X Xj. A X X X XXX3 {. X X XXX{.). X X X X X XN. A X}.XX XQ. . n X X X}.XX Xb 6 }.}. X}.2 j.}.XX}.}.}.}.}.XX}.}.XX}. X X X X X X X X X X X X}. X X X X X X X X X X X X X X X}.}. X X X X X X X X X X X X X X X X X X X X}. X X X X X X X}. X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X}.", -" X X}. X X X}. X X}. X X}. X X X X X X}. X X X X X X}. X X}. X}. X}.}. X X X X}. X}. X}. X}.}. X}. X X X}. X X X X X X X}. X}. X X}. X}.}. X X X}. X X X}. X X X}. X}. X}. X}. X X X X X}. X}. X X X X}.}. X X X}. X}. X X}. X}.}. X}. X}. X{. ).}. X X}.N.. A }.}. X X}.}.n j.}. X}. X X X X}.}. X}. X}. X}... N X}. X X X3 ). X X}. XA n X X}. X X3 ). X}. X X X). . X}. XXX}.}.m. A }. X}. XQ. c }.}.}.XX}. Xv ). X X X2 j. X}. XXX X}.}. X X}. X}. X}. X}. X}.]. X X}. X X X X}. X}. X}. X]. X X}. X}. X}. X X X}. X X X}. X X}.}.}. X}. X}. X}. X X X}. X X X}. X X X X X X X}. X X X}. X X X X}. X X}. X X}. X}. X X X}. X}. X X}. X}. X X}. X}. X}.}. X X}.}. X X X X}.", -"}.}.}.}.}.}.}. X}. X X]. X}.}.}.}.}. X}. X].]. X}.}. X}.}. X}. X}. X}. X}.}. X}.}. X}. X}. X}.}.}.}.}. X}.}.}.}.}.}.}.}.}. X}.}.}. X}. X}.}.}.}.}.}.}. X}.}.}.}.}. X}.}. X}. X}.}.}.}.}. X}. X}.}.}. X}. X}.}.}. X}. X}.}. X}. X}. X}.}. X}.}. D.}.}. X}.m. Z }.}.}.}.}.}.b j.}.}. X}.}.}.}.}. X}. X}. X}. X.. 6 X X}.}.}.6 ).}.}. X}... 6 }.}. X}. X6 ).}. X}.}.{.). X}.}.}.}.}.b. A }. X}.}.Q. 6 }.}. X}.}. Xb k.}.}.}.2 j.}. X}.}.}. X}. X}. X X}.}. X X}.]. X X X}. X}.}.}. X}. X}. X}. X}. X X}. X}.}. X}.}.}. X}.}.}. X}.}.}. X}. X}. X X}. X}.}. X}. X]. X}.}.]. X}. X}.}.}.}.}.}. X}.}.}. X}.}. X}. X}. X}. X}.}.}. X X}.}.}.}. X}. X X}. X}. X}. X}.}. X}.}.}.}. X}.", -"}. X X}.}. X X X]. X X].}. X X}.}. X}.}. X X X}. X}.}.}. X}.}.}.}. X}.}. X}.}. X X}.}. X X}.}. X X}. X}.}. X}. X}. X X}. X}.}. X X}.}. X X}.}.}. X}. X}. X X}. X X}.}. X X}.}.}.}. X X}.}.}.}. X}. X}.}.}. X X}. X}.}.}. X}.}. X X}.}. X}. X X j.}.XX}.}.N.. A ]. X}.}. X Xn j.}. X}.}. X X}.}.}.}. X X}.}.}.j. . ).}.}.}. X6 ).}.}.}.}... . ).}.}. X}.3 ).}.}. X}. X). X X}.}. X}... ..XX}.}.}.Q. 2 }.}.XX}.}. Xv 6 }. X X2 ..}.}. X}.}. X X}.}. X}. X}. X}. X X X X}.}. X X}. X}.}. X X}.}.}. X}. X X}.}. X}.}. X X}.}. X}. X}. X X}. X}.]. X X}.}.}.}.}. X}. X}. X}. X}.}. X}. X X}. X}.}. X}. X}.}.}.}.}.}. X}. X}.}. X}.}. X}.}. X X}.}.}.}.}. X}.}. X}. X}. X}. X X}.}. X", -"}.}.}.}.}. X].]. X X]. X}.}.}.}.}.}.}.}.]. X]. X]. X}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. X}.}.}.}.}. X}.}.}.}.}.}.}.}.}.}.}.}.}. X}.}.}.}.}.}.}.}.}.}.}.}.}.# $ ).}.}.}.Q...............j...............B.}.}.}.}.}.}.n k. X}.}.}.}.}.}.}.}.}.}.}.}.}.{.m. ..}.}.}.}.m.............................j.).}.}.}.}.m. ..}.}.}.}.m.j.............j...............{.}.}.}.}.}.!. . }.}.}.}.}.}... A }.}.}.}.Q. 2 }.}.}.}.}.}.v . ).}.}.2 ..}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. X].}. X].}.}.}.}.}.}.}.}.}.}.}.]. X].}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. X]. X X}. X}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. X}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.", -"}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}. X].}. X]. X}.].}.}.].}.}.].}.].}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.].}.}.}.}.}.}.}.}.}.}.}.].}.}.].}.}.}.}.}.}.}.}.}.}.}.}.}.].}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.< c `.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.n ..}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.B. N.}.}.}.}.].}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.N. . m.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.}.].}.}.}.}.]./. . }.}.}.}.}.}... ..}.}.}.}.Q. 2 }.}.}.}.}. Xv m.].}.2 ..}.}.}.}.}.}.}.}.}.}.].}.}.}.}.}.].}.}.]. X].}.}.}.}.}.}.}.}.}.}.]. X].}.}.}.}.].}.].}.}.}.}.}.}.}.}.}.}.]. X].].}.}.}.}.}.}.}.}. X].]. X].}.}.}.}.}.}.}.}.}.}.].}.}.}.}.}.}.}.}.}.}.}.}.].}.}.].}.}.].}.}.}.}.}.].}.}.].}.}.}.}.}.}.}.}.}.}.}.}.", -"}.}.].}.}.].}.}.].}.}.].].}.].}.}.].].}.}.].}.].}.}.}.}.}.}.}.}.}.}.}.}.}.}.].}.].}.}.].].}.}.].].}.].}.].}.}.}.].}.].}.}.].].}.}.}.}.}.}.}.}.}.}.].}.}.}.].}.}.}.}.}.}.}.}.].}.].}.].}.}.}.].}.}.}.].}.}.].].}.].}.}.].].}.].}.].}.}.}.].}.{.v 3 !.}.}.}.].}.}.}.}.}.].}.}.].}.].}.].].}.].}.}.}.}.b ..}.].}.].}.}.].].}.}.].].}.}.].Q. . ..}.}.}.}.].}.}.].}.}.].}.}.].].}.}.].}.].].}.].Q. . ..].].}.}.].}.}.}.}.].}.}.].].}.}.}.}.}.}.}.].}.}.). }.}.].}.].}.A A ].}.}.}.Q. 1 }.}.}.].}.}.b 6 ].}.2 ..}.}.}.].].}.}.].].}.}.}.}.}.].}.].}.]. X]. X X].}.].].}.}.].}.].].]. X}.].}.}.].}.}.}.}.}.}.].}.].}.}.].}.}.}.}.}.].}.].].}.}.].]. X X]. X].}.].}.}.].}.}.}.}.}.}.}.].}.}.].}.}.}.}.}.].}.}.}.}.}.}.}.}.}.}.].}.}.}.}.}.}.}.].}.}.}.}.].}.].].}.", -"}.}.].}.].].].}.}.}.}.}.}.}.}.}.}.]. X}.]. X]. X}.}.}.}.}.}.}.}.].}.].}.}.].}.}.].}.}.].}.}.}.}.}.}.}.}.}.}.}.}.}.}.].}.}.}.}.}.}.].].}.}.}.].}.].}.}.].].}.}.].}.].}.}.}.].}.}.].}.}.}.}.].}.}.}.}.}.}.}.}.}.}.}.}.}.].}.}.].}.}.}.}.}.}.}.}.A @ m.].}.}.}.].}.}.}.}.}.}.].}.}.}.}.}.}.].}.}.}.}.N k.}.].}.}.}.}.}.}.}.}.}.}.}.}.].].o c !.].}.}.}.}.}.}.}.].}.}.}.}.}.}.}.}.}.}.}.].{.@ c Q.}.].].}.}.}.].}.].}.].}.}.].}.].}.}.}.}.}.}.!. . ].}.].}.}.{.C A ].}.].}.Q. $ }.].}.}.].}.v . ).}.2 ..].}.}.].}.}.].}.}.}.}.}.].}.}.}.}.}.].].}.}.].].}.}.].}.}.}.}.}. X]. X].}.].}.].}.}.].}.}.].}.}.].}.}.]. X]. X].}.}.}.}.}.}.}.}. X]. X].].}.}. X}.}.].}.].].].}.}.].].}.].}.}.].}.}.].}.}.}.}.}.].}.}.].}.].].}.}.}.}.}.].}.].}.].}.}.}.].}.}.}.", -"}.}.}.].].].}.].}.].].].}.].].}.].}.].].].].].].].}.].}.].].}.].}.}.].}.}.].].}.].}.].}.].}.].}.].].].}.].].].}.].}.}.].}.].}.].}.].}.].].}.}.].}.].}.].}.].}.].].}.}.'.}.].].}.}.}.].].}.].].].'.}.].}.].].}.].].}.].}.].}.}.].].}.'.}.].}. XM. i Q.}.].}.].].].].].].}.].}.].].].}.}.].].].}.n . ..].}.].].}.].}.].].}.].].}.].}.].i . j.'.].}.].].].}.}.].].].}.].].}.].].].}.}.].6 . @ ..{.{.].].].}.].}.].}.].].}.}.}.].].].].].}.!. }.].}.].}.].A ..].}.].].Q. $ ].}.].}.].}.v m.].2 ..}.}.].}.].}.].}.}.].].}.].}.].}.].}.]. X].}.].}.}.].}.}.].}.].}.}.].].}.].}.}.].].}.].}.}.].}.}.].}.].}.].].].].].].].}.].}.].].].].].].].}.].].}.}.}.].].].}.].}.].}.}.}.].].}.}.].}.].].}.].}.}.}.].}.}.].}.}.}.].}.].}.].}.}.}.].].}.}.}.].].", -"].].].].].}.].].].].].].].].].].].].].].]. X].].].].].].].].].].].].].].].].].].}.].].}.].].].].].}.].].].].].}.].].}.].].].].}.].].].].].].].].].].].}.].].].}.].}.}.].].}.].].].].].].].].].].].}.].].].].].}.].].}.].].].].}.].].}.].].}.].].# . A `.].].].].].}.].].].].}.}.}.].].}.].].].b ..].}.].].].}.}.].}.].].].].}.].].k. 2 D.{.}.}.].].].].].].].}.].].].}.}.].].}.k. 2 D.].}.].].].}.].].].].].].].].].].].}.].!. . }.].].].].}.A A ].].}.].Q. $ ].].].].}.'.b v ].2 .].].].}.].].].].].].}.].].].].].].].].].].].}.].].].].].].].].].].].].}.}.].].}.].].}.].].}.}.'.}.].].].].].].].}.].].].].].}.].].].].].].].].].}.].].].].}.].].].].}.].}.].].].].].].].].].].].].].].].].].].].].].].}.].].].].].}.].].].].].}.", -"].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].'.'.}.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].n 2 D.].].].].].].].].}.'.].'.].].].].].].b $ 2 3 2 3 2 2 2 2 2 2 !.].].].].].!.. B `.}.].].].].].].].].}.].].].'.].].].!. . A `.].}.].].].].].].].].].].].].].].].!. ].].].].].].C A ].].].].F. @ ].].].].].].v . `.2 ..].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].'.'.}.].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].].", -"].].].].].].].].].].].].].].'.].].].].].].].].].'.].'.].].].].].].].'.].].].].].].'.].'.].].'.].].'.].].].].].'.].].].'.].].].].].].].].].].'.].].].].].].].].].].].].].'.].'.].].].].].].].].].].].].].].'.'.].].].].].].].'.].].'.].].].].'.].F. Z `.`.].].].].'.].'.].].'.}.'.].].].N !.].].].].].].n . $ M.].].].].].'.].].].'.'.].].].].].].n $ M.].].].].].].].].].].].].'.'.].].!. '.].'.'.].].Z C ].].'.].F. @ ].].].].].].v m.2 ..].'.].'.].].].].].].].].'.].'.].].].].].].].].].].'.].].].].].].].].].].].].].'.'.].].].].'.].'.].'.].'.].].].].].].].].].].].].].].].].].].'.].].'.].].].].].].].'.'.].].].].].].].'.].].].].].].'.].].].].].].].].].].].].].].].].'.].'.].].].", -"].].].].'.].}.].].'.].].].].].].].].].'.].].].].].].].].].].].].].].].].].].].'.].].].].].].].].].].].].'.].].].].].].].'.].].'.].'.].].].].].].].].].].].'.].].].'.].'.].].].].].].].].].].].'.'.].'.].].].].].].'.].].'.].].].].].].'.].].'.].].n $ D.].].].].].].].].].].'.}.].].'.n !.].'.].].'.].!.. b `.'.].].].].].].].].].].'.].'.'.!.. b `.].].].'.].].].].].].].].].{.!. ].].].].].].B A ].].].'.Q. @ ].].'.].].].v N 2 .].].].].].].'.].].'.].].].].].].].].].'.].].].].].].'.].].].'.].].].].].'.].].].].].'.].'.}.'.}.].].].].].].].].].'.].'.].'.].].].'.].].].].].].].].].'.].].}.].].].].].].'.].].].].].].].].].'.].].].].].].'.].'.].'.].].'.].].'.].].].].].].'.", -"'.'.].'.].'.].].'.].'.].'.'.].'.'.].'.'.].'.].'.].].].'.'.].'.'.].'.'.].].'.'.].].'.'.].].'.'.].'.'.].'.].'.].].'.].'.].'.'.].'.'.].'.'.].'.].'.].].].'.'.].'.'.'.].].].'.].].].'.].].].'.].].].].].'.].].].'.].].'.].'.].].'.].].].'.].].'.].'.].!.+ . .._.].'.}.}.'.'.'.}.'.'.].'.].b Y.].'.].].'.].]. . 2 F.'.].'.].].'.].'.].'.'.].'.'.]... 2 F.].'.].'.].'.].].'.].'.].].!. . ].].].'.].}.B C ].].'.].F. @ ].].'.].'.].v . < ..'.].].].'.].].'.'.].'.].'.].'.'.].'.].'.].].].'.'.].'.].'.].].].'.].].'.'.].'.].'.].].].'.].'.].'.].].].'.].'.].'.'.].].].'.].].'.].].'.].].'.].'.].'.'.].'.].].'.].].'.'.].'.'.'.].].].'.].].].'.].].].'.].].].].].'.].].].'.].].'.].'.].].'.].", -"'.].].'.'.'.'.'.'.'.].'.'.].].'.'.'.'.].].'.'.'.'.'.'.'.'.'.'.].'.].'.'.'.].'.'.'.].'.'.'.].'.'.'.].].'.'.'.'.'.'.'.].'.'.].].'.'.'.'.].].'.'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.].'.'.'.'.'.B. i !.'._.'.'.'.'.'.'.'.'.].'.N . Q.'.].'.'.'.'.'.'.v . k.'.].'.'.'.'.].'.'.].].'.'.'.'.z . k.].].'.'.].'.'.'.'.'.'.'.!. ].'.'.'.'.'.C A '.].'.`.F. . ].].'.'.'.'.v .'.'.'.'.'.'.'.'.'.'.'.'.].'.'.].].'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.].'.'.'.'.'.'.'.'.].'.'.].'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.].'.].'.'.'.'.'.'.'.'.'.].'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.].'.'.'.'.", -"'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.l. $ F.'.'.'.'.'.'.'.'.'.'.'.b Y.'.'.'.'.'.'.'.'._.c B '.'.'.'.'.'.'.'.'.'.'.'.'.'.`.i B '.'.'.'.'.'.'.'.'.'.'.!. . '.'.'.'.'.'.B .'.'.'.'.F. . '.'.'.'.'.'.v ..'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.", -"'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.F.< . m.'.'.'.'.'.'.'.'.'.].b Q.'.'.'.'.'.'.'.'.`.`. .. i !.'.'.'.'.'.'.'.'.'.'.'.'.'.'... i !.'.'.'.'.'.'.'.'.'.Q. ].'.'.'.'.'.B C '.'.'.'.F. @ '.'.'.'.'.'.z ..'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.", -"'.'.'._.'.'.'.'.'._.'.'.'.'._.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'._.'.'.'.'._.'.'._.'.'.'.'._.'.'.'.'._.'.'.'.'.'._.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.!.i m._.'.'.'.'.'.'.'.'.N Y._.'.'.'.'.'.'.'.'.'.'.m.O 3 ~._.'.'.'.'.'._.'.'.'.'.'._.'.m.@ 3 ~.'.'.'.'._.'._.'.Y. '._.'.'.'.'.C A '._.'.`.F. @ '._.'.'.'.'.v .'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'._.'.'.'.'.'.'._.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'._.'.'.'.'.'._.'._.'.'.'.'.'.'.'.'.", -"_._.'.'.'._._.'.'.'._.'._.'.'._._.'._.'.'.'._.'._.'._.'._._.'._._.'._.'.'._.'._._.'._.'.'._.'._._._.'.'.'._._.'.'.'._.'._.'._.'._.'._.'.'.'._.'._.'._.'._._.'._.'._._._._.'._._.'._.'._._.'._._.'._._.'._.'._.'._.'._._.'._._._.'.'.^.'.^.'._.'.'._._.'.'.'.^. . . A.'._._.'._._.'.`.N Y.'.'.^.'._.'.^.'._._.'.'.F.3 3 ~.'._.'._.'._.'._.'._._.'.'._.F.3 6 ~._.'._.'.'.'._.!. . _.'.'._.'._.B C '.'._._.F. @ _.'.'._.'._.v .'._.'._._.'._.'.'._._.'._._.'.'._._.'._.'._.'._._.'._.'._.'._._._.'.'.'.'._.'._.'._._._._.'._._.'._._._._.'._._.'._.'._.'._._.'.'.'._.'._.'._.'._.'._.'._.'._._._.'._.'.'._.'._.'._.'._._.'._._.'._.'._._.'._.'.'._._.'._.'.'.'._.'._._.'._._._.", -"_._.'._._.'._._._._._._._.'._._.'._.'._._._._._._._._._.'._.'.'._.'._.'._.'._._._.'._.'._.'._._._._.'._._.'._._._._._._._.'._._.'._.'._._._._._._._._._.'._.'.'._._.'._.'._._._._._._._.'._._._._.'._._._._._._._._._.'._._._.'.'.^.'._.'._.'.^._.'._._.^.'.^.'.F.2 + !.'._.'.'._._._.N Y.^.'.^.'.'.^.^.'._._.'._._._. .. A _._._._.'._._.'._._._._._._._._.... C _.'._.'._._.'.Y. '.'._._._.'.B C _._._._.F. . _._._._._._.v ._._.^.'.'._.'._._._._._._._.'._._._._.'._._.^.'._._.'._._._._.'._._._._._.'._.'._._.'._.'._._._._._.'._.'._._._._.'._.'._._._._._._._._._.'._.'.'._.'._._._._.'._._._._._._.'.'._._._._.'._._._._._._._.'._._._._.'._._._._._._._._._.'._._.'._.", -"'._._._._._._.'._._.'._._._._.'._._._._.'._._._._.'.'._._._._._._._._._._.'._.'._._._._._.'._._.'._._._._._._.'.'._.'._._._._.'._._._._.'._._._._.'.'._._._._._.'.'._._._._.'._.'.'._._._._.'._._._._.'.'._.'._._.'._.'._.'._._._.'.^.'.^.'.'.^._._._.'.'._.'._.^.~.C n _._._._._._._.b F.'._.'.'.^.'.'.'.'._._._._._.'.D.< . D.'._._._._.'._._.'._.'._._._._._.D.: . F._._._.'._._.Y. _._._._.'.'.B C _._.'._.F. @ _.'._._._._.z . .'.'._._._._._.'._.'._.'.'._._._._.'._._.'.'._._.'._._._._.'._._.'._.'._._._._._.'.'._._._._.'._.'.'._._._._.'._._._._._._.'._.'.'._._.'._._._._._._._._.'._._._.'._.'._._._._._.'.'._._._._.'._.'.'._._._._.'._._._._.'.'._.'._._.'._._.'.'._._.", -"_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.'.^.'.'._._._.'._._._._._._._._._._.`.A.$ . F._._._._._.'.b . Y.'.^.'.'.^.'.'.^._._._._._._._._.~.A v _._._._._._._._._._._._._._._._.^._.B b _._.^.'._._.Y. . _._._._._._.B A ^._._._.D. @ _._._._._._.z v .'.^.'._._._.'.^._.'._._._._.^.'._._._._._.'._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.", -"_._._._._._._._._._.^._._._._._.^._._._._._._._._.^._._._._._._._._._._._._._._._._.^._._._._._._.^._._._._._._._._.^._._._._._.^._._._._._._._._.^._._._._._._._._.^._._._._._._._._.^._._._._._._._._._._.^._._._._._._.^._._.^.'.^.^._.^._._.^._._._._._._._._._._._.~.C ._._._._._.^.v 2 i z v c z i z z c z !.^.'.^.^.^.^.^.'.^._._._._._._._.^.~.D.< . ~._._._._._.^._._._._._._._._._._._.'.A.1 ~.^.'.^._._.Y. _._._._._.'.B | _._._.^.F. . ^._._._._._.v N 3 . .^.'.^._.^._._._.^.^._._._._._._._.^._._._.^._.^._._._.^._._._._._.^._._._._._._._._.^._._._._._._._._.^._._._._.^._._._._._._._._._._._.^._._._._._.^._._._._._._.^._._._._._._._._.^._._._._._._._._._._.^._._._._._._._.^._._._._._._._._._.^.", -"^._.W._.W._.^._._._.W._._._.W._.^._.^._.^._.^._.^._.^._.^._._.^._.^._.^.^._.^._.^._.^._.^._.^._._.^.^._.^._._.^.^.^._._.^._.^._.^._._.^.^._.^._._.^.^._.^._._.^.^._.^._.^._.^._.^._.^._.^._._.^.^.^.^._.^._._._.^._.^._._.^.^._._.^._.^.^._.^._._.^.^._.^._._.^.^._.^._.^._.M.1 3 ^._.^.^._._.N .^._.^.^._.^.^.^._.^.^.^.^.^.'.'.^.'.^._.^.^._.^._._.^.^._.^.~.C M.^.^._.^.^.^._.^._.^._.^._.^.^.^._.^.^.~.C M._.^._.^.^.Y. . ^._.^._.^.^.B C _._.^.W.F. @ _.^._.^._.^.z n . ._.^._.^._.^._.^.^._.^._.^.^._.^.^._.^._.^._.^._.^._.^._.^._.^._._.^.^._.^._._.^.^.^._._.^._.^._.^._.^._.^._._.^._.^.^._.^._._.^.^._.^._.^._.^._.^._.^._.^._.^._._.^.^._.^._._.^.^._.^._.^._.^._.^._.^._._.^._.^.^.^._.^.^._.^._.^._.^._._.^._.^.", -"_.^._._.^._._._.^._._._._.W._._._.^._._._.^._.^.^._._.^._.^.^._.^._.^._._.^._.^._.^._._._.^._.^.^._._.^._.^.^._.^._._.^._.^._.^._.^._._._.^._.^.^._._.^._.^.^._.^._._.^._.^._.^._.^._.^._.^.^._.^._._.^._.^.^._._.^._.^.^._._.^.^._.^.^._.^._.^.^._._.^._.^.^._._.^._.^._.^._.~.N ~._.^._.^.^.b .^.^._.^.^._._._._.^.^.'.^.^.^.^.^.^.^.^._._.^._.^.^._._.^._.^._.A.$ N _._._.^._._.^._._._.^._.^._._._.^._.^._.^.A.: B ^._.^._._.Y. _.^.^.^._.^.C C _.^.^.^.F. $ _._.^._.^._.z N D. .^._.^.^.^._.^._._.^._.^._._.^.^._.^._.^._.^._.^._.^._._._.^._.^.^._._.^._.^.^._.^._._.^._.^._.^._.^._.^._.^.^._.^._._.^._.^.^._._.^._.^._.^._.^._.^._._._.^._.^.^._._.^._.^.^._._.^._.^._.^._.^._.^._.^.^._.^._._._.^._._.^._._._.^._.^.^._.^._.", -"W._._.W._._.W._.W._._.W.W._.^._.^._.^.^.^.^._.^.^.^._.^.^.^._.^._.^.^._.^.^.^.^._.^.^.^.^.^._.^.^.^._.^.^.^._.^._.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^._.^.^.^.^.^._.^.^.^.^.^.^.^.^.^.^._.^.^.^.^.^._.^.^.^.^.^.^.^.^.^.^.^.^._.^.^.^.^.^.^.^.^.^.^.^._.^.^.^.^.^.^.^.^._.^._.^.^.'.@.. . M.^.^.^.^.^.v .^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^._.^.^.^.^.^.^.^.^.^.^.^.~.i 2 ^.^.^.^.^._.^.^.^.^.^.^.^.^.^.^.^.^.^.^._._.!.i 2 ^.^.^._.^.Y. ^.^.^.^.^.^.C C ^.^.^.^.D. $ ^.^.^.^.^.^.v N ^.: .^.^.^.^.^.^.^.^.^.^.^._.^.^.^.^.^.^.^.^.^.^.^._._.^.^.^.^._._.^.^.^._.^.^.^._.^._.^.^._.^.^.^.^._.^.^._.^.^.^._.^._.^.^.^._.^.^.^._.^.^.^.^.^._.^.^.^.^.^.^.^.^.^.^._.^.^.^.^.^.^._.^.^.^.^.^._.^.^.^._.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^._.^.", -"_.W.W._.W._._.W._._.W._._.W.^.W.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.F.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.Y.^.^.A.$ X.^.^.^.^.^.N .^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M._.^.^.C . ~.^.^.^.^.M.M.M.M.M.M.M.M.M.M.M.M.M.M.M.A.^.^.^.V . ^.^.^.^.~.Y. . ^.^.^.^.^.^.V C ^.^.^.^.S. $ ^.^.^.^.^.^.z N ^.B | ^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.W.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.", -"W._.W._._.W._.W.W.W._.W.W._.W._.^.^.^.^.^.W.^.^.^.^.W.^.^.^.^.^.W.^.^.W.^.^.^.^.^.^.W.^.^.W.^.^.^.^.W.^.^.^.^.^.W.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.W.^.^.^.^.^.W.W.^.^.^.^.^.^.W.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.C @.^.^.^.F.$ B ^.^.^.^.^.v .^.^.^.^.^.^.W.^.^.^.^.^.^.^.^.^.. $ ^.^.^.^. . P.W.^.^.^.. $ ^.^.^.^. . Y.W.^.^.W.Y. ^.^.^.^.^.^.C C ^.^.^.^.S. $ ^.^.^.^.^.^.z . N ^.M. .^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.W.^.^.^.^.^.W.^.^.^.^.^.W.^.^.W.W.^.^.^.^.^.W.^.^.W.^.^.^.^.W.^.^.^.^.^.W.^.^.^.^.^.W.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.W.W.^.^.^.^.^.W.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.", -"W.W.W.W.W.W.W.^.W.^.W.^.W.W.W.W.W.^.W.W.W.^.W.^.W.W.^.W.W.^.W.W.^.W.^.W.W.^.W.W.W.W.^.^.W.^.W.^.W.W.^.W.W.^.W.W.^.W.^.W.W.^.W.W.W.^.W.W.^.W.W.^.W.W.^.W.^.W.W.W.^.W.^.W.W.^.W.^.^.W.^.^.W.^.W.^.W.^.W.^.W.^.W.W.^.W.W.^.W.W.^.W.W.^.W.W.^.W.^.V @.W.^.~.^.l. i W.^.W.W.W.N | W.W.W.^.^.^.W.W.^.^.^.E.^.^.^.^. $ W.^.W.^.W.3 M.^.^.W.^. $ ^.W.W.^.^.3 M.W.^.^.^.P. . ^.^.W.^.^.W.C C ^.^.W.^.F. < W.^.W.W.^.^.z N ^.W.. | W.^.W.W.^.W.^.W.W.W.^.^.W.^.W.W.^.W.^.W.W.^.W.^.W.^.W.W.^.W.W.^.W.W.^.W.^.W.W.W.^.W.^.W.^.^.W.W.W.W.^.^.W.^.W.^.W.W.^.W.W.^.W.W.^.W.^.W.W.^.W.W.W.^.W.W.^.W.W.^.W.W.^.W.^.W.W.^.W.W.^.W.^.^.W.W.W.W.^.^.W.^.W.^.W.W.^.W.W.^.W.W.^.W.^.W.W.W.^.W.", -"_.W.W.W.W._.W.W.W.W.^.^.W.^.W.W.^.^.W.^.W.W.^.^.W.^.W.W.^.^.W.^.^.W.W.W.^.W.W.^.W.W.^.W.^.W.^.^.W.^.^.W.^.^.W.W.^.W.^.^.W.^.^.W.^.^.W.^.^.^.W.^.^.W.^.^.W.^.W.^.^.^.W.^.W.^.^.^.W.^.W.^.W.^.W.^.^.W.^.^.W.^.^.W.^.W.^.^.W.^.^.W.^.^.W.^.W.W.W.C @.^.W.^.W.W.$ 2 W.^.W.W.^.N | ^.^.^.W.^.W.^.W.^.W.W.^.W.W.^.W.. $ W.^.^.W.^.X. @.^.W.^.W.. $ E.^.^.W.^.X. @.^.W.^.W.F. . ^.^.W.W.^.~.[ C W.^.W.^.D. < ^.^.W.W.^.^.z N ^.^.z | W.^.W.^.^.W.W.^.W.W.^.W.^.W.^.^.W.^.^.W.^.^.W.^.W.^.W.W.^.W.W.^.W.^.^.W.^.W.^.W.^.W.^.W.W.W.^.W.^.W.^.^.W.^.^.W.^.^.W.^.^.W.^.^.W.^.^.W.^.^.W.^.^.^.W.^.^.W.^.^.W.^.W.^.W.^.W.W.^.W.W.^.W.W.^.W.^.W.^.^.W.^.^.W.^.^.W.^.^.^.W.^.^.W.^.^.W.^.W.^.", -"W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.^.^.W.W.W.W.^.W.W.W.W.W.W.W.W.W.W.W.W.^.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.C m.^.^.W.W.^.z : W.W.W.^.E.z | ^.W.W.W.W.W.W.^.W.W.^.W.W.^.W.W.. $ W.W.W.W.W.Y. X.W.^.E.^.. : ^.^.E.^.W.F. X.W.W.^.E.Y. W.W.^.W.W.^. . C W.W.W.^.S. < ^.E.^.W.^.W.z N W.^.X. .^.W.W.W.W.W.^.W.W.^.W.W.W.^.E.^.^.E.W.^.W.W.^.E.W.W.W.^.W.W.W.W.W.W.W.W.W.W.W.W.^.W.W.W.W.^.^.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.^.W.W.^.W.W.^.W.W.^.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.", -"W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.C @.W.W.W.W.^.V $ ^.W.W.W.^.N | W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.. $ ^.E.^.W.W.W.. .W.W.W.W.. $ E.^.E.^.E.^.. | ^.W.W.W.P. ^.W.W.W.W.W.| C W.W.W.E.S. 2 E.^.E.^.E.W.z N E.^.P. | ^.W.W.^.W.^.E.^.W.W.W.W.W.W.W.W.E.W.W.W.W.^.E.^.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.", -"W.W.W.W.W.W.W.W.W.E.W.W.W.W.W.W.W.W.W.W.W.E.W.W.W.W.W.W.W.W.W.W.W.W.E.W.W.E.W.W.W.W.W.W.W.E.W.W.W.W.E.W.W.E.W.W.W.W.E.W.W.E.W.W.W.W.E.W.W.E.W.W.W.W.E.W.W.W.E.W.E.W.W.W.W.W.W.E.E.W.W.W.W.W.W.E.W.W.W.E.E.W.W.W.E.W.W.W.W.W.E.W.W.E.W.W.W.W.W.[ @.W.W.W.W.W.@. @ W.W.W.W.W.a .W.W.W.W.W.E.W.W.E.W.W.W.W.E.W.E.@ $ E.W.W.E.W.E.< | W.W.E.W.. $ E.E.^.E.W.E.: | W.W.E.^.P. . E.W.E.W.W.W.X. C E.W.W.E.D. i W.E.W.W.E.W.a N W.E.E.3 | E.W.E.E.E.W.W.E.E.W.W.E.W.W.E.W.W.W.E.W.E.E.W.E.W.W.E.W.W.W.W.W.W.W.W.W.W.E.W.W.W.E.W.W.W.W.E.W.W.E.W.W.W.W.E.W.W.E.W.W.E.W.W.W.W.W.W.E.E.W.W.W.W.W.E.W.W.E.W.W.W.W.E.W.W.E.W.W.W.W.E.W.W.E.W.W.W.E.W.W.W.W.E.W.W.E.W.W.E.W.W.W.W.W.E.W.W.E.W.W.", -"W.W.E.W.W.W.E.W.W.W.W.W.E.W.W.W.W.E.W.W.E.W.W.E.W.W.W.W.W.W.W.W.W.W.E.W.E.W.W.W.E.W.W.E.W.W.W.E.W.W.W.W.W.W.W.W.W.W.E.W.W.E.W.W.E.W.W.E.W.W.E.W.E.W.W.W.W.W.W.W.W.W.W.W.E.W.W.W.W.W.W.W.W.E.W.W.W.W.W.W.W.W.W.E.W.W.W.W.W.W.E.W.W.W.W.W.W.E.E. . @.E.W.^.E.E.l. . W.W.W.W.W.N | E.W.W.E.W.W.W.E.W.W.E.W.W.W.W.W.$ $ W.^.E.W.W.E.3 V W.W.W.W.# $ ^.^.E.E.^.E.3 C W.W.^.E.P. W.W.W.W.W.E.@. V W.W.W.W.A. a W.^.E.W.W.W.z N E.^.E.[ | ^.E.W.W.W.W.E.W.W.W.W.E.W.W.^.E.W.W.E.W.W.W.E.W.W.W.E.W.E.W.W.W.E.W.W.E.W.W.W.W.E.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.W.E.W.W.E.W.W.E.W.W.E.W.W.W.E.W.W.W.E.W.E.W.W.W.E.W.W.E.W.W.E.W.E.W.W.W.W.W.W.W.W.W.W.W.E.W.W.W.W.E.W.W.E.W.W.E.W.W.E.W.W.W.E.W.", -"E.E.W.W.W.W.W.E.E.W.E.E.W.W.E.E.E.W.W.E.W.E.W.E.E.W.E.E.E.E.W.E.W.E.W.E.W.W.E.E.W.E.W.E.W.E.W.W.E.W.E.E.E.E.W.E.W.E.W.E.E.W.E.W.W.E.W.E.W.E.W.W.W.W.E.E.E.E.E.E.W.W.R.W.W.W.E.E.W.R.E.W.E.W.E.W.E.E.E.W.E.W.E.W.E.W.E.E.E.W.E.W.E.E.E.W.E.W.E.X. @.W.E.E.W.W.l. @ E.W.W.E.W.a X.W.E.E.W.E.W.E.W.E.W.W.E.E.E.W.E.$ $ W.E.W.E.E.E.3 C W.E.E.W.$ $ E.E.E.W.E.W.i | W.E.E.^.P. . E.E.W.E.W.W.l. V E.W.E.E.A. N W.E.W.E.W.E.z N W.E.^.A. | E.W.E.W.E.E.W.W.W.E.W.W.E.E.E.W.E.E.W.W.E.W.W.E.W.E.W.E.W.W.E.W.W.E.W.W.W.E.E.W.W.W.E.E.E.E.E.E.E.W.E.E.E.W.E.E.E.W.E.W.W.E.W.E.E.E.W.W.E.W.W.E.W.E.W.E.E.W.E.W.W.E.W.E.W.E.W.W.W.W.E.E.E.E.E.E.E.W.E.E.W.W.E.E.E.W.E.W.W.E.W.E.E.E.W.W.E.W.W.E.", -"E.E.E.E.W.E.E.E.W.E.E.E.E.E.E.E.E.E.W.E.E.E.E.W.E.E.W.E.E.E.E.E.W.E.E.E.E.E.E.W.E.E.E.W.E.E.E.E.E.E.E.W.E.E.E.E.E.W.E.E.E.W.E.E.E.E.E.W.E.E.E.E.E.E.E.W.E.E.E.W.W.R.W.W.R.W.E.W.E.W.R.W.E.E.W.W.E.W.W.E.W.E.E.E.E.E.W.E.E.E.E.E.E.W.E.E.E.E.W.@. X.T.E.E.E.W.l. + E.E.T.E.E.N .E.E.E.E.E.E.W.E.E.E.E.E.W.E.E.E.3 O E.E.E.E.E.E.i | E.E.E.E.< . # E.W.E.E.E.E.i | E.E.W.E.P. W.E.E.E.W.E.A. B E.E.E.E.l. V E.E.E.E.E.E.z N E.E.E.E.$ . | E.E.E.W.E.E.E.E.E.E.E.E.E.W.E.E.E.E.W.E.E.E.E.E.E.W.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.W.E.E.E.W.E.E.W.E.E.E.E.E.E.E.W.E.E.E.E.W.E.E.E.E.W.E.E.E.E.W.E.E.W.E.E.E.E.E.E.W.E.E.E.E.E.E.E.W.E.E.W.E.W.E.E.E.E.E.E.E.E.E.W.E.E.E.E.W.E.E.W.E.E.E.E.E.", -"E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.R.W.R.R.W.R.E.E.E.E.W.R.E.E.R.E.E.R.E.E.R.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.A. | E.E.E.E.T.X. $ E.E.E.E.E.N | E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.R.i E.E.E.E.E.W.< X.E.E.E.E.i . E.E.E.E.T.W.: X.E.E.E.E.P. . E.E.E.E.E.E.S. N E.E.E.E.l. [ E.E.E.E.E.E.a N E.E.E.E.N | E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.", -"E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.W.R.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.W.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.W.S. [ E.E.E.E.W.[ 3 R.E.E.E.E.a @ $ $ $ $ $ $ $ $ $ $ $ : E.E.E.T.x E.E.E.E.E.E.. @.E.E.E.E.N E.W.E.E.E.R.O @.E.E.E.E.P. E.E.E.E.E.E.T. i E.E.E.E.X. X.E.E.E.E.E.E.z N E.E.E.E.l. | E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.E.", -"E.E.E.E.R.E.E.E.E.R.E.E.E.E.E.E.E.R.E.E.E.R.E.E.E.E.E.E.E.E.E.R.E.E.E.R.E.E.R.E.E.E.E.E.E.E.R.E.E.E.R.E.E.E.E.R.E.E.R.E.E.E.E.R.R.W.R.E.E.E.R.E.E.E.R.E.E.E.R.E.E.E.E.R.E.E.R.E.E.E.E.E.E.E.E.E.E.E.E.R.E.E.E.E.R.E.E.E.R.E.E.E.E.E.E.E.E.E.E.T.. z E.R.E.E.E.< i R.E.E.E.T.N . . E.E.E.W.X. A.E.R.E.E.A. A.E.E.R.E.| S.T.E.R.E.M. A.E.E.R.E.S. . E.E.E.E.E.E.E.: : E.E.E.T.V S.E.T.E.E.E.E.a N E.E.E.E.T.. | E.E.E.E.R.E.E.E.E.E.E.E.E.E.R.E.E.E.E.E.E.E.R.E.E.E.E.E.E.R.R.E.E.R.E.E.R.E.E.E.E.E.R.E.E.E.E.E.R.E.R.E.E.E.E.E.R.E.E.E.R.E.E.E.E.E.R.E.E.E.R.E.E.E.R.E.E.E.R.E.E.E.E.E.E.E.R.E.E.E.R.E.R.E.E.E.E.E.E.R.E.E.E.E.E.R.E.E.E.E.E.E.E.E.E.E.E.E.R.E.", -"R.E.R.E.E.E.E.R.R.E.R.E.E.R.R.E.R.E.R.E.R.E.R.E.R.E.R.R.R.E.E.R.E.R.R.E.R.R.E.E.R.E.E.R.R.E.E.E.R.E.E.R.R.E.E.R.R.E.E.R.E.R.R.E.R.W.W.R.R.E.E.E.R.E.E.E.E.R.E.R.E.R.R.E.R.E.E.E.R.R.E.R.R.R.E.R.R.E.R.E.E.R.R.E.E.R.R.E.E.E.R.E.R.R.E.R.R.R.E.E.< . P.T.R.E.X. V E.E.R.R.R.z . E.R.E.T.#. N R.T.E.I.< P.R.E.E.E.#. N T.R.R.I.< P.R.E.E.R.P. R.R.R.R.R.E.E.N S.R.E.I.$ @ R.E.R.E.R.E.T.a N E.E.R.E.R.i | E.E.R.E.E.E.R.R.R.R.E.R.R.E.E.E.R.E.R.R.R.E.E.R.E.R.R.E.E.E.R.E.R.E.E.E.E.R.E.R.R.E.E.R.E.R.E.E.R.E.E.R.E.R.R.E.E.R.E.R.E.R.E.R.R.E.R.E.R.E.E.R.R.E.E.E.R.E.E.E.R.E.E.R.R.E.E.E.E.R.E.R.E.E.E.R.R.E.R.E.E.R.R.E.R.E.R.E.R.E.E.R.R.E.R.R.R.E.E.R.", -"R.R.R.R.R.R.R.E.E.R.R.R.R.E.R.R.R.R.E.R.R.R.E.R.R.E.R.E.R.R.E.R.R.R.E.R.R.E.R.R.R.R.R.E.R.R.R.R.R.R.E.R.E.R.R.E.E.R.E.R.R.E.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.E.R.R.R.E.R.R.R.R.R.R.E.R.R.R.E.R.R.R.R.R.E.R.R.E.R.R.R.E.R.R.R.R.E.R.R.E.R.R.R.E.R.R.N $ x [ i @.R.R.E.R.R.N R.R.R.R.P.. i V V $ $ T.R.R.R.R.P.. i V V $ $ E.R.R.R.E.G. . T.R.E.R.E.R.R.@. @ x V < z R.R.E.R.R.R.R.z N R.R.R.R.R.X. [ R.R.R.R.R.R.E.R.R.E.R.E.R.R.R.R.E.R.R.E.R.R.E.R.R.E.R.R.R.R.R.E.R.R.R.R.E.R.E.R.R.R.E.R.R.R.R.R.R.R.E.R.R.E.R.R.R.R.R.E.R.R.R.E.E.R.R.E.R.R.E.R.E.R.R.R.R.R.R.R.R.R.R.E.R.R.R.R.R.E.R.R.R.R.R.R.R.E.R.R.R.E.R.R.R.R.E.R.R.R.R.E.E.R.R.E.E.R.E.R.", -"E.R.R.R.E.R.R.R.R.R.R.E.R.R.R.E.R.E.R.E.R.E.R.R.E.R.R.R.R.E.R.R.E.R.R.E.E.R.R.E.R.E.R.R.E.R.R.E.E.R.R.R.E.R.R.R.R.R.R.E.R.R.R.E.R.R.R.E.R.R.E.R.E.R.R.R.R.E.R.R.R.R.E.R.R.R.R.R.R.R.E.R.R.E.R.E.E.R.R.R.R.R.R.R.R.E.E.R.R.E.R.E.R.E.R.R.R.R.E.R.#. G.R.R.R.R.E.N E.R.R.R.R.i a R.R.E.R.E.R.3 a R.R.T.R.R.P. R.R.R.R.T.R.R.R.$ l.E.R.R.R.R.R.R.z h R.R.R.R.R.P. | R.R.R.T.T.R.R.R.R.E.R.R.R.R.R.E.R.E.R.R.E.R.E.R.R.R.R.E.R.E.R.R.E.R.E.R.R.R.R.R.R.E.R.R.R.E.R.R.E.R.R.R.R.R.R.R.E.R.E.R.R.R.R.R.R.E.R.R.E.R.R.R.R.R.R.R.R.R.R.R.R.E.R.E.R.R.R.R.R.E.R.R.R.R.R.R.E.R.R.R.R.R.R.R.E.R.R.R.R.E.R.R.R.E.R.R.R.R.E.R.", -"R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.I.O < R.R.R.R.R.R.a . R.R.R.R.R.| X.R.R.R.R.R.R.| @.R.R.R.R.R.P. . R.R.R.R.R.R.R.R.| < U.R.R.R.R.R.R.R.a N R.T.R.R.R.R.< [ R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.", -"R.R.R.E.R.R.R.E.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.C | R.R.R.R.R.R.N R.R.R.R.R.I.+ @ U.R.R.R.R.R.R.U.O . R.R.R.R.R.R.G. R.R.R.R.R.R.R.R.R.< S.U.R.R.R.R.R.R.R.a N R.R.R.R.R.R.C | R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.", -"R.R.R.L.R.R.R.L.R.R.R.U.R.R.R.U.R.R.R.R.R.U.R.U.R.R.R.U.R.R.R.R.U.R.U.R.R.U.U.R.U.R.R.R.U.R.U.R.R.R.U.R.R.R.U.R.R.R.U.R.R.R.U.R.R.R.R.R.U.R.R.U.R.R.R.U.R.R.R.R.U.R.R.R.R.R.R.R.U.R.R.R.U.R.U.R.R.R.R.R.R.R.R.R.R.U.R.U.U.R.U.R.R.R.R.R.R.I.R.U.R.K.$ $ I.R.U.R.R.R.R.a . R.R.R.R.R.R.X. | R.R.U.R.U.R.R.R.X. | R.R.R.U.R.R.G. . R.R.R.R.R.R.R.R.R.z. V R.U.R.R.R.R.R.R.R.a N R.R.R.U.R.R.z. [ R.R.R.U.R.R.R.R.U.R.R.R.R.R.U.R.R.R.U.R.R.U.R.R.R.R.R.U.R.R.R.U.R.U.R.R.U.R.U.R.R.R.U.R.R.R.U.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.U.R.R.R.U.R.R.R.R.R.U.R.R.R.R.R.R.R.U.R.R.R.R.U.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.U.R.U.R.R.R.U.R.U.R.R.", -"R.R.U.R.R.R.R.R.R.R.R.R.U.R.U.R.R.R.R.U.U.R.R.R.R.U.R.U.R.R.R.U.R.R.U.R.U.R.R.R.R.R.R.U.R.R.R.R.R.R.R.R.R.U.R.R.R.R.U.R.R.R.R.R.R.U.R.U.R.R.R.R.U.R.U.R.U.R.R.R.R.U.R.U.R.R.R.U.R.U.R.R.R.U.U.R.R.R.U.R.R.R.R.R.U.R.R.R.R.R.R.R.R.R.R.U.R.R.R.R.R.U.z.. . #.U.R.U.R.U.R.R.a . R.R.R.R.R.R.R.N i U.R.U.R.R.R.R.U.R.U.N i L.R.R.R.U.R.U.S. . R.R.R.R.R.U.R.R.U.R.X.. i R.R.R.R.R.R.R.R.R.R.a N R.R.U.R.R.U.R.+ [ U.R.U.R.R.R.R.R.R.R.R.U.U.R.R.R.R.R.R.R.U.R.R.R.U.U.R.R.R.R.R.R.R.R.R.R.R.R.U.R.R.U.R.U.R.R.R.U.R.U.R.U.R.R.R.R.R.R.R.R.U.R.U.R.R.R.R.R.R.U.R.R.U.R.R.U.R.R.U.R.R.U.R.U.R.R.R.U.R.R.U.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.R.U.U.R.R.R.R.U.R.U.R.R.R.R.", -"U.U.R.R.U.U.U.U.U.U.U.U.R.U.R.U.U.U.U.R.R.U.U.U.U.R.R.U.U.U.U.R.U.U.R.U.R.U.U.U.U.U.R.U.U.U.U.U.U.U.U.R.U.R.U.U.U.U.R.R.U.U.U.U.U.R.R.U.U.U.U.U.U.U.U.R.U.U.U.R.R.U.R.U.U.R.R.U.U.U.U.R.R.U.R.U.U.U.R.R.U.U.U.U.R.R.U.U.U.U.U.U.R.U.R.U.U.U.U.U.R.U.R.#.. . @.U.R.U.R.U.U.U.U.N U.U.I.U.U.U.U.L.a . < G.U.R.U.U.U.U.U.R.U.U.K.a 3 K.U.U.U.R.U.R.R.G. U.U.U.R.U.U.R.R.U.R.U.V . 3 G.U.U.U.U.U.U.R.U.U.U.a h R.U.U.R.R.U.U.x [ R.U.R.R.U.U.U.U.U.U.U.R.R.U.U.U.U.U.U.R.R.U.U.U.U.U.U.U.U.U.U.R.U.U.U.U.U.U.U.R.U.R.U.R.U.U.U.U.U.R.U.R.U.U.U.U.U.U.U.R.U.R.U.U.U.U.U.U.U.R.U.R.R.U.R.U.U.R.R.U.R.U.U.R.U.U.U.R.U.U.R.R.U.U.U.U.U.R.U.U.U.U.U.U.U.U.U.R.R.U.U.U.U.R.R.U.U.U.U.U.", -"U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.R.U.U.U.R.U.R.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.z.$ $ 9.U.U.U.U.U.U.U.U.U.z . U.U.U.U.U.U.U.U.U.[ N K.U.U.U.U.U.U.U.U.U.U.U.U.U.V . h L.U.U.U.U.U.U.U.U.S. U.U.U.U.U.U.U.U.U.U.U.U.X.. a K.U.U.U.U.U.U.U.U.U.U.U.a N U.U.U.U.U.U.U.@. [ U.U.U.U.U.U.U.U.U.U.U.U.U.R.U.R.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.", -"R.L.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.L.U.U.L.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.K.V . x G.U.U.U.U.U.U.U.U.U.U.h U.U.U.U.U.U.U.U.U.U.z.< $ @.L.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.A.< $ @.U.U.U.U.U.U.U.U.U.U.G. . U.U.U.U.U.U.U.U.U.U.U.L.L.z.< O @.L.U.U.U.U.U.U.U.U.U.U.U.U.a N U.U.U.U.U.U.U.K.. [ U.U.U.U.U.U.U.U.U.U.U.U.L.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.", -"L.L.R.L.U.L.U.U.U.L.U.U.U.L.U.U.L.U.U.L.U.U.U.L.U.U.U.L.U.U.L.U.U.L.U.U.L.U.U.U.U.L.L.U.U.L.L.U.U.U.L.U.U.U.L.U.U.U.L.U.U.U.L.U.U.L.L.U.U.U.U.L.U.L.U.U.L.U.U.L.U.L.U.U.U.L.U.L.U.L.U.U.L.U.U.L.U.U.L.U.U.L.U.U.U.U.L.U.U.U.L.L.U.L.L.U.U.L.L.U.U.L.L.U.L.L.U.S.x @ . h A.U.U.L.U.U.U.L.U.U.L.U.U.a . . L.U.U.U.L.U.U.U.U.L.U.K.@.3 . : } L.U.L.U.U.L.L.U.U.L.L.U.L.L.U.U.U.U.L.L.@.3 . < } U.U.L.U.U.L.U.U.U.U.L.U.S. U.U.U.L.U.L.L.U.U.L.U.U.L.L.U.X.$ . V G.L.L.U.U.L.U.U.U.U.L.U.U.L.U.a N U.U.L.L.U.U.L.U.i [ U.L.U.U.U.L.U.U.L.U.U.L.U.U.U.L.U.U.L.U.U.U.U.L.U.J.U.U.J.U.U.J.U.U.L.U.U.L.L.U.U.U.U.U.L.U.L.L.U.U.U.L.L.U.L.L.U.L.L.U.U.U.U.L.U.L.U.U.L.U.U.L.L.U.U.L.U.U.L.U.L.U.L.L.U.U.L.U.U.L.U.U.U.L.U.U.U.U.L.U.U.L.U.U.U.L.U.L.U.L.L.U.U.U.U.L.U.U.L.U.", -"L.U.R.L.U.L.U.L.L.U.U.L.U.L.U.L.U.L.L.U.U.L.U.L.L.L.U.U.U.L.L.U.U.L.L.U.U.U.L.L.L.U.U.U.L.U.U.U.L.U.L.U.L.U.U.L.L.U.L.U.L.U.U.L.U.U.U.U.U.U.U.U.U.L.U.L.U.U.L.U.U.U.L.U.U.U.U.U.L.U.U.L.U.U.L.U.L.U.L.U.L.U.U.L.L.U.U.L.L.U.U.U.U.U.U.U.L.U.U.U.U.U.U.U.U.U.U.L.U.K.@.a O # a X.K.L.U.L.L.U.U.L.U.L.L.U.U.U.U.z.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.U.U.L.L.U.U.L.L.U.U.L.L.U.L.z.[ 3 < V 9.U.U.U.L.U.U.L.U.U.U.L.U.U.U.U.U.U.L.L.U.U.L.L.L.9.[ 3 . < V 9.U.U.U.U.U.L.U.U.U.L.L.L.U.U.L.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.U.U.L.U.U.U.U.L.L.U.U.U.U.U.U.U.L.#.x : # u @.K.U.L.L.U.U.L.U.U.L.L.U.U.L.L.U.L.S.z.9.z.z.z.z.z.9.z.z.9.z.9.S.L.U.U.U.L.L.U.U.S.9.z.z.z.9.9.z.z.z.z.9.z.9.z.G.L.U.U.L.L.U.U.L.U.L.L.U.U.L.U.L.L.L.U.U.U.L.L.U.U.L.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.J.U.U.U.U.U.U.U.L.U.U.U.U.U.U.U.U.U.U.L.U.U.L.U.U.L.U.U.L.U.U.U.L.U.L.U.U.L.U.U.U.U.L.L.U.U.L.U.U.L.L.U.U.L.L.U.U.L.L.U.U.L.U.U.U.U.U.U.U.U.L.L.U.U.U.L.L.U.", -"U.L.L.L.L.U.U.L.U.L.L.L.L.U.U.L.L.U.L.U.L.U.L.U.L.U.U.L.U.L.L.U.L.U.L.U.L.L.L.U.U.L.U.L.U.L.U.L.U.L.L.U.L.U.U.L.U.L.L.U.L.U.U.L.L.L.U.L.L.U.L.L.L.U.U.L.L.L.L.U.L.L.U.L.L.U.L.L.L.U.U.L.L.L.L.U.U.L.L.U.L.U.U.L.U.L.L.U.U.L.L.L.L.L.U.L.U.L.U.L.L.L.U.L.L.U.L.L.U.L.L.L.U.S.#.[ V x h N x V [ #.S.L.L.L.L.U.U.L.U.L.L.L.L.U.L.L.L.U.U.L.L.U.U.L.U.L.L.U.L.L.L.L.L.U.U.L.L.U.L.U.U.L.L.U.U.L.L.L.L.U.L.L.L.U.U.L.U.L.L.U.L.U.U.L.J.L.L.z.X.V l N x h V V X.9.G.L.L.U.L.U.L.L.L.L.U.L.U.L.U.L.U.L.L.U.L.L.L.U.L.U.L.U.L.L.U.J.z.} V x x x x x V X.9.G.U.L.L.U.L.K.L.L.L.U.L.L.L.U.U.L.U.L.L.L.U.L.U.L.U.L.L.U.L.U.L.L.L.U.U.L.L.U.U.L.L.U.L.U.L.L.L.L.U.L.L.L.U.L.U.G.#.} x N x h x x [ @.S.L.U.U.L.U.U.L.L.L.L.U.L.U.L.U.L.U.L.U.L.U.L.U.L.L.L.U.L.U.U.L.L.U.L.L.U.L.L.U.L.U.L.L.L.U.L.U.L.U.L.U.L.U.U.L.L.U.L.U.L.L.L.L.L.U.U.L.L.U.L.U.L.U.L.U.L.U.U.L.L.U.U.L.U.U.U.U.U.U.U.U.L.L.U.L.L.L.U.L.U.U.U.U.U.L.L.U.L.U.U.L.U.L.L.L.L.L.U.L.L.U.L.L.L.U.U.L.L.L.L.U.L.L.L.U.U.L.L.U.U.L.L.U.U.L.L.L.U.L.L.L.L.U.U.L.U.L.L.U.L.U.U.L.L.L.U.L.L.L.U.L.L.U.U.L.L.U.L.U.", -"L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.J.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.U.L.L.U.L.U.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.U.J.J.U.J.J.U.L.L.L.L.L.L.L.L.J.J.U.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.U.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.", -"L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.J.L.J.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.J.J.L.L.L.L.J.L.J.L.L.L.L.L.L.J.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.J.L.J.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.J.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.J.L.L.L.J.L.L.L.L.L.L.L.L.J.L.L.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.J.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.J.L.L.L.L.L.L.L.L.J.L.J.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.J.L.L.L.J.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.J.L.L.L.L.J.L.L.L.L.J.L.J.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.J.U.J.J.U.J.U.U.J.J.U.J.U.U.J.J.U.J.U.U.J.U.J.J.U.L.J.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.", -"L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.J.L.L.L.L.L.L.L.L.L.L.J.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.J.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.J.L.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.L.J.L.L.L.L.L.J.K.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.J.U.U.J.J.J.J.U.J.J.U.J.J.U.J.J.U.J.J.U.J.U.U.J.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.J.L.J.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.", -"J.L.L.L.L.J.J.L.L.J.L.J.J.L.J.J.J.L.L.J.J.L.L.L.J.L.J.J.J.L.J.L.L.J.J.L.J.L.J.L.J.L.L.L.J.L.L.L.J.L.J.L.J.L.J.L.L.L.J.L.J.L.J.L.L.L.J.L.L.L.L.L.J.L.J.L.J.L.L.L.L.J.J.L.L.L.L.L.J.L.J.L.L.J.L.L.H.L.H.L.J.L.J.L.L.L.J.L.L.L.L.L.J.L.L.L.L.J.L.J.L.L.L.L.L.L.L.J.L.J.L.J.J.L.J.J.J.J.L.J.J.L.L.L.J.J.L.J.J.L.J.L.L.J.L.J.J.J.L.J.J.L.L.J.L.J.J.L.L.L.L.J.L.L.J.L.L.L.L.J.L.J.J.L.L.L.L.J.L.L.J.L.L.L.L.L.L.L.J.L.L.L.J.L.J.L.J.L.J.L.L.L.J.L.J.L.J.L.J.L.J.L.L.J.L.L.L.L.L.L.L.L.J.L.J.L.L.J.L.J.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.J.L.L.J.J.L.L.L.J.L.J.J.J.L.J.L.L.J.L.J.J.J.L.J.J.L.L.J.J.L.L.L.L.J.L.J.J.L.L.J.L.L.L.L.L.L.J.L.L.L.L.L.L.L.L.L.L.J.J.L.L.J.L.J.J.L.L.L.J.L.J.L.L.L.J.L.L.L.L.J.L.J.J.L.J.L.J.L.J.L.L.L.J.L.L.L.L.J.L.J.J.L.L.L.J.J.L.L.L.J.J.L.L.L.L.L.L.L.L.L.J.L.L.L.L.J.L.J.J.L.J.L.J.L.L.J.L.J.J.L.J.L.J.L.J.L.L.L.J.L.L.L.J.L.J.L.J.L.L.J.U.J.J.U.U.J.U.J.U.J.U.J.J.U.J.U.J.U.J.J.J.J.J.J.L.L.L.L.L.L.L.L.L.L.J.L.L.L.L.L.J.L.J.L.L.J.L.L.J.L.J.L.L.J.L.J.L.L.L.J.L.L.J.L.H.J.L.L.H.L.H.L.L.J.J.L.J.L.J.L.J.L.L.J.J.L.L.L.J.L.J.J.J.L.J.L.", -"J.J.J.J.J.L.J.J.J.L.J.L.J.L.J.L.J.J.J.L.J.J.J.L.J.L.J.L.J.L.J.J.J.L.J.L.L.J.J.L.J.J.J.L.J.J.J.J.J.L.J.L.J.J.L.J.J.L.J.L.L.J.L.J.J.J.J.J.J.J.J.J.J.L.J.J.L.J.J.J.J.L.J.J.J.J.J.J.J.L.J.J.L.J.J.J.L.L.L.L.J.L.L.H.J.J.L.L.J.J.J.J.J.J.J.J.L.J.L.J.J.J.J.J.J.J.J.L.L.J.J.L.J.L.J.L.J.L.J.L.J.J.J.L.J.L.J.L.J.L.J.J.L.J.J.L.J.L.J.L.L.J.L.J.J.L.J.L.J.J.J.L.J.L.J.J.J.J.L.J.J.L.J.J.J.J.J.L.J.L.J.J.J.J.J.J.J.J.J.J.J.L.J.L.L.J.J.L.J.J.J.J.L.J.L.J.L.J.J.L.L.J.L.J.J.J.J.J.J.J.J.J.L.J.L.J.J.L.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.L.J.L.J.L.J.L.J.J.L.J.J.L.J.L.J.L.J.J.J.L.J.J.J.L.L.J.L.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.L.J.J.L.J.L.J.J.J.J.L.J.L.J.J.J.L.J.J.J.L.J.J.L.J.L.L.J.J.L.J.J.J.L.J.J.J.L.J.L.J.L.J.J.J.L.J.L.J.J.J.L.J.J.J.J.J.L.J.J.J.J.J.J.J.J.L.J.L.J.L.J.J.L.L.J.L.J.J.L.J.L.L.J.J.L.J.J.J.L.J.J.J.J.J.L.J.L.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.U.J.J.J.J.J.U.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.L.J.J.J.J.J.L.J.J.L.J.L.J.J.L.J.J.L.J.J.L.L.H.L.L.L.J.L.J.L.J.L.J.L.J.L.J.J.J.L.J.J.J.L.J.L.J.L.J.L.J.J.", -"J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.L.L.H.J.H.L.H.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.H.L.H.H.H.L.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.", -"J.L.J.J.J.J.L.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.H.L.L.J.L.H.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.L.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.L.J.J.J.J.L.J.L.J.J.J.J.J.L.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.L.J.L.L.L.H.L.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.", -"J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.L.H.H.J.L.H.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.c.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.c.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.L.H.L.H.H.J.L.H.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.J.", -"c.J.J.c.J.J.J.c.c.J.J.J.J.c.J.c.J.c.J.J.c.J.J.J.c.J.c.J.J.J.c.J.H.J.H.J.H.J.J.H.J.J.J.H.J.J.H.H.J.J.H.J.H.J.H.J.H.J.H.J.H.J.J.H.J.J.J.H.H.J.H.J.J.J.H.J.J.H.J.H.J.J.H.J.H.J.H.J.J.J.H.J.J.H.J.H.J.H.H.H.L.H.L.H.J.J.H.J.H.J.H.J.H.J.H.J.J.H.J.H.J.H.J.J.H.H.J.J.J.H.J.H.J.H.H.J.H.J.H.J.J.H.J.J.J.H.J.H.J.H.J.H.J.H.J.J.J.H.J.J.J.H.H.J.J.J.J.H.J.H.J.H.J.J.H.J.J.H.J.H.J.J.H.J.J.H.J.H.J.J.H.J.J.H.J.H.J.H.J.J.H.J.H.J.H.J.J.H.J.J.J.H.J.H.J.H.J.J.H.J.H.J.H.J.J.J.H.H.J.J.H.J.H.J.H.J.J.H.J.J.J.H.J.H.J.H.J.J.J.J.J.c.J.J.J.J.J.H.J.H.J.J.H.J.H.J.H.J.H.J.H.J.J.H.H.J.J.H.J.H.J.H.J.J.H.J.H.J.H.J.H.J.H.J.H.J.H.J.J.H.J.H.J.H.J.J.J.c.J.J.c.J.J.J.c.J.J.c.J.J.H.J.J.H.J.H.J.H.J.J.H.J.H.J.H.J.H.J.H.J.H.J.J.H.J.J.J.H.J.J.H.J.H.H.J.J.H.J.H.J.H.J.J.H.J.J.J.H.J.J.J.J.c.J.c.J.J.J.c.J.J.c.J.J.J.J.H.J.H.J.H.J.c.J.J.J.c.J.J.c.J.J.J.c.J.J.J.c.J.J.c.J.J.J.c.J.J.H.J.H.J.J.J.J.H.J.H.J.H.J.H.J.H.J.H.J.H.J.J.H.J.J.H.J.H.J.H.J.J.H.J.H.H.J.H.J.J.H.J.H.H.J.H.J.H.J.H.J.J.H.J.H.J.H.J.H.J.J.H.J.J.H.H.H.L.H.L.H.H.J.H.J.J.H.J.H.J.H.J.H.H.J.H.J.H.J.H.J.H.J.J.H.", -"J.J.J.c.c.J.J.J.c.J.c.J.J.J.c.J.J.H.H.H.J.H.H.H.J.J.H.J.H.J.H.H.H.H.J.H.H.H.J.J.H.H.H.J.H.H.H.J.H.H.H.J.H.H.H.H.J.H.H.J.H.H.H.J.H.J.H.H.H.J.H.H.H.J.J.H.H.H.H.H.H.J.H.H.H.J.H.H.H.J.J.H.H.H.H.H.H.H.H.H.J.L.H.H.J.H.H.H.J.H.J.H.J.J.H.H.H.H.J.J.H.J.H.J.H.H.J.H.H.H.J.c.J.J.H.J.c.c.J.J.c.J.J.J.c.J.c.J.J.J.c.J.J.H.J.J.H.H.H.H.c.J.J.J.H.J.J.J.H.J.J.H.J.c.c.J.H.J.J.H.H.H.J.H.c.J.J.J.J.c.c.J.H.H.J.H.J.H.H.H.J.H.H.H.J.J.H.J.J.H.H.J.H.H.H.H.J.J.H.J.H.H.J.J.H.H.J.H.c.J.J.J.H.H.H.H.J.J.H.J.H.H.J.H.H.J.H.J.H.H.J.H.J.J.c.c.H.H.H.H.J.J.H.J.H.H.J.J.H.J.H.J.H.H.H.J.H.J.H.H.H.J.J.H.H.H.J.H.J.c.J.J.J.c.J.c.J.J.J.c.J.c.J.J.c.J.c.J.J.J.c.J.c.J.J.J.J.c.c.J.H.H.H.J.H.H.H.J.H.H.J.H.H.J.H.J.H.H.J.H.J.J.c.c.J.J.J.J.c.c.J.J.J.J.c.c.J.J.J.J.c.c.J.J.c.J.J.J.c.J.c.J.J.J.c.J.c.J.J.J.c.J.c.J.H.J.H.H.J.H.H.H.J.H.H.H.J.J.H.H.J.J.c.c.J.J.J.J.c.c.J.J.J.c.J.J.J.c.J.J.J.H.J.J.c.J.c.J.J.J.c.J.J.H.H.H.J.H.J.H.J.J.H.H.H.H.J.H.H.J.J.H.H.J.J.H.H.J.J.H.H.H.H.J.H.J.J.H.H.J.J.H.H.J.J.H.H.J.J.H.H.H.H.H.J.L.H.H.H.H.H.H.H.H.J.H.H.H.H.H.H.H.H.H.H.J.H.L.H.H.J.H.", -"J.c.J.J.J.J.c.J.c.J.J.J.c.J.c.J.H.H.J.H.H.J.J.H.H.H.H.H.H.J.H.J.J.H.H.J.J.H.H.H.H.J.H.J.H.J.H.H.H.H.H.H.H.J.J.H.H.J.H.H.H.H.H.H.H.H.J.J.H.H.H.H.J.H.H.H.J.J.H.H.H.H.J.J.H.H.H.H.H.H.H.H.J.J.H.H.H.J.J.H.H.H.H.H.H.H.J.H.J.H.H.H.H.H.H.J.J.H.H.H.H.H.H.J.H.J.J.H.J.J.H.J.J.c.J.J.J.J.J.c.J.J.c.J.c.J.J.H.c.J.H.J.H.J.H.H.H.J.J.H.J.J.c.J.J.J.c.c.H.J.c.J.J.J.J.J.H.H.H.J.J.J.H.J.J.J.c.c.J.J.J.J.J.H.J.H.H.H.J.H.H.J.J.H.H.H.H.H.H.H.J.H.H.J.J.H.H.H.H.H.J.H.H.H.J.H.J.H.J.H.H.H.H.J.J.H.H.H.H.H.J.H.H.J.H.H.H.J.J.H.J.H.c.J.J.J.H.J.J.H.H.H.H.H.J.H.H.H.H.H.H.J.H.J.J.H.H.J.H.J.H.H.H.J.J.H.J.H.J.J.J.c.J.J.J.J.J.c.J.J.J.c.J.H.c.J.J.H.c.J.c.J.J.J.c.J.J.J.J.J.H.J.J.H.H.J.H.H.H.H.H.J.H.H.H.J.H.J.J.H.c.J.J.J.J.c.c.J.J.J.J.c.c.J.J.J.J.c.c.J.J.J.J.c.J.J.c.J.c.J.J.J.c.J.c.J.J.J.c.J.c.J.J.J.H.H.H.J.H.J.J.H.H.J.J.H.H.H.H.J.c.J.J.J.J.c.c.J.J.J.J.c.J.c.J.c.H.J.J.c.J.c.c.J.c.J.J.H.c.J.c.J.H.H.J.H.J.H.H.H.H.H.H.J.J.H.H.J.H.H.H.H.J.H.H.J.J.H.H.H.J.J.H.H.H.H.H.H.J.H.H.H.H.H.H.H.J.H.H.H.H.J.J.H.H.H.H.H.H.H.H.L.J.H.H.H.L.H.H.J.H.H.H.J.H.H.H.J.H.H.J.H.", -"J.c.c.J.J.c.J.c.J.c.J.c.J.c.J.c.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.J.c.H.J.H.c.J.c.H.J.H.H.J.c.c.J.J.J.c.J.c.J.c.J.H.H.c.J.H.J.H.J.c.J.J.c.c.J.J.J.H.J.J.H.c.J.J.c.H.H.H.H.c.J.H.H.J.c.J.J.c.J.J.c.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.J.H.H.H.H.J.c.J.H.J.H.J.H.H.H.H.J.H.H.H.H.H.H.H.H.H.c.J.c.J.c.J.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.J.H.H.H.H.H.H.H.J.H.H.H.J.c.J.c.c.c.J.c.J.c.c.J.J.J.c.J.J.J.c.J.c.J.J.c.J.c.J.c.c.c.J.c.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.c.J.J.J.J.J.c.J.c.J.J.c.c.J.J.J.J.J.J.J.J.J.J.c.J.c.J.c.J.J.J.J.J.J.J.c.J.c.J.c.J.c.J.c.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.c.J.c.J.c.J.c.J.c.J.c.J.J.J.c.J.c.J.H.H.J.J.J.c.J.c.J.J.J.c.J.c.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.", -"c.J.c.c.c.J.c.J.c.J.c.J.c.J.c.J.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.c.J.c.c.c.J.c.J.c.c.J.c.H.c.J.H.c.H.J.c.J.c.J.c.H.H.H.H.c.H.c.H.J.c.c.J.c.c.c.H.c.c.c.H.H.c.H.H.H.H.H.H.H.c.H.H.J.c.c.c.J.c.c.J.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.c.c.H.H.H.H.H.H.c.H.c.H.c.J.c.H.H.H.c.J.H.H.H.H.H.H.H.c.J.c.J.c.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.c.H.H.H.H.H.H.H.c.H.H.c.c.J.c.J.c.J.c.J.c.J.c.c.c.H.H.H.c.H.H.H.H.H.c.J.c.J.c.J.c.J.c.J.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.J.c.c.c.c.c.J.c.J.c.J.c.J.c.c.c.c.c.c.c.c.c.J.c.J.c.c.J.c.c.c.c.c.c.c.J.c.J.c.J.c.J.c.J.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.J.c.J.c.J.c.J.c.J.c.J.c.c.H.H.H.J.c.J.c.c.H.c.J.c.J.c.H.c.J.c.J.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.", -"c.J.J.c.c.J.J.c.c.J.c.J.c.c.c.J.H.H.c.H.c.H.c.H.H.H.H.c.H.H.H.c.H.c.c.H.H.c.c.H.c.H.c.H.H.H.c.H.H.H.h.H.H.H.H.H.H.H.H.H.H.h.H.H.H.H.c.H.H.H.c.H.H.H.c.H.c.H.H.H.H.H.c.H.H.H.c.H.H.H.c.H.c.H.H.H.c.H.c.H.H.H.H.c.H.H.c.H.c.H.c.H.H.H.H.H.c.H.H.H.c.H.c.H.c.c.H.H.c.J.c.J.c.H.c.H.H.c.J.c.c.J.J.c.c.J.c.J.c.H.c.H.H.H.c.H.H.H.H.H.c.J.c.c.J.c.c.c.H.J.c.c.J.c.c.H.c.c.H.H.H.H.c.H.c.J.c.c.J.c.c.c.H.c.H.H.H.c.H.H.c.H.c.H.H.c.H.H.H.H.c.H.c.H.c.H.H.H.H.H.c.H.H.H.H.c.H.c.H.H.J.c.c.H.c.H.H.J.c.c.H.c.H.H.J.c.c.c.c.H.H.H.c.H.c.J.c.H.c.H.H.c.H.H.H.H.c.H.c.H.c.H.c.H.H.H.c.H.H.H.H.H.H.H.H.H.H.c.c.c.J.c.J.c.c.c.c.J.c.c.J.c.J.c.J.J.c.c.c.x.H.c.J.c.c.c.H.c.H.c.c.H.c.H.H.H.c.H.c.H.H.H.H.H.H.H.H.H.H.c.H.H.c.J.J.c.J.c.c.J.c.c.J.c.c.J.H.H.H.H.c.c.c.J.c.c.J.c.c.J.c.c.c.J.c.c.J.c.c.c.c.J.c.J.H.H.H.c.H.H.H.c.H.H.H.H.c.H.c.H.c.J.c.J.J.c.J.c.c.c.c.H.c.J.J.c.c.c.J.c.c.J.J.c.J.c.J.c.c.c.J.c.H.H.c.H.c.H.c.H.H.H.H.c.H.c.H.c.H.H.H.H.h.H.H.H.h.H.h.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.H.c.c.H.H.H.H.H.H.H.H.H.H.H.H.c.H.H.c.H.c.H.H.H.c.H.", -"c.c.c.c.c.c.c.c.c.c.c.c.c.J.c.c.c.c.H.c.H.c.H.c.c.c.c.H.c.c.c.H.H.c.H.c.H.c.H.c.c.H.c.H.c.H.c.c.H.h.H.H.h.H.h.c.H.H.H.h.H.H.H.h.H.H.c.c.c.c.H.c.H.c.H.c.H.c.c.c.H.H.c.c.c.c.H.c.H.H.H.c.H.c.c.c.H.c.H.c.H.H.h.H.c.c.H.c.H.c.H.c.c.c.c.c.H.c.c.c.c.H.c.c.c.H.c.c.H.c.c.c.H.c.H.c.H.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.H.c.c.c.c.c.c.c.c.c.c.c.c.J.c.c.c.H.c.c.H.c.c.H.c.c.c.c.H.c.c.c.J.c.c.c.J.c.H.c.c.c.H.c.c.c.c.H.c.H.c.H.c.c.c.c.H.c.H.c.H.c.c.c.c.c.c.c.c.H.c.H.x.H.c.c.c.c.H.c.H.c.c.c.c.H.c.c.c.c.c.c.c.c.c.c.c.H.c.c.c.J.H.c.H.c.c.H.c.c.c.c.H.c.H.c.H.c.c.c.c.c.H.c.c.c.c.c.c.c.c.c.H.c.J.c.c.c.c.c.c.c.c.c.J.c.c.c.c.c.0.o.l x h a i h x l o.9.x.H.c.H.H.c.H.c.H.c.H.c.H.c.c.c.c.c.c.c.c.c.H.J.c.c.c.J.c.c.c.J.c.c.J.c.c.J.c.c.c.c.c.H.J.c.c.J.c.c.c.c.c.c.c.c.c.c.c.J.c.c.J.c.c.c.c.c.c.c.c.H.c.c.H.c.c.c.c.c.H.c.H.c.c.c.c.c.c.c.c.c.c.c.c.J.c.c.c.c.H.c.c.c.c.c.c.c.c.c.c.H.c.H.c.c.c.H.c.H.c.H.c.H.c.c.H.c.c.H.H.c.h.H.H.h.H.H.H.h.H.H.h.H.H.h.h.H.h.H.H.h.H.h.h.H.h.H.H.h.H.h.h.H.c.c.c.c.H.H.c.H.H.c.c.c.c.c.c.c.H.H.c.c.H.c.c.c.c.H.c.H.H.H.c.c.", -"c.J.c.c.c.c.J.c.c.J.c.c.c.J.c.c.c.H.c.c.c.c.c.H.H.c.H.c.H.c.H.c.c.H.c.H.c.H.c.H.H.c.H.c.c.H.H.c.H.H.H.H.H.H.H.H.c.H.c.H.h.H.H.H.c.H.H.c.c.H.c.H.c.H.c.c.c.H.H.c.c.H.H.c.c.H.c.H.c.H.c.c.c.H.H.c.c.c.H.H.H.H.7.} } } } } } } } } } } } } } } } } } } } } 9.H.H.c.c.H.H.c.s.{ } } } } } } } } } } } } } } } } } } } } } H.c.H.c.c.c.c.J.c.J.c.0.} } } } } } } } } } } } } } } } } } } } } } } } 0.c.H.c.H.c.H.c.H.H.c.c.c.o.} } } } } } } } } } } } } 0.c.H.c.H.c.c.H.c.H.} } } } } } } } } } } } } } s.J.c.c.c.c.H.c.H.c.H.s.} } } } } } } } } } } } } } } } } } } } } } } } 9.c.c.c.c.H.H.c.c.H.c.c.J.c.c.c.c.c.c.J.c.c.c.9.a O r } s.c.c.c.H.c.H.c.c.c.H.H.c.c.H.c.H.x.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.0.c.c.c.c.c.9.} } } } } } } } } } } } o.o.+.+.+.9.0.0.0.s.s.H.c.c.c.c.c.J.c.H.c.c.c.c.J.c.c.c.c.c.J.c.c.H.c.H.c.c.J.c.c.c.c.c.c.J.H.c.H.c.c.H.H.c.c.c.c.H.c.H.c.H.c.H.h.H.H.h.H.h.h.H.H.H.H.H.H.H.H.H.h.H.H.h.H.H.H.H.h.H.H.h.H.H.H.H.c.H.H.c.H.c.c.H.H.c.H.c.c.H.H.c.c.H.c.H.c.H.c.H.H.c.H.c.c.H.H.c.", -"c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.H.c.H.c.c.c.H.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.h.H.h.h.H.h.h.H.h.H.h.H.H.h.h.H.c.c.c.c.H.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.H.c.c.c.c.c.c.c.c.c.c.c.c.c.h.H.h.H.a h c.c.c.c.c.c.H.o. s.c.c.c.c.c.c.c.c.c.c.{ x c.c.c.c.c.c.c.c.c.c.c.c.@ a c.c.c.c.c.c.c.c.s. 9.c.c.c.c.c.c.c.c.c.c.o. p c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.o.: . x 0.H.c.c.c.c.c.c.c.c.c.c.c.c.H.s. X [ c.c.c.c.J.l . $ < a l +.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.H.H.h.H.H.h.H.H.h.h.H.h.h.H.h.h.H.H.h.H.h.H.h.h.H.H.h.H.h.H.h.h.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.H.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.", -"c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.g.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.h.c.c.c.c.c.c.c.c.c.c.c.h.c.c.c.H.h.H.H.h.h.H.h.h.c.H.h.H.h.h.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.h.c.c.p , c.c.c.c.c.h.c.[ s.c.c.c.c.c.c.c.c.c.c.h u c.c.c.c.c.c.c.c.c.c.c.c.O @ s.c.c.c.c.c.c.c.s. 0.c.c.c.c.c.c.c.c.c.c.{ > c.c.c.c.c.c.c.c.h.c.c.c.c.c.c.c.c.c.0.r . h s.h.h.x.c.c.c.c.c.c.c.h.c.x. { c.c.c.c.c.l @ l x.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.h.c.c.c.c.c.c.c.c.c.c.c.c.c.h.h.H.h.H.H.h.h.h.H.h.h.h.H.h.H.h.h.H.h.H.H.h.h.h.H.h.H.h.H.h.H.c.c.c.c.c.c.c.c.c.c.c.c.c.h.c.c.c.c.c.c.c.c.c.c.c.c.c.c.h.c.c.c.", -"g.c.c.c.g.c.c.c.c.c.c.c.c.c.c.c.c.h.h.c.c.h.h.c.c.h.c.h.h.c.h.c.c.c.h.c.h.c.h.c.c.h.c.c.c.h.h.c.h.h.h.h.h.H.h.h.H.h.h.H.h.h.H.h.c.c.h.c.c.h.c.h.c.h.h.c.c.h.h.c.c.c.h.c.c.h.c.h.c.h.h.c.c.h.h.c.h.c.h.c.c.h.a $ c.c.c.c.c.c.h.h s.c.h.h.h.c.c.h.c.c.h.u < h.h.c.h.h.c.h.c.c.c.c.h.O +.c.h.c.h.c.c.c.s. 9.h.c.h.c.h.h.c.h.c.h.x @ h.c.c.c.h.h.c.h.c.c.c.g.c.c.c.c.c.o.. < 0.h.h.c.h.c.c.h.c.c.c.h.s. { h.c.c.c.c.l $ 7.c.h.c.c.h.c.h.h.c.h.c.h.c.h.c.c.h.c.h.c.c.c.h.h.c.c.h.c.c.c.h.h.c.c.h.h.c.h.c.c.h.c.h.h.H.h.h.h.h.h.H.H.h.h.H.h.h.H.h.h.H.h.h.h.h.h.H.H.h.h.h.h.h.H.h.c.g.c.c.c.h.g.c.c.c.c.g.c.c.c.g.g.c.h.c.c.c.c.g.c.c.c.c.c.h.g.c.", -"c.c.g.c.c.c.c.g.c.c.c.g.c.g.c.c.c.c.c.c.h.h.c.c.h.c.c.c.c.h.c.h.h.c.h.c.c.c.c.h.h.c.h.h.c.c.c.h.h.H.H.h.h.H.h.H.h.h.c.h.h.H.h.H.h.h.c.c.h.c.c.h.c.c.c.c.h.h.c.c.h.h.c.c.h.c.c.h.c.c.c.c.h.h.c.c.c.c.c.c.c.c.p s.h.c.c.h.h.c.u x.c.c.h.c.c.h.c.c.c.c.: c.h.c.c.c.h.h.c.c.c.c.c.O p h.c.c.c.c.h.c.s. 7.c.h.c.h.c.c.h.h.c.c.r s.c.c.h.c.c.c.c.c.c.c.g.c.g.c.g.[ . +.c.h.c.h.h.c.c.h.h.c.x. { c.h.c.c.c.l . o.c.c.h.c.c.c.c.h.c.h.c.h.c.h.h.c.c.c.c.c.c.c.c.c.h.c.c.h.h.c.c.c.c.c.c.h.c.h.h.c.c.c.h.H.h.H.h.h.h.h.H.h.h.h.H.h.H.h.h.H.h.H.h.h.h.h.H.h.h.h.H.h.h.h.c.c.c.h.c.c.c.c.g.c.c.c.c.h.c.h.c.c.c.h.g.c.c.c.g.h.c.c.c.c.c.c.", -"c.g.c.c.c.g.c.c.c.c.c.c.c.c.c.g.h.h.h.h.h.c.h.h.h.h.h.h.c.h.c.h.h.h.c.h.h.h.h.h.h.c.h.c.h.h.c.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.c.h.h.c.h.h.h.h.c.h.h.h.h.h.h.c.h.h.h.c.h.h.h.h.c.h.h.h.h.h.h.c.h.h.h.h.h.h.c.c.h 0.h.h.h.c.h.c.: x.h.c.h.h.c.c.h.h.c.c.. 0.h.h.h.c.h.c.h.h.h.h.h.O O h.h.h.h.c.h.c.s. +.h.c.h.h.c.c.h.c.c.c.: 9.c.h.h.c.h.h.h.h.g.c.c.c.c.c.] . +.c.h.c.h.h.h.c.h.h.x. { h.h.c.c.c.[ +.c.h.h.h.h.c.h.h.h.c.h.h.c.h.h.h.h.c.h.h.h.h.h.h.h.h.c.h.h.h.h.h.h.c.h.h.c.h.h.h.h.h.h.h.h.h.h.H.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.H.h.h.h.h.h.h.h.h.H.c.g.c.h.h.c.g.c.c.c.c.g.c.c.g.c.g.c.c.c.g.c.c.c.c.c.g.c.g.c.g.c.", -"c.c.g.c.c.g.c.c.g.c.g.c.g.c.g.c.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.c.h.h.h.c.h.h.c.h.h.c.h.h.h.h.h.c.h.h.h.c.h.h.c.h.h.c.h.c.h.c.h.h.h.h.h.h.p o.h.h.h.h.h.d.. s.h.c.h.h.h.h.h.h.h.0. +.h.h.h.h.h.h.h.h.h.h.h.+ O.c.h.h.h.h.h.s. 9.c.h.h.h.h.h.h.h.h.h. } h.h.h.h.h.h.h.h.g.c.c.c.c.+. O 0.h.h.h.h.h.h.h.h.s. { g.h.g.c.c.l + s.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.g.c.c.g.c.g.h.h.g.c.h.h.c.g.g.c.c.c.g.c.c.h.h.g.c.g.c.g.c.c.c.g.", -"g.g.c.g.g.c.g.g.c.g.c.g.c.g.g.g.h.h.g.h.h.h.h.h.h.h.h.h.h.h.h.g.h.h.h.h.h.h.h.h.h.g.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.g.h.g.h.g.h.h.g.c.g.h.g.g.h.g.c.g.h.g.h.g.h.h.g.c.g.g.c.g.h.g.h.g.g.h.h.h.g.h.h.p l h.h.h.h.h.s. d.h.h.h.h.h.h.g.h.h.7. { g.h.h.h.h.h.g.h.h.h.h.# h h.h.h.h.h.g.s. 7.c.h.h.g.h.h.h.g.h.s. j g.h.h.h.h.h.h.h.c.g.g.g.d.: > h.h.h.h.h.h.h.h.s. { h.h.g.g.c.l j h.h.h.h.h.h.h.h.h.h.h.h.g.h.h.h.h.h.h.h.h.h.h.h.h.g.h.h.h.g.h.h.h.h.h.h.g.h.h.h.h.h.h.h.h.h.h.h.h.h.h.g.h.h.h.h.h.h.h.h.h.h.h.h.g.h.h.h.f.h.h.h.g.g.g.c.g.c.c.g.c.g.c.g.c.g.c.g.g.h.h.g.g.c.g.c.g.c.g.c.g.g.g.h.", -"g.c.g.c.c.g.g.c.g.c.g.c.g.c.c.g.h.h.h.h.g.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.g.h.h.h.h.h.h.h.h.g.h.h.h.h.h.h.g.h.g.h.h.h.h.h.h.h.h.h.h.h.h.g.c.g.h.h.h.g.c.h.h.h.h.h.h.h.h.g.c.g.h.h.g.g.c.h.h.h.h.h.h.h.h.h.h.h p h.h.h.g.c.7. s.h.h.g.h.h.h.h.h.c.o. h h.h.g.h.h.h.h.h.g.h.g.O # h.h.h.h.h.h.s. 7.h.h.h.h.h.g.h.h.h.+. u h.h.h.h.h.h.h.g.g.c.g.c.! o.h.h.h.h.h.g.h.d. { h.h.c.c.g.l . s.h.h.h.h.h.h.h.h.h.g.h.h.h.g.h.g.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.h.g.h.h.h.g.h.h.g.h.h.h.h.h.h.h.h.h.h.h.g.h.h.h.g.h.h.h.h.h.h.h.h.g.h.h.h.h.h.c.c.g.g.c.c.g.h.g.g.h.h.g.g.c.c.h.g.g.c.h.g.g.c.h.g.c.g.g.c.c.g.", -"c.g.g.g.g.g.c.g.g.g.g.c.g.g.g.c.g.h.g.h.g.h.g.h.g.g.h.g.g.h.g.h.h.g.h.g.h.g.h.g.h.g.h.g.g.h.g.h.g.h.g.h.g.h.h.h.g.g.h.g.g.h.g.h.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.h.g.h.g.h.g.h.p > h.g.h.h.h.o. s.g.h.h.g.h.g.h.g.h.l r h.g.h.g.h.g.h.g.h.h.h.O 7.g.h.h.g.h.a. 7.g.h.g.h.g.h.h.h.g.] > h.g.g.h.g.h.g.h.g.c.g.c.$ , h.h.g.g.h.h.g.s. { h.g.g.g.g.l { g.h.g.g.h.g.h.g.h.g.h.h.g.h.h.g.h.g.h.g.h.g.g.h.g.h.g.h.g.h.g.g.h.g.h.h.g.h.h.g.h.g.h.g.h.h.h.g.h.g.h.g.h.g.h.g.h.g.h.g.h.h.h.h.g.h.h.h.h.h.h.g.g.g.c.g.g.g.h.g.c.g.h.g.c.g.g.g.c.g.g.g.c.g.g.g.c.g.h.g.g.c.g.", -"g.g.g.c.g.g.g.g.g.g.g.h.g.h.g.g.h.g.g.h.g.g.h.g.h.g.g.h.g.h.g.g.g.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.g.h.g.h.g.g.h.g.g.h.g.g.h.g.h.h.g.g.h.g.g.h.g.g.h.g.h.g.h.g.g.g.h.g.g.g.h.h O h.g.g.g.h.! s.g.h.g.g.g.g.h.g.g.p $ g.h.g.g.h.g.g.g.g.g.h.O . j h.g.g.g.g.s. 7.c.h.g.h.g.h.g.h.g.l . g.g.g.g.h.g.h.g.h.g.g.7. h { h . u.g.g.g.h.g.h.d. { g.g.g.g.h.l u g.h.g.g.h.g.g.g.g.h.g.g.h.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.g.h.g.h.g.h.h.h.f.h.h.f.g.g.h.g.g.h.g.h.g.g.h.g.g.h.g.h.g.g.h.h.f.h.h.g.h.g.g.h.g.g.g.g.h.g.g.h.g.g.g.h.g.g.g.g.h.g.h.g.g.h.g.g.h.g.", -"g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.p u.g.h.g.g.h d.g.g.g.g.g.g.g.g.h., d.g.g.g.g.g.g.g.g.g.g.O . O g.g.g.g.h.u. 7.g.h.g.g.g.g.g.g.g.p 0.g.g.g.g.g.g.g.g.g.g.{ ! g.g.g.] } g.g.g.g.g.g.s. ^ g.g.g.g.g.l . O g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.f.h.h.f.h.h.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.f.h.h.f.g.g.g.g.g.g.g.h.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.", -"g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.h.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.p +.g.g.g.h.r a.g.g.g.g.g.g.g.g.g.$ 8.h.g.g.g.g.g.g.g.g.g.O 7.g.g.g.g.s. 7.g.g.g.g.g.g.g.g.g., O.g.g.g.g.g.g.g.g.g.g.h 0.g.g.g.s. h g.g.g.g.g.g.d. { g.g.g.g.g.l h g.u.o.> 0.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.f.h.f.h.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.f.h.f.h.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.", -"g.f.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.f.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.f.g.g.g.g.g.g.g.g.g.g.f.g.g.g.g.g.g.g.g.g.g.g.f.g.g.g.g.g.g.g.g.g.g.g.g.g.g.f.g.g.g.g.g.g.p ] g.g.g.g.; d.g.g.g.g.g.g.g.g.d. o.g.g.g.g.g.g.g.g.g.g.O j h.g.g.g.u. 7.h.g.g.g.g.f.g.g.g.$ { f.g.g.g.g.g.g.g.g.g., . g.g.g.g.g.. > g.g.g.g.f.g.s. > > > > > < > > > > : o.g.g.g.g.g.l h g.g.g.d.; O.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.h.f.h.f.g.g.g.g.g.g.g.g.g.f.g.g.g.g.g.g.g.g.g.g.h.f.h.f.f.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.", -"g.g.g.g.g.g.g.f.g.g.f.g.f.g.g.f.g.g.f.g.g.g.g.g.g.f.g.g.g.g.g.g.g.g.f.g.g.g.g.g.g.g.g.g.g.f.g.g.g.g.f.g.f.g.f.g.g.g.g.g.f.g.h.f.g.g.f.g.g.f.g.g.g.f.g.g.g.g.f.g.g.g.g.g.g.g.g.g.g.f.g.f.g.g.g.g.g.f.g.g.g.g.p l g.f.g.d.. a.g.g.f.g.g.f.f.g.0. ! f.g.g.f.g.g.g.g.f.g.O $ d.g.g.g.u. 7.g.g.g.g.g.g.f.g.i. j g.g.g.f.g.g.f.g.g.f.$ O g.g.f.g.g.> O g.g.g.f.g.g.i. i.f.g.g.g.g.g.g.g.f.g.g.g.g.g.g.f.l h f.g.g.g.l { f.g.g.g.g.g.g.g.f.g.f.g.f.g.g.g.f.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.g.f.g.g.f.g.f.f.h.f.f.h.f.h.h.f.f.g.g.f.g.g.g.g.g.g.f.g.g.g.f.g.g.f.f.h.g.f.g.g.g.f.g.f.g.g.g.g.g.g.g.g.g.g.g.g.f.g.f.g.g.g.f.g.g.g.g.g.", -"f.g.f.g.g.f.g.f.f.g.g.f.f.g.f.g.f.f.g.g.g.f.g.f.g.f.f.g.g.f.f.f.f.f.g.g.f.f.g.f.g.f.f.f.f.g.f.f.f.f.g.g.f.g.g.f.f.g.f.g.g.f.f.f.g.f.g.f.f.g.f.g.f.g.f.f.f.g.f.g.f.g.f.g.f.f.f.f.f.g.g.f.f.f.g.g.f.g.f.f.f.g.p u f.g.f.u. a.f.g.g.f.f.g.g.f.O. . h g.g.f.g.f.f.f.g.f.g.O 8.f.f.f.a. 7.g.f.f.f.f.g.f.f.0. . r g.f.f.g.f.f.g.f.g.f. : f.g.f.g.f.> a.f.g.f.f.g.a. d.g.f.f.f.f.f.g.f.g.f.f.f.g.f.g.f.l h f.f.f.f.o. ! f.f.f.f.f.f.f.f.g.g.f.g.g.f.f.g.g.f.f.g.f.g.f.f.f.g.f.f.g.f.f.g.f.f.f.g.f.f.g.f.f.g.f.f.f.h.f.f.f.f.g.f.g.f.g.f.f.g.f.f.g.f.g.f.g.g.f.g.f.h.f.g.f.f.g.f.f.g.g.f.f.f.f.g.f.g.f.g.f.g.g.f.g.g.f.f.g.g.f.g.f.f.", -"f.f.f.f.f.f.f.f.f.f.f.g.g.f.g.f.f.f.f.f.f.f.f.f.g.f.f.f.f.f.f.f.f.f.f.g.f.f.f.f.f.g.f.g.f.g.f.f.f.f.f.f.f.f.f.f.f.g.f.f.f.f.f.f.f.g.f.g.f.f.f.f.f.g.g.f.g.f.f.f.g.f.g.f.f.f.f.g.f.f.f.g.f.f.f.f.f.g.f.g.f.f.p > g.f.g.7. a.f.f.f.f.f.g.f.g.^ r , f.f.f.g.f.g.f.f.f.g.O l f.g.f.a. 7.g.g.f.f.f.f.g.f.o. r $ f.f.g.f.f.f.f.f.f.i. : f.f.f.g.g., 8.g.g.f.g.f.d. d.f.f.f.f.g.f.f.f.f.f.f.f.f.g.f.f.l h g.f.g.f.O. l f.g.f.g.f.g.f.f.f.f.f.f.f.f.f.f.g.f.f.f.f.f.f.f.g.f.g.f.f.f.f.g.f.f.g.f.f.f.f.f.g.f.f.f.f.f.f.f.f.f.f.f.f.f.f.g.f.f.f.g.f.f.f.g.f.f.f.f.f.f.f.h.f.g.f.g.g.f.g.f.f.f.f.f.f.f.f.f.f.f.f.g.f.f.f.f.f.f.f.f.g.f.", -"g.f.f.g.f.f.g.f.g.f.f.f.f.f.f.f.g.f.f.g.f.f.g.f.f.f.g.f.g.f.f.f.g.f.f.f.g.g.f.f.f.g.f.f.f.f.f.f.g.f.f.g.f.g.f.f.f.f.g.g.f.f.f.f.f.f.f.f.f.g.f.g.f.f.f.f.f.f.f.g.f.f.f.f.f.g.f.f.f.g.f.f.g.f.g.f.f.f.f.f.g.f.p . f.f.g.] a.g.f.f.f.f.f.f.f.j j # g.f.f.f.f.f.g.f.f.f.O > f.f.f.u. 7.f.f.f.f.g.f.f.f.^ h . d.f.f.g.f.f.g.g.f.u. > g.f.f.f.g.r 7.f.f.f.f.f.a. d.f.f.g.f.g.g.f.f.g.g.f.g.f.f.f.f.l h f.f.f.g.7. h f.f.f.f.f.f.g.f.f.g.f.g.f.f.g.f.f.f.f.g.f.f.g.f.f.f.f.f.g.f.f.f.g.g.f.f.f.f.f.f.f.f.h.f.f.f.f.h.f.f.g.f.g.f.f.f.g.g.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.g.f.f.f.f.f.g.g.f.f.f.f.f.g.f.f.g.f.g.f.f.", -"p.g.p.g.g.f.f.f.f.f.f.f.f.f.f.g.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.p u.f.f.! a.p.f.f.f.f.f.f.f.u ] . a.p.f.f.f.f.f.f.f.f.O . 0.f.f.a. 7.f.f.f.f.f.f.f.f.j ! : 8.f.f.f.f.f.f.f.f.0. > f.f.f.f.f.u O.p.f.f.f.f.a. i.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.p.! h p.f.f.f.7. p f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.", -"f.p.g.p.p.f.p.f.f.f.f.p.f.f.f.p.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.p.f.f.f.f.p.f.f.f.f.f.f.f.f.f.p.f.f.f.p.f.f.f.f.f.f.p.f.f.f.f.p.f.f.f.f.f.p.f.f.f.f.f.f.f.f.p.f.f.p.f.f.f.f.p.f.f.f.f.f.f.f.p.p O.f.f.p a.f.p.f.f.f.f.f.f.> 7.+ 7.f.f.f.f.f.p.f.f.f.O ! i.p.u. 7.f.f.f.f.f.p.f.f.u ] , o.f.f.p.f.f.f.p.f.8. > f.f.f.p.i.u o.p.f.f.f.f.i. i.g.f.f.p.f.f.f.p.f.f.f.f.f.f.f.p.l h p.f.p.f.7. h p.f.p.f.f.f.f.p.f.f.f.f.f.p.f.f.p.f.f.f.f.f.f.f.f.f.f.f.f.f.p.f.f.f.p.f.f.f.p.f.f.f.f.p.f.f.f.f.f.f.f.p.f.f.f.f.f.f.f.p.f.f.f.p.f.f.f.f.p.f.f.f.f.f.p.f.f.f.p.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.p.", -"p.p.p.p.p.f.p.f.f.p.p.f.f.p.f.p.p.f.f.f.f.y.f.f.f.f.y.f.y.f.y.f.p.f.p.f.f.p.p.f.f.p.p.p.f.f.f.p.p.f.f.f.p.f.p.f.f.p.f.p.f.p.f.p.f.p.p.f.p.f.p.f.f.f.p.f.p.f.p.f.f.p.f.p.f.p.f.p.f.p.p.f.p.f.p.f.p.f.p.f.f.p.p ] p.f.r w.p.f.p.f.p.p.f.p.. u.> ] p.f.p.f.p.p.f.p.f.O > f.p.u. 7.p.f.p.f.p.p.f.f.: 7.u ! p.f.p.f.p.f.p.f.8. > f.p.p.f.p.u ] f.p.p.f.p.a. i.p.p.f.p.f.p.f.p.f.p.f.f.p.p.f.p.l p p.f.p.p.7. j f.p.f.f.f.p.p.f.p.f.p.f.p.p.f.p.f.p.f.p.p.p.f.p.f.p.f.p.f.p.p.f.p.f.p.f.p.f.f.p.f.p.p.f.p.f.f.f.p.f.p.f.p.f.f.p.f.p.p.f.p.f.f.p.p.f.p.f.p.f.f.f.p.f.p.f.p.f.p.f.p.f.p.p.f.p.p.f.f.p.p.p.f.p.f.p.f.p.f.p.f.p.", -"f.g.p.p.f.p.f.f.p.f.f.p.p.f.p.f.f.p.f.p.f.f.y.f.f.y.f.f.f.f.f.f.f.p.f.p.f.p.f.p.p.f.p.f.p.f.p.f.f.p.f.p.f.p.f.p.p.f.p.f.p.f.p.f.p.f.f.p.f.p.f.f.f.f.f.p.f.p.f.p.p.f.p.f.p.f.p.f.p.f.f.p.f.p.f.f.f.p.f.p.p.p.p l p.p.$ a.f.p.f.p.p.f.p.u. . f.r l p.p.f.p.f.f.p.f.p.O 8.i.u. 7.f.p.f.p.f.f.p.p.. w.p p f.p.f.p.f.p.f.p.7. > p.f.p.f.p.u ] p.p.f.p.f.w. i.p.f.p.f.p.f.p.f.p.f.p.p.f.f.p.f.l h f.p.p.p.O. l p.f.p.f.p.p.f.p.f.p.f.p.f.p.p.f.p.f.p.f.p.p.p.f.p.f.p.f.p.f.f.p.f.p.f.p.f.f.p.f.p.f.f.p.f.p.f.f.f.p.f.p.f.p.p.f.p.f.f.p.f.p.p.f.f.p.f.p.f.f.f.p.f.p.f.p.f.p.f.p.f.f.p.f.p.f.f.p.p.f.p.f.p.f.f.f.p.f.p.f.p.f.", -"p.p.p.p.f.p.p.p.p.p.p.p.p.p.p.p.y.f.f.f.y.f.f.y.y.f.f.p.f.y.f.p.p.p.p.p.p.p.p.p.p.f.p.p.p.f.p.p.p.p.p.p.p.p.p.p.p.f.p.p.p.f.p.p.p.p.f.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.f.p.p.p.p.p.p.p.p.p.f.p.p y p.p.. O w.f.p.p.p.p.f.p.7. : p.p y f.p.p.p.p.p.p.p.p.O ^ y.u. 7.p.p.p.p.p.p.p.u. . p.l r p.p.p.p.p.p.p.p.7. > p.p.f.p.p.u ] f.p.p.p.p.i. i.p.f.p.p.p.p.p.p.f.p.p.p.p.p.p.p.l h p.p.p.p.O. ! p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.f.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.f.p.p.p.p.f.p.p.p.p.p.f.f.p.p.p.p.p.p.f.p.p.f.p.p.f.p.p.p.p.f.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.f.p.p.f.p.p.p.p.f.p.", -"p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.f.y.y.f.f.y.f.y.f.y.y.f.y.f.y.f.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p O < p.8. O ; w.p.p.p.p.p.p.p.] u p.j > p.p.p.p.p.p.p.p.p.O > i.u. 7.p.p.p.p.p.p.p.7. > p.^ O p.p.p.p.p.p.p.p.O. > p.p.p.p.p.u ^ p.p.p.p.p.w. i.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.y.k g p.p.p.p.! . ] p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.", -"p.y.p.y.p.y.p.p.p.p.p.p.p.p.p.p.y.y.p.y.y.y.f.f.y.y.y.p.y.p.y.p.p.p.y.p.p.p.y.p.p.p.p.p.p.p.p.p.p.p.y.p.p.p.y.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.y.p.p.p.p.p.y.p.p.p > O i.O. > + w.p.p.y.p.p.p.p.! g p.! . p.p.p.p.y.p.p.p.p.O w.u. 7.y.p.p.p.p.p.p._ u p._ w.y.p.p.p.p.p.y.' > p.y.p.p.p.g > > > > > > > > > > > > > > > : ' p.p.p.p.p.w. i.p.p.p.y.p.y.p.p.p.p.p.p.p.p.p.p.l p p.p.p.p.u 7.y.p.p.p.p.p.p.p.p.p.p.p.p.y.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.p.y.p.y.p.y.p.y.p.p.p.p.p.p.p.y.p.p.y.p.y.p.p.p.p.y.p.p.p.p.p.y.p.p.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.y.p.p.p.p.p.y.p.p.p.p.", -"p.p.p.p.p.p.p.y.p.p.y.p.p.p.y.p.y.f.y.f.y.f.y.y.y.f.f.y.f.y.f.y.p.p.p.p.p.p.p.p.p.y.p.y.p.y.p.y.p.p.p.p.p.p.p.p.p.y.p.y.p.y.p.y.y.p.y.p.y.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.p.p.p.p.y.p.p.p.p.p.y.y.p y u._ u ; w.y.p.p.p.y.p.y.p ^ y.] 8.p.p.p.p.p.p.y.p.O . ^ u. 7.y.y.p.y.p.p.p.! j p.O. 7.y.p.p.p.p.p.p.O. . > p.p.p.p.p.y.p.p.y.p.p.p.y.p.p.y.p.p.y.p.p.p.p.y.p.p.p.y.i. i.p.p.y.p.p.p.p.p.y.p.y.p.y.p.p.y.l g p.p.p.' . w.p.y.p.p.p.y.p.p.p.p.p.p.p.p.p.p.p.p.p.p.y.p.p.p.y.p.p.p.y.p.p.p.p.p.p.p.p.p.y.y.p.p.y.p.p.p.p.y.p.p.p.p.p.y.p.p.y.p.y.p.p.p.y.p.y.p.y.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.p.p.y.p.p.p.p.p.p.p.y.p.y.p.p.p.y.p.y.p.", -"y.p.p.p.y.p.p.y.p.p.y.p.p.y.y.p.p.p.y.p.p.y.y.p.y.p.p.p.y.p.p.y.y.p.p.p.y.p.p.y.p.y.y.p.p.y.y.y.p.p.y.p.p.y.y.p.y.p.p.y.y.p.p.y.p.p.y.p.p.y.p.p.y.p.p.y.p.p.y.p.p.p.y.p.p.y.y.p.y.y.p.y.y.p.y.y.p.y.p.y.p.p.p X ! 7.k k $ w.y.y.p.y.p.p.y.r ' y.' O.p.p.y.p.y.p.p.y.O r w. 7.p.p.p.y.p.p.y.p ^ y.7. _ p.p.p.y.p.p.y.O. > p.y.p.p.y.p.y.p.y.p.p.y.y.y.y.y.p.y.p.y.p.p.y.p.p.y.p.p.w. , r r , r r , r r , l p.y.p.p.y.p.l > g u : r p.y.p.p.y.y.p.y.p.p.p.y.p.p.y.p.y.y.p.p.y.y.y.p.p.y.p.p.y.y.p.y.p.p.y.y.p.p.y.p.p.y.p.p.y.p.p.y.p.p.p.y.p.y.p.p.p.y.p.p.y.y.p.y.y.p.y.y.p.y.y.p.y.p.y.p.p.y.p.y.p.y.p.p.y.y.p.y.y.p.y.y.p.y.y.p.y.p.y.p.p.y.p.", -"y.y.y.y.y.y.y.y.y.y.y.y.y.p.y.y.y.y.y.y.y.p.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.p.y.y.y.p.y.y.y.y.y.y.y.p.y.y.y.y.y.p.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.p.y.y.p.p.y.y.y.y.p.p.y.y.y.y.y.p ] _ p ^ ; w.p.y.y.y.y.y.y.$ 8.p.7. ^ y.y.y.p.y.y.y.y.O 8. *.p.y.y.y.y.y.y.r ' y.w. k p.y.y.y.y.y.y.' > y.y.y.y.y.y.p.y.y.y.y.y.y.y.y.p.p.y.y.y.y.y.y.y.y.y.y.y.w. u i.y.y.y.y.y.k ^ y.y.y.y.p.y.y.y.y.y.y.y.y.y.y.y.p.y.y.y.p.y.y.y.y.y.y.y.p.y.y.y.y.y.p.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.p.y.y.p.p.y.y.y.y.p.p.y.y.y.y.y.y.y.y.y.y.y.y.y.y.p.y.p.p.y.y.y.y.p.p.y.y.y.y.y.y.y.", -"y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.p ' O l , O.; q.y.y.y.y.y.y.i.. e.y.8. j y.t.y.y.y.y.y.y.O . ! *.y.y.y.y.y.y.y.; 3.y.y. u y.y.y.y.y.y.y.' > y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.e. u y.y.y.y.y.y.k + i.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.", -"y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.p ' , y ; . 8.; e.y.y.y.y.y.t.8. O y.y.e. u y.y.y.y.y.y.y.y.O , 7.y.y.y.y.y.t.i. i.y.y.+ > y.y.y.y.y.y.y.O. > y.y.y.p.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.w. r y.y.y.y.y.y.l O 8.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.", -"y.y.y.t.y.t.y.y.y.y.t.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.y.t.y.t.y.y.y.y.y.y.y.t.y.y.y.y.t.y.y.y.y.y.y.y.t.y.y.y.y.y.y.y.y.y.y.y.t.y.y.y.y.y.y.y.y.y.y.y.t.y.y.y.y.t.y.y.y.y.y.y.y.y.y.t.y.y.y.t.y.y.t.p.p.t.y.y.p ' p > . y.+ w.y.y.t.y.y.y.' . , y.y.t.. : t.y.y.y.y.y.y.y.O 7.t.y.t.y.y.y.8. O y.y.t.> O t.y.y.y.t.y.y.' > y.t.y.t.y.t.y.t.y.y.y.t.y.y.y.y.t.t.y.t.y.y.y.y.y.y.y.t.e. u y.y.y.y.y.t.k u 8.t.y.y.y.t.y.y.y.y.y.y.y.y.y.t.y.y.y.y.t.y.y.y.y.y.y.y.t.y.y.y.y.y.y.y.y.y.y.y.t.y.y.y.t.y.y.y.y.y.y.y.t.y.y.y.y.y.y.y.y.t.y.y.y.y.y.t.y.y.y.t.y.y.y.y.y.y.y.y.t.y.y.y.y.y.y.y.y.y.y.t.y.y.y.t.y.y.y.y.y.y.y.y.t.y.", -"y.t.t.y.y.t.t.y.t.y.y.t.t.y.t.t.t.t.y.t.t.y.t.t.y.t.t.y.y.t.t.y.y.t.t.t.y.t.t.y.t.y.y.t.t.y.t.y.t.y.y.t.t.y.t.t.y.t.t.t.y.t.y.t.t.t.t.y.t.t.t.y.t.t.y.y.t.y.t.y.t.y.t.t.t.t.t.y.t.y.t.y.t.y.t.y.t.t.t.y.t.y.p ' ! ; y.; w.t.t.y.y.t.t.^ t t.y.t.: . t.t.t.t.y.t.y.t.O *.t.y.y.t.y.t.' , y.t.y.r q.y.t.y.y.y.y.' , t.y.g O O . O O O . O O O O . O O O @ @ . O _ t.y.t.y.y.e. r t.t.t.y.t.y.k . : u ^ 8.t.t.t.t.y.t.y.t.y.t.t.y.t.t.t.y.t.t.y.t.y.y.t.t.y.t.y.t.y.y.t.t.y.t.t.y.t.t.t.y.t.y.t.y.t.y.y.t.t.t.y.t.t.y.y.y.t.t.t.t.y.t.y.t.t.t.y.t.y.t.y.t.y.t.y.t.y.t.t.t.y.y.t.t.y.t.y.t.t.t.y.t.y.t.y.t.y.t.y.t.y.t.t.t.y.y.t.", -"y.t.t.t.t.y.t.t.t.t.t.t.t.t.t.y.t.t.t.t.y.t.y.t.y.t.t.y.t.y.t.t.t.y.t.y.t.y.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.y.t.y.t.y.t.y.t.t.t.t.t.t.t.t.t.t.t.t.y.t.y.t.t.t.t.t.t.y.t.y.t.t.t.t.t.t.t.t.t.t.t.t.y.t.y.t.s ' _ r t.+ q.t.t.y.t.t.t.j j t.t.t.r 8.t.t.t.t.t.t.t.O . 7.t.t.t.t.t.t.^ u t.t.t.p ' t.t.y.t.t.t.' > t.t.p ^ y.t.t.y.t.q. u y.t.y.t.y.t.k + g ' t.t.t.y.t.y.t.t.t.t.t.t.y.t.y.t.y.t.y.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.y.t.y.t.y.t.y.t.t.t.t.y.t.t.t.t.t.t.t.t.t.t.y.t.y.t.t.t.y.t.y.t.t.t.t.t.t.t.t.t.t.t.t.t.y.t.t.t.t.t.t.t.y.t.y.t.t.t.t.t.t.t.t.t.t.t.t.t.y.t.t.t.t.", -"t.t.t.y.t.t.y.t.y.t.y.t.y.t.t.t.t.y.t.t.t.t.t.t.t.t.t.t.t.t.y.t.t.t.t.t.t.t.y.t.y.t.y.t.y.t.t.t.y.t.y.t.y.t.t.t.t.t.t.t.t.t.y.t.y.t.y.t.y.t.y.t.t.y.t.t.t.t.t.y.y.t.t.t.t.t.t.t.t.y.t.y.t.y.t.y.t.y.t.t.t.t.y ' 3. g t.; q.y.t.t.t.y.t.u ! y.t.i.y ' y.t.y.t.y.t.t.O *.y.t.t.t.t.t.j g t.t.t.k ^ t.t.t.t.t.t.' > t.y.s ~ y.t.t.t.t.e. r t.t.t.t.t.t.k > ^ e.t.t.t.t.t.y.y.t.t.t.t.t.t.t.t.t.y.t.y.t.y.t.y.t.t.t.y.t.y.t.y.t.t.t.t.t.t.t.t.t.y.t.t.t.t.t.y.t.y.t.t.y.y.t.t.t.t.t.y.t.t.t.t.t.t.t.t.y.t.y.t.y.t.y.y.t.t.t.y.t.y.t.y.t.t.t.t.t.t.t.y.t.y.t.t.y.t.y.y.t.t.t.y.t.y.t.", -"t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.y ' 4.. ! t.; 4.t.t.t.t.t.t.> _ t.t.t.g ! t.t.t.t.t.t.t.O . 7.t.t.t.t.t.t.u ! t.t.t.^ g t.t.t.t.t.t.' , t.t.p ^ t.t.t.t.t.e. u t.t.t.t.t.t.k > 3.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.t.", -"t.t.t.t.r.t.t.t.t.t.t.r.t.t.r.t.t.t.t.t.t.t.t.r.t.r.t.t.r.t.t.t.t.t.t.t.r.t.t.t.t.t.t.r.t.t.t.t.r.t.t.t.t.t.t.r.r.t.t.t.r.t.t.t.t.t.r.t.t.t.t.t.t.t.r.t.t.t.r.t.t.t.t.r.t.t.t.t.r.t.t.t.t.r.t.t.t.t.t.t.t.t.p ' t.O ' t.; e.t.t.t.r.t.r.O . O.t.t.r.^ s t.t.t.t.t.t.r.O *.t.t.r.t.t.r.> ~ t.t.t.' u t.t.r.t.t.t.' > r.t.s ~ t.t.t.r.t.q. r t.t.r.t.t.r.k + 8.t.t.t.r.t.t.r.t.t.t.t.t.r.t.t.t.t.t.t.r.t.t.t.t.r.t.t.t.t.t.t.r.r.t.t.t.r.t.t.t.t.t.r.t.t.t.t.t.t.t.t.t.r.t.t.t.t.t.t.r.t.t.t.t.r.t.t.t.t.r.t.t.t.t.t.r.t.t.t.r.t.t.r.t.t.t.t.t.t.t.t.r.t.t.t.t.t.t.r.t.t.t.r.t.", -"r.r.t.t.r.t.r.r.t.r.r.t.r.t.t.t.t.t.r.r.t.r.r.t.t.t.t.t.t.t.r.r.r.r.t.t.r.t.r.t.t.r.r.t.r.r.t.t.t.t.r.r.t.r.r.t.t.t.t.t.t.t.r.r.r.t.t.t.r.r.t.r.r.t.t.t.r.t.t.r.t.r.r.t.r.r.t.t.t.r.t.r.r.t.r.t.r.t.t.t.t.r.y ' r.r 3.t.; 4.r.t.r.t.r.q. =.t.r.t._ r r.r.t.t.r.r.t.O . *.t.r.t.6.t.t.. ' r.t.t.3. ; r.t.t.t.t.r.' . > t.r.p ~ r.r.t.t.t.4. u r.r.t.r.t.r.k O r : , r.r.r.t.r.t.t.t.r.r.t.t.r.t.r.t.t.r.r.t.r.r.t.t.t.t.r.r.t.r.r.t.t.t.t.t.t.t.r.r.r.t.t.t.r.t.t.r.r.t.t.t.r.t.r.r.t.r.r.t.r.r.t.t.t.r.t.r.r.t.r.t.t.t.r.t.t.r.r.t.r.t.t.r.t.r.t.t.r.t.t.t.r.r.t.r.r.t.r.t.t.r.t.r.", -"r.t.r.r.r.r.r.t.r.t.r.r.r.r.r.r.r.r.r.t.r.t.r.r.r.r.r.r.r.r.r.t.r.t.r.r.r.r.r.r.r.t.r.r.r.t.r.r.r.r.r.t.r.t.r.r.r.r.r.r.r.r.r.t.r.r.r.r.r.t.r.r.r.r.r.r.r.r.t.r.r.t.r.r.r.t.r.r.r.r.r.t.r.r.t.r.t.r.r.r.r.t.s ' r.p . q.r.; q.t.r.r.r.t.*. 4.r.t.r.*. ; t.r.r.r.t.r.r.O r 7.6.r.t.6.t.4. 3.t.r.r.q. . r.r.r.r.r.r.' > r.r.s ^ r.r.r.r.r.q. u t.r.r.r.r.r.k s r.r.q.s . ! t.r.r.r.r.r.r.r.t.r.r.r.r.r.r.r.t.r.r.r.t.r.r.r.r.r.t.r.t.r.r.r.r.r.r.r.r.r.t.r.r.r.r.r.r.r.r.r.r.r.r.r.r.t.r.r.t.r.r.r.t.r.r.r.r.r.t.r.r.t.r.r.r.r.r.r.t.r.r.r.r.t.r.r.r.r.r.r.r.r.r.t.r.r.t.r.r.t.r.r.t.r.r.", -"t.r.r.r.t.r.r.t.r.r.r.t.t.r.r.r.r.t.r.r.r.r.t.r.r.r.t.r.r.t.r.r.t.r.r.r.t.r.r.t.r.r.r.t.t.r.r.r.r.r.t.r.r.t.r.r.r.t.r.r.r.t.r.r.r.t.r.r.r.r.r.t.t.r.r.r.r.t.r.r.r.r.r.t.t.r.r.r.t.r.r.t.r.r.t.r.r.r.r.r.r.t.p ' r.E O r.r.+ q.r.r.r.t.r._ O r.r.r.6.8. 5.t.r.r.r.r.t.O ^ . *.6.t.6.t.t.*. 4.t.r.r.5.. =.t.t.t.r.r.` > r.t.y ^ r.t.r.t.t.q.. , r r , , r , , r , f r.r.r.r.r.r.k s r.r.t.r.; ; t.r.r.t.t.6.t.t.r.r.r.t.r.r.t.r.r.r.t.t.r.r.r.r.r.t.r.r.t.r.r.r.t.r.r.r.t.r.r.r.t.r.r.r.r.r.t.t.r.r.r.t.r.r.t.r.r.r.t.t.r.r.r.t.r.r.t.r.r.t.r.r.r.r.r.t.r.r.r.r.t.r.t.r.r.r.r.r.t.r.r.r.r.r.r.r.r.r.r.r.t.r.r.", -"r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.y ' r.' , r.r.; 4.r.r.r.r.r.! : r.r.r.r.5.. 3.r.r.r.r.r.r.O ~ r *.t.6.t.r.6._ . r.r.r.r.r.O ` r.r.r.r.r.' , r.r.p ~ r.r.r.6.r.4. q.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.k s t.r.r.r.d *.r.r.6.6.t.t.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.", -"r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.6.r.r.r.r.r.6.r.r.r.r.r.6.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.6.6.r.r.r.r.6.6.r.r.r.r.6.6.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.y ' 6.3. . p r.r.; 4.r.r.r.r.r.s r 5.r.r.r.r.O _ r.r.r.r.r.r.O _ ! *.t.6.t.6.t.! ; r.r.r.r.r.> ! 6.r.r.r.r.' , r.6.s ^ 6.r.r.r.r.4. 5.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.! s r.r.r.r.! ' 6.t.6.t.r.6.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.6.6.r.r.r.r.6.6.r.r.r.r.6.6.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r.6.r.r.r.r.r.r.r.r.r.r.r.6.r.r.r.", -"6.6.6.r.6.r.6.6.6.r.6.r.6.6.r.6.r.6.r.6.r.6.r.6.r.6.r.6.r.6.r.r.r.6.6.r.6.r.6.6.6.r.6.6.r.6.6.r.6.r.r.6.r.r.r.6.r.6.r.r.r.6.r.6.r.r.6.r.r.6.6.r.6.6.r.6.6.r.6.r.6.r.6.6.r.6.6.r.6.6.r.6.6.r.6.6.r.6.6.r.2.r.y ' 6.r. f r.6.; 4.6.r.6.6.6.r s 6.6.r.6.6.> E r.6.6.r.6.6.O ~ =. *.r.6.6.6.6.s , 6.r.6.r.6.t s r.6.r.r.6.` > r.6.r.r.r.=. ~ 6.6.r.6.6.4. 5.6.6.r.6.6.r.6.6.6.5.r.r.r.r.6.6.f s 6.r.6.r.~ ^ 6.6.6.6.r.6.r.6.6.r.6.r.6.6.6.r.6.6.r.6.6.r.6.r.r.6.r.r.r.6.r.6.r.r.r.6.r.6.r.r.6.r.6.r.6.r.6.6.r.6.6.r.6.6.6.r.6.6.r.6.6.r.6.6.r.6.6.r.6.6.r.6.r.6.6.r.6.r.6.r.6.6.r.6.6.r.r.r.r.6.r.6.6.r.6.r.r.6.r.r.6.r.", -"r.r.r.6.6.r.r.r.6.r.6.r.6.r.r.6.r.r.6.r.r.6.r.6.r.r.6.r.6.r.6.6.6.r.r.6.r.r.6.r.r.6.r.6.r.r.6.r.6.6.6.6.r.6.6.6.r.r.6.r.6.r.r.r.6.r.6.r.6.6.r.6.r.r.6.6.r.6.r.6.r.r.r.r.6.6.r.6.r.6.r.r.6.r.6.r.r.r.6.6.r.r.s ' 6.6.+ ~ r.r.+ 4.r.6.6.r.r.; s =.=.8.=.=.r y r.r.6.r.6.r.O ~ r.: *.r.r.6.r.r.r r =.=.8.=.=.y r 6.r.6.r.6.' , 6.r.6.6.r.=. ~ r.6.6.r.r.4. 5.6.6.6.r.r.6.r.6.r.r.6.r.6.r.6.6.k s 6.r.r.6._ k r.6.6.6.6.r.6.r.r.6.r.r.6.r.r.6.r.6.r.r.6.r.6.6.6.6.r.6.6.6.r.r.6.r.6.r.r.r.6.r.r.r.r.r.6.r.r.6.r.r.6.r.6.r.6.r.6.r.6.6.r.r.r.6.r.r.6.r.6.r.r.r.r.6.6.r.r.6.6.r.r.6.6.r.r.6.6.r.r.6.r.6.r.r.6.r.r.6.r.r.6.r.", -"6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.r.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.r.r.6.6.6.6.6.6.6.6.6.6.6.6.6.r.6.6.r.r.6.6.6.6.r.r.6.6.6.6.6.6.6.6.r.r.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.y ' 6.6.r *.6.6.; 4.6.r.6.6.5.. . , 6.6.6.6.6.6.O ~ 6.f *.6.6.6.6.6.+ . O 6.6.6.6.6.` > 6.6.6.r.6.3. ~ 6.6.6.6.6.4. 5.6.6.r.6.6.6.6.6.6.r.6.6.6.r.6.6.! s 6.6.6.6.` f r.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.r.r.6.6.6.6.6.6.6.6.6.6.6.6.6.2.r.2.r.r.2.6.6.6.6.6.6.6.6.6.6.6.6.6.r.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.r.6.6.6.r.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.", -"6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.y ` 6.6.s . =.6.6.; ,.6.6.6.6.=. O 6.6.6.6.6.6.O ~ 6.` *.6.6.6.6.6.. . 4.2.6.6.6.` . , 6.6.6.6.6.*. ~ 6.6.6.6.6.4. 5.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.f s 6.6.6.6.*. g 6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.r.2.r.2.r.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.", -"6.6.6.6.6.2.6.6.6.6.6.6.6.6.6.6.6.2.6.6.6.6.6.6.6.6.6.6.6.6.6.2.6.6.6.6.6.2.6.6.6.6.6.6.6.6.6.6.6.6.6.2.6.6.6.6.6.6.6.6.6.6.6.2.6.6.6.2.6.2.6.6.2.6.6.6.6.6.2.6.6.6.6.2.6.2.6.6.6.6.2.6.6.6.6.6.6.6.6.6.6.6.y ` 6.6.W . 5.6.2.; 4.6.2.6.6.` . ,.6.6.6.6.6.O . ~ 6.6.O *.6.6.6.6.=. *.6.6.6.2.` > 6.2.6.6.6.=. ~ 6.6.6.6.2.4. 5.6.6.6.6.6.6.6.6.2.6.6.6.2.6.6.6.f s 2.6.6.6.*. g 6.2.6.6.6.6.6.6.6.6.6.2.6.6.6.6.6.6.6.6.6.6.6.6.6.2.6.6.6.6.6.6.6.6.6.6.6.2.2.6.6.2.6.2.r.2.6.6.2.6.6.6.6.6.6.6.6.6.2.6.6.6.6.6.2.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.2.6.6.6.6.2.6.6.6.6.6.6.2.6.6.6.6.6.2.6.6.6.", -"6.2.6.6.6.2.6.6.6.6.6.6.6.6.6.2.6.2.6.6.6.6.6.2.2.6.6.6.2.6.6.6.6.2.6.6.6.6.6.6.2.r.2.6.2.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.2.6.6.6.6.6.6.6.6.2.6.6.6.2.6.6.6.2.6.6.6.6.6.6.6.6.2.6.6.6.6.6.6.2.6.6.6.2.6.6.6.y ` 6.6.` : 2.6.6.+ 4.6.2.6.6.~ *.2.6.6.6.6.O ~ 6.6.y *.6.6.6.6.` ~ 6.6.6.6.*. > 2.2.6.6.5.=. ~ 2.5.2.6.6.4. 1.6.2.6.6.6.6.6.6.6.2.r.6.6.6.6.r.f s 6.6.6.5.*. d 6.6.2.6.6.2.6.2.6.6.6.6.6.6.2.r.2.6.2.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.2.6.6.6.6.6.6.2.r.2.6.6.2.6.6.6.6.2.6.6.6.6.6.6.6.6.2.6.2.6.6.6.2.6.6.2.6.6.6.6.6.6.6.6.6.2.6.6.6.6.6.6.2.6.6.6.6.6.6.6.6.2.6.6.6.6.6.", -"2.6.2.6.2.6.2.6.2.2.6.2.2.6.2.6.6.6.6.2.2.6.2.2.6.2.6.6.6.2.6.6.2.6.2.6.6.2.2.6.2.2.6.6.6.2.6.2.2.6.2.6.2.2.6.2.2.6.2.6.2.6.6.2.2.2.2.6.2.6.6.2.6.2.6.2.2.2.6.6.2.6.2.2.2.6.2.6.2.6.2.6.2.2.6.6.2.6.2.6.2.6.y ` 2.6.=. r 2.2.6.; ,.6.6.2.6.f ~ 6.6.2.2.2.+ ~ 6.2.~ *.2.6.2.2.~ E 6.2.2.6.*. > 6.2.2.6.6.=. ~ 2.2.6.6.2.1. 5.6.6.2.6.2.2.6.2.6.6.2.2.2.2.6.6.E d 6.2.6.6.*. s 6.6.6.2.6.6.2.6.2.6.6.2.2.6.2.2.6.6.6.2.6.2.2.6.2.6.2.2.6.2.2.6.2.6.2.6.6.2.2.2.2.6.6.2.6.2.6.6.2.6.2.2.6.6.2.6.2.2.2.6.2.6.6.6.2.6.6.6.2.2.6.2.6.2.2.6.2.2.2.6.2.6.2.6.2.6.2.6.2.6.2.2.2.6.2.2.6.6.6.2.2.2.", -"2.2.6.2.2.2.6.2.2.2.2.6.6.2.6.2.2.2.2.2.2.6.2.2.2.6.2.2.2.6.2.2.2.2.6.2.2.2.2.6.2.2.6.2.2.2.2.2.2.2.6.2.2.6.2.2.2.2.6.2.2.2.6.2.6.2.2.2.6.2.2.2.2.6.2.6.2.2.6.2.2.2.2.6.6.2.2.6.6.2.2.6.2.2.2.2.6.2.2.6.2.2.y ` 2.2.5.. f 2.6.2.+ ,.6.2.2.2.t f 6.2.2.2.2.O ~ 2.2.,. &.6.2.2.2.g y 2.6.2.2.&. , 2.2.2.6.2.=. ~ 2.2.6.2.6.,. 5.2.2.6.2.2.6.2.2.6.2.2.2.2.2.2.6.f s 2.2.6.2.&. y 2.2.2.6.2.2.2.2.6.2.2.2.2.6.2.2.6.2.2.2.2.2.2.2.6.2.2.6.2.2.2.2.6.2.2.2.6.2.2.6.6.2.2.6.2.2.2.2.6.2.2.6.2.2.2.2.2.6.2.6.2.2.2.2.2.6.2.2.2.2.2.6.2.2.6.2.2.2.2.6.2.2.6.2.2.2.2.2.6.2.6.2.2.6.2.2.2.2.6.2.6.2.", -"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.y ` 1.2.2.; W 2.2.2.; ,.2.2.2.2.> t 2.2.2.2.2.O Q 2.2.2.r *.2.2.2.2.t , 2.2.2.2.=. > 2.2.2.2.2.&. ~ 2.2.2.2.2.4. 1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.f d 6.2.2.6.&. s 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", -"2.2.2.2.2.2.2.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.y ` 2.2.2.r ` 2.2.2.; ,.2.2.2.2.O > 2.2.2.2.2.O Q 2.2.2.E &.2.2.2.2., O 2.2.2.2.,. . ; 2.2.2.2.2.` Q 2.2.2.2.2.1. 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.f s 2.2.2.2.&. y 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.6.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", -"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.y ( 2.2.2.d =.2.2.2.; ,.2.2.2.,. . 2.2.2.2.2.O . . ~ 2.2.2.=. &.2.2.2.2.O ,.1.2.2.1. ; 2.2.2.2.2.` ~ 2.2.2.2.2.,. 4.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.6.E d 2.2.2.6.&. s 2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", -"2.2.2.2.2.<.2.<.2.2.2.2.2.2.<.2.2.2.2.2.<.2.<.2.<.2.2.2.<.2.2.2.<.2.2.2.2.2.2.2.2.2.2.2.2.2.2.<.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.<.2.<.2.2.2.2.2.<.2.2.<.2.2.2.2.2.2.2.2.<.2.2.2.2.2.2.2.y ` 2.2.2.W . ,.<.2.<.+ . ,.2.2.2.*. =.2.2.2.2.O ~ 2.2.2.2.; &.2.2.2.,. &.2.2.2.<.O O 2.<.2.2.<./ ~ 2.2.2.2.<.1. 1.<.<.2.2.<.<.<.<.2.<.2.2.2.2.2.2.f s 2.2.2.2.&. y 2.2.<.2.2.2.<.2.2.2.2.2.2.2.2.2.2.2.2.2.2.<.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.<.2.2.2.2.2.2.2.2.2.<.2.2.2.<.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.<.2.2.2.2.2.2.2.2.2.<.2.2.2.2.2.2.2.2.2.2.2.2.2.<.2.", -"2.<.2.<.2.2.2.2.2.<.2.2.2.<.2.2.2.2.<.2.2.2.2.2.<.2.2.2.<.2.2.2.2.2.2.2.2.<.<.2.2.2.<.2.2.<.2.2.2.2.<.2.<.2.<.2.2.<.<.2.2.<.2.2.2.<.2.2.2.2.<.2.2.<.2.2.2.2.<.2.2.2.<.2.2.2.<.2.<.2.2.<.<.2.2.2.2.<.2.<.2.<.y ( 2.<.2.( + 2.2.2.2.; ,.2.2.<.( ` <.2.2.<.O Q 2.2.<.2.f &.2.2.2.%. Q 2.2.2.2.; 1.2.2.<.2.E Q 2.2.<.2.2.,. : > > ; > > > : : > > > E <.2.<.2.f d 2.<.2.2.&. y 2.2.<.2.2.2.2.2.2.2.2.<.<.2.2.2.<.2.2.<.2.2.2.2.<.2.<.2.<.2.2.<.<.2.2.<.2.2.2.2.2.<.2.2.<.2.2.<.2.2.<.2.2.2.<.2.<.2.2.<.2.2.<.2.2.<.2.<.2.2.2.2.<.2.<.<.2.2.<.2.2.2.2.<.2.<.2.2.2.2.2.<.<.2.2.2.<.2.2.<.2.2.", -"<.<.2.<.<.2.<.<.2.<.<.2.<.2.2.<.<.2.<.<.<.2.2.<.2.<.2.2.<.2.2.<.<.2.<.2.<.2.<.2.<.2.<.2.<.<.2.<.<.2.<.<.2.<.2.2.<.<.2.<.<.2.2.<.<.2.<.2.2.<.2.<.<.2.2.2.<.2.<.2.<.2.2.<.2.2.2.<.2.<.2.<.2.<.<.2.<.2.<.2.<.2.y ( 2.2.2.%. , <.2.<.2.; ,.2.<.<.E : E E E E E d Q 2.<.2.2.O Q 2.2.<.2.` &.2.<.2./ + E E E E E f f 1.2.<.2.r &.1.2.2.<.r Q 2.<.2.<.<.,. d 2.<.2.2.f s <.<.2.2.&. s <.1.<.2.2.<.<.2.<.2.<.2.<.2.<.2.<.2.<.<.2.<.<.2.<.<.2.<.2.2.<.<.2.<.<.2.2.<.2.<.<.2.2.<.<.2.<.2.2.2.<.2.<.2.2.<.<.2.<.2.2.<.2.<.2.<.2.<.2.<.2.<.<.2.2.2.<.2.<.2.2.<.<.2.2.<.<.2.<.2.2.2.<.2.<.2.2.<.<.<.2.<.", -"2.2.2.2.2.<.2.2.<.2.2.<.2.<.<.2.2.2.2.2.2.2.<.2.<.2.2.<.2.<.<.2.2.<.<.2.2.2.2.<.2.<.2.2.2.2.<.2.2.2.2.2.2.2.<.<.2.2.<.2.2.<.<.2.2.<.2.<.<.2.<.2.2.<.<.2.2.<.2.<.2.<.<.2.2.<.2.<.2.2.2.<.2.2.2.2.2.<.2.2.2.<.y ` 2.<.2.1.. y 2.<.<.2.; ,.<.2.2.d y <.<.2.2.2.,. d 2.2.<.<.O . Q <.<.2.2.:.O &.<.2.2.E r <.2.<.2.2.2.. t <.2.2.<.E f <.<.2.*.. ~ <.2.2.2.2.,. g <.2.<.2.f s 2.2.<.2.&. y 2.<.2.<.<.2.2.<.<.2.2.2.2.<.2.<.2.2.2.2.<.2.2.2.2.2.2.2.<.<.2.2.<.2.2.<.<.2.<.2.2.2.<.2.2.2.2.<.<.2.2.<.2.2.<.2.2.2.2.<.<.2.2.2.2.<.2.2.2.<.<.2.2.2.<.2.2.<.2.<.<.2.2.2.<.2.2.<.<.2.<.2.2.<.2.<.2.2.2.2.2.2.", -"<.2.<.<.<.2.2.<.2.<.<.2.2.<.2.<.2.<.<.2.<.<.2.<.<.2.<.<.2.2.2.<.<.2.2.<.2.<.2.<.<.2.2.<.<.2.2.<.2.<.<.2.<.<.<.2.2.<.2.<.<.2.2.<.<.<.2.2.2.2.<.<.<.2.<.<.<.<.2.2.<.<.2.2.<.<.2.2.<.2.<.2.<.2.<.<.<.2.2.<.<.<.y ( <.2.<.<.> E <.2.2.<.+ ,.2.<.<.r f <.2.2.<.2.1. t <.<.<.2.O ~ <.<.2.<.2.t &.<.<.2.d y 2.2.<.<.<.<.O > 2.<.<.<.&. . t E d O Q <.2.<.<.<.,.. d 2.<.<.2.E s <.2.<.<.&. y <.2.2.2.2.<.<.2.2.<.2.<.2.<.<.2.2.<.<.2.2.<.2.<.<.2.<.<.<.2.2.<.2.<.<.2.2.<.2.2.<.<.2.2.<.<.<.2.<.<.<.2.<.<.2.2.<.<.<.<.2.2.<.2.2.2.<.2.2.2.2.<.2.<.<.2.<.2.2.2.2.<.<.2.<.2.<.2.2.<.2.<.<.2.<.2.2.<.<.2.<.<.", -"2.<.<.2.2.<.<.2.<.<.2.<.<.<.2.<.<.<.2.<.<.2.<.2.<.<.<.2.<.<.<.2.<.<.2.<.<.<.<.2.<.<.<.2.<.<.<.2.<.<.2.<.<.2.2.<.<.<.2.<.2.<.<.2.<.2.<.<.<.<.<.2.2.<.<.2.<.2.<.<.<.2.<.<.<.2.<.<.<.<.2.<.<.<.2.<.<.<.<.<.2.<.y ( 2.<.<.2.r / <.<.2.<.; ,.2.<.<.; E <.<.<.<.<.<.. ; <.2.<.<.O . ~ <.<.2.<.2.Q . &.2.<.<.r d <.<.<.2.<.2.: . :.<.2.<.<.; Q 2.<.<.2.<.,. d <.2.<.<.f s <.<.<.<.&. s <.<.<.<.<.2.<.<.2.<.<.<.<.2.<.<.<.2.<.<.<.2.<.<.2.<.<.2.2.<.<.<.2.<.2.<.<.2.<.<.2.<.<.<.2.<.2.<.<.2.2.<.<.2.<.<.2.<.<.2.<.<.<.<.<.<.<.<.<.<.2.<.<.<.2.<.<.<.<.<.<.2.<.<.<.2.<.<.2.<.<.<.2.<.<.<.<.2.<.<.<.2.", -"<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.2.<.<.2.<.<.<.<.<.<.<.2.<.<.2.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.2.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.2.<.<.<.<.<.<.<.<.2.<.<.<.<.2.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.2.2.<.<.<.s ( <.<.<.<.d &.<.<.<.<.+ ,.<.<.1.. Q 2.<.<.<.<.>.; . :.<.<.<.O Q <.<.2.<.<.-. &.<.<.<.; E <.<.<.<.<.<., %.<.<.<.<.W Q <.<.<.<.<.,. d <.<.<.<.f s <.<.<.<.&. y <.<.<.<.<.2.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.2.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.2.<.<.<.<.2.<.<.<.<.<.<.<.<.2.<.<.2.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.2.<.<.2.<.<.<.<.<.<.<.2.<.<.2.<.", -"<.<.2.<.<.2.<.<.<.<.<.2.2.<.<.<.<.<.<.<.<.<.2.<.<.2.<.<.<.<.<.<.<.<.<.2.<.<.<.2.2.<.<.2.<.<.<.<.<.<.<.2.2.<.2.<.<.<.<.2.2.<.<.<.2.<.<.<.<.<.<.<.<.<.2.<.<.<.<.<.<.<.<.2.<.1.<.<.<.2.<.<.2.<.<.<.<.<.<.<.<.<.y ( <.2.2.<.~ -.<.2.2.<.; ,.<.<.-. ) <.<.2.<.<.<.> =.<.2.<.O Q <.<.<.<.<.<., &.<.<.2.. Q <.<.2.<.<.<.t ) 2.<.<.<.1.; Q 2.<.<.<.2.,. f <.<.<.<.E d <.<.<.<.$. . t <.<.<.<.<.<.<.<.<.2.<.<.<.2.2.<.<.2.<.<.<.<.<.<.<.2.2.<.2.<.<.<.<.2.2.<.<.<.<.<.2.<.<.<.<.<.<.<.<.2.<.<.<.<.2.<.<.<.<.<.<.<.<.2.<.<.2.<.<.<.<.<.<.2.2.<.<.2.<.<.<.2.2.<.<.<.<.<.<.<.<.<.2.<.<.2.<.<.<.<.<.<.", -"<.<.<.<.<.<.<.2.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.t ( <.<.<.<.) . <.<.<.<.<.; :.<.<.&. &.<.<.<.<.<.<.r ) <.<.<.O Q <.<.<.<.<.2.E $.<.2.-. ( <.<.<.<.<.<.s W <.<.<.<.<.( Q <.<.<.<.<.:. d <.<.<.<.f s <.<.<.<.&. y <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.", -"<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.y ( <.<.<.<.%. > >.<.<.<.<.; ,.<.<.Q -.<.<.<.<.<.<.t E <.<.<.O . Q <.<.<.<.<.:.%. $.<.<.) &.<.<.<.<.<.<.d d <.<.<.<.<.<.d . . W <.<.<.<.<.:. d <.<.<.<.f s <.<.<.<.$. t <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.", -">.<.<.<.<.<.>.<.<.<.>.<.<.<.>.<.<.<.<.>.<.<.<.<.<.<.<.<.<.<.<.<.<.>.<.<.<.<.>.<.<.<.>.<.<.<.<.<.<.<.>.<.<.<.<.<.<.<.<.>.>.<.<.<.<.<.<.<.<.>.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.>.<.<.<.>.<.<.<.<.y . ( <.<.<.<.>.. t <.<.<.<.<.; -.<.<.f 1.>.<.<.<.<.>.d y >.<.>.O Q <.<.<.<.<.<.<.+ $.<.<.Q %.<.<.<.<.>.<.E r <.<.>.<.<.<.>.t E t Q >.<.<.<.<.:. d <.<.<.<.f d <.<.>.<.$. . y <.<.<.<.<.<.<.>.<.<.<.<.>.<.<.<.>.<.<.<.<.<.<.<.>.<.<.<.<.<.<.<.<.>.>.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.>.<.<.<.<.<.>.<.<.<.<.<.<.<.<.<.>.<.<.<.>.<.<.<.<.<.<.<.>.<.<.<.<.>.<.<.<.>.<.<.<.<.<.<.<.<.<.<.<.<.<.", -"<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.>.<.<.<.>.<.<.<.>.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.>.<.<.<.<.<.<.>.<.>.<.<.<.<.<.<.>.<.<.>.<.<.<.<.<.<.<.<.<.<.<.>.<.<.<.>.<.<.<.>.<.<.<.>.<.<.<.<.<.<.<.<.<.>.<.t / <.>.>.<.<.; f <.>.<.<.<.; :.<.>.y O <.<.<.<.<.<.<.f r >.<.<.O / <.<.<.<.<.>.<.d $.<.<.f :.<.<.<.<.<.<.W ; >.<.<.<.<.<.<.:.t r >./ Q <.>.<.<.<.,. d <.<.<.>.E y >.<.<.<.$. y >.<.<.<.>.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.>.<.<.<.<.<.<.>.<.>.<.<.<.<.<.<.>.<.<.<.<.>.<.<.>.<.<.>.<.<.<.<.<.<.<.<.<.<.<.>.<.<.<.>.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.>.<.<.>.<.<.<.>.<.", -"<.>.<.>.>.<.<.>.>.<.<.<.>.<.<.<.<.>.<.<.>.<.<.<.>.<.<.<.<.<.<.<.>.<.<.<.>.<.<.<.>.>.<.<.>.<.<.<.>.<.<.<.<.<.<.<.<.<.<.<.<.>.<.<.<.<.<.<.<.<.<.<.>.<.>.<.<.>.>.<.<.<.<.<.<.>.>.<.<.<.<.<.<.<.<.<.<.>.<.>.>.<.y ( <.<.<.<.<.t W <.<.<.<.>.+ :.>.<., . ; <.>.>.<.<.>.>.E + <.>.<.O . Q <.>.<.>.<.<.<.) $.<.>.t . <.<.<.>.<.<.<./ :.<.<.<.<.<.<.<.<.E . , -.<.:.O Q <.<.<.<.>.-. d <.<.>.>.f d <.<.>.<.$. t >.<.<.<.<.<.>.<.<.<.>.<.<.<.>.>.<.<.>.<.<.<.>.<.<.<.<.<.<.<.<.<.<.<.<.>.<.<.>.<.<.>.<.<.>.<.<.<.<.<.>.<.<.<.>.<.<.>.<.>.>.<.<.<.<.<.<.<.<.<.<.>.<.>.>.<.<.<.>.<.<.<.>.<.<.<.<.>.<.<.>.<.<.<.>.<.<.<.<.<.<.<.", -">.<.<.>.<.<.>.<.<.<.>.>.<.>.>.<.>.<.<.>.<.>.>.<.<.>.>.<.>.>.<.>.<.<.>.>.<.>.>.<.<.<.>.<.<.>.>.<.<.>.>.<.>.>.<.>.>.<.>.>.<.<.<.>.>.>.<.>.>.<.>.>.<.<.>.<.<.>.<.<.>.>.<.>.<.>.<.<.>.>.<.>.>.<.>.>.>.<.<.>.<.>.y ( >.<.<.>.>.f ) <.>.<.>.<.; :.<.>.+ , <.<.<.>.<.>.<.Q :.<.>.O / >.<.<.>.<.>.<.:.. $.>.<., + <.>.>.<.>.>.<.$. %.<.>.<.>.>.<.>.<.>.%.r t :.>.<.>.t Q >.>.<.>.<.:. d >.<.<.>.f d <.>.<.<.$. y <.<.>.>.<.>.<.<.>.>.<.>.>.<.<.<.>.<.<.>.>.<.<.>.>.<.>.>.<.>.>.<.>.>.<.<.<.>.<.<.>.<.<.>.<.<.>.>.<.>.<.<.>.>.<.<.>.<.<.>.<.<.>.>.<.>.>.<.>.>.>.<.<.>.<.<.>.<.<.<.>.>.<.>.>.<.>.<.<.>.<.>.>.<.<.>.>.<.>.>.<.>.", -"<.>.<.>.<.>.<.>.<.<.>.<.<.>.<.>.>.>.<.>.<.>.<.>.>.<.>.<.>.>.<.>.>.>.<.>.<.>.<.>.<.>.<.>.<.>.>.<.>.<.>.>.>.>.<.>.<.>.>.<.>.<.>.<.<.>.>.<.>.<.>.<.>.>.<.>.<.>.<.>.<.>.>.<.>.<.>.<.<.>.>.<.>.<.>.<.<.>.<.>.>.<.%.) ) ) ) ) ) ) ) ) ) ) ) ) ) -.>.<.>.<.>.-.) ) ) ) ) ) ) ) ) ) -.>.<.>.<.>.$.) ) ) ) ) ) ) ) ) ) ) ) ) ) :.>.<.) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) $.>.>.<.>.<.>.<.-.) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) :.>.>.) ) ) ) ) ) ) ) ) ) ) ) ) ) -.:.>.<.>.<.>.<.>.$.) ) ) ) ) ) ) ) ) ) ) ) ) ) -.>.<.$.) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) $.>.<.>.<.>.>.<.-.) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) -.>.<.>.<.>.<.>.<.<.>.<.$.t O . r ) <.>.>.<.>.%.) ) ) ) ) ) ) ) ) ) -.>.<.>.>.<.>./ / / / / / / / / / / / / / / / / / / / / / / / / / / / / %.<.>.>.<.%.) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) %.>.<.>.<.-.) ) ) ) ) ) ) ) ) ) ) ) ) ) ) %.<.>.<.>.>.<.>.>.<.>.<.>.<.>.<.>.<.>.<.>.>.<.>.<.>.>.>.>.<.>.<.>.>.<.>.<.>.<.>.<.>.<.>.>.<.>.<.>.<.<.>.<.>.<.>.<.>.<.>.>.<.>.<.>.>.<.>.<.>.<.<.>.<.>.<.>.<.>.<.<.>.<.<.>.<.>.>.>.<.>.<.>.<.>.>.<.>.<.>.>.<.>.", -">.<.>.<.>.<.>.<.>.>.<.>.>.<.>.<.<.<.>.<.>.<.>.<.<.>.<.>.<.>.>.<.<.>.>.<.>.<.>.<.>.<.>.<.>.<.>.>.<.>.>.<.<.<.>.<.>.<.<.>.>.<.<.>.<.>.>.<.<.>.<.>.<.>.>.<.>.<.>.<.<.>.>.<.<.>.<.>.>.<.<.>.<.>.<.>.>.<.<.>.>.<.>.<.>.<.<.>.<.>.>.<.>.>.<.>.<.>.<.>.>.>.<.>.:.>.>.<.<.>.>.>.<.:.>.<.>.<.>.<.>.>.<.>.>.<.<.>.<.>.>.<.>.<.<.>.<.>.>.<.<.>.<.>.>.<.<.>.<.>.>.>.>.<.>.<.>.<.>.<.>.<.>.>.>.<.<.>.<.>.<.>.>.<.<.>.<.>.>.<.>.<.>.<.>.<.<.>.<.>.>.<.>.<.>.<.<.>.<.>.<.>.<.>.<.>.<.>.<.>.>.<.>.<.>.<.>.>.<.>.>.<.>.<.>.<.>.<.>.>.>.<.>.<.<.>.<.>.<.>.>.<.>.<.>.<.>.<.<.>.<.>.>.<.>.<.<.>.>.<.>.<.<.>.<.>.<.>.>.:.>.<.>.<.>.<.>.>.<.>.<.>.>.$.W d t t t d / -.>.>.>.<.<.>.>.<.<.>.>.>.>.<.>.<.>.<.:.<.>.<.>.>.<.>.>.<.>.<.<.>.>.<.<.>.<.>.>.<.<.>.<.>.>.<.>.>.<.>.>.>.>.<.>.<.>.<.>.<.>.<.<.>.>.<.<.>.<.>.<.>.>.<.<.>.<.>.>.<.>.<.>.>.>.<.<.>.>.<.>.<.>.<.>.<.>.>.>.<.>.<.<.>.<.>.>.<.>.<.>.<.>.<.>.<.>.<.>.>.<.>.>.<.<.<.>.<.>.<.<.>.>.<.<.>.<.>.<.>.>.<.>.<.>.<.>.>.<.>.<.>.<.>.<.>.>.<.>.<.>.<.<.>.<.>.<.>.>.<.>.<.>.<.>.<.>.>.<.>.>.<.>.<.<.<.>.<.>.<.>.<.<.>.<.>.<.>.>.<.", -"<.>.>.<.>.>.>.<.<.>.>.>.>.>.>.>.>.>.<.>.>.<.>.>.>.<.>.<.>.<.>.<.>.<.>.>.>.>.>.>.>.<.>.>.>.<.>.<.>.<.<.>.>.>.>.>.<.>.>.>.<.>.<.>.>.<.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.<.>.>.>.>.>.>.<.>.<.>.>.<.>.<.<.>.>.>.<.>.<.>.>.>.>.>.>.<.>.>.<.>.>.<.>.>.>.<.<.>.<.<.>.<.>.<.>.<.>.>.>.<.>.>.>.<.>.>.<.>.>.<.<.>.>.>.<.>.<.>.>.>.>.>.>.<.>.>.>.<.>.<.>.>.>.>.>.<.>.>.<.>.<.>.<.>.<.>.>.>.<.>.<.>.<.>.>.<.>.<.<.>.>.>.<.>.<.>.>.<.<.>.>.>.>.>.>.>.<.>.>.<.<.>.>.<.>.<.>.>.>.>.<.>.<.>.>.<.>.>.<.>.>.>.<.>.>.<.>.<.>.<.>.>.>.<.>.<.<.>.>.>.>.>.>.<.>.<.>.<.>.<.>.>.>.<.>.<.>.<.<.>.<.>.>.<.>.<.<.>.<.>.>.<.>.<.>.<.>.<.>.>.>.>.<.>.>.>.<.>.<.>.>.>.>.>.>.>.>.<.>.>.>.>.>.<.>.<.>.<.>.>.<.>.<.>.>.<.>.>.>.<.>.<.>.<.>.<.<.>.>.<.>.>.>.>.>.<.>.>.>.<.>.<.>.<.<.>.>.<.>.>.>.>.<.>.>.>.<.>.>.>.>.>.<.>.<.>.>.<.>.<.<.>.>.>.<.>.<.>.>.<.<.>.>.>.>.>.>.<.>.>.>.<.>.>.>.>.<.>.<.>.>.>.>.<.>.>.>.>.>.>.>.<.>.>.>.<.>.<.>.<.<.>.>.>.>.>.<.>.>.>.<.>.<.>.>.<.>.<.>.<.>.<.<.>.>.<.>.<.>.<.>.<.>.<.>.<.>.<.<.>.<.>.>.<.>.<.<.>.>.<.>.>.>.<.<.>.>.>.>.>.>.>.>.>.<.>.>.<.>.>.>.<.>.<.>.<.>.<.", -">.>.>.>.<.>.>.>.>.>.<.>.<.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.<.>.<.>.>.<.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.<.>.>.>.>.>.>.>.<.>.<.>.>.>.<.>.>.>.<.<.>.>.>.>.<.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.<.>.>.>.<.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.<.>.>.<.>.>.>.>.>.>.>.<.>.>.>.>.>.>.<.>.>.>.<.>.>.>.>.>.>.<.>.<.>.>.<.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.<.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.<.>.>.<.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.<.>.>.>.>.>.>.>.<.>.>.>.>.>.>.<.>.<.>.>.>.>.>.<.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.<.<.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.<.>.>.<.>.>.>.<.>.>.>.<.<.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.<.>.>.>.<.>.<.>.>.>.>.>.<.>.>.<.>.>.>.<.>.<.>.>.<.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.<.>.<.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.", -">.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.<.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.", -">.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.", -">.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.", -">.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.;.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.;.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.;.>.>.>.>.;.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.;.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.;.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.;.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.;.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.;.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.;.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.", -">.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.;.>.>.>.;.>.>.>.;.>.>.>.>.;.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.;.>.>.;.>.>.>.>.>.>.>.>.;.>.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.>.>.;.>.>.;.>.>.>.>.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.;.>.>.>.;.>.>.>.;.>.>.>.>.;.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.;.>.>.>.>.;.>.>.>.;.>.>.>.>.;.>.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.>.>.;.>.>.>.;.>.>.>.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.>.;.>.>.>.;.>.>.>.>.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.;.>.>.>.>.;.>.>.>.;.>.>.>.>.;.>.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.;.>.>.>.;.>.>.>.;.>.>.>.>.;.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.;.>.>.>.;.>.>.>.>.;.>.>.;.;.>.>.>.;.>.>.>.>.>.>.>.>.;.>.>.>.;.>.>.;.;.>.;.>.>.>.>.>.>.>.>.>.>.;.>.>.;.>.>.;.>.>.>.>.;.>.>.>.>.;.", -">.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.;.>.;.>.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.;.>.>.>.;.>.;.>.;.>.>.;.>.;.>.;.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.>.;.>.;.>.>.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.;.>.;.>.;.>.;.>.>.;.>.;.>.;.>.;.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.>.;.>.;.>.>.;.>.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.>.;.>.;.>.>.;.>.;.>.>.;.>.>.>.;.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.>.>.>.>.>.;.>.;.;.>.;.;.;.>.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.", -";.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.>.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.>.;.>.;.>.>.>.;.;.>.>.;.;.>.>.>.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.;.>.;.>.;.>.;.>.>.;.>.>.>.>.;.>.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.>.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.>.>.;.>.>.;.;.>.>.;.>.>.>.>.;.>.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.;.>.>.>.;.>.;.>.>.;.>.>.>.>.;.>.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.>.;.>.;.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.>.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.>.>.;.>.>.;.>.>.>.>.;.>.>.;.>.;.>.>.>.>.;.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.;.>.>.;.>.>.>.;.>.;.>.>.;.>.>.>.;.;.>.>.;.;.>.>.>.", -">.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.;.>.>.;.>.;.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.;.>.;.>.;.>.;.>.>.;.;.>.>.>.;.;.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.;.>.>.;.>.;.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.;.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.;.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.;.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.;.>.>.;.>.;.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.;.;.>.;.>.;.;.;.;.>.>.;.;.>.;.>.;.>.;.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.>.;.>.;.;.>.;.;.>.;.>.;.>.;.>.>.;.>.;.>.;.>.>.;.;.>.>.;.>.;.", -";.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.;.;.;.>.;.;.>.;.;.>.>.;.;.>.;.>.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.>.;.;.>.;.;.>.;.;.>.>.;.;.>.;.>.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.;.>.>.;.;.>.>.;.;.;.;.>.;.;.>.;.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.;.;.;.>.;.>.>.;.;.>.>.;.;.;.;.>.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.>.;.;.;.>.;.;.>.;.>.>.;.;.>.;.;.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.;.>.>.;.>.;.;.;.>.;.;.>.;.;.>.;.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.;.;.>.;.;.>.>.;.;.;.;.>.;.;.>.;.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.>.;.;.;.>.;.;.>.>.;.>.;.;.>.;.;.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.;.;.;.>.;.>.>.;.;.>.>.;.;.;.;.>.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.;.>.>.;.>.;.;.>.>.;.;.;.>.>.;.;.;.>.;.>.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.>.;.>.;.>.>.>.;.;.>.;.>.>.;.;.;.>.;.;.>.;.;.>.>.;.;.>.;.>.", -";.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.>.;.;.>.;.>.;.;.;.;.;.;.;.;.;.;.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.>.;.;.>.;.>.;.;.;.;.;.;.;.;.;.;.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.>.>.;.;.>.;.>.;.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.>.;.;.>.;.;.;.>.;.;.;.>.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.>.;.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.;.>.;.;.;.;.;.;.>.>.;.;.;.>.;.;.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.>.;.;.>.;.;.;.>.;.;.;.>.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.;.;.;.;.;.;.>.;.;.;.>.>.;.;.>.;.>.;.;.;.>.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.;.;.;.;.>.;.;.>.;.>.;.;.;.;.;.;.;.;.;.;.", -">.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.>.;.;.>.;.>.>.;.;.>.>.;.;.>.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.>.;.;.>.;.>.>.;.;.>.>.;.;.>.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.>.;.>.>.;.;.;.;.;.>.;.;.>.;.;.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.>.;.;.>.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.>.;.;.;.;.>.;.;.;.>.;.;.;.;.;.;.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.>.>.;.;.;.;.;.>.;.;.>.;.;.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.>.;.>.;.;.;.>.;.;.>.;.;.>.>.;.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.>.;.;.;.;.>.;.;.;.>.;.;.;.;.;.;.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.>.;.;.>.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.;.>.;.>.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.;.;.;.>.;.;.;.>.;.>.>.;.;.>.;.;.;.;.;.;.;.;.>.;.;.;.;.;.>.;.;.>.;.>.>.;.;.>.>.;.;.>.", -";.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.;.>.;.;.;.;.;.;.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.>.;.;.;.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.;.>.;.;.;.;.;.;.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.>.;.;.>.;.;.;.;.>.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.;.;.>.;.;.>.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", -";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", -";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", -";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", -";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", -";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", -";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", -";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", -";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;." -}; diff --git a/session-manager/icons/icon-large.svg b/session-manager/icons/icon-large.svg deleted file mode 100644 index 39104f6..0000000 --- a/session-manager/icons/icon-large.svg +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/session-manager/non-session-manager.desktop.in b/session-manager/non-session-manager.desktop.in deleted file mode 100644 index cb05600..0000000 --- a/session-manager/non-session-manager.desktop.in +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Name=Non Session Manager -Comment=Audio session manager from the land of Non -Comment[fr]=Gestionnaire de session audio pour les terres de Non -Exec=@BIN_PATH@/non-session-manager -Terminal=false -Type=Application -Icon=non-session-manager -Categories=AudioVideo;Audio; diff --git a/session-manager/src/NSM_Proxy_UI.fl b/session-manager/src/NSM_Proxy_UI.fl deleted file mode 100644 index ffa1be3..0000000 --- a/session-manager/src/NSM_Proxy_UI.fl +++ /dev/null @@ -1,100 +0,0 @@ -# data file for the Fltk User Interface Designer (fluid) -version 1.0300 -header_name {.H} -code_name {.C} -class NSM_Proxy_UI {open -} { - Function {make_window()} {open - } { - Fl_Window {} { - label {NSM Proxy} open selected - xywh {644 190 635 665} type Double color 47 labelcolor 55 xclass {NSM-Proxy} visible - } { - Fl_Box {} { - label {Command-line options are incompatible with robust session management for a variety of reasons, so the NSM server does not support them directly. This proxy exists to allow programs which require command-line options to be included in an NSM session. Be warned that referring to files outside of the session directory will impair your ability to reliably archive and transport sessions. Patching the program to use NSM natively will result in a better experience. - -The program will be started with its current directory being a uniquely named directory under the current session directory. It is recommended that you only refer to files in the current directory. -} - xywh {15 11 610 139} box BORDER_BOX color 41 labelfont 8 labelsize 12 labelcolor 55 align 128 - } - Fl_File_Input executable_input { - label {Executable: } - xywh {115 162 495 31} - } - Fl_Input arguments_input { - label {Arguments:} - xywh {110 310 350 28} - } - Fl_Input label_input { - label {Label:} - xywh {110 340 350 28} - } - Fl_Return_Button start_button { - label Start - xywh {535 630 88 25} - } - Fl_Button kill_button { - label Kill - xywh {295 625 80 25} color 72 hide - } - Fl_Choice save_signal_choice { - label {Save Signal:} open - xywh {110 468 170 25} down_box BORDER_BOX - } { - MenuItem {} { - label None - xywh {0 0 40 24} - } - MenuItem {} { - label SIGUSR1 - xywh {10 10 40 24} - } - MenuItem {} { - label SIGUSR2 - xywh {20 20 40 24} - } - MenuItem {} { - label SIGINT - xywh {30 30 40 24} - } - } - Fl_Box {} { - label {The environment variables $NSM_CLIENT_ID and $NSM_SESSION_NAME will contain the unique client ID (suitable for use as e.g. a JACK client name) and the display name for the session, respectively. The variable $CONFIG_FILE will contain the name of the config file selected above.} - xywh {15 235 610 69} box BORDER_BOX color 41 labelfont 8 labelsize 12 labelcolor 55 align 128 - } - Fl_Box {} { - label {Some (very few) programs may respond to a specific Unix signal by somehow saving their state. If 'Save Signal' is set to something other than 'None', then NSM Proxy will deliver the specified signal to the proxied process upon an NSM 'Save' event. Most programs will treat these signals just like SIGTERM and die. You have been warned.} - xywh {15 378 610 79} box BORDER_BOX color 41 labelfont 8 labelsize 12 labelcolor 55 align 128 - } - Fl_Choice stop_signal_choice { - label {Stop Signal:} open - xywh {108 592 170 25} down_box BORDER_BOX - } { - MenuItem {} { - label SIGTERM - xywh {10 10 40 24} - } - MenuItem {} { - label SIGINT - xywh {40 40 40 24} - } - MenuItem {} { - label SIGHUP - xywh {50 50 40 24} - } - } - Fl_Box {} { - label {Most programs will shutdown gracefully when sent a SIGTERM or SIGINT signal. It's impossible to know which signal a specific program will respond to. A unhandled signal will simply kill the process, and may cause problems with the audio subsystem (e.g. JACK). Check the program's documentation or source code to determine which signal to use to stop it gracefully.} - xywh {15 502 610 79} box BORDER_BOX color 41 labelfont 8 labelsize 12 labelcolor 55 align 128 - } - Fl_File_Input config_file_input { - label {Config File:} - xywh {114 195 406 31} - } - Fl_Button config_file_browse_button { - label Browse - xywh {530 195 85 25} - } - } - } -} diff --git a/session-manager/src/nsm-proxy-gui.C b/session-manager/src/nsm-proxy-gui.C deleted file mode 100644 index ef02972..0000000 --- a/session-manager/src/nsm-proxy-gui.C +++ /dev/null @@ -1,291 +0,0 @@ - -/*******************************************************************************/ -/* Copyright (C) 2012 Jonathan Moore Liles */ -/* */ -/* This program is free software; you can redistribute it and/or modify it */ -/* under the terms of the GNU General Public License as published by the */ -/* Free Software Foundation; either version 2 of the License, or (at your */ -/* option) any later version. */ -/* */ -/* This program is distributed in the hope that it will be useful, but WITHOUT */ -/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ -/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for */ -/* more details. */ -/* */ -/* You should have received a copy of the GNU General Public License along */ -/* with This program; see the file COPYING. If not,write to the Free Software */ -/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/*******************************************************************************/ - -#pragma GCC diagnostic ignored "-Wunused-parameter" - - -#define _MODULE_ "nsm-proxy-gui" - -#define APP_NAME "NSM Proxy" -#define APP_TITLE "NSM Proxy" - -#include -#include -#include "NSM_Proxy_UI.H" -#include -#include -#include -#include -#include - -lo_server losrv; -lo_address nsmp_addr; - -static NSM_Proxy_UI *ui; - -static char *client_error; - -int -osc_update ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - printf( "Got update for %s\n", path ); - - Fl::lock(); - - if (!strcmp( path, "/nsm/proxy/label" )) - ui->label_input->value( &argv[0]->s ); - else if (!strcmp( path, "/nsm/proxy/arguments" )) - ui->arguments_input->value( &argv[0]->s ); - else if (!strcmp( path, "/nsm/proxy/executable" )) - ui->executable_input->value( &argv[0]->s ); - else if (!strcmp( path, "/nsm/proxy/config_file" )) - ui->config_file_input->value( &argv[0]->s ); - else if (!strcmp( path, "/nsm/proxy/save_signal" )) - { - if ( argv[0]->i == SIGUSR1 ) - ui->save_signal_choice->value( 1 ); - else if ( argv[0]->i == SIGUSR2 ) - ui->save_signal_choice->value( 2 ); - else if ( argv[0]->i == SIGINT ) - ui->save_signal_choice->value( 3 ); - else - ui->save_signal_choice->value( 0 ); - } - else if (!strcmp( path, "/nsm/proxy/stop_signal" )) - { - if ( argv[0]->i == SIGTERM ) - ui->stop_signal_choice->value( 0 ); - else if ( argv[0]->i == SIGINT ) - ui->stop_signal_choice->value( 1 ); - else if ( argv[0]->i == SIGHUP ) - ui->stop_signal_choice->value( 2 ); - } - if (!strcmp( path, "/nsm/proxy/client_error" )) - { - if ( client_error != NULL ) - free(client_error); - - client_error = NULL; - - if ( strlen(&argv[0]->s) > 0 ) - client_error = strdup(&argv[0]->s); - } - - Fl::unlock(); - - return 0; -} - - -void -init_osc ( const char *osc_port ) -{ - - lo_server_thread loth = lo_server_thread_new( osc_port, NULL ); - losrv = lo_server_thread_get_server( loth ); - -//error_handler ); - - char *url = lo_server_get_url(losrv); - printf("OSC: %s\n",url); - free(url); - - /* GUI */ - - lo_server_thread_add_method( loth, "/nsm/proxy/executable", "s", osc_update, NULL ); - lo_server_thread_add_method( loth, "/nsm/proxy/arguments", "s", osc_update, NULL ); - lo_server_thread_add_method( loth, "/nsm/proxy/config_file", "s", osc_update, NULL ); - lo_server_thread_add_method( loth, "/nsm/proxy/label", "s", osc_update, NULL ); - lo_server_thread_add_method( loth, "/nsm/proxy/save_signal", "i", osc_update, NULL ); - lo_server_thread_add_method( loth, "/nsm/proxy/stop_signal", "i", osc_update, NULL ); - lo_server_thread_add_method( loth, "/nsm/proxy/client_error", "s", osc_update, NULL ); - - lo_server_thread_start( loth ); -} - -/*****************/ -/* GUI Callbacks */ -/*****************/ - -void -handle_kill ( Fl_Widget *o, void *v ) -{ - lo_send_from( nsmp_addr, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/kill", "" ); -} - -void -handle_start ( Fl_Widget *o, void *v ) -{ - lo_send_from( nsmp_addr, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/start", "sss", - ui->executable_input->value(), - ui->arguments_input->value(), - ui->config_file_input->value() ); -} - -void -handle_label ( Fl_Widget *o, void *v ) -{ - lo_send_from( nsmp_addr, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/label", "s", - ui->label_input->value() ); -} - -void -handle_executable ( Fl_Widget *o, void *v ) -{ - ui->label_input->value( ui->executable_input->value() ); -} - - -void -handle_config_file ( Fl_Widget *o, void *v ) -{ -} - -void -handle_config_file_browse ( Fl_Widget *o, void *v ) -{ - const char * file = fl_file_chooser( "Pick file", "*", NULL, 1 ); - - ui->config_file_input->value( file ); -} - -void -handle_save_signal ( Fl_Widget *o, void *v ) -{ - int sig = 0; - - const char* picked = ui->save_signal_choice->mvalue()->label(); - - if ( !strcmp( picked, "SIGUSR1" ) ) - sig = SIGUSR1; - else if ( !strcmp( picked, "SIGUSR2" ) ) - sig = SIGUSR2; - else if ( !strcmp( picked, "SIGINT" ) ) - sig = SIGINT; - - lo_send_from( nsmp_addr, losrv, LO_TT_IMMEDIATE,"/nsm/proxy/save_signal", "i", - sig ); -} - -void -handle_stop_signal ( Fl_Widget *o, void *v ) -{ - int sig = SIGTERM; - - const char* picked = ui->stop_signal_choice->mvalue()->label(); - - if ( !strcmp( picked, "SIGTERM" ) ) - sig = SIGTERM; - else if ( !strcmp( picked, "SIGINT" ) ) - sig = SIGINT; - else if ( !strcmp( picked, "SIGHUP" ) ) - sig = SIGHUP; - - lo_send_from( nsmp_addr, losrv, LO_TT_IMMEDIATE,"/nsm/proxy/stop_signal", "i", - sig ); -} - -void -connect_ui ( void ) -{ - ui->executable_input->callback( handle_executable, NULL ); - ui->config_file_input->callback( handle_config_file, NULL ); - ui->kill_button->callback( handle_kill, NULL ); - ui->start_button->callback( handle_start, NULL ); - ui->save_signal_choice->callback( handle_save_signal, NULL ); - ui->stop_signal_choice->callback( handle_stop_signal, NULL ); - ui->label_input->callback( handle_label, NULL ); - ui->config_file_browse_button->callback( handle_config_file_browse, NULL ); -} - - - -void cb_dismiss_button ( Fl_Widget *w, void *v ) -{ - w->window()->hide(); -} - -void -check_error ( void *v ) -{ - if ( client_error ) - { - { - Fl_Double_Window *o = new Fl_Double_Window(600,300+15,"Abnormal Termination"); - { - Fl_Box *o = new Fl_Box(0+15,0+15,600-30,50); - o->box(FL_BORDER_BOX); - o->color(FL_RED); - o->labelcolor(FL_WHITE); - o->align(FL_ALIGN_CENTER|FL_ALIGN_WRAP); - o->copy_label( client_error ); - } - { - Fl_Text_Display *o = new Fl_Text_Display(0+15,50+15,600-30,300-75-30); - o->buffer(new Fl_Text_Buffer()); - o->buffer()->loadfile( "error.log" ); - } - { - Fl_Button *o = new Fl_Button(600-75-15,300-25,75,25,"Dismiss"); - o->callback(cb_dismiss_button,0); - } - - o->show(); - } - - free(client_error); - client_error = NULL; - } - - Fl::repeat_timeout( 0.5f, check_error, v ); -} - -int -main ( int argc, char **argv ) -{ - if ( argc != 3 ) - { - fprintf( stderr, "Usage: %s --connect-to url\n", argv[0] ); - return 1; - } - - init_osc( NULL ); - - nsmp_addr = lo_address_new_from_url( argv[2] ); - - printf( "Connecting to nsm-proxy at: %s\n", argv[2] ); - - ui = new NSM_Proxy_UI; - - Fl_Double_Window *w = ui->make_window(); - - connect_ui(); - - lo_send_from( nsmp_addr, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/update", "" ); - - w->show(); - - Fl::lock(); - - Fl::add_timeout( 0.5f, check_error, NULL ); - - Fl::run(); - - return 0; -} diff --git a/session-manager/src/nsm-proxy.C b/session-manager/src/nsm-proxy.C deleted file mode 100644 index 981c798..0000000 --- a/session-manager/src/nsm-proxy.C +++ /dev/null @@ -1,760 +0,0 @@ - -/*******************************************************************************/ -/* Copyright (C) 2012 Jonathan Moore Liles */ -/* */ -/* This program is free software; you can redistribute it and/or modify it */ -/* under the terms of the GNU General Public License as published by the */ -/* Free Software Foundation; either version 2 of the License, or (at your */ -/* option) any later version. */ -/* */ -/* This program is distributed in the hope that it will be useful, but WITHOUT */ -/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ -/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for */ -/* more details. */ -/* */ -/* You should have received a copy of the GNU General Public License along */ -/* with This program; see the file COPYING. If not,write to the Free Software */ -/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/*******************************************************************************/ - -#pragma GCC diagnostic ignored "-Wunused-parameter" - -#define _MODULE_ "nsm-proxy" -#define APP_NAME "NSM Proxy" -#define APP_TITLE "NSM Proxy" - -#include "debug.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static lo_server losrv; -static lo_address nsm_addr; -static lo_address gui_addr; -static int nsm_is_active; -static char *project_file; -static int die_now = 0; -static int signal_fd; - -static char *nsm_client_id; -static char *nsm_display_name; - -#define CONFIG_FILE_NAME "nsm-proxy.config" - -void show_gui ( void ); - -class NSM_Proxy { - - char *_label; - char *_executable; - char *_config_file; - char *_arguments; - int _save_signal; - int _stop_signal; - int _pid; - char *_client_error; - -public: - - int stop_signal ( void ) {return _stop_signal;} - - NSM_Proxy ( ) - { - _label = _executable = _arguments = _config_file = 0; - _save_signal = 0; - _stop_signal = SIGTERM; - _pid = 0; - _client_error = 0; - } - - ~NSM_Proxy ( ) - { - } - - void handle_client_death ( int status ) - { - printf( "proxied process died unexpectedly... not dying\n" ); - /* proxied process died unexpectedly */ - - if ( _client_error != NULL ) - free(_client_error); - - asprintf(&_client_error, "The proxied process terminated abnormally during invocation. Exit status: %i.", status ); - - show_gui(); - - _pid = 0; - } - - void kill ( void ) - { - if ( _pid ) - { - ::kill( _pid, _stop_signal ); - } - } - - bool start ( const char *executable, const char *arguments, const char *config_file ) - { - if ( _executable ) - free( _executable ); - if ( _arguments ) - free( _arguments ); - if ( _config_file ) - free( _config_file ); - - _executable = strdup( executable ); - - if ( arguments ) - _arguments = strdup( arguments ); - else - _arguments = NULL; - - if ( config_file ) - _config_file = strdup( config_file ); - else - _config_file = NULL; - - return start(); - } - - bool start ( void ) - { - dump( project_file ); - - if ( _pid ) - /* already running */ - return true; - - if ( !_executable ) - { - WARNING( "Executable is null." ); - return false; - } - - int pid; - if ( ! (pid = fork()) ) - { - MESSAGE( "Launching %s\n", _executable ); - -// char *args[] = { strdup( executable ), NULL }; - - char *cmd; - - if ( _arguments ) - asprintf( &cmd, "exec %s %s >error.log 2>&1", _executable, _arguments ); - else - asprintf( &cmd, "exec %s >error.log 2>&1", _executable ); - - char *args[] = { strdup("/bin/sh"), strdup( "-c" ), cmd, NULL }; - - setenv( "NSM_CLIENT_ID", nsm_client_id, 1 ); - setenv( "NSM_SESSION_NAME", nsm_display_name, 1 ); - if ( _config_file ) - setenv( "CONFIG_FILE", _config_file, 1 ); - unsetenv( "NSM_URL" ); - - if ( -1 == execvp( "/bin/sh", args ) ) - { - WARNING( "Error starting process: %s", strerror( errno ) ); - exit(1); - } - } - - _pid = pid; - - return _pid > 0; - } - - void save_signal ( int s ) - { - _save_signal = s; - } - - void stop_signal ( int s ) - { - _stop_signal = s; - } - - void label ( const char *s ) - { - if ( _label ) - free( _label ); - - _label = strdup( s ); - - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/label", "s", _label ); - } - - void save ( void ) - { - DMESSAGE( "Sending process save signal" ); - if ( _pid ) - ::kill( _pid, _save_signal ); - } - - - bool dump ( const char *path ) - { - char *fname; - asprintf( &fname, "%s/%s", path, CONFIG_FILE_NAME ); - - FILE *fp = fopen( fname, "w" ); - - free( fname ); - - if ( !fp ) - { - WARNING( "Error opening file for saving: %s", strerror( errno ) ); - return false; - } - - if ( _executable && strlen(_executable) ) - fprintf( fp, "executable\n\t%s\n", _executable ); - - if ( _arguments && strlen(_arguments) ) - fprintf( fp, "arguments\n\t%s\n", _arguments ); - - if ( _config_file && strlen(_config_file) ) - fprintf( fp, "config file\n\t%s\n", _config_file ); - - fprintf( fp, "save signal\n\t%i\n", _save_signal ); - - fprintf( fp, "stop signal\n\t%i\n", _stop_signal ); - - if ( _label && strlen(_label) ) - fprintf( fp, "label\n\t%s\n", _label ); - - fclose( fp ); - - return true; - } - - bool restore ( const char *path ) - { - FILE *fp = fopen( path, "r" ); - if ( ! fp ) - { - WARNING( "Error opening file for restore: %s", strerror( errno ) ); - return false; - } - - char *name; - char *value; - - MESSAGE( "Loading file config \"%s\"", path ); - - while ( 2 == fscanf( fp, "%m[^\n]\n\t%m[^\n]\n", &name, &value ) ) - { - - DMESSAGE( "%s=%s", name, value ); - - if ( !strcmp( name, "executable" ) ) - _executable = value; - else if (!strcmp( name, "arguments" ) ) - _arguments = value; - else if (!strcmp( name, "config file" ) ) - _config_file = value; - else if ( !strcmp( name, "save signal" ) ) - { - _save_signal = atoi( value ); - free( value ); - } - else if ( !strcmp( name, "stop signal" ) ) - { - _stop_signal = atoi( value ); - free( value ); - } - else if ( !strcmp( name, "label" ) ) - { - label( value ); - free( value ); - } - else - { - WARNING( "Unknown option \"%s\" in config file", name ); - } - - free( name ); - } - - fclose( fp ); - - start(); - - return true; - } - - void update ( lo_address to ) - { - DMESSAGE( "Sending update" ); - - lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/save_signal", "i", _save_signal ); - lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/label", "s", _label ? _label : "" ); - lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/executable", "s", _executable ? _executable : "" ); - lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/arguments", "s", _arguments ? _arguments : "" ); - lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/config_file", "s", _config_file ? _config_file : "" ); - lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/stop_signal", "i", _stop_signal ); - lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/proxy/client_error", "s", _client_error ? _client_error : "" ); - - - } -}; - -NSM_Proxy *nsm_proxy; - -bool -snapshot ( const char *file ) -{ - return nsm_proxy->dump(file); -} -void -announce ( const char *nsm_url, const char *client_name, const char *process_name ) -{ - printf( "Announcing to NSM\n" ); - - lo_address to = lo_address_new_from_url( nsm_url ); - - int pid = (int)getpid(); - - lo_send_from( to, losrv, LO_TT_IMMEDIATE, "/nsm/server/announce", "sssiii", - client_name, - ":optional-gui:", - process_name, - 1, /* api_major_version */ - 0, /* api_minor_version */ - pid ); - - lo_address_free( to ); -} - -bool -open ( const char *file ) -{ - char *path; - asprintf( &path, "%s/%s", file, CONFIG_FILE_NAME ); - - bool r = nsm_proxy->restore( path ); - - free( path ); - - return r; -} - -/****************/ -/* OSC HANDLERS */ -/****************/ - -/* NSM */ - -int -osc_announce_error ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - if ( strcmp( types, "sis" ) ) - return -1; - - if ( strcmp( "/nsm/server/announce", &argv[0]->s ) ) - return -1; - - printf( "Failed to register with NSM: %s\n", &argv[2]->s ); - nsm_is_active = 0; - - return 0; -} - - -int -osc_announce_reply ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - if ( strcmp( "/nsm/server/announce", &argv[0]->s ) ) - return -1; - - printf( "Successfully registered. NSM says: %s", &argv[1]->s ); - - nsm_is_active = 1; - nsm_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ) ); - - return 0; -} - -int -osc_save ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - bool r = snapshot( project_file ); - - nsm_proxy->save(); - - if ( r ) - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/reply", "ss", path, "OK" ); - else - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/error", "sis", path, -1, "Error saving project file" ); - - return 0; -} - -static int gui_pid; - -void -show_gui ( void ) -{ - - int pid; - if ( ! (pid = fork()) ) - { - char executable[] = "nsm-proxy-gui"; - - MESSAGE( "Launching %s\n", executable ); - - char *url = lo_server_get_url( losrv ); - - char *args[] = { executable, strdup( "--connect-to" ), url, NULL }; - - if ( -1 == execvp( executable, args ) ) - { - WARNING( "Error starting process: %s", strerror( errno ) ); - - exit(1); - } - } - - gui_pid = pid; - - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_shown", "" ); -} - -int -osc_show_gui ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - show_gui(); - - /* FIXME: detect errors */ - - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/reply", "ss", path, "OK" ); - - return 0; -} - -void -hide_gui ( void ) -{ - if ( gui_pid ) - { - kill( gui_pid, SIGTERM ); - } -} - -int -osc_hide_gui ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - hide_gui(); - - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" ); - - /* FIXME: detect errors */ - - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/reply", "ss", path, "OK" ); - - return 0; -} - -int -osc_open ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - const char *new_path = &argv[0]->s; - const char *display_name = &argv[1]->s; - const char *client_id = &argv[2]->s; - - if ( nsm_client_id ) - free(nsm_client_id); - - nsm_client_id = strdup( client_id ); - - if ( nsm_display_name ) - free( nsm_display_name ); - - nsm_display_name = strdup( display_name ); - - char *new_filename; - - mkdir( new_path, 0777 ); - - chdir( new_path ); - - asprintf( &new_filename, "%s/%s", new_path, CONFIG_FILE_NAME ); - - struct stat st; - - if ( 0 == stat( new_filename, &st ) ) - { - if ( open( new_path ) ) - { - } - else - { - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/error", "sis", path, -1, "Could not open file" ); - return 0; - } - - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" ); - } - else - { - show_gui(); - } - - if ( project_file ) - free( project_file ); - - project_file = strdup( new_path ); - -// new_filename; - - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/reply", "ss", path, "OK" ); - - if ( gui_addr ) - nsm_proxy->update( gui_addr ); - - return 0; -} - - - -/* GUI */ - -int -osc_label ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - nsm_proxy->label( &argv[0]->s ); - - return 0; -} - -int -osc_save_signal ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - nsm_proxy->save_signal( argv[0]->i ); - - return 0; -} - -int -osc_stop_signal ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - nsm_proxy->stop_signal( argv[0]->i ); - - return 0; -} - -int -osc_start ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - snapshot( project_file ); - - if ( nsm_proxy->start( &argv[0]->s, &argv[1]->s, &argv[2]->s ) ) - { - hide_gui(); - } - - return 0; -} - -int -osc_kill ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - nsm_proxy->kill(); - - return 0; -} - -int -osc_update ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) -{ - lo_address to = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) )); - - nsm_proxy->update( to ); - - gui_addr = to; - - return 0; -} - - - -void -signal_handler ( int x ) -{ - die_now = 1; -} - -void -set_traps ( void ) -{ - signal( SIGHUP, signal_handler ); - signal( SIGINT, signal_handler ); -// signal( SIGQUIT, signal_handler ); -// signal( SIGSEGV, signal_handler ); -// signal( SIGPIPE, signal_handler ); - signal( SIGTERM, signal_handler ); -} - - -void -init_osc ( const char *osc_port ) -{ - losrv = lo_server_new( osc_port, NULL ); -//error_handler ); - - char *url = lo_server_get_url(losrv); - printf("OSC: %s\n",url); - free(url); - - /* NSM */ - lo_server_add_method( losrv, "/nsm/client/save", "", osc_save, NULL ); - lo_server_add_method( losrv, "/nsm/client/open", "sss", osc_open, NULL ); - lo_server_add_method( losrv, "/nsm/client/show_optional_gui", "", osc_show_gui, NULL ); - lo_server_add_method( losrv, "/nsm/client/hide_optional_gui", "", osc_hide_gui, NULL ); - lo_server_add_method( losrv, "/error", "sis", osc_announce_error, NULL ); - lo_server_add_method( losrv, "/reply", "ssss", osc_announce_reply, NULL ); - - /* GUI */ - lo_server_add_method( losrv, "/nsm/proxy/label", "s", osc_label, NULL ); - lo_server_add_method( losrv, "/nsm/proxy/save_signal", "i", osc_save_signal, NULL ); - lo_server_add_method( losrv, "/nsm/proxy/stop_signal", "i", osc_stop_signal, NULL ); - lo_server_add_method( losrv, "/nsm/proxy/kill", "", osc_kill, NULL ); - lo_server_add_method( losrv, "/nsm/proxy/start", "sss", osc_start, NULL ); - lo_server_add_method( losrv, "/nsm/proxy/update", "", osc_update, NULL ); - -} - -void -die ( void ) -{ - if ( gui_pid ) - { - DMESSAGE( "Killing GUI" ); - - kill( gui_pid, SIGTERM ); - } - - nsm_proxy->kill(); - - exit(0); -} - - -void handle_sigchld ( ) -{ - for ( ;; ) - { - int status; - pid_t pid = waitpid(-1, &status, WNOHANG); - - if (pid <= 0) - break; - - if ( pid == gui_pid ) - { - lo_send_from( nsm_addr, losrv, LO_TT_IMMEDIATE, "/nsm/client/gui_is_hidden", "" ); - - gui_pid = 0; - - /* don't care... */ - continue; - } - - if ( WIFSIGNALED(status) ) - { - /* process was killed via signal */ - if (WTERMSIG(status) == SIGTERM || - WTERMSIG(status) == SIGHUP || - WTERMSIG(status) == SIGINT || - WTERMSIG(status) == SIGKILL ) - { - /* process was killed via an appropriate signal */ - MESSAGE( "child was killed (maybe by us)\n" ); - die_now = 1; - continue; - } - } - else if ( WIFEXITED(status) ) - { - /* child called exit() or returned from main() */ - - MESSAGE( "child exit status: %i", WEXITSTATUS(status) ); - - if ( WEXITSTATUS(status) == 0 ) - { - /* apparently normal termination */ - MESSAGE( "child exited without error."); - die_now = 1; - continue; - } - else - { - MESSAGE("child exited abnormally."); - nsm_proxy->handle_client_death(WEXITSTATUS(status)); - } - } - } -} - -int -main ( int argc, char **argv ) -{ - set_traps(); - - sigset_t mask; - - sigemptyset( &mask ); - sigaddset( &mask, SIGCHLD ); - - sigprocmask(SIG_BLOCK, &mask, NULL ); - - signal_fd = signalfd( -1, &mask, SFD_NONBLOCK ); - - nsm_proxy = new NSM_Proxy(); - - init_osc( NULL ); - - const char *nsm_url = getenv( "NSM_URL" ); - - if ( nsm_url ) - { - announce( nsm_url, APP_TITLE, argv[0] ); - } - else - { - fprintf( stderr, "Could not register as NSM client.\n" ); - exit(1); - } - - - struct signalfd_siginfo fdsi; - - /* listen for sigchld signals and process OSC messages forever */ - for ( ;; ) - { - ssize_t s = read(signal_fd, &fdsi, sizeof(struct signalfd_siginfo)); - - if (s == sizeof(struct signalfd_siginfo)) - { - if (fdsi.ssi_signo == SIGCHLD) - handle_sigchld(); - } - - lo_server_recv_noblock( losrv, 500 ); - - if ( die_now ) - die(); - } -} diff --git a/session-manager/src/send_osc.C b/session-manager/src/send_osc.C deleted file mode 100644 index 609ce70..0000000 --- a/session-manager/src/send_osc.C +++ /dev/null @@ -1,104 +0,0 @@ - -/*******************************************************************************/ -/* Copyright (C) 2010 Jonathan Moore Liles */ -/* */ -/* This program is free software; you can redistribute it and/or modify it */ -/* under the terms of the GNU General Public License as published by the */ -/* Free Software Foundation; either version 2 of the License, or (at your */ -/* option) any later version. */ -/* */ -/* This program is distributed in the hope that it will be useful, but WITHOUT */ -/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ -/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for */ -/* more details. */ -/* */ -/* You should have received a copy of the GNU General Public License along */ -/* with This program; see the file COPYING. If not,write to the Free Software */ -/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/*******************************************************************************/ - -// #include -#include -#include -#include -#include -#include -#include -#include - -static bool got_response = false; - -/************************/ -/* OSC Message Handlers */ -/************************/ - -static int osc_reply ( const char *path, const char *types, lo_arg **argv, int argc, lo_message, void * ) -{ -// OSCDMSG(); - - printf( "%s : ", path ); - - for ( int i = 0; i < argc; ++i ) - { - switch ( types[i] ) - { - case 's': - printf( "\"%s\" ", &argv[i]->s ); - break; - case 'f': - printf( "%f ", argv[i]->f ); - break; - case 'i': - printf( "%i ", argv[i]->i ); - break; - } - } - - printf( "\n" ); - - got_response = true; - - return 0; -} - - - -int main(int argc, char *argv[]) -{ - OSC::Endpoint s; - - s.init( LO_UDP ); - - s.add_method( NULL, NULL, osc_reply, 0, ""); - - std::list args; - - for ( int i = 3; i < argc; ++i ) - { - const char *s = argv[i]; - - if ( strspn( s, "+-0123456789" ) == strlen( s ) ) - { - args.push_back( OSC::OSC_Int( atol( s ) ) ); - } - else if ( strspn( s, ".+-0123456789" ) == strlen( s ) ) - args.push_back( OSC::OSC_Float( atof( s ) ) ); - else - { - args.push_back( OSC::OSC_String( s ) ); - } - } - - lo_address t = lo_address_new_from_url( argv[1] ); - - fprintf( stderr, "Sending to %s\n", argv[1] ); - - s.send( t, argv[2], args ); - - printf( "Waiting for reply...\n" ); - - while ( ! got_response ) - s.wait( 1000 * 30 ); - - return 0; -} diff --git a/session-manager/src/session-manager.C b/session-manager/src/session-manager.C deleted file mode 100644 index e296b86..0000000 --- a/session-manager/src/session-manager.C +++ /dev/null @@ -1,1440 +0,0 @@ - -/*******************************************************************************/ -/* Copyright (C) 2012 Jonathan Moore Liles */ -/* */ -/* This program is free software; you can redistribute it and/or modify it */ -/* under the terms of the GNU General Public License as published by the */ -/* Free Software Foundation; either version 2 of the License, or (at your */ -/* option) any later version. */ -/* */ -/* This program is distributed in the hope that it will be useful, but WITHOUT */ -/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ -/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for */ -/* more details. */ -/* */ -/* You should have received a copy of the GNU General Public License along */ -/* with This program; see the file COPYING. If not,write to the Free Software */ -/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/*******************************************************************************/ - - - -#include "OSC/Endpoint.H" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "debug.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "FL/Fl_Packscroller.H" -#include "FL/Fl_Scalepack.H" - -#include -#include -#include -#include - -#define APP_NAME "Non-Session-Manager" -#define APP_TITLE "Non Session Manager" - -// static lo_address nsm_addr = NULL; -static time_t last_ping_response; - -static OSC::Endpoint *osc; - - -struct Daemon -{ - const char *url; - lo_address addr; - bool is_child; - - Daemon ( ) - { - url = NULL; - addr = NULL; - is_child = false; - } -}; - -static std::list daemon_list; /* list of all connected daemons */ - -#define foreach_daemon( _it ) for ( std::list::iterator _it = daemon_list.begin(); _it != daemon_list.end(); ++ _it ) - -static -Fl_Image * -get_program_icon ( const char *name ) -{ - const char *tries[] = - { - "/usr/local/share/icons/hicolor/32x32/apps/%s.png", - "/usr/local/share/pixmaps/%s.png", - "/usr/local/share/pixmaps/%s.xpm", - "/usr/share/icons/hicolor/32x32/apps/%s.png", - "/usr/share/pixmaps/%s.png", - "/usr/share/pixmaps/%s.xpm", - }; - - for ( unsigned int i = 0; i < 6; i++ ) - { - char *icon_p; - - asprintf( &icon_p, tries[i], name ); - - Fl_Image *img = Fl_Shared_Image::get( icon_p ); - - free( icon_p ); - - if ( img ) - return img; - } - - return NULL; -} - -class NSM_Client : public Fl_Group -{ - char *_client_id; - char *_client_label; - char *_client_name; - - Fl_Box *client_name; - Fl_Box *icon_box; - Fl_Progress *_progress; - Fl_Light_Button *_dirty; - Fl_Light_Button *_gui; - Fl_Button *_remove_button; - Fl_Button *_restart_button; - Fl_Button *_kill_button; - - void - set_label ( void ) - { - char *l; - - if ( _client_label ) - asprintf( &l, "%s (%s)", _client_name, _client_label ); - else - l = strdup( _client_name ); - - if ( ! icon_box->image() ) - { - Fl_Image *img = get_program_icon( _client_name ); - - if ( img ) - { - icon_box->image( img ); - } - } - - client_name->copy_label( l ); - - free(l); - - redraw(); - } - -public: - - void - name ( const char *v ) - { - if ( _client_name ) - free( _client_name ); - - _client_name = strdup( v ); - - set_label(); - } - - void - client_label ( const char *s ) - { - if ( _client_label ) - free( _client_label ); - - _client_label = strdup( s ); - - set_label(); - } - - void - client_id ( const char *v ) - { - if ( _client_id ) - free( _client_id ); - - _client_id = strdup( v ); - } - - void - progress ( float f ) - { - _progress->value( f ); - _progress->redraw(); - } - - void - dirty ( bool b ) - { - _dirty->value( b ); - _dirty->redraw(); - } - - void - gui_visible ( bool b ) - { - _gui->value( b ); - _gui->redraw(); - } - - - void - has_optional_gui ( void ) - { - _gui->show(); - _gui->redraw(); - } - - void - stopped ( bool b ) - { - if ( b ) - { - _remove_button->show(); - _restart_button->show(); - _kill_button->hide(); - _gui->deactivate(); - _dirty->deactivate(); - color( fl_color_average( FL_BLACK, FL_RED, 0.50 ) ); - redraw(); - } - else - { - _gui->activate(); - _dirty->activate(); - _kill_button->show(); - _restart_button->hide(); - _remove_button->hide(); - } - - /* _restart_button->redraw(); */ - /* _remove_button->redraw(); */ - } - - void - pending_command ( const char *command ) - { - _progress->copy_label( command ); - - stopped( 0 ); - - if ( ! strcmp( command, "ready" ) ) - { - color( fl_color_average( FL_BLACK, FL_GREEN, 0.50 ) ); - _progress->value( 0.0f ); - } - else if ( ! strcmp( command, "quit" ) || - ! strcmp( command, "kill" ) || - ! strcmp( command, "error" ) ) - { - color( fl_color_average( FL_BLACK, FL_RED, 0.50 ) ); - } - else if ( ! strcmp( command, "stopped" ) ) - { - stopped( 1 ); - } - else - { - color( fl_color_average( FL_BLACK, FL_YELLOW, 0.50 ) ); - } - - redraw(); - } - - - static void - cb_button ( Fl_Widget *o, void * v ) - { - ((NSM_Client*)v)->cb_button( o ); - } - - void - cb_button ( Fl_Widget *o ) - { - if ( o == _dirty ) - { - MESSAGE( "Sending save."); - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/gui/client/save", _client_id ); - } - } - else if ( o == _gui ) - { - MESSAGE( "Sending hide/show GUI."); - foreach_daemon ( d ) - { - if ( !_gui->value() ) - osc->send( (*d)->addr, "/nsm/gui/client/show_optional_gui", _client_id ); - else - osc->send( (*d)->addr, "/nsm/gui/client/hide_optional_gui", _client_id ); - } - } - else if ( o == _remove_button ) - { - MESSAGE( "Sending remove."); - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/gui/client/remove", _client_id ); - } - } - else if ( o == _restart_button ) - { - MESSAGE( "Sending resume" ); - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/gui/client/resume", _client_id ); - } - } - else if ( o == _kill_button ) - { - MESSAGE( "Sending stop" ); - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/gui/client/stop", _client_id ); - } - } - } - - - const char * - client_id ( void ) - { return _client_id; } - - NSM_Client ( int X, int Y, int W, int H, const char *L ) : - Fl_Group( X, Y, W, H, L ) - { - - _client_id = NULL; - _client_name = NULL; - _client_label = NULL; - - align( FL_ALIGN_LEFT | FL_ALIGN_INSIDE ); - color( fl_darker( FL_RED ) ); - box( FL_UP_FRAME ); - - int yy = Y + H * 0.25; - int hh = H * 0.50; - int xx = X + W - ( 75 + Fl::box_dw( box() ) ); - int ss = 2; - - /* /\* dummy group *\/ */ - /* { Fl_Group *o = new Fl_Group( X, Y, W, H ); */ - /* o->end(); */ - /* resizable( o ); */ - /* } */ - - { Fl_Pack *o = new Fl_Pack( X + 15, Y, 300 - 5, H ); - o->type( FL_HORIZONTAL ); - o->spacing( 10 ); - { icon_box = new Fl_Box( 0, 0, 32, 32 ); - } - - { Fl_Box *o = client_name = new Fl_Box( 0, 0, 300, 48 ); - /* o->color( FL_BLUE ); */ - o->align( FL_ALIGN_INSIDE | FL_ALIGN_LEFT ); - o->labeltype( FL_NORMAL_LABEL ); - } - o->end(); - } - - { Fl_Box *o = new Fl_Box( X + 300, Y, 100, h() ); - Fl_Group::current()->resizable(o); - } - - { Fl_Progress *o = _progress = new Fl_Progress( xx, Y + H * 0.25, 75, H * 0.50, NULL ); - o->box( FL_FLAT_BOX ); - o->color( FL_BLACK ); - o->copy_label( "launch" ); - o->labelsize( 12 ); - o->minimum( 0.0f ); - o->maximum( 1.0f ); - } - - { Fl_Group *o = new Fl_Group( X + W - 400, Y, 400, H ); - - xx -= 50 + ss; - - { Fl_Light_Button *o = _dirty = new Fl_Light_Button( xx, yy, 50, hh, "SAVE" ); - - o->align( FL_ALIGN_LEFT | FL_ALIGN_INSIDE ); - o->labelsize( 9 ); - o->box( FL_UP_BOX ); - o->type(0); - o->color(); - o->selection_color( FL_YELLOW ); - o->value( 0 ); - o->callback( cb_button, this ); - } - - xx -= 40 + ss; - - { Fl_Light_Button *o = _gui = new Fl_Light_Button( xx, yy, 40, hh, "GUI" ); - - o->align( FL_ALIGN_LEFT | FL_ALIGN_INSIDE ); - o->labelsize( 9 ); - o->box( FL_UP_BOX ); - o->type(0); - o->color(); - o->selection_color( FL_YELLOW ); - o->value( 0 ); - o->hide(); - o->callback( cb_button, this ); - } - - xx -= 25 + ss; - - { Fl_Button *o = _kill_button = new Fl_Button( xx, yy, 25, hh, "@square" ); - o->labelsize( 9 ); - o->box( FL_UP_BOX ); - o->type(0); -// o->color( FL_RED ); - o->value( 0 ); - o->tooltip( "Stop" ); - o->callback( cb_button, this ); - } - - xx -= 25 + ss; - - { Fl_Button *o = _restart_button = new Fl_Button( xx, yy, 25, hh ); - - - o->box( FL_UP_BOX ); - o->type(0); -// o->color( FL_GREEN ); - o->value( 0 ); - o->label( "@>" ); - o->tooltip( "Resume" ); - o->hide(); - o->callback( cb_button, this ); - } - - xx -= 25 + ss; - - { Fl_Button *o = _remove_button = new Fl_Button( xx, yy, 25, hh ); - - - o->box( FL_UP_BOX ); - o->type(0); -// o->color( FL_RED ); - o->value( 0 ); - o->label( "X" ); - o->tooltip( "Remove" ); - o->hide(); - o->callback( cb_button, this ); - } - - - o->end(); - } - end(); - } - - ~NSM_Client ( ) - { - if ( _client_id ) - { - free( _client_id ); - _client_id = NULL; - } - - if ( _client_name ) - { - free( _client_name ); - _client_name = NULL; - } - - if ( _client_label ) - { - free( _client_label ); - _client_label = NULL; - } - - if ( label() ) - { - free( (char*)label() ); - label( NULL ); - } - } -}; - -static -void -fl_awake_alert( void *v ) -{ - if ( v ) - { - fl_alert( "%s", (char*)v ); - free( v ); - } -} - -void -browser_callback ( Fl_Widget *w, void * ) -{ - w->window()->hide(); -} - -class NSM_Controller : public Fl_Group -{ - - Fl_Text_Display *status_display; - -public: - - Fl_Pack *clients_pack; - Fl_Pack *buttons_pack; - Fl_Button *close_button; - Fl_Button *abort_button; - Fl_Button *save_button; - Fl_Button *open_button; - Fl_Button *new_button; - Fl_Button *add_button; - Fl_Button *duplicate_button; - Fl_Button *quit_button; - Fl_Button *refresh_button; - Fl_Box *session_name_box; - - Fl_Tree *session_browser; - - int status_lines; - - static void cb_handle ( Fl_Widget *w, void *v ) - { - ((NSM_Controller*)v)->cb_handle( w ); - - } - - void log_status ( const char *s ) - { - time_t now; - - now = time( NULL ); - - struct tm * tm = localtime( &now ); - - char *ts; - asprintf( &ts, "%02i:%02i:%02i ", tm->tm_hour, tm->tm_min, tm->tm_sec ); - - status_display->buffer()->append( ts ); - free( ts ); - - status_display->buffer()->append( s ); - status_display->scroll( ++status_lines, 0 ); - status_display->buffer()->append( "\n" ); - } - - void - cb_handle ( Fl_Widget *w ) - { - if ( w == abort_button ) - { - if ( 0 == fl_choice( "Are you sure you want to abort this session? Unsaved changes will be lost.", "Abort", "Cancel", NULL ) ) - { - MESSAGE( "Sending abort." ); - - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/server/abort" ); - } - } - } - if ( w == close_button ) - { - MESSAGE( "Sending close." ); - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/server/close" ); - } - } - else if ( w == save_button ) - { - MESSAGE( "Sending save." ); - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/server/save" ); - } - } - else if ( w == open_button ) - { - const char *name = fl_input( "Open Session", NULL ); - - if ( ! name ) - return; - - Fl_Tree_Item *item = session_browser->find_item( name ); - - if ( item ) - session_browser->select_only( item, 1 ); - } - else if ( w == duplicate_button ) - { - const char *name = fl_input( "New Session", NULL ); - - if ( ! name ) - return; - - MESSAGE( "Sending duplicate for: %s", name ); - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/server/duplicate", name ); - } - } - else if ( w == quit_button ) - { - window()->do_callback( window(), this ); - } - else if ( w == refresh_button ) - { - session_browser->clear(); - session_browser->redraw(); - MESSAGE( "Refreshing session list." ); - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/server/list" ); - } - } - else if ( w == session_browser ) - { - if ( session_browser->callback_reason() != FL_TREE_REASON_SELECTED ) - return; - - Fl_Tree_Item *item = session_browser->callback_item(); - - // session_browser->deselect( item, 0 ); - - if ( item->children() ) - return; - - char name[1024]; - - session_browser->item_pathname( name, sizeof(name), item ); - - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/server/open", name ); - } - } - else if ( w == new_button ) - { - const char *name = fl_input( "New Session", NULL ); - - if ( !name ) - return; - - MESSAGE( "Sending new for: %s", name ); - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/server/new", name ); - } - } - else if ( w == add_button ) - { - Fl_Select_Browser *browser; - - if ( daemon_list.size() > 1 ) - { - Fl_Window* win = new Fl_Window( window()->x(), window()->y(), 300, 400, "Choose Server" ); - { - { - Fl_Box *o = new Fl_Box( 0,0, 300, 100 ); - - o->label( "Connected to multiple NSM servers, please select which one to add a client to." ); - o->align( FL_ALIGN_CENTER | FL_ALIGN_INSIDE | FL_ALIGN_WRAP ); - } - { - Fl_Select_Browser *o = browser = new Fl_Select_Browser( 0, 100, 300, 300 ); - o->box( FL_ROUNDED_BOX ); - o->color( FL_BLACK ); - o->callback( browser_callback, win ); - foreach_daemon( d ) - { - o->add( (*d)->url ); - } - } - } - - win->end(); - - win->show(); - - while ( win->visible() ) - { - Fl::wait(); - } - - if ( ! browser->value() ) - return; - - const char *n = fl_input( "Enter executable name" ); - - if ( !n ) - return; - - char *name = strdup( n ); - - if ( index( name, ' ' ) ) - { - free( name ); - name = strdup( "nsm-proxy" ); - } - - lo_address nsm_addr = lo_address_new_from_url( browser->text( browser->value() ) ); - - osc->send( nsm_addr, "/nsm/server/add", name ); - - free( name ); - - delete win; - } - else - { - const char *n = fl_input( "Enter executable name" ); - - if ( !n ) - return; - - char *name = strdup( n ); - - if ( index( name, ' ' ) ) - { - free( name ); - name = strdup( "nsm-proxy" ); - } - - MESSAGE( "Sending add for: %s", name ); - /* FIXME: user should get to choose which system to do the add on */ - foreach_daemon ( d ) - { - osc->send( (*d)->addr, "/nsm/server/add", name ); - } - - free( name ); - } - - } - } - - - NSM_Client * - client_by_id ( const char *id ) - { - for ( int i = clients_pack->children(); i--; ) - { - NSM_Client *c = (NSM_Client*)clients_pack->child( i ); - - if ( ! strcmp( c->client_id(), id ) ) - { - return c; - } - } - return NULL; - } - - - const char *session_name ( void ) const - { - return session_name_box->label(); - } - - void - session_name ( const char *name ) - { - session_name_box->copy_label( name ); - - if ( strlen( name ) ) - { - save_button->activate(); - add_button->activate(); - duplicate_button->activate(); - abort_button->activate(); - close_button->activate(); - } - else - { - save_button->deactivate(); - add_button->deactivate(); - duplicate_button->deactivate(); - abort_button->deactivate(); - close_button->deactivate(); - } - - redraw(); - } - - void - client_stopped ( const char *client_id ) - { - NSM_Client *c = client_by_id( client_id ); - - if ( c ) - { - c->stopped( 1 ); - } - } - - void - client_quit ( const char *client_id ) - { - NSM_Client *c = client_by_id( client_id ); - - if ( c ) - { - clients_pack->remove( c ); - delete c; - } - - if ( clients_pack->children() == 0 ) - { - ((Fl_Packscroller*)clients_pack->parent())->yposition( 0 ); - } - - parent()->redraw(); - } - - void - client_new ( const char *client_id, const char *client_name ) - { - - NSM_Client *c; - - c = client_by_id( client_id ); - - if ( c ) - { - c->name( client_name ); - return; - } - - c = new NSM_Client( 0, 0, w(), 40, NULL ); - - c->name( client_name ); - c->client_id( client_id ); - c->stopped( 0 ); - - clients_pack->add( c ); - - redraw(); - } - - void client_pending_command ( NSM_Client *c, const char *command ) - { - if ( c ) - { - if ( ! strcmp( command, "removed" ) ) - { - clients_pack->remove( c ); - delete c; - - parent()->redraw(); - } - else - c->pending_command( command ); - } - } - - - void add_session_to_list ( const char *name ) - { - session_browser->add( name ); - session_browser->redraw(); - } - - - NSM_Controller ( int X, int Y, int W, int H, const char *L ) : - Fl_Group( X, Y, W, H, L ) - { - status_lines = 0; - - align( FL_ALIGN_RIGHT | FL_ALIGN_CENTER | FL_ALIGN_INSIDE ); - - { Fl_Pack *o = buttons_pack = new Fl_Pack( X, Y, W, 30 ); - o->type( Fl_Pack::HORIZONTAL ); - o->box( FL_NO_BOX ); - { Fl_Button *o = quit_button = new Fl_Button( 0, 0, 80, 50, "&Quit" ); - o->shortcut( FL_CTRL | 'q' ); - o->box( FL_UP_BOX ); - o->callback( cb_handle, (void*)this ); - } - { Fl_Button *o = refresh_button = new Fl_Button( 0, 0, 80, 50, "&Refresh" ); - o->shortcut( FL_CTRL | 'r' ); - o->box( FL_UP_BOX ); - o->callback( cb_handle, (void*)this ); - } - { Fl_Button *o = open_button = new Fl_Button( 0, 0, 80, 50, "&Open" ); - o->shortcut( FL_CTRL | 'o' ); - o->box( FL_UP_BOX ); - o->callback( cb_handle, (void*)this ); - } - { Fl_Button *o = close_button = new Fl_Button( 0, 0, 80, 50, "Close" ); - o->shortcut( FL_CTRL | 'q' ); - o->box( FL_UP_BOX ); - o->callback( cb_handle, (void*)this ); - } - { Fl_Button *o = abort_button = new Fl_Button( 0, 0, 80, 50, "Abort" ); - o->box( FL_UP_BOX ); - o->color( fl_color_average( FL_RED, fl_rgb_color(10,10,10), 0.5f ) ); - o->callback( cb_handle, (void*)this ); - } - { Fl_Button *o = save_button = new Fl_Button( 0, 0, 80, 50, "&Save" ); - o->shortcut( FL_CTRL | 's' ); - o->box( FL_UP_BOX ); - o->callback( cb_handle, (void*)this ); - } - { Fl_Button *o = new_button = new Fl_Button( 0, 0, 80, 50, "&New" ); - o->shortcut( FL_CTRL | 'n' ); - o->box( FL_UP_BOX ); - o->callback( cb_handle, (void*)this ); - } - { Fl_Button *o = duplicate_button = new Fl_Button( 0, 0, 100, 50, "Duplicate" ); - o->box( FL_UP_BOX ); - o->callback( cb_handle, (void*)this ); - } - - o->end(); - } - - int SH = 14; - - { Fl_Tile *o = new Fl_Tile( X, Y + 30, W, H - 30 ); - { Fl_Scalepack *o = new Fl_Scalepack( X, Y + 30, 300, H - ( 30 + SH ) ); - o->type( FL_VERTICAL ); - o->spacing( 2 ); - - { new Fl_Box( 0,0,100, 24, "Sessions" ); - } - - { - Fl_Tree *o = session_browser = new Fl_Tree( X, Y + 50, W / 3, H - ( 50 + SH ) ); - o->callback( cb_handle, (void *)this ); - o->color( FL_DARK1 ); - o->item_labelbgcolor( o->color() ); - o->item_labelfgcolor( FL_FOREGROUND_COLOR ); - o->sortorder( FL_TREE_SORT_ASCENDING ); - o->showroot( 0 ); - o->selection_color( fl_darker( FL_GREEN ) ); - o->selectbox( FL_UP_FRAME ); - o->box( FL_FLAT_BOX ); - /* o->label( "Sessions" ); */ - o->end(); - Fl_Group::current()->resizable( o ); - } // Fl_Tree - o->end(); - } - - Fl_Scalepack *scalepack; - { Fl_Scalepack *o = scalepack = new Fl_Scalepack( X + 300, Y + 30, W - 300, H - ( 30 + SH ) ); - o->type( FL_VERTICAL ); - o->spacing( 2 ); - - { session_name_box = new Fl_Box( 0, 0, 100, 25, "" ); - - } - - { Fl_Button *o = add_button = new Fl_Button( 0, 0, 100, 25, "&Add Client to Session" ); - o->shortcut( FL_CTRL | 'a' ); - o->box( FL_UP_BOX ); - o->align( FL_ALIGN_CLIP ); - o->callback( cb_handle, (void*)this ); - } - - { - Fl_Packscroller *o = new Fl_Packscroller( 0, 0, 100, H - ( 30 + SH ) ); - o->align( FL_ALIGN_TOP ); - o->labeltype( FL_SHADOW_LABEL ); - { - Fl_Pack *o = clients_pack = new Fl_Pack( 0, 0, 100, 100 ); - o->align( FL_ALIGN_TOP ); - o->spacing( 4 ); - o->type( Fl_Pack::VERTICAL ); - o->end(); - } - o->end(); - Fl_Group::current()->resizable( o ); - } // Fl_Packscroller - o->end(); - /* Fl_Group::current()->resizable( o ); */ - } // Fl_Scalepack - - { Fl_Box *o = new Fl_Box( X + 300, Y + 30, 100, H - ( 30 + SH )); - Fl_Group::current()->resizable(o); - } - - { Fl_Text_Display *o = status_display = new Fl_Text_Display( X, Y + H - SH, W, SH ); - o->color( FL_DARK1 ); - o->textcolor( FL_FOREGROUND_COLOR ); - o->box( FL_UP_BOX ); - o->textfont( FL_COURIER ); - o->textsize( 10 ); - Fl_Text_Buffer *b = new Fl_Text_Buffer(); - o->buffer(b); - } - - o->end(); - resizable( o ); - - } // Fl_tile - - end(); - - deactivate(); - } - - int min_h ( void ) - { - return 500; - } - - void - ping ( void ) - { - if ( daemon_list.size() ) - { - foreach_daemon( d ) - { - osc->send( (*d)->addr, "/osc/ping" ); - } - } - if ( last_ping_response ) - { - if ( time(NULL) - last_ping_response > 10 ) - { - if ( active() ) - { - deactivate(); - log_status( "Server is not responding..." ); - } - } - else - { - if ( !active() ) - { - log_status( "Server is back." ); - activate(); - } - } - } - } - - - int init_osc ( void ) - { - osc = new OSC::Endpoint(); - - if ( int r = osc->init( LO_UDP ) ) - return r; - - osc->owner = this; - - osc->add_method( "/error", "sis", osc_handler, osc, "msg" ); - osc->add_method( "/reply", "ss", osc_handler, osc, "msg" ); - osc->add_method( "/reply", "s", osc_handler, osc, "" ); - - osc->add_method( "/nsm/server/broadcast", NULL, osc_broadcast_handler, osc, "msg" ); - osc->add_method( "/nsm/gui/server_announce", "s", osc_handler, osc, "msg" ); - osc->add_method( "/nsm/gui/server/message", "s", osc_handler, osc, "msg" ); - osc->add_method( "/nsm/gui/gui_announce", "s", osc_handler, osc, "msg" ); - osc->add_method( "/nsm/gui/session/session", "s", osc_handler, osc, "path,display_name" ); - osc->add_method( "/nsm/gui/session/name", "ss", osc_handler, osc, "path,display_name" ); - osc->add_method( "/nsm/gui/client/new", "ss", osc_handler, osc, "path,display_name" ); - osc->add_method( "/nsm/gui/client/status", "ss", osc_handler, osc, "path,display_name" ); - osc->add_method( "/nsm/gui/client/switch", "ss", osc_handler, osc, "path,display_name" ); - osc->add_method( "/nsm/gui/client/progress", "sf", osc_handler, osc, "path,display_name" ); - osc->add_method( "/nsm/gui/client/dirty", "si", osc_handler, osc, "path,display_name" ); - osc->add_method( "/nsm/gui/client/has_optional_gui", "s", osc_handler, osc, "path,display_name" ); - osc->add_method( "/nsm/gui/client/gui_visible", "si", osc_handler, osc, "path,display_name" ); - osc->add_method( "/nsm/gui/client/label", "ss", osc_handler, osc, "path,display_name" ); - - osc->start(); - - return 0; - } - - - void announce ( const char *nsm_url ) - { - /* Daemon *d = new Daemon; */ - - /* d->url = nsm_url; */ - lo_address nsm_addr = lo_address_new_from_url( nsm_url ); -// d->is_child = true; - - /* daemon_list.push_back( d ); */ - - osc->send( nsm_addr, "/nsm/gui/gui_announce" ); - } - -private: - - static int osc_broadcast_handler ( const char *path, const char *, lo_arg **, int argc, lo_message msg, void * ) - { - if ( ! argc ) - /* need at least one argument... */ - return 0; - - DMESSAGE( "Relaying broadcast" ); - - foreach_daemon( d ) - { - char *u1 = lo_address_get_url( (*d)->addr ); - char *u2 = lo_address_get_url( lo_message_get_source( msg ) ); - - if ( strcmp( u1, u2 ) ) - { - osc->send( (*d)->addr, path, msg ); - } - - free( u1 ); - free( u2 ); - } - - return 0; - } - - static int osc_handler ( const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data ) - { -// OSC_DMSG(); - - NSM_Controller *controller = (NSM_Controller*)((OSC::Endpoint*)user_data)->owner; - - Fl::lock(); - - if ( !strcmp( path, "/nsm/gui/server/message" ) && !strcmp( types, "s" ) ) - { - controller->log_status( &argv[0]->s ); - } - else if ( !strcmp( path, "/nsm/gui/session/session" ) && - ! strcmp( types, "s" ) ) - { - controller->add_session_to_list( &argv[0]->s ); - } - else if ( !strcmp( path, "/nsm/gui/gui_announce" ) ) - { - /* pre-existing server is replying to our announce message */ - controller->activate(); - - lo_address nsm_addr = lo_message_get_source( msg ); - - osc->send( nsm_addr, "/nsm/server/list" ); - } - else if ( !strcmp( path, "/nsm/gui/server_announce" ) ) - { - /* must be a server we launched */ - - controller->activate(); - - Daemon *d = new Daemon; - - d->url = lo_address_get_url( lo_message_get_source( msg ) ); - d->addr = lo_address_new_from_url( d->url ); - d->is_child = true; - - daemon_list.push_back( d ); - - osc->send( d->addr, "/nsm/server/list" ); - } - else if ( !strcmp( path, "/nsm/gui/session/name" ) && - !strcmp( types, "ss" )) - { - controller->session_name( &argv[0]->s ); - - if ( !strcmp( &argv[0]->s, "" ) ) - { - controller->session_browser->deselect_all(); - } - else - { - Fl_Tree_Item *o = controller->session_browser->find_item( &argv[1]->s ); - if ( o ) - { - controller->session_browser->select_only( o, 0 ); - controller->session_browser->show_item( o, 0 ); - } - } - } - else if (!strcmp( path, "/error" ) && - !strcmp( types, "sis" ) ) - { - int err = argv[1]->i; - - if ( err != 0 ) - { - char *s; - asprintf( &s, "Command %s failed with:\n\n%s", &argv[0]->s, &argv[2]->s ); - - Fl::awake(fl_awake_alert, s); - } - } - else if (!strcmp( path, "/reply" ) && argc && 's' == *types ) - { - if ( !strcmp( &argv[0]->s, "/nsm/server/list" ) ) - { - controller->add_session_to_list( &argv[1]->s ); - } - else if ( !strcmp( &argv[0]->s, "/osc/ping" ) ) - { - last_ping_response = time( NULL ); - } - else if ( ! strcmp( types, "ss" ) ) - { - MESSAGE( "%s says %s", &argv[0]->s, &argv[1]->s); - controller->log_status( &argv[1]->s ); - } - } - - if ( !strncmp( path, "/nsm/gui/client/", strlen( "/nsm/gui/client/" ) ) ) - { - if ( !strcmp( path, "/nsm/gui/client/new" ) && - !strcmp( types, "ss" ) ) - { - controller->client_new( &argv[0]->s, &argv[1]->s ); - } - else - { - NSM_Client *c = controller->client_by_id( &argv[0]->s ); - - if ( c ) - { - if ( !strcmp( path, "/nsm/gui/client/status" ) && - !strcmp( types, "ss" )) - { - controller->client_pending_command( c, &argv[1]->s ); - } - else if ( !strcmp( path, "/nsm/gui/client/progress" ) && - !strcmp( types, "sf" )) - { - c->progress( argv[1]->f ); - } - else if ( !strcmp( path, "/nsm/gui/client/dirty" ) && - !strcmp( types, "si" )) - { - c->dirty( argv[1]->i ); - } - else if ( !strcmp( path, "/nsm/gui/client/gui_visible" ) && - !strcmp( types, "si" )) - { - c->gui_visible( argv[1]->i ); - } - else if ( !strcmp( path, "/nsm/gui/client/label" ) && - !strcmp( types, "ss" )) - { - c->client_label( &argv[1]->s ); - } - else if ( !strcmp( path, "/nsm/gui/client/has_optional_gui" ) && - !strcmp( types, "s" )) - { - c->has_optional_gui(); - } - else if ( !strcmp( path, "/nsm/gui/client/switch" ) && - !strcmp( types, "ss" )) - { - c->client_id( &argv[1]->s ); - } - } - else - MESSAGE( "Got message %s from unknown client", path ); - } - } - - Fl::unlock(); - Fl::awake(); - - return 0; - } -}; - - -static NSM_Controller *controller; - -void -ping ( void * ) -{ - controller->ping(); - Fl::repeat_timeout( 1.0, ping, NULL ); -} - -void -cb_main ( Fl_Widget *, void * ) -{ - if ( Fl::event_key() != FL_Escape ) - { - int children = 0; - foreach_daemon ( d ) - { - if ( (*d)->is_child ) - ++children; - } - - if ( children ) - { - if ( strlen( controller->session_name() ) ) - { - fl_message( "%s", "You have to close the session before you can quit." ); - return; - } - } - - while ( Fl::first_window() ) Fl::first_window()->hide(); - } -} - -int -main (int argc, char **argv ) -{ - fl_register_images(); - - Fl::lock(); - - Fl_Double_Window *main_window; - - { - Fl_Double_Window *o = main_window = new Fl_Double_Window( 800, 600, APP_TITLE ); - { - main_window->xclass( APP_NAME ); - - Fl_Widget *o = controller = new NSM_Controller( 0, 0, main_window->w(), main_window->h(), NULL ); - controller->session_name( "" ); - - Fl_Group::current()->resizable(o); - } - o->end(); - - o->size_range( main_window->w(), controller->min_h(), 0, 0 ); - - o->callback( (Fl_Callback*)cb_main, main_window ); - - o->show( 0, NULL ); - } - - static struct option long_options[] = - { - { "nsm-url", required_argument, 0, 'n' }, - { "help", no_argument, 0, 'h' }, - { 0, 0, 0, 0 } - }; - - int option_index = 0; - int c = 0; - - while ( ( c = getopt_long_only( argc, argv, "", long_options, &option_index ) ) != -1 ) - { - switch ( c ) - { - case 'n': - { - DMESSAGE( "Adding %s to daemon list", optarg ); - Daemon *d = new Daemon; - - d->url = optarg; - d->addr = lo_address_new_from_url( optarg ); - - daemon_list.push_back( d ); - break; - } - case 'h': - printf( "Usage: %s [--nsm-url...] [-- server options ]\n\n", argv[0] ); - exit(0); - break; - } - } - - const char *nsm_url = getenv( "NSM_URL" ); - - if ( nsm_url ) - { - MESSAGE( "Found NSM URL of \"%s\" in environment, attempting to connect.", nsm_url ); - - Daemon *d = new Daemon; - - d->url = nsm_url; - d->addr = lo_address_new_from_url( nsm_url ); - - daemon_list.push_back( d ); - } - - if ( controller->init_osc() ) - FATAL( "Could not create OSC server" ); - - if ( daemon_list.size() ) - { - foreach_daemon ( d ) - { - controller->announce( (*d)->url ); - } - } - else - { - /* start a new daemon... */ - MESSAGE( "Starting daemon..." ); - - char *url = osc->url(); - - if ( ! fork() ) - { - /* pass non-option arguments on to daemon */ - - char *args[4 + argc - optind]; - - int i = 0; - args[i++] = strdup("nsmd"); - args[i++] = strdup("--gui-url"); - args[i++] = url; - - for ( ; optind < argc; i++, optind++ ) - { - DMESSAGE( "Passing argument: %s", argv[optind] ); - args[i] = argv[optind]; - } - - args[i] = 0; - - if ( -1 == execvp( "nsmd", args ) ) - { - FATAL( "Error starting process: %s", strerror( errno ) ); - } - } - - free(url); - } - - Fl::add_timeout( 1.0, ping, NULL ); - Fl::run(); - - foreach_daemon ( d ) - { - if ( (*d)->is_child ) - { - MESSAGE( "Telling server to quit" ); - osc->send( (*d)->addr, "/nsm/server/quit" ); - } - } - - return 0; -} -