From owner-apps-samp@eso.org  Wed Apr 30 12:15:25 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id BEBA26242D5
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 12:14:34 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAEcH5005977
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 12:14:38 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UAEc45005976
	for apps-samp-outgoing; Wed, 30 Apr 2008 12:14:38 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAEb3U005972
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:14:37 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 43B0C1E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:16:33 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAPvjF0iJ3jon/2dsb2JhbACsdw
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6935932"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 12:11:39 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jr9Ke-0005Es-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:14:36 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jr9Ke-0004FK-By
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:14:36 +0100
Date: Wed, 30 Apr 2008 11:14:36 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: SAMP draft document introduction
Message-ID: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Dear apps-samp readers,

over the last few weeks, the SAMP authors (Thomas Boch, Mike Fitzpatrick
and Mark Taylor, working on an initial outline from John Taylor and with
additional input from Doug Tody, with guidance from Mark Allen) 
have put together a draft of the standard document for the proposed 
Simple Applications Messaging Protocol.  This has involved considerable 
effort and constructive debate from all parties.  Although what we 
currently have still requires some significant extra work, and does 
not represent complete agreement among the authors, we are posting 
it for public debate at this stage in view of the proximity to the 
upcoming IVOA Interop meeting (19-23 May).  Our hope is that people 
can familiarise themselves with the text and provide opinions on 
particular points on the list over the next couple of weeks, so that 
we can take advantage of the SAMP sessions of the Apps group in Trieste
to reach conclusions on things which still look to be contentious 
at that stage.  I apologise that the time scale for this is rather 
short; we had intended to begin the public debate somewhat earlier 
than this, but you know how these things go...

Accompanying this message, I am posting the following items:

   1. A draft of the current version of the SAMP standard in LaTeX
      and PDF form.

   2. A summary of TODO items - these are things which the authors know
      require more work.  They haven't received enough attention yet,
      but we know they need it before we can consider this as a
      Working Draft.

   3. A number of ISSUE items.  These are things which have come up
      as areas where the authors disagree or acknowledge that the
      answer is not clear.  These are posted as separate messages to
      encourage followups which tackle a single point rather than
      cover a wide range of topics.  The hope is that this will
      make it easier to keep track of, and reach consensus on,
      opinions on particular questions.

We would ask readers of this list, and particularly those who anticipate
using, or wanting to use, the resulting standard, to read the document 
and provide comments on it, including:

  - "this looks like a standard I can/would like to use for [application]"

  - "this looks unworkable for [application] because ..."

  - posting follow up messages giving opinions, and if appropriate reasons,
    on specific ISSUE items.

  - starting new ISSUE items for particular questions not addressed in the
    public debate so far.  For items which are expected to be contentious,
    please consider starting a new ISSUE thread for each one rather than
    posting a single message covering a diverse list of items, to make the
    debates easier to follow.

and anything else you feel appropriate.

Mark Taylor (for the authors)

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 12:20:04 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id D94D96242DA
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 12:20:03 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAK7Ln006652
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 12:20:07 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UAK7ii006651
	for apps-samp-outgoing; Wed, 30 Apr 2008 12:20:07 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAK69C006647
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:20:06 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 45B8F1E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:22:02 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="pdf'?scan'208";a="6936068"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 12:17:07 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jr9Pw-0005Fn-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:20:04 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jr9Pw-0004HG-L1
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:20:04 +0100
Date: Wed, 30 Apr 2008 11:20:04 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: SAMP draft text
Message-ID: <Pine.LNX.4.63.0804301118001.16355@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-561407174-1284099112-1209550804=:16355"
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---561407174-1284099112-1209550804=:16355
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

%
% LaTeX of current state of draft SAMP document 30 April 2008.
% PDF is attached to this message.
%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  For an conversion via cgiprint (HTX):
%  See http://vizier.u-strasbg.fr/local/man/cgiprint.htx
\def\ifhtx{\iffalse}	% Lines used only for the HTML version
\ifhtx
% . . .
% . . . Definitions in HTX context
% . . .
\else
\documentclass[12pt,notitlepage,onecolumn]{ivoa}
% . . .
% . . . Definitions in LaTeX context
% . . .
\fi
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% Comment/uncomment lines below to follow your LateX distribution...

%%
%% If document is processed with latex, dvips and ps2pdf
%%
\ifx\pdftexversion\undefined
   \usepackage[dvips]{graphicx}
   \DeclareGraphicsExtensions{.eps,.ps}
%% Uncomment following line if you want PDF thumbnails
%  \usepackage[ps2pdf]{thumbpdf}
% for old hyperref, use:
   \usepackage[ps2pdf]{hyperref}
%% for recent hyperref, use:
%  \usepackage[ps2pdf,bookmarks=true,bookmarksnumbered=true,hypertexnames=false,breaklinks=true,%
%  colorlinks,linkcolor=blue,urlcolor=blue]{hyperref}



%%
%% else if document is processed with pdflatex
%%
\else
   \usepackage[pdftex]{graphicx} %% graphics for pdftex (supports .pdf .jpg .png)
   \usepackage{epstopdf}         %% requires epstopdf
%% this is to support .ps files :
   \makeatletter
   \g@addto@macro\Gin@extensions{,.ps}
   \@namedef{Gin@rule@.ps}#1{{pdf}{.pdf}{`ps2pdf #1}}
   \makeatother
%% comment above lines if you have included ps files
%\DeclareGraphicsExtensions{.pdf,.jpg,.png}
%% Uncomment following line if you want PDF thumbnails
%  \usepackage[pdftex]{thumbpdf} 
%% for old hyperref, use:
   \usepackage[ps2pdf]{hyperref}
% for recent hyperref, use:
%  \usepackage[pdftex,bookmarks=true,bookmarksnumbered=true,hypertexnames=false,breaklinks=true,%
%  colorlinks,linkcolor=blue,urlcolor=blue]{hyperref}
   \pdfadjustspacing=1
\fi

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% For drawing colored text backgrounds
\usepackage{color}

% Revision history
% ----------------
%
% 16 april 2008 : inclusion of Mike Fitzpatrick's section on MTypes (email Tue, 15 Apr 2008 16:13:51)
% 11 april 2008 : inclusion of Mark Taylor's comments (email Fri, 11 Apr 2008 12:17:46 +0100 (BST))
% 28 april 2008 : overhaul by Mark Taylor incorporating email discussions to date
% 29 april 2008 : additions and edits by Mike Fitzpatrick

%%
%%  Header of the document...
%%
% Provide a title for your document
\title{SAMP, Simple Application Messaging Protocol}
% Give date and version number
\date{2008-04-30}

% Choose one document type from below
%\ivoatype{IVOA Note}
\ivoatype{IVOA Working Draft}
%\ivoatype{IVOA Proposed Recommendation}
%\ivoatype{IVOA Recommendation}

\version{1.00}
% Give author list: separate different authors with \\
% You can add email addresses with links \url{mailto:yourname@ivoa.net}
\author{T. Boch - boch@astro.u-strasbg.fr\\
         M. Fitzpatrick - fitz@noao.edu\\
         M. Taylor - m.b.taylor@bris.ac.uk\\
         ... \\}

\urlthisversion{\url{http://www.ivoa.net/...}}
\urllastversion{\url{http://www.ivoa.net/...}}
\previousversion{??}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\maketitle % print header in standard form

{\small
\begin{verbatim}
Draft version: $Revision: 1.17 $ $Date: 2008/04/30 10:17:48 $
\end{verbatim}
}

\begin{abstract}
SAMP is a messaging protocol that enables astronomy software tools to 
interoperate and communicate.

IVOA members have recognised that building a monolithic tool that attempts to fulfil all 
the requirements of all users is impractical, and it is a better use of our 
limited resources to enable individual tools to work together better. 
One element of this is defining common file formats for the exchange of data 
between different applications. Another important component is a messaging 
system that enables the applications to share data and take advantage of each 
other's functionality. SAMP is intended to build on the success of a prior 
messaging protocol, PLASTIC, which has been in use in 
over a dozen astronomy applications for two years and has proven popular with 
users and developers. SAMP is an IVOA-endorsed standard that builds on this 
success. It is also intended to form a framework for more general messaging 
requirements.
\end{abstract}

\tableofcontents

\section{Introduction}

\subsection{History}
SAMP is a direct descendent of the PLASTIC protocol, which in turn grew 
\textemdash in the VOTech \cite{votech} framework \textemdash
from the interoperability work of the Aladin \cite{2000A&AS..143...33B} and 
VisIVO \cite{2007HiA....14..622B} teams. We also note the 
contribution of the team behind the earlier XPA protocol \cite{xpa}. For more information 
on PLASTIC's history and purpose see the IVOA note {\em PLASTIC --- a protocol for 
desktop application interoperability} \cite{plastic}.

SAMP has similar aims to PLASTIC, but 
incorporates lessons learnt from two years of practical experience and ideas 
from partners who were not involved in PLASTIC's initial design.

Broadly speaking, SAMP is an abstract framework for
loosely coupled asynchronous RPC-like and/or event-based communication 
with extensible message semantics
using structured but weakly-typed data and based on a central service 
providing multi-directional publish/subscribe message brokering.
These concepts are expanded on below.
It attempts to make as few assumptions as possible about the transport
layer or programming language with which it is used.
It also defines a ``Standard Profile'' which specifies how to 
implement this framework using XML-RPC as the transport layer.
The result of combining this Standard Profile with the rest of the SAMP
standard is deliberately similar in design to PLASTIC, and the intention is
that existing PLASTIC applications can be modified to speak SAMP 
instead without great effort.

\subsection{Requirements and Scope}
SAMP aims to be a simple and extensible protocol that is platform and language 
neutral. 
The emphasis is on a 
simple protocol with a very shallow learning curve in order to encourage
as many application authors as possible to adopt it.
In other words SAMP is intended to do what you need most of the time. The SAMP authors 
believe that this is the best way to foster innovation and collaboration in
astronomy applications.

It is important to note therefore that SAMP's scope is reasonably modest; it is 
not intended to be the perfect messaging solution for all situations.
In particular SAMP itself has 
no support for transactions, guaranteed message delivery, message integrity or
messaging beyond a single machine.
However, by layering the SAMP architecture on top of suitable
messaging infrastructures such capabilities could be provided.
These possibilities are not discussed further in this document,
but the intention is to provide an architecture which is sufficiently
open to allow for such things in the future with little change to the
basics.

\subsection{Types of Messaging}
\label{sect:typeOfMsging}

         SAMP is currently limited to inter-application desktop messaging
with the idea that the basic framework presented here is extensible to meet
future needs, and so it is beyond the scope of this document to outline the
many types of messaging systems in use today (these are covered in detail
in many other documents).  While based on established messaging models,
SAMP is in many ways a hybrid of several basic messaging concepts; the
protocol is however flexible enough that later versions should be able to
interact fairly easily with other messaging systems because of the shared
messaging models.

The messaging concepts used within SAMP include:

\begin{description}
\item[Publish/Subscribe Messaging:]
     A publish/subscribe (pub/sub) messaging system supports an event driven
     model where information consumers and producers participate in message
     passing.  SAMP applications ``publish'' a message, while consumer
     applications ``subscribe'' to messages of interest and consume events.
     Sending applications associate messages with a specific meaning, and
     the underlying messaging system routes messages to consumers based on
     the message types in which an applications has registered an interest.
\item[Point-to-Point Messaging:]
     In point to point messaging systems, messages are routed to an
     individual consumer which maintains a queue of ``incoming'' messages.  In
     a traditional message queue, applications send messages to a specified
     queue and clients retrieve them.  In SAMP, the message system manages
     the delivery and routing of messages, but also permits the concept of a
     directed message meant for delivery to a specific application.  SAMP
     does not, however, guarantee the order of message delivery as with a
     traditional message queue.
\item[Event-based Messaging:]
     Event-based systems are systems in which producers deliver events, and in
     which messaging middleware delivers events to consumers based upon a
     previously specified interest.  One typical usage pattern of these systems
     is the publish-subscribe paradigm, however these systems are also widely
     used for integrating loosely coupled application components.  SAMP allows
     for the concept that an ``event'' occurred in the system and that these
     message types may have requirements different from messages where the
     sender is trying to invoke some action in the network of applications.
\item[Synchronous vs. Asynchronous Messaging:]
     As the term is used in this document, a ``synchronous'' message is one
     which blocks the sending application from further processing until a
     reply is received.  However, SAMP messaging is based on ``asynchronous''
     message and response in that the delivery of a message and its
     subsequent response are handled as separate activities by the
     underlying system.  With the exception of the synchronous message
     pattern supported by the system, sending or replying to a message using
     SAMP allows an application to return to other processing while the
     details of the delivery are handled separately.
\end{description}


\subsection{About this document}
This document contains the following main sections describing the SAMP protocol
and how to use it.
Section \ref{sect:architecture}
covers the requirements, basic concepts and overall architecture of SAMP.
Section \ref{sect:apis} defines abstract (i.e.\ independent of language,
platform and transport protocol) interfaces which clients and hubs 
must offer to participate in SAMP messaging, along with data types
and encoding rules required to use them, including an abstract API.
Section \ref{sect:profile}
explains how the abstract API can be mapped to specific network operations
to form an interoperable messaging system, and defines the ``Standard Profile'',
based on XML-RPC, which gives a particular set of such mappings.
Section \ref{sect:mtypes}
describes the use of the MType keys used to denote message semantics,
and outlines an MType vocabulary.

The key words ``MUST'', ``MUST NOT'', ``REQUIRED'', ``SHALL'', ``SHALL NOT'', 
``SHOULD'', ``SHOULD NOT'', ``RECOMMENDED'',  ``MAY'', and ``OPTIONAL'' 
in this document are to be interpreted as described in RFC 2119.

\section{Architectural Overview}
\label{sect:architecture}
This section provides a high level view of the SAMP protocol.

\subsection{Nomenclature}
In the text that follows these terms are used:

\begin{description}
\item[Client:]
     An application that understands SAMP. Could be a
     Sender, Recipient, or both.
\item[Hub:]
     A broker service for routing SAMP Messages.
\item[Sender:]
     A Client that can send SAMP Messages to
     Recipients via the Hub.
\item[Recipient:]
     A Client that can receive SAMP Messages from
     the hub. These may have originated from other Clients or be from the
     hub itself.
\item[Message:]
     A communication sent from a Sender to a Recipient
     via a SAMP Hub. May or may not provoke a Response.
\item[Response:]
     A communication which may be returned from a Recipient to a Sender
     in reply to a previous Message.  A Response may be either a return value
     or an error object.  In the terminology of this document,
     a Response is not itself a Message.  A Response is also known as a
     {\em reply} in this document.
\item[MType:]
     A key defining the semantics of a Message and of its arguments and
     return values (if any).  Every Message contains exactly one MType,
     and a Message is only delivered to Clients subscribed to that MType.
\item[Subscribed Client:]
     A Client is said to be subscribed to a given MType if it has
     declared to the Hub that it is prepared to receive Messages
     with that MType.
\item[Callable Client:]
     A Client to which the Hub is capable of performing callbacks.
     Clients are not obliged to be Callable if they wish only to send
     messages, and not to receive messages or asynchronous replies.
\item[Broadcast:]
     To send a SAMP Message to all subscribed clients.
\item[Profile:]
     A set of rules which map the abstract API defined by SAMP to a set of
     network operations which may be used by Clients to send and receive
     actual Messages.
\end{description}


\subsection{Messaging Topology}
SAMP has a hub-based architecture (see Figure~\ref{fig:samp-archi}). The hub is a single service used to route all 
messages between clients. This makes application discovery more 
straightforward in that each client only needs to locate the hub, and the services
provided by the hub are intended to simplify the actions of the client. A disadvantage of this 
architecture is that the hub may be a message bottleneck and the hub may be the single point of failure. 
However, it is not anticipated that message traffic will be such that the 
former is an issue,
and the latter may be mitigated by an appropriate strategy for hub restart
if failure is likely.
\begin{figure}
\begin{center}
\includegraphics[scale=0.5]{samp-archi}
\caption{The SAMP hub architecture}
\label{fig:samp-archi}
\end{center}
\end{figure}

Note that the hub is defined as a service interface which may have any of
a number of implementations.  It may be an independent application running as
a daemon, an adapter interface layered on top of an existing messaging
infrastructure, or a service provided by an application which is itself
one of the hub's clients.  The only requirement is that exactly one hub
must be running (per user-id) at a time for messaging to take place.


\subsection{The Life cycle of a Client}

A SAMP client goes through the following phases:

\begin{enumerate}
 	\item Determine whether a hub is running by using the appropriate hub discovery
 	mechanism
 	\item If so, use hub discovery mechanism to work out how to communicate
         with the hub.
 	\item Register with the hub.
 	\item Store metadata such as client name, description and icon in the
 	hub.
 	\item Subscribe to a list of MTypes to define messages which may be
 	received.
 	\item Interrogate the hub for metadata of other clients.
 	\item Send and/or receive messages to/from other clients via the hub.
 	\item Unregister with the hub.
\end{enumerate}

Phases 4--7 are all optional and may be repeated in any order.

\subsection{The Life cycle of a Hub}
A SAMP hub goes through the following phases:

\begin{enumerate}
 	\item Locate any existing hub by using the appropriate hub discovery mechanism.
 	\begin{enumerate}
 		\item Check whether the existing hub is alive.
 		\item If so, exit.
 	\end{enumerate}
 	\item If no hub is running, or a hub is found but is not
 	functioning, write/overwrite the hub discovery record and start up.
 	\item Await client registrations. When a client makes a legal
 	registration, assign it a public id,
     and add the application to the table of registered
 	clients under the public id. Broadcast a message [ref to messages
 	section here] to all subscribed clients announcing the registration of a
 	new client.
 	\item When a client stores metadata in the hub, broadcast a message
 	[...] to all candidate clients and make the metadata available.
 	\item When a client updates its list of subscribed MTypes, broadcast a
 	message[...] to all subscribed clients.
 	\item When the hub receives a message for relaying, pass it on to
 	appropriate recipients which are subscribed to the message's MType.
 	Broadcast messages are sent to all
 	subscribed clients except the sender, messages with a specified recipient
     are sent to that recipient if it is subscribed.
 	\item Await client unregistrations. When a client unregisters, broadcast
 	a message [...] to all subscribed clients announcing the unregistration
 	and remove the client from the table of registered clients.
 	\item If the hub is unable to communicate with a client, it may
 	unregister it as described in phase 7.
 	\item When the hub is about to shutdown, broadcast a message[...] to
 	all subscribed clients.
 	\item Delete the hub discovery record.
\end{enumerate}
Phases 3--8 are responses to events which may occur 
multiple times and in any order.

Readers should note that, given this scheme, race conditions may occur. We could
have for instance a client trying to register with a hub which has just shut down,
or an attempt to send to a recipient which has already unregistered.
Specific profiles MAY define best-practice rules in order to manage at best these
conditions,
but in general clients should be aware that in the absence of guaranteed
message delivery and timing, unexpected conditions are possible.

\subsection{Sending and Receiving messages}
\label{sect:delivery-outline}

Messages can be sent according to three patterns:

\begin{enumerate}
 	\item Notification
 	\item Asynchronous Call/Response
 	\item Synchronous Call/Response
\end{enumerate}

The Notification pattern allows a sender to send messages to one or more 
receivers without expecting a response.  A typical use is for
broadcasting events when the receiver is not expected to generate any
data or perform any specific action as a result.

The Call/Response pattern allows a sender to receive responses back 
from one or
more subscribed receivers in reply to a message, and also to find
out whether and when the receiver completed processing the message.
Under the hood, the pattern 
is asynchronous, but the Hub provides a convenience method that simulates 
synchronous calls. The purpose of this is to simplify the use of the protocol 
in such situations as scripting environments which cannot easily handle 
asynchronicity. However, it is recommended to use the asynchronous pattern 
where possible due to its greater robustness.

\subsection{Use of Profiles}
\label{sect:profiles}

The design of SAMP is based on the abstract interfaces
defined in Section~\ref{sect:apis}.  On its own however, this does
not include the detailed instructions required by application developers
to achieve interoperability.  To achieve that, application developers
must know how to map the operations in the abstract SAMP interfaces 
to specific I/O
(in most cases, network) operations.  It is these I/O operations
which actually form the communication between applications.
The rules defining this mapping from interface to I/O operations
are what constitute a SAMP ``Profile''
(the term ``Implementation'' was considered for this purpose, but rejected
because it has too many overlapping meanings in this context).

There are two ways in which such a Profile can be specified as far as
client application developers are concerned:
\begin{enumerate}
\item By describing exactly what bytes are to be sent using what wire
       protocols for each SAMP interface operation
\item By providing one or more language-specific libraries with calls
       which equate to those of the SAMP interface
\end{enumerate}
Although either is possible, SAMP is well-suited for approach (1) above
given a suitable low-level transport library.
This is the case since the operations are quite low-level, 
so client applications can easily
perform them without requiring an independently developed SAMP library.
This has the additional advantages that central effort does not have to
be expended in producing language-specific libraries, and that there
are no problems for application developers using ``unsupported'' languages.

Section~\ref{sect:profile} describes a Profile along the lines of (1) above,
based on XML-RPC, 
which can be used directly by client and hub developers, 
in conjunction with the abstract interface description
in Section~\ref{sect:apis} to write interoperable applications.
This is at present the only SAMP Profile which has been defined.

Although splitting the abstract interface and Profile descriptions 
in this way complicates the document
a little, it separates the basic design principles from the details
of how to apply them, and it opens the door for other Profiles
serving other use cases in the future.


\section{Abstract APIs and Data Types}
\label{sect:apis}

\subsection{Hub Discovery Mechanism}
\label{sect:hub-discovery}

In order to keep track of which hub is running, a hub discovery mechanism, capable 
of storing information about how to determine the existence of and communicate with 
a running hub, is needed. This is a Profile-specific matter and
a specific prescription will be described in \ref{sect:lockfile}.

\subsection{Communicating with the hub}
The details of how a client communicates with the hub are Profile-specific
and will be covered in section \ref{sect:profile}.

\subsection{Registering with the hub}

A client registers with the hub to:
\begin{enumerate}
     \item establish communication with the hub
     \item advertise its presence to the hub and to other clients
\end{enumerate}
Immediately following registration, the client will typically
perform some or all of the following optional operations:
\begin{enumerate}\setcounter{enumi}{2}
     \item supply the hub with metadata about itself, using the
     {\tt setMetadata()} call
     \item tell the hub how it wishes the hub to communicate with it,
     if at all (the mechanism for this is profile-dependent, and it may
     be implicit in registration)
     \item inform the hub which MTypes it wishes to receive, using the
     {\tt setMtypes()} call
\end{enumerate}


\subsection{SAMP Data Types}
\label{sect:samp-data-types}

For all hub/client communication, including the actual content of messages,
SAMP uses three conceptual data types:
\begin{enumerate}
\item {\tt string} --- a scalar value consisting of a sequence of characters;
        each character may be in the range 0x01--0x7f
\item {\tt list} --- an ordered array of data items
\item {\tt map} --- an unordered associative array of string-data item
        key-value pairs
\end{enumerate}
These types can in principle be nested to any level, so that the elements
of a list or the values of a map may themselves be strings, lists or maps.

There is no reserved representation for a null value, and it is 
illegal to send a null value in a SAMP context even if the underlying
transport protocol permits this.  However a zero-length
string or an empty list or map may where appropriate be used to mean null.

Although SAMP imposes no maximum on the length of a string,
particular transport protocols or implementation considerations 
may effectively do so; in general hub and client implementations 
are not expected to deal with data items of unlimited size.
General purpose MTypes should therefore be specified so that
bulk data is not sent within the message --- in general it is
preferred to define a message parameter as the URL (or filename)
of a potentially
large file rather than as the inline text of the file itself.

At the protocol level there is no provision for typing of scalars;
unlike many RPC protocols SAMP does not distinguish syntactically
between strings, integers, floating point values, booleans etc.
This minimizes the restrictions on what underlying transport
protocols may be used, and avoids a number of problems associated with
using typed values from untyped languages such as 
Python and Perl.

Some MTypes will however wish to define parameters or return
values which have non-string semantics,
and conventions for encoding these as {\tt string}s
are therefore in practice required. 
Such conventions only need to be understood by the sender and 
recipient of a given message and so can be established on a per-MType basis, 
but to avoid unnecessary duplication of effort some commonly-used
type encoding conventions are defined in the following section.


\subsection{Scalar type encoding conventions}
\label{sect:scalar-types}

The following BNF productions are used in the type encoding conventions
below:
\begin{verbatim}
<digit>          ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" |
                      "7" | "8" | "9"
<digits>         ::= <digit> | <digits> <digit>
<decimal_digits> ::= <digits> | <digits> "." | "." <digits>
                    | <digits> "." <digits>
<sign>           ::= "+" | "-"
\end{verbatim}

\begin{itemize}
\item \verb,<SAMP int> ::= [ <sign> ] <digits>,\\
    An integer value is encoded using its decimal representation with
    an optional preceding sign and with no
    leading, trailing or embedded whitespace.
    There is no guarantee about the largest or smallest values which can
    be represented, since this will depend on the processing environment
    at decode time.
%
\item \verb,<SAMP float> ::= [ <sign> ] <decimal_digits>,\\
       \verb,                 [ "e" | "E" [ <sign> ] <digits> ],\\
    A floating point value is encoded as a mantissa with an optional
    preceding sign followed by an optional exponent part
    introduced with the character ``{\tt e}'' or ''{\tt E}''.
    There is no guarantee about the largest or smallest values which can
    be represented or about the number of digits of precision which are
    significant, since these will depend on the processing environment
    at decode time.
%
\item \verb,<SAMP boolean> ::= "0" | "1",\\
    A boolean value is represented as an integer: zero represents false,
    and any other value represents true.
    1 is the recommended value to represent true.
\end{itemize}

The numeric types are based on the syntax of the C programming language,
since this syntax forms the basis for typed data syntax in many other
languages.
This list may be extended in the future if required.

Particular MType definitions may use these conventions or devise
their own as required.  Where the conventions in this list are used, 
message documentation should make it clear using a form of
words along the lines ``this parameter contains a {\em SAMP int\/}''.


\subsection{Application Metadata}
\label{sect:app-metadata}

A client may store metadata in the form of a {\tt map} of key-value pairs in the hub 
for retrieval by other clients. Typical metadata will be the human-readable 
name of the application, a description and a URL to its icon, but other values 
are permitted. The following keys are defined for well-known metadata items:
\begin{description}
 	\item[{\tt samp.name}] - A one word title for the application.
 	\item[{\tt samp.description.text}] - A short description of the
 	application, in plain text.
 	\item[{\tt samp.description.html}] - A description of the application,
 	in HTML.
 	\item[{\tt samp.icon.url}] - The URL of an icon in png, gif or jpeg format.
 	\item[{\tt samp.documentation.url}] - The URL of a documentation web page.
\end{description}
All of the above are OPTIONAL, but {\tt samp.name} is strongly RECOMMENDED.
\\
\textcolor{magenta}{[?? should others be RECOMMENDED ??]}
\\
Applications may store metadata under any keys, except that keys beginning
`{\tt samp.}'' may only be used as described here.

\subsection{What is a message?}
\label{sect:msgdef}

A message is an abstract container for the information we wish to send
to another application.  The message itself is that data which should
arrive at the receiving application.  It may be transmitted along
with some external items (e.g.\ sender/recipient/message identifiers)
required to ensure proper delivery or handling.

A message contains at least the following parts:
\begin{description}
\item[An MType:] a string which defines the meaning of the message,
    for instance the instruction to load a table.
    It also, via external documentation, defines the names, types and
    meanings of any parameters as well as the type and meaning of the
    return value.  MTypes are discussed in more detail in
    Section~\ref{sect:mtypes}.
\item[Parameters:] zero or more named values giving the data required
    for the receiver to act on the message, for instance the URL of a
    particular table.  The names and semantics of these parameters are
    determined by the MType.
\end{description}
It may also contain other items, for instance a timestamp, but such items
are not currently described by this standard.

\textcolor{magenta}{[?? ref-id ??]}
%  \item \verb|ref-id| - An ID assigned by an application that can be used
%  to reference some specific data object known only to the receiving
%  application (e.g.\ a table subset created by an earlier message).
%  The \verb|ref-id| MAY be an attribute of a Response message if the
%  application can accept subsequent Request messages requiring a 
%  specific reference to be unambiguous.  When supplied in a Request
%  message, the message is assumed to apply only to the object
%  referenced by the \verb|ref-id| (e.g.\ plot the columns of the table
%  subset and not the parent table).
%
%  \textcolor{magenta}{[???? This was somewhat controversial in earlier
%  discussions and admittedly part of the generalized messaging concept.
%  It may not be used in PLASTIC-like applications, but I would like
%  to keep it in the initial spec for later use. ]}

It is legal to include parameters in the parameter object which are
not documented by the MType.  Any parameters whose name a receiver
does not recognise in the context of the given MType should be ignored.
The intention is that MTypes can evolve by having new parameters added 
which provide additional functionality if the need is identified during
use.  Although in some cases such refinement will require a redesign
with completely different parameters (and a new MType), 
it is often the case that
MTypes can be improved by adding new optional parameters which can
be harmlessly ignored by clients only familiar with the older version.

Some common MTypes and their parameter objects are described in section
\ref{sect:mtypes}.

\subsection{Message and Response Encoding}
\label{sect:msg-encoding}

A message as described in Section~\ref{sect:msgdef} 
may be encoded in the terms of the datatypes described in 
Section~\ref{sect:samp-data-types} as a {\tt map}.
The defined keys and their associated values are as follows:
\begin{description}
\item[{\tt mtype}]
     The value is a {\tt string} giving the MType for the message.
\item[{\tt params}]
     The value is a {\tt map} giving the parameter values for the message.
     Each parameter is represented by a key-value pair in which the
     key is the documented name of the parameter, and the value is
     its value, with the type as documented by the MType.
\end{description}
No other keys are currently defined.
Keys which are not defined here are not illegal, 
but if an application encounters keys which it does not understand,
it should generally ignore them.

The response to a message, if one is expected, is a {\tt map} and
may be one of two things:
\begin{enumerate}
\item a return value (successful completion)
\item an error object (failure)
\end{enumerate}
A flag is passed with the response object to indicate which of these it is;
clients do not have to examine the object to find out whether it represents
a return value or an error.

In the case of a return value, the type and meaning of any data contained
in it as key-value pairs SHOULD be documented by the MType.

In the case of an error response, the map may contain 
entries with the following keys:
\begin{description}
\item[{\tt errortxt}] (REQUIRED) ---
    A short string describing what went wrong.
    This will typically be delivered to the user of the sender application.
\item[{\tt usertxt}] (OPTIONAL) ---
    A free-form string containing any additional text an application wishes
    to return.  This may be a more verbose error description meant to be
    appended to the errortxt string, however it is undefined how this string
    should be handled when received.
\item[{\tt debugtxt}] (OPTIONAL) ---
    A longer string which may contain more detail on what went wrong.
    This is typically intended for debugging purposes, and may for instance
    be a stack trace.
\item[{\tt code}] (OPTIONAL) ---
    A string containing a numeric or textual code identifying the error.
\end{description}
No other keys are currently defined.
Keys which are not defined here are not illegal,
but if an application encounters keys which it does not understand,
it should generally ignore them.

\textcolor{magenta}{[?? should these keys be {\tt samp.mtype} etc, with 
{\tt samp.*} a reserved part of the namespace and others available for
public use ??]}

\subsection{Sending and Receiving Messages}
\label{sect:delivery}

As outlined in Section~\ref{sect:delivery-outline}, 
three messaging patterns are supported, differing
according to whether and how the response is returned to the sender. 
For a given MType 
there may be a messaging pattern that is most typically used, but there is 
nothing in the protocol that ties a particular MType to a particular messaging 
pattern.

>From the point of view of the sender, there are three ways in which a message
may be sent,
and from the point of view of the recipient there are two ways in which
one may be received.  These are described as follows.
\begin{description}
\item[Notification:]  In the notification pattern, communication is only
in one direction:
\begin{enumerate}
\item The sender sends a message to the hub for delivery to one or more
    recipients.
\item The hub forwards them to those requested recipients which are subscribed
\item No reply from the recipients is expected or possible
\end{enumerate}
Notifications can be sent to a given recipient or broadcast to all 
recipients.  The notification pattern for a single recipient is illustrated in 
Figure~\ref{fig:notification}.
\begin{figure}[!h]
\begin{center}
\includegraphics[scale=0.5]{samp-notification}
\caption{Notification pattern}
\label{fig:notification}
\end{center}
\end{figure}
%
\item[Asynchronous Call/Response:]
In the asynchronous call pattern, {\em message IDs} are used 
to tie together messages and their replies:
\begin{enumerate}
\item The sender sends a message to the hub for delivery to one or more
     recipients, supplying along with the message an ID string,
     {\em sender-msg-id}.
\item The hub forwards the message to the appropriate recipients,
     supplying along with the message an ID string, {\em hub-msg-id}.
\item Each recipient processes the message, and sends its response
     back to the hub along with the ID string {\em hub-msg-id}.
\item Using a callback, the hub passes the response back to the
     original sender along with the ID string {\em sender-msg-id}.
\end{enumerate}
The sender is free to use any value for the {\em sender-msg-id}.
There is no requirement on the form of the {\em hub-msg-id\/}
(it is not intended to be parsed by the recipient), but it must be
sufficient for the hub to pair messages with their responses reliably,
and to pass the correct {\em sender-msg-id\/} back with the response 
to the sender\footnote{
    This can be achieved by the hub generating a new unique {\em hub-msg-id\/}
    for each asynchronous call, and keeping an internal record of which
    {\em sender-msg-id\/} the {\em hub-msg-id\/} corresponds to until the
    replies are all received.
    More cunningly, the hub can generate its {\em hub-msg-id\/} by combining
    the {\em sender-msg-id\/} with a newly generated unique string in
    such a way that the {\em sender-msg-id\/} can be recovered when the
    response is received, thus obviating the need to retain perhaps long-lived
    message state internally.
    The sender may be able to use similar tricks in generating
    {\em sender-msg-id\/} to avoid storing per-message
    state until the response arrives.
}.
Asynchronous calls may be sent to a given recipient or broadcast to all
recipients.  In the latter case, the sender should be prepared to deal
with multiple responses to the same call.
The asynchronous pattern is illustrated in Figure~\ref{fig:async}.
\begin{figure}[!h]
\begin{center}
\includegraphics[scale=0.45]{samp-asynchronous}
\caption{Asynchronous pattern}
\label{fig:async}
\end{center}
\end{figure}
%
\item[Synchronous Call/Response]
A synchronous utility method is provided by the hub, mainly for script
environments where dealing with asynchronicity might be a problem.
The hub will provide synchronous behaviour to the sender,
interacting with the receiver in exactly the same way as for the
asynchronous case above.
\begin{enumerate}
\item The sender sends a message to the hub for delivery to a given recipient.
       This call blocks until the response is available.
\item The hub forwards the message to the recipient,
     supplying along with the message an ID string, {\em hub-msg-id}.
\item The recipient processes the message, and sends its response
     back to the hub along with the ID string {\em hub-msg-id}.
\item The hub sends the response as the return value from the original
     blocking call made by the sender.
\end{enumerate}
There is no broadcast counterpart for the synchronous call.
This pattern is illustrated in Figure~\ref{fig:sync}.
\begin{figure}[!h]
\begin{center}
\includegraphics[scale=0.45]{samp-synchronous}
\caption{Synchronous pattern}
\label{fig:sync}
\end{center}
\end{figure}
%
\end{description}


\subsection{Operations a hub must support}
\label{sect:hubOps}
This section describes the operations that a hub must support and the associated 
data that must be sent and received.
Message and response arguments are encoded as {\tt map} objects as
described in Section~\ref{sect:msg-encoding}.
The precise details of how these operations 
map onto method names and signatures is Profile-dependent.
The mapping for the Standard Profile is given in section \ref{sect:mappingXMLRPC}.
\begin{itemize}
 	\item \verb|register()|\\
     Method called by a client wishing to register
 	with the hub.
 	Note that the form of this call may vary according to the requirements
 	of the particular Profile in use. For instance authentication tokens
     may be passed in one or both directions to complete registration.
     \\
 	\item \verb|unregister()|\\
     Method called by a client wishing to unregister from the hub
     \\
 	\item \verb|setMetadata(map metadata)|\\
     Method called
 	by a client to declare its metadata (name, icon, description, etc --- see
 	section~\ref{sect:app-metadata} for details).
 	May be called zero or more times to update hub state; the most recent
 	call is the one which defines the client's currently declared metadata.
     \\
 	\item \verb|map metadata = getMetadata(string client-id)|\\
     Returns the metadata
 	information for the client whose public id is {\tt client-id}.
     \\
 	\item \verb|setMTypes(list mtypes)|\\
     Method called by
 	a callable client to declare the MTypes it wishes to subscribe to.
 	May be called zero or more times to update hub state; the most recent
 	call is the one which defines the client's currently subscribed MTypes.
     \\ \textcolor{magenta}{[?? possibly wildcarding allowed here ??]}
     \\
 	\item \verb|list mtypes = getMTypes(string client-id)|\\
     Returns the array of
 	subscribed MTypes for the client whose public id is {\tt client-id}.
     \\
 	\item \verb|list client-ids = getRegisteredClients()|\\
     Returns the list of public ids of other registered clients.
     The caller's id is not included.
     \\
     \item \verb|list client-ids = getSubscribedClients(string mtype)|\\
     Returns the list of public ids of all other registered clients who are
     subscribed to the MType {\tt mtype}.
     The caller's id is not included, even if it is subscribed.
     \\
 	\item \verb|string client-id = getHubId()|\\
     Returns the client-id which
 	identifies the hub itself as a client.  This is the id which the hub
 	uses for instance to send administration messages to other candidate
 	clients.
     \\
 	\item \verb|notify(string recipient-id, map message)|\\
     Method called
 	by a client wishing to send a notification to a given recipient.
     \\
 	\item \verb|notifyAll(map message)|\\
     Method called by a client
 	wishing to broadcast a notification to all recipients.
     \\
 	\item \verb|call(string recipient-id, map message, string msg-id)|\\
 	Method called by a callable client wishing to send an asynchronous call to
 	a given recipient.
     \\
 	\item \verb|callAll(map message, string msg-id)|\\
 	Method called by a callable client wishing to broadcast an asynchronous
 	call to all recipients.
     \\
 	\item \verb|map response = callAndWait(string recipient-id, map message)|\\
     Method
 	called by a client wishing to make a synchronous call to a given
 	recipient.
     \\
 	\item \verb|reply(string msg-id, string success, map response)|\\
     Method
 	called by a client to send its response to a given message.
     {\tt success} is a SAMP boolean (``{\tt 1}'' for successful completion
     or ``{\tt 0}'' for an error).  In the case of success, {\tt response} is the
     return value as documented for the MType of the message.
     In the case of failure, {\tt response} is an error object as
     described in \ref{sect:msg-encoding}.
\end{itemize}

All these operations with the exception of {\tt callAndWait()} should complete, and where 
appropriate return a result, quickly.

\subsection{Operations a hub may call on a client}
\label{sect:clientOps}
We list in this section the operations which may be called on a callable client.
Note that not all clients may be callable; special (Profile-dependent) steps
may be required for a client to inform the hub how it may be contacted,
and thus become callable.  Clients which are not callable are unable to
receive messages or use the asynchronous call/response pattern.

Message and response arguments are encoded as {\tt map} objects as
described in Section~\ref{sect:msg-encoding}.
The precise details of how these operations 
map onto method names and signatures is Profile-dependent.
The mapping for the Standard Profile is given in section \ref{sect:mappingXMLRPC}.
\begin{itemize}
 	\item \verb|receiveNotification(string sender-id, map message)|\\
 	Method called by the hub when dispatching a notification to its
 	recipient.
     \\
 	\item \verb|receiveCall(string sender-id, string msg-id, map message)|\\
 	Method called by the hub when dispatching a call to its recipient. The client
 	MUST at some later time make a matching call to {\tt reply()} on the hub.
     \\
 	\item \verb|receiveResponse(string responder-id, string msg-id,|\\
           \verb|                string success, map response)|\\
 	Method used by the hub to dispatch to the sender the response of an
 	earlier asynchronous call.
     {\tt success} is a SAMP boolean (``{\tt 1}'' for successful completion
     or ``{\tt 0}'' for an error).  In the case of success, {\tt response} is the
     result value as documented for the MType of the original message.
     In the case of failure, {\tt response} is an error object as
     described in \ref{sect:msg-encoding}.
\end{itemize}

All these operations should complete quickly.

\subsection{General error processing}
\label{sect:faults}

Hubs and clients should use the usual error reporting mechanisms 
of the transport protocol in use in the case of bad calls of 
the operations defined in Sections \ref{sect:hubOps} and \ref{sect:clientOps},
for instance 
use of syntactically invalid parameter types.

Errors produced by clients when processing call-type SAMP messages 
themselves (in response to a syntactically legal {\tt receiveCall()}
operation) should be signalled in the way the matching {\tt reply()} 
call is made.  In case of an error, the {\tt success} flag should be
set to ``{\tt 0}'' and the {\tt response} object should be filled in
with error information as described in Section~\ref{sect:msg-encoding}.

%% Mark Taylor's part %%
\section{Standard Profile}
\label{sect:profile}


Section \ref{sect:architecture} defines the concepts and operations
used in SAMP messaging.  As explained in Section~\ref{sect:profiles}, 
in order to implement this architecture some concrete choices about 
how to instantiate these concepts are required.

This section gives the details of a SAMP Profile based on the 
XML-RPC specification \cite{xmlrpc}. 
Hub discovery is via a lockfile in the user's home directory.

XML-RPC is a simple general purpose Remote Procedure Call
protocol based on sending XML documents over HTTP
(it resembles a very lightweight version of SOAP).
Since the mappings from SAMP concepts
such as API calls and data types to their XML-RPC equivalents is very 
straightforward, it is easy for application authors to write 
compliant code without use of any SAMP-specific library code.
An XML-RPC library, while not essential, will make coding much easier;
such libraries are available for many languages.


\subsection{Data Type Mappings}

The SAMP argument and return value data types described in
Section \ref{sect:samp-data-types} map straightforwardly onto XML-RPC
data types as follows:
\begin{center}
\begin{tabular}{lcl}
SAMP type    &                       & XML-RPC element \\
\hline
{\tt string} & $\longleftrightarrow$ & {\tt <string>} \\
{\tt list}   & $\longleftrightarrow$ & {\tt <array>} \\
{\tt map}    & $\longleftrightarrow$ & {\tt <struct>} \\
\end{tabular}
\end{center}
The {\tt <value>} children of {\tt <array>} and {\tt <struct>} elements
themselves contain children of type {\tt <string>}, {\tt <array>} or
{\tt <struct>}.


\subsection{API Mappings}
\label{sect:mappingXMLRPC}

The operation names in the SAMP hub and client abstract APIs
(Sections \ref{sect:hubOps} and \ref{sect:clientOps}) very nearly 
have a one to one mapping with those in the Standard Profile XML-RPC APIs.
The differences are as follows:
\begin{enumerate}
\item The XML-RPC method names (i.e.\ the contents of the XML-RPC
       {\tt <methodName>} elements) are formed by
       prefixing the hub and client abstract API operation names with
       ``{\tt samp.hub.}'' or ``{\tt samp.client.}'' respectively.
\item The {\tt register()} operation takes the {\tt samp.secret} value
       read from the lockfile (see Section~\ref{sect:lockfile})
       as an argument, and returns a
       new {\tt private-key} string generated by the hub.
\item {\em All\/} other hub and client methods take the
       {\tt private-key} as their first argument.
\item A new method, {\tt setXmlrpcCallback()} is added to the hub API.
       This informs the hub of the XML-RPC endpoint on which the client
       is listening for calls from the hub.
       The client is not considered Callable intil it has invoked this method.
\item Another new method, {\tt isAlive()} is added to the hub API.
       This may be called by registered or unregistered applications
       (as a special case the {\tt private-key} argument may be omitted),
       and can be used to determine whether the hub is responding to requests.
       Any non-error return indicates that the hub is running.
\end{enumerate}

The {\tt private-key} string referred to above serves two purposes.
First it identifies the client in hub/client communications.
Some such identifier is required, since XML-RPC calls have no other way of
identifying the sender's identity.
Second, it prevents application spoofing, since the private key is
never revealed to other applications, so that one application cannot
pose as another in making calls to the hub.

The usual XML-RPC fault mechanism is used to respond to invalid
calls as described in \ref{sect:faults}.
The XML-RPC fault's {\tt <faultString>} element should contain a
user-directed message as appropriate and the {\tt <faultCode>} value
has no particular significance.


\subsection{Lockfile and Hub Discovery}
\label{sect:lockfile}

Hub discovery is performed by examining a lockfile in a well-known location.
This has the consequence that in normal operation each user may run
only one hub, and users do not share hubs.  The name of the lockfile
is ``{\tt .samp}'' in the user's home directory.
On Unix-like systems this directory can be retrieved from the
{\tt \$HOME} environment variable.\\
\textcolor{red}{TODO : decide something for Windows OS...}
% [??  Windows - what to do?  For a java viewpoint on this see
% http://bugs.sun.com/bugdatabase/view\_bug.do?bug\_id=4787931.]

The format of the file is given by the following BNF productions:
\begin{verbatim}
    <file>          ::=   <lines>
    <lines>         ::=   <line> | <lines> <line>
    <line>          ::=   <line-content> <EOL> | <EOL>
    <line-content>  ::=   <comment> | <assignment>
    <comment>       ::=   "#" <any-string>
    <assignment>    ::=   <name> "=" <any-string>
    <name>          ::=   <token-string>
    <token-string>  ::=   <token-char> | <token-string> <token-char>
    <any-string>    ::=   <any-char> | <any-string> <any-char>
    <EOL>           ::=   "\r" | "\n" | "\r" "\n"
    <token-char>    ::=   [a-zA-Z0-9-_.]
    <any-char>      ::=   [\x20-\x7f]
\end{verbatim}
\textcolor{magenta}{[?? are regular expressions OK in BNF?  is there some
    other reasonably compact way of expressing this??]}

The only parts which are significant to SAMP clients/hubs are
(a) existence of the file and (b) {\tt <assignment>} lines.

A legal lockfile must provide (in any order) unique assignments for the
following tokens:
\begin{itemize}
\item {\tt samp.secret}
       An opaque text string which must be passed to the hub to permit
       registration.
\item {\tt samp.hub.xmlrpc.url}
       The XML-RPC endpoint for communication with the hub.
\item {\tt samp.profile.version}
       The version of the SAMP Standard Profile implemented by the hub
       (``1.0'' for the version described by this document).
\end{itemize}
it may optionally include other blank, comment or assignment lines,
but tokens beginning ``{\tt samp.}'' may only be assigned as described here.

The lockfile should normally be created with permissions which allow
only its owner to read it.  This provides a measure of security in
that only processes with the same permissions as the hub process
(hence presumably running under the same user ID) will be able to
register with the hub, since only they will be able to provide the
{\tt samp.secret} required for registration.  Thus under normal
circumstances all participants in a SAMP conversation can be
presumed owned by the same user, and therefore not malicious.\footnote{
    Of course they may be owned by the same user and still be malicious,
    but in this case SAMP represents no additional security risk.
}

An example lockfile might therefore look like this:
\begin{verbatim}
    # SAMP lockfile written 2008-29-02T17:45:01
    # Required keys:
    samp.secret=734144fdaab8400a1ec2
    samp.hub.xmlrpc.url=http://andromeda.star.bris.ac.uk:8001/xmlrpc
    samp.profile.version=1.0
    # Info stored by hub for some private reason:
    com.yoyodyne.hubid=c80995f1
\end{verbatim}

The existence of the file MAY be taken (e.g.\ by a hub deciding whether
to start or not) to indicate that a hub is running.
However it is RECOMMENDED to attempt to contact the hub
at the given XML-RPC URL (e.g.\ by calling {\tt isAlive()})
to determine whether it is actually alive.

The hub discovery sequences are therefore as follows:

\begin{itemize}
\item Client startup:
    \begin{itemize}
    \item Determine hub existence as above
    \item If no hub, client MAY start its own hub
    \item Acquire {\tt samp.secret} value from lockfile
    \item If pre-existing or own hub is running, call {\tt register()} and
          zero or more of {\tt setXmlrpcCallback()}, {\tt setMetadata()},
          {\tt setMTypes()}
    \end{itemize}
\item Hub startup:
    \begin{itemize}
    \item Determine hub existence as above
    \item If hub is running, exit
    \item Otherwise, start up XML-RPC server
    \item Write lockfile with mandatory assignments including XML-RPC endpoint
    \end{itemize}
\item Hub shutdown:
    \begin{itemize}
    \item Notify candidate clients that shutdown will occur
    \item Remove lockfile (it is RECOMMENDED to first check that this
          is the lockfile written by self)
    \item Shut down services
    \end{itemize}
\end{itemize}

Hub implementations SHOULD make their best effort to perform the
shutdown sequence above even if they terminate as a result of some
error condition.

Note that manipulation of a file is not atomic, so that race conditions
are possible.  For instance a client or hub examining the lockfile
may read it after it has been created but before it has been populated
with the mandatory assignments, or two hubs may look for a lockfile
simultaneously, not find one, and both decide that they should
therefore start up, one presumably overwriting the other's lockfile.
Hub and client implementations should be aware of such possibilities,
but may not be able to guarantee to avoid them or their consequences.
In general this is the sort of risk that SAMP and its
Standard Profile are prepared to take --- an eventuality which will occur
sufficiently infrequently that it is not worth significant
additional complexity to avoid.
In the worst case a SAMP session may fail in some way, and will have
to be restarted.


\subsection{Examples}

Here is an example in pseudo-code of how an application might locate and
register with a hub, and send a message requiring no response to other
registered clients.
\begin{verbatim}
    # Read information from lockfile to locate and register with hub.
    string hub-url = readFromLockfile("samp.hub.xmlprc.url");
    string samp-secret = readFromLockfile("samp.secret");

    # Establish XML-RPC connection with hub (uses some generic XML-RPC library)
    xmlrpcServer hub = xmlrpcConnect(hub-url);

    # Register with hub.
    string private-key = hub.xmlrpcCall("samp.hub.register", samp-secret);

    # Store metadata in hub for use by other applications.
    map metadata = ("samp.name" -> "dummy",
                    "samp.description" -> "Test Application",
                    "dummy.version" -> "0.1-3");
    hub.xmlrpcCall("samp.hub.setMetadata", private-key, metadata);

    # Send a message requesting file load to all other registered clients,
    # not wanting any response.
    map loadParams = ("filename" -> "/tmp/foo.bar");
    map loadMsg = ("mtype" -> "file.load",
                   "params" -> loadParams");
    hub.xmlrpcCall("samp.hub.notifyAll", private-key, loadMsg);

    # Unregister
    hub.xmlrpcCall("samp.hub.unregister", private-key);
\end{verbatim}

The first few XML-RPC documents sent over the wire for this exchange 
would look something like the following. 
The registration call from the client to the hub:
\begin{verbatim}
    POST /xmlrpc HTTP/1.0
    User-Agent: Java/1.5.0_10
    Content-Type: text/xml
    Content-Length: 189

    <?xml version="1.0"?>
    <methodCall>
      <methodName>samp.hub.register</methodName>
      <params>
        <param><value><string>734144fdaab8400a1ec2</string></value></param>
      </params>
    </methodCall>
\end{verbatim}
which leads to the response:
\begin{verbatim}
    HTTP/1.1 200 OK
    Connection: close
    Content-Type: text/xml
    Content-Length: 148

    <?xml version="1.0"?>
    <methodResponse>
      <params>
        <param><value><string>app-id:1a52fdf-2</string></value></param>
      </params>
    </methodResponse>
\end{verbatim}
The client might then declare its metadata:
the response to this call has no useful content so can be ignored or discarded.
\begin{verbatim}
    POST /xmlrpc HTTP/1.0
    User-Agent: Java/1.5.0_10
    Content-Type: text/xml
    Content-Length: 596

    <?xml version="1.0"?>
    <methodCall>
      <methodName>samp.hub.setMetadata</methodName>
      <params>
        <param><value><string>app-id:1a52fdf-2</string></value></param>
        <param><value><struct>
          <member>
            <name>samp.name</name>
            <value><string>dummy</string></value>
          </member>
          <member>
            <name>samp.description</name>
            <value><string>Test application</string></value>
          </member>
          <member>
            <name>dummy.version</name>
            <value><string>0.1-3</string></value>
          </member>
        </struct></value></param>
      </params>
    </methodCall>
\end{verbatim}

Calls from the hub to the client are along similar lines.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{MTypes: Message Semantics and Vocabulary}
\label{sect:mtypes}

         As stated earlier, a message contains an {\em mtype} string that
defines the semantic meaning of the message, for example a request for
another application to load a table.  It also has other attributes and
optional parameters to form the complete message that we will outline
below.  These messages also play a number of roles in a messaging system,
although not every message is appropriate for every role.  Below we will
discuss the types of messages used in SAMP and see how specific {\em
mtypes} are used.

         In this section we will also discuss the form and required elements
of a message, and the types of messages needed by many common desktop
applications.  This discussion is by no means complete;  within the rules
of how messages are defined here and the delivery mechanisms described,
developers are free to create message types and usage patterns not detailed
here.  New messages affecting the messaging system itself (e.g.\ those used
in communications with the Hub or those needed to ensure interoperability
such as a return status code) should be formalized for wider use later
using a (TBD) procedure outlined below.  Application message types, e.g.
those that expose some functionality of a particular application, are
entirely open-ended and require no formal process to be adopted by
developers.


\subsection{The MType of a Message}
\label{sect:mtypeMsg}

        A key concept of a message is the {\em Mtype} attribute that
defines the semantic meaning of the message.  The concept behind the Mtype
is similar to that of a UCD in that a small vocabulary is sufficient to
describe the expected range of concepts required by a messaging system
within the current scope of the SAMP protocol.  As noted earlier,
developers are free to introduce new MTypes for use within applications
without restriction; new MTypes intended to be used for Hub messaging or
other administrative purposes within the messaging system should be discussed
within the IVOA for approval as part of the SAMP standard.  The details and
policy for adopting new standard MTypes are TBD.

\subsubsection{The Form of an Mtype}

         Like a UCD, an Mtype is made up of {\em atoms}.
These are not only meaningful to the developer, but form the central
concept of the message.  Because we wish to loosely couple the capabilities
one application is searching for from the details of what another may
provide, we don't create a rigorous definition of the {\em behavior} that
an MType must provoke in a receiver.  Instead, the Mtype defines a specific
semantic message such as ``display an image'', it is up to the receiving
application to determine how it chooses to do the display (e.g.\ a rendered
greyscale image within an application or displaying the image in a web
browser might both be valid for the recipient and faithful to the meaning
of the message).

         The ordering of the words in an Mtype should normally use the
object of the message followed by the action to be performed (or the
information about that object).  For example, the use of ``image.display''
is preferred to ``display.image'' in order to keep the number of toplevel
words (and thus message classes) like `image' small, but still allow for a
wide variety of messages to be created that can perform many useful actions
on an image.  If no existing MType exists for the required purpose,
developers can agree to the use of a new Mtype such as
`image.display.extnum' if e.g.\ the ability to display a specific image
extension number warrants a new Mtype.

 	The syntax of an MType is given by the following BNF:
\begin{verbatim}
<mchar>  ::= [0-9a-z] | "-" | "_"
<atom>   ::= <mchar> | <atom> <mchar>
<period> ::= "."
<mtype>  ::= <atom> | <atom> <period> <atom>
\end{verbatim}


\subsubsection{The Description of an MType}

In order that senders and recipients can agree on what is meant by 
a given message, the meaning of an MType must be clearly documented.
This means that for a given MType the following information must be
available:
\begin{itemize}
\item The MType string itself.
\item A list of zero or more parameters.  For each one:
    \begin{itemize}
    \item name
    \item data type ({\tt map}, {\tt list} or {\tt string}
       as described in \ref{sect:samp-data-types}) and if appropriate
       scalar sub-type (see \ref{sect:scalar-types})
    \item meaning
    \item whether it is REQUIRED or OPTIONAL
    \item OPTIONAL parameters MAY specify what default will be used
          if the value is not supplied
    \end{itemize}
\item A list of zero or more returned values.  For each one:
    \begin{itemize}
    \item name
    \item data type ({\tt map}, {\tt list} or {\tt string}
       as described in \ref{sect:samp-data-types}) and if appropriate
       scalar sub-type (see \ref{sect:scalar-types})
    \item meaning
    \item whether it is REQUIRED or OPTIONAL
    \item OPTIONAL return values MAY specify what default is intended
          if the value is not supplied
    \end{itemize}
\item A description of the meaning of the message.
       This should convey the semantic meaning of the message, e.g.\ that
       an event of some type has occurred, or that a specific request is
       is being made.
\end{itemize}
This is just the same information as one ought to supply for
documentation of public interface method in a weakly-typed programming
language.

Note that it is possible for the MType to have no returned values.
This is actually quite common if the MType does not represent a
request for data.  It is not usually necessary to define a status-type
return value (success or failure), since a sender which is interested
in whether the message processing was successful can wait to see whether 
the response from the message is an error or not (the client
{\tt receiveResponse()} method has a {\tt success} flag set).
So return values only need to be defined if there is data to return.
If there is not, the response object will be a {\tt map} with no entries.

As explained in Section~\ref{sect:msgdef}, parameters and returned values
which are not described in the MType may be passed as well as those 
which are.  Clients which do not recognise these should usually ignore them.


\subsection{Mtype Vocabulary}

 	In the description below the {\em mtype} attribute of the message
is constructed from the toplevel and secondary words.  Any arguments
required by the message MUST be encoded in the message {\em params}
attribute.  The Mtypes presented here are intended to be suggestions that
we hope will be adopted by developers; concepts and Mtypes not shown here
may also be used and may appear in later versions of this document if 
they become widely accepted.

% define command for describing an MType.
% arguments are:
%    qualified name,
%    parameter list,
%    description, 
%    example use
\newcommand{\mtypedef}[4]{
    \begin{description}
      \item[{\tt #1}:]\mbox\\
      \begin{description}
        \item[Arguments:]\mbox\protect\\ #2
        \item[Description:]\mbox\protect\\ #3
        \item[Example Use:]\mbox\protect\\ #4
      \end{description}
    \end{description}
}

% define command for describing an MType argument.
% arguments are:
%    name,
%    type,
%    short description
\newcommand{\mtypearg}[3]{
    {\tt #2 #1} --- #3
}

\newcommand{\mtypenoargs}{
    {\em none}
}



\begin{verbatim}
     mtype                args       returns     meaning
     -----                ----       -------     -------
\end{verbatim}

\subsubsection{Application Messages}

These message types have the toplevel word ``{\tt app}''.
They are intended to convey some change in the state of a sending application.

\begin{verbatim}
     app
         event
             register     id                     app has registered
             unregister   id                     app has unregistered
             starting     id                     app starts processing
             stopping     id                     app stops processing
             mtype        mtypes                 app declares new mtype
                          id
             metadata     meta                   app declares new metadata
                          id
         status(??)
             ok                                  app executing normally
             error                               app encountered error
             ???
\end{verbatim}

\subsubsection{Set/Get Messages}

These message types have the toplevel word ``{\tt set}'' or `{\tt get}''.
They are intended to provide a general mechanism for setting/getting
values from a remote application beyond the scope of what is available
using either the Client or the Hub.

\begin{verbatim}
     set
         mtype            mtype                  set list of mtypes
         metadata         meta                   set list of metadata
         param            param                  set parameter to value
                          value

     get
         mtype                       mtypes      get list of supported mtypes
         metadata         param      value       get metadata item from client
         param            param      value
\end{verbatim}

\subsubsection{Status Messages}

These message types have the toplevel word ``{\tt status}''.
They are intended to convey information about the state of an application,
or its response to a Request message.

\begin{verbatim}
     status
         ok                                      message processed normally
         invalid                                 message invalid (badly formed)
         unknown                                 message unknown (bad mtype)
         delivery         stat_str               delivery status
         progress
             percent      percent                percentage completed (float)
             timeLeft     time                   est. time remaining (sec)
         error            err_str                error message
\end{verbatim}

\subsubsection{File Messages}

These message types have the toplevel word ``{\tt file}''.
They are intended to perform some action on a file regardless of format.


\begin{verbatim}
     file
         event
             load         filename               the 'filename' was loaded
             save         filename               the 'filename' was saved
         load             filename               load this file 'filename'
         save             filename               save to 'filename'
\end{verbatim}


\subsubsection{Image Messages}

These messages have the toplevel word ``{\tt image}''.
They are intended to invoke operations on image data objects.

\begin{verbatim}
     image
         event
             load         imname                 the 'imname' was loaded
             save         imname                 the 'imname' was saved
         load             imname                 load image 'imname'
         save             imname                 save image to 'imname'

         display          imname                 display image in 'imname'
         panTo            x, y                   pan display (arb coords)
             pixel        x, y                   pan display to pixel coords
             sky          ra, dec                pan display to sky coords
         zoom             level                  zoom to given level (+/-N level)
         highlight
             pixel        x, y                   highlight point at pixel coords
             sky          ra, dec                highlight point at sky coords
\end{verbatim}

\subsubsection{Query Messages}

These message types have the toplevel word ``{\tt query}''.
They are intended to perform some action on
a query object.  Queries will typically be ADQL, but
no specification is made about the format of a query.

\begin{verbatim}
     query
         exec
             adql         adql_str    result     execute the ADQL query
             sql          sql_str     result     execute the SQL query
             expr         expr_str    result     evaluate the expression
\end{verbatim}

\subsubsection{Spectrum Messages}

These message types have the toplevel word ``{\tt spectrum}''.
They are intended to invoke operations on spectrum data objects.

\begin{verbatim}
     spectrum
         event
             load         specname               the 'tblname' was loaded
                 table    spectable              the given table was loaded
                 image    specimage              the given image was loaded
             save         specname               the 'tblname' was saved
                 table    spectable              table was saved to fname
                          fname
                 image    specimage              image saved to imname
                          imname
         load             specname               load table 'tblname'
             table        spectable              table was loaded
             image        specimage              image was loaded
         save             specname               spectrum saved to 'specname'
             table        spectable              table saved to 'fname'
                          fname
             image        specimage              image saved to 'imname'
                          imname
\end{verbatim}


\subsubsection{Table Messages}

These message types have the toplevel word ``{\tt table}''.
They are intended to invoke operations on table (any format) data objects.

\begin{verbatim}
     table
         event
             load         tblname                the 'tblname' was loaded
             save         tblname                the 'tblname' was saved
         load             tblname                load table 'tblname'
         save             tblname                save table to 'tblname'

         highlight
             row          row                    highlight specified row
             col          col                    highlight specified column
             cell         row, col               highlight cell at position
         select
             row          row                    select (subset) named row
             col          col                    select (subset) named column
             rowList      rows                   select (subset) named rows
             colList      cols                   select (subset) named columns
\end{verbatim}


\subsubsection{URL Messages}

These message types have the toplevel word ``{\tt url}''.
They are intended to perform some action on a URL.

\begin{verbatim}
     url
         event
             load         url                    'url' was loaded
             save         url                    'url' was saved to 'filename'
                          filename
         load             url                    load url at 'url'
         save             url                    save 'url' to 'filename'
                          filename
\end{verbatim}


\subsubsection{Coordinate Messages}

These message types have the toplevel word ``{\tt coord}''.
They are intended to provide a general
method for using coordinates.  Specific behavior
depends on the application.

\begin{verbatim}
\end{verbatim}



\newpage
\appendix

% Annexe 1 : differences with PLASTIC protocol (no more Java-RMI dependency, 
% hub can be written in any language, separation between registration and 
% metadata declaration)
\section{Changes from PLASTIC document}
In order to facilitate the transition from PLASTIC to SAMP protocol from 
applications' developers point of view, we summarize in this appendix the main 
changes  - arranged in order of decreased importance - between the two 
documents, ie the main updates from PLASTIC to SAMP.

\begin{enumerate}
 	\item \verb|Transport choice| - The main drawback of PLASTIC was the
 	Java dependency for hub writers. In SAMP, Java RMI as transport mechanism
 	has been dropped, which allows hubs to be written in virtually any language.\\
 	\item \verb|Refactoring of registration API| - Registration, declaration
 	of metadata, and declaration of understood messages are clearly separated
 	steps in SAMP, whereas they were mixed in PLASTIC.\\
 	\item \verb|Application identity|
\end{enumerate}

\textcolor{red}{TODO : complete this list. Not so easy to sort the importance of
changes !!!}

% Annexe 2 : discuss how we can make SAMP-compatible and PLASTIC-compatible
% applications talk together 
\section{SAMP/PLASTIC interoperability}
This section will detail how interoperability between SAMP-compatible and
PLASTIC-compatible clients can be achieved, using hubs able to translate PLASTIC 
messages into SAMP Mtypes.

%%%%%%%% Bibliography %%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% include all references
\nocite{*}
% unsorted style for bibliography (?)
\bibliographystyle{unsrt}
% bibliography file is called samp-bibliography[.bib]
\bibliography{samp-bibliography}

\end{document}

% $Id: samp.tex,v 1.17 2008/04/30 10:17:48 mbt Exp mbt $

---561407174-1284099112-1209550804=:16355
Content-Type: APPLICATION/pdf; name=samp.pdf
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.63.0804301120040.16355@andromeda.star.bris.ac.uk>
Content-Description: PDF of SAMP draft
Content-Disposition: attachment; filename=samp.pdf

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
agoxIDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQov
V2lkdGggNTQzCi9IZWlnaHQgMzAwCi9CaXRzUGVyQ29tcG9uZW50IDgKL0xl
bmd0aCAyNDkyNgovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9GaWx0ZXIgL0RD
VERlY29kZQo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAQAAAQABAAD//gBYQ1JF
QVRPUjogWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAxMi8yOS85NCAoUE5HIHBh
dGNoIDEuMikgIFF1YWxpdHkgPSA3NSwgU21vb3RoaW5nID0gMAr/2wBDAAgG
BgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcp
LDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
CAEsAh8DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI
CQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKB
kaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpT
VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0
9fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz
UvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpj
ZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0
tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oA
DAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooozQAUVFcXMFpA89zNHDCgy8kjBVUe5PA
rhL34r6ZLcPZ+GdPvPEV4pwRZpiFT/tSn5fxGaAPQM0hOBmvM3m+JGuczX+l
+HLdv+WdtF9qnx6Fm+X8qgPw4s74ltd1zXdXdvvCe9ZE/BFxj86APQrvxBo1
gpa81WxtwBkma4RMfmay5/iH4NtgDJ4n0k56bLpH/kTWDa/DrwbZriLw5YN7
zIZf/Qia1IPDHh+AfutC0xPpaR/4UAWYPiL4MuWZY/E+lAqMnfdKn/oRFatp
4g0a/Cmz1axuA3I8m4Rs/kaxJfDHh+4XbNoWmOPRrSP/AArOufhx4MvFIl8N
aepPeFDEf/HSKAO9zS5rzVfhnZWRDaFruvaOw5CwXrSRk+6PkGnrH8S9C5t9
Q0rxJbjkx3Mf2SfHoGHy/nQB6PRXA2nxU02C4js/E+nX3hy9bj/TY/3DH/Zl
Hyke5xXc29zBdwJPbTRzQuMrJGwZWHqCODQBLRRnNFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRmkzQAt
FNaRUUsxCqOSScYrF1Dxh4b0yN3vdc0+LywWZTcKWwBn7oyTwPSgDbzXAa58
SlbUJNG8JWP9t6onEsiNi2tj0/eSdPXgelYdzf638SmJR7nRvCROFC/Jc6gv
r/sRn9R+nT6Xpljo1jHZabax2ttGOI4xjn1J6k+5oA50eDLrXZ1vPGuqyavK
p3LYxZitIj7IPvfU111tbQWdutvawRwQKMLHEgVR+Apw6U4UAPHWnCminCgB
4pwpopwoAeKcBTRThQA7FPpopwoAZcWtve2z213bxXFu4w0UqBlP4GuMl+H9
zokz3ngbVpNHmY7msJiZbOU+6HlPqK7kU4UAcfo/xFMOoR6N4wsDoeqvxE7t
m1ufeOTpz6Gu7zWTq2j6dr2nSafqtnFd2snWOQZwfUHqD7jmuFDa98L8Nvud
b8HqfmB+e609fX/bjH6D0oA9RorEsPF/hzUoo5LPXNPlEi7lUXChiMZ+6Tkf
lWyrq6hlYMp5BBzmgB1FJmlzQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUmaCwAJJAA5JNAC0Vx+u/FDwd4e3Lea3byTL1htj5z59MLnH44rz3Uv2h
Huy0Xhnw1cXLZwJrpsAe+1M/+hCgD3Kq93f2mnwGe8uobaIdXmkCKPxNfL+s
fEnx5qoZL3xDaaPC3WO1IVwPquW/Wudt9Fl16bzVXXtfnJ5eKF2B/wCBHP8A
MVXKyeZH0hqvxh8DaUCH1yK5kH8Foplz+IG39a469/aIsZGaPRPDl/eydFMj
BB9cKGNcXp3wx8T3BH2PwbFbKf8AlpfzoCPwJY/pXUWvwc8X3CAXWsaVZIf4
IUeXH/oIp8q6sLvojMu/jJ8Qb7iz0jT9OQ9GlGWH/fTD+VYlzr/xE1Pc134v
eFSOVtfl/wDQFA/WvRrX4EwjB1DxRqEvqLaFIR+H3qv3Pwi8DaLp1xf6rNqE
trbxmSWS5vnAAH+7ij3EL3zwq905pUeXWdf1G62jcxkf8P4ixrtfh38KoLmW
LXtVtJltyQ9nZTEMWHUPJwODxhas/D/wLp3ifxBL4sfSI7DQo326bYHc3nbT
w75Jzj9T7Dn3AcHrmlJp7IcU1uyitpKeoC/jUq2THrIKtUFqkogFoo6ufwpw
tV7O35U5m5xSBueCPzH+NAB9mH98/iKPszdiDTieSMH8qFcbgMj6Z/8ArUAN
MTjqp/CkFTksCQM8d6crK+QQCf1oAhFOFP8ALU9Dj60hRl6igBRThTBTxQA8
U4U0U4UAOFP4IwQCD2NMFPFAHhHxN+DtpbTSeI9EtZXtMl76wtyAyju8XHQd
1/KuH07w43lRT6F4k1C1ST5kdGIHp/CQfbpX1gOvWvE/iB4YPgjUJPEulWhl
0W5kzfWkWB9nkP8Ay0XsFJ4I7HHrxcHG9pETUrXizmftvxK0KcJa+MRc7QDt
uGL54/21I/WtO2+LfxI07i+0Ky1GNerQodx/74Y/yqhqeqSwztcajpep2Eb4
ZXuLVthXHBDrlSPxqO11CyvOba7gl9kcZ/Kt1Spy2Zh7WpH4kdbZftEWMTLF
rfhy/spP4vLYPj8GCmux0r4w+BtWA2a3FbOf4LtTFj8SNv6153YAOkgmRZYg
ADHKNwOfY8Vl6x4W0G6cyJpluIz1MQMZU+ny4qXh5dGNYldUfRVpf2moQCez
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
WJJ4x8MRff8AEGmD/t5X/Gq8nj/wlF97xDYn/dct/IUAdHRXHzfFLwZD11pW
/wByCRv/AGWqM/xk8IRf6ue8mP8AsWxH8yKAO+orzF/jdorsUs9H1O4fsMKu
fyJNC/EvxPfnbpfgDUJQejOJGB/JB/OgD06ivN0v/jBqjAWfhS1slP8AFOAu
P++3/pU6eCfjDqf/AB9+JLGwQ9VjcAj/AL4T+tAHoRBAyeB6npWVf+JdC0wH
7brFjAR/C067vyBzXMxfAW/1D5tf8a390T95I0OPzZj/ACre034B+CLEq1xD
eXzD/n4uCAfwTbQBz9/8X/CFmGEV1cXjDtbwHB/FsVmJ8TPEWtts8M+Cby5D
fdllDMv47QB/49XsemeB/C+j4NhoGnQsP4xArN/30cmt4KFGAMD0FAHhEfhv
4xeIwPtV7ZaFbt1VGUMB/wAA3N+orSsf2fbK4mW48SeItQ1ObqwQ7Afxbcf5
V7LiloA5fRPhz4R8PbW0/Q7RZVHE0q+a/wBdzZNdOBgYHQUtFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUU1tBcDE0Mcg9HQH+
dS0UAY1z4R8N3gIudA0uXPXfaRk/yrMl+GPgib7/AIY00f7kO3+WK6yigDhZ
vg34Bn+94eiX/cnlX+TVSk+BfgFzxpcyf7t3J/U16PRQB5ifgH4FPS1vR9Lp
qYfgB4HPSLUB9Ln/AOtXqNFAHlw+AHgcdYtQP1uf/rU8fAPwKOtren63TV6d
RQB5xH8C/AKHnS53/wB67k/o1XYfg34Bg+74ejb/AH55W/m1d1RQBycXwx8E
w/c8M6cf9+Ld/OtO28I+G7MAW+gaZFjoUtIwf5Vs0UAQw2sFuMQwxxj0RAP5
VNiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooA/9llbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmogPDwKL0Zv
bnQgPDwgL0YyNyA3IDAgUiAvRjI2IDEwIDAgUiAvRjM2IDEzIDAgUiAvRjM1
IDE2IDAgUiAvRjMyIDE5IDAgUiAvRjQxIDIyIDAgUiA+PgovWE9iamVjdCA8
PCAvSW0xIDEgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VD
IF0KPj4gZW5kb2JqCjI2IDAgb2JqIDw8Ci9MZW5ndGggMjMxNCAgICAgIAov
RmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNrdmktz47gRgO/zK3QL
VRVxiQdfp5Qzs9l1aiczNdYmhyQHmqIt1lKkl6S8cX59uhsPUrLZNdk9REq5
yqSABhroDw00AIpVBH9iJSIZZplepSoLoyhflYd30eoRsr579RS2iMqyMNYK
3mfCLnOjcxFqma42sxr/uH33zZ9UDMrCHFK2DyuhZCh0vkojAc9std39PfhH
JHSzFkG13mgRBw9dfyjGwf/AFx2M+0kCHiL4V7mWWbAvWkh/pIwk6B6M8A7S
irEw0vfrjUxNmRGL/IL/6GfVWvEamqCqnhLbtcxBkIoWT1DRU1OXxVh3qGhA
iXD9z+2fodMbocI4pi7ctN0I2fsKWiszFdSHJ9La9SM0EPSNJr3sKCMLqLYT
fVRsMM/CPA4kMJDS4rGmnpqc4YUSx+pgfo/7gqqQrk4ocN9UVB3Yjpo2bzUQ
wGYXT9jB0/5JDc3p8JkFw77oTTsx1VsVs8juO/M+Fj9Zm1LO7nkdJ4Htd/Fo
k5GN1BZEAfDSYG9SOsdWBP3vpkY8wOsRtZTUVdPAzVu9aGoC+7KGvoZALlfB
HcjefPy83iioCc2q4iioja29iXbVzghgf1HgHlXWjekZZoBOyrAWpPfhWFKL
KkJgq8beYYHCPJ7QbDWOXfx1mIl7jq/7QYU6sn0GI6X5PZSOVPAZUn+4udve
vocEmccwgKEiNFntrZhr8ITBZN9T+cr2kvLq1mQd3RCuzG+X3qH5nolhb1IK
89h1/57qgdRh7AlDd0DNL185pJSKjCMrGurGB4G7yXkhvUVvBd3AwnfsZGHT
n/pZK1tTl/Ul1HhsCqvglxrGE70dBzOoplYU7c5k7arNay82dTedqbbqBxhM
qYimwaSloMGkpcR20vP2r1jqE/672ZhZBR2l643ynSll3BW70+7Ip3amNA19
9F38YYffzrQXU7p2JgaaX9v7bDRCi7M4C26xxhSK2KpSaG8zdDbReKZpp29k
GpEboACyEjhqqZxNg5S+MDMSzaBd/9OUQ7M0vB86nESx2GPVVn3RvNHis1kN
SrePSEcFZgL+mazQu7YdZrPkNP2++3brlx4ho1DDuhTHsKRJWpxCyAmVyOB/
IuSqh7XqLOnLbOlyFWymGmjlgtVMpKEUMa1cp1qwJ++7Fqw4mmngvFF2fZ01
6nzFdCLnarVcCRHmsVHr6pFJGKuE9Ir1Jo+S4LZdKzOoemwCulMU7I7liDbF
kSNhPc4ChU2DZfik1hTGfA5N0NAnW2kI1YooioLv62Hs+heoDpZUGFAxpP1f
Pc5Q6SwO4xRMLGR4GglNwY0V2UwyJraZG/WsHjSqeqXLRkmcLhdIcbrcaNR5
GiZaW4LSEvxS/XziQS1Ot6OdBuHVToNJcFd2Ty48SmJ5HZxcn1lQM6FlUnPr
6SVUrDrHilXnYWUqFHlmYSkLa0tLqcVgAXVrnFfp9aMLHDBqqHGq1Mk1e5kz
Ak9vEmLozcy5TI9T5+lx6jy9JAvTWFp62tK7MduL7jgajxr3FG3C266jnPLo
VzDaBsRRfpXYbO95bJMQg21mx3gRG6fOYztT9+bCqbUMk0iQOmkWzhu3ZJa4
gO5xuRyrEufHIyVD2LJRqQ4+PWN+RWnPGIBVGHpnudJB8nWLqvSL6l86mIbL
pjBacLq98HHwa8aIzEIBtuDHyCTEjBErhDZMFscIp86PEU6dd20IT1O7ZEu/
in60gWrxiOwpSAW33q4zQfOz3eE3HWZDtJTDtvMaodm+89AmIQbazIrpIjRO
nYfGqXPQVJ6HMlEWml9NaZsOYH6oHypDjPZHL+4gobGptGOHZ2Ee75v6ZJpW
kb4Ofs4MLL+Z0DK/uUEX+bHqHD9WneeX6TATqeWnfyO/74/35qzjmnzPmYBn
Nwkx7GbGzBbZceo8O06dZ5fCXjq1i2oYW3Z3Vbvz86TfY3ypyqp+9umHym79
6dyWjnnFBRGxHeOJTEIMkZmJ8kUinDpPhFPnicRxmEsXdSSWyI+D9SbnLZ/7
jo7baaNxqd7yG/BZK/D4JiEG38yey/g4dR7fmbo3o1Ql8zBNtT008FHq/TD2
RTmacPTm8+1g3oxvpXHwwXkSHstjwhYjVtxMKnskqHWaBiL6unBVTWdAOJ3i
gPlQk7eW7vAV9qh0NARZHytz/ly09XAAMGlyqaMjBeNKsVIiDpVc2Atamc1M
6I3RcVYT7QWjxeHB6fPDg9PnvTuKYJhIC8kFqO+7A53DH9u6pEHgJ1l3Bo77
UTsD7EkSqGa5vDwytn88mUmIITOzlBCLZDh9ngynz5GRWRJq5dxH+QO4R3Ng
b0/9/T3ERAhTarpXMnwsqGQCFWt14bOutbmzAUtvJrRMb27NZXqsPkeP1efp
pZBkj2p9CHpnLg6Bwgc/tdLG7/ScLsmvcqV0ljY955F5GYbYZEEGGKPM82KU
eVwxrFk6trx82FkWTWGOdMiR6C7YH2tjUtWW5jBuCk/Lrp1WNHM+XuOuvh3w
Bk1fAiHbWR7RJMQwmplNyEVInD5PidPnMWkVRt6tXCx68+S+pFjThbI53B6R
3I4+KxAQmF6XD9l+8oQmIYbQzGJi8dKI1ecJcfo8IZmFSawsodQS+ht9RYLe
4c6wC7dnm52EVX+APZvS1zz32d7z3CYhhtvMjgw3Tp/nxunz3CBYl1FquWVv
HVTaKQ/dyuzA0+DL2n0fYM8s7TxnhZPg27a0N8h4b0FzJFQsLgGV7TCPahJi
UM1MJxavi1h9HhWnz6ESOehNhEWV/zdHJCdXfpX9dOVivMd1jEUyE1pGMjeR
WLwKYvU5JKw+jwT29kpMW10RRNBXIYJPNlrozS6qa0+nPx+RozMdMGw4DqP5
NRyf3Jd+WHS9SdPsglDZDvOoJiEG1cx0YvFwmNXnUXH6PKoU9l7pjJT4NaTw
bIS+UzMhX9E09uy4PSlVNrX7RGKjhfzfoDId5kl5GQbUZDixeG7FKfOYGGWe
Ugx7LKlnmKTB9J25SzGYGhuEo4f05jPAhD7no+vxahho4ksTeR3Rg+s0j2oS
YljNzCcXT5E4fe6T7E0iYfOU8p+Z5Yrqe7NJMoclTeYrK2MuyxcaNNXjdP0H
deKq4WVuZHN0cmVhbQplbmRvYmoKMjUgMCBvYmogPDwKL1R5cGUgL1BhZ2UK
L0NvbnRlbnRzIDI2IDAgUgovUmVzb3VyY2VzIDI0IDAgUgovTWVkaWFCb3gg
WzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCAyMyAwIFIKPj4gZW5kb2Jq
CjI0IDAgb2JqIDw8Ci9Gb250IDw8IC9GMzUgMTYgMCBSIC9GMjcgNyAwIFIg
L0Y0MiAyOSAwIFIgL0YzMiAxOSAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9U
ZXh0IF0KPj4gZW5kb2JqCjMyIDAgb2JqIDw8Ci9MZW5ndGggMjQ5NSAgICAg
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
jz0E0FzI5J9u8HsTrXoX+dEuTevDfuHHKRQW4DVhIG67+m437GHDDXsKBI8F
yW1Vrt0A5JCPKO4GILmROxriD7XFYoR7DgqVPRte1Rhi8Pe/rvEt5/TjhX+A
Wn4EoS6YUQVYRDNYVBy3qZOZjYSO2PSgJZsIvFBXKFakPK7Oybyi7qAlixBp
QdByZ6TU5XXbOXvBRLaTn75h69Z2t5QO5+CuJwRF52j/1DsqBWiFLHHsFh7q
ftuiy0FHI/Uwb6C82XXONRW21b6i+r5yBefRc9pnclMMhOdU27QwmMitynGP
05yJVDm/eX2Jz/qAkIGvpEtJl003RW8H/OGysOUV3bm3hoEChJ7HLWQpto++
8T3XR+cw8GzpzjCt+wXXa9vb4H8se7/7fOzDBGmYMLl76ZfDT2VMSfBtpmBZ
fnxPz8vMRkJHxsNBS/Q946G6jDMYOHF1TuYVdQctueFH40WmrAizOB8lA6pQ
kKH2VOjrde0/78DfZb12d3BctlR0Q/EH+gWehAp1s7BjmOJf29HCwz2+cmvF
tgkVVo3LL+gdX34wQrFWmIw+IHCh01Y82w/Byq6nn+jB8LrpSsgO7XHqCmvy
pPruInJXV82ioko/N7BcL+279PRrULmxb7htqs7denpwup/oI7SKfsHc2MtZ
yEdSTvAbvna7oq/W3IdttTtqv0aTXIKOORZuoGBP6+0kt8u1uqmtOyhX9MCS
jFhjotQQ2CM2e9+1+OLL1TNuOwLTUUKCNx7r5huyU4UfAYLSQbziZwAKgkt5
128twQWdrdlKSIhCNoQN0SN28uLtFTn2tq+86kW726yg26fwlv1zQ5kbttc2
7c59wQk+8sv1h9mqfpy643LDHbOLloYn1lTWvC5Jnd2VvTUx3Fi06zXe2jUw
FIZIB3ee6i2mibCgqr5vq6av71bVqRzcSLv4i6bgg8yRCWkUE8L4do5GH7/C
fKnrP4j/kPVlbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqIDw8Ci9UeXBlIC9Q
YWdlCi9Db250ZW50cyAzMiAwIFIKL1Jlc291cmNlcyAzMCAwIFIKL01lZGlh
Qm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgMjMgMCBSCj4+IGVu
ZG9iagozMCAwIG9iaiA8PAovRm9udCA8PCAvRjQyIDI5IDAgUiAvRjMyIDE5
IDAgUiAvRjI3IDcgMCBSIC9GNDMgMzUgMCBSID4+Ci9Qcm9jU2V0IFsgL1BE
RiAvVGV4dCBdCj4+IGVuZG9iagozOCAwIG9iaiA8PAovTGVuZ3RoIDI1Mzcg
ICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjapRnZjuO4
8X2/wshLZGDslUSd2afNIscEO0BjxkACZPIgS3SbaB2OKE1v//3WRZluy5OH
oIEmRVYVq1g3HW1C+Is2URjviyLZ5KrYh2G5qbsfws0zbP3tbowERRXFPk0U
zD1gt7lLymifxPlm51H88+GHH/+q4k0U7cs03RxO12PDaB8lxebQ/DvotLXb
XRRU2yh41ttdkqvA6q7qt3EeTKa2vDRb0z/L7jQC7Fwj1oSzUTe8c5wnnrwi
sq5e2jfY3zFgXARvl+0ON3CBUOKgqaaKZ1XvqFTWERwAvd/+5/APkHIXJfsk
yYhpQFFJGBALmjkFyLFqeZ0E0uM3WDMMg+tRcEHGBwT/ZhqSB6E7XJhbpGCI
18aMup4MHc4kAXU+tsaef4Q1oj4fbT2ao5MHQd7fJK4dx4Fu4F6EF7qiEbmI
gj2IW8TB4awtIcYsGnFQ03VdJj4Z96pRgPRvFzysb9yN4iLfGU2FvZZEfpVD
Pk5CBeCmSXeXSchOg8hRvaCy5IxKdk/6dU0R1s5Age8KISPFGDCysgdrzbHV
ssUcDWgnKoIjz7JBJlX1VnBG2W8r5PxN2AEN8/Ig42UcnknvXcfaJBS60bnC
/3qF5VczneEmoiR4PYN1AH36TAMz8bKxPM5ghnBnWVnSnSEI3llrB95v9Ncw
Snpt3R6tfo1UAlBfJrBnBB8bXn9i/kGpiNXqP6zwkLBtiZfUBiGBvC9DSjKc
B7ySV5C4jFhvZRiY7tLSLXUk+Q7NAKAmgTqjXDg7jchXp8lJh/GFscXBEeBf
n37dfX76hT8qsTsioWVCFFhbBRncKKegwgpUGNo2Gfa9Ag5IBoJVMGqLbkfz
4cRjPXRI4Wh6jjfo2sQ5zr5MZCVNhaQbXnsa5UL5U7RLaO4Ydx2WzsqWsxaI
Lz9/elph1Po6VElBlqGSEjTfkusXLGQ1aQh0BEH6M51pCU2weodlzXPPa+xr
RfD0689fDh8R6ZcPvEJhkEDotgHPLAHOU6oZ+oWne86nM3k3sJhlECWMneg2
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
UGFnZQovQ29udGVudHMgMzggMCBSCi9SZXNvdXJjZXMgMzYgMCBSCi9NZWRp
YUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDIzIDAgUgo+PiBl
bmRvYmoKMzYgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0YyNyA3
IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKNDEg
MCBvYmogPDwKL0xlbmd0aCAyNzk4ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCj4+CnN0cmVhbQp42o1ZSY/bSg6+v19h5GQDsSKpVFrmlgHebEAwwUsD
c5jMQW1Xt4XYlqMlmf73w49kabHUnUEDrRKLqmKxyI+Lo01If9EmCuMgz5NN
ZvIgDIvN4fJbuHmmqb8unpF+YvI8sImh8YTZT+5NkQSmSGmQBnkarfIUWRAa
emZhFERJDp4/P/z24S9JvImioLB28/A0SqZMD8d/bz/3j+ddtK1a+nf68KV/
bA9N9bjbm2jr6H9mt5/oGW0x35bPFT2uz3/a/efhH7/9/jDsH2dFkEfFZrL9
QkTPs5DRTGWMcxukWTyT8eNun0RmeyNRq/b0oYWQkKmB4CRrnENWsHwNbUhs
HyAsOPpHokQyd3EtHYBm9pB+s4+sCWxsaJAESZLyTtX1mZjzUL5+8ct0O9ZG
tL1MZvvbjbbOtjVNNl2LmWhbXoWDuX/sINl1R0ydTB+byhP5/VLzEkd3lvef
J9c4GVbXp7q5lLR4V9W6Kp8a+13lDOFM+La/uIbkMIkhOY4yuEFJukt/GOZv
ZYNDVbxideNtnExVV3mKvpznhy743NBRtA0gkd1++fjps+5IxNvtLCuWg5rn
ItJRID2EiJLt18gkeqnvQMEi/MDWfpln9x7ElHRTnZ18eKivfFj9iLct+Tz1
dO3RCtSoSQlOd+rqFfHm++JKw3xbP+FZQC90cx1dUNsJBWzQM7jGq4FkMu9+
4Oq9AagwpLiUrvILW8j1SKvSXrLG4iB+E5GqXijVstSHqvR3tzgAiD+r7uTv
iB/tTXzmUH0No+TgPy2vdLVQdpINRzNJwqKfnIz769E1ZzgGu4ruyQDBe4K6
YpkvbefgO1HITlv3ndPjXQRdxDOZSDx0OTzp71l5H8vWHYWDNa3MKh7Gg82C
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
8ZxALY21NJAXYeRkXgZVF8heX9yQT91XyLkJMiQy1gTRK7/meZ79hGntp7L5
SjhAvNyuCGxhf7Gd8PxiuwJ3Gs22O9RDninFaWZ9Wm59iny5+wEENVZut2P1
jp+MwD/vX2lCAzMrimweEviXiQLdrSErbwiShMh+LJBbde4wwg33cu2QsRZ2
6AkG8qX8JvPaxVGKG4Q5OZ9BimXXcz/l2U+YVnK/u5VwJrPYzsRBYdK3t1Oe
X2xnyAltPNvu6FDFXzliIpl4bKU7dehEFfghtQpcINMVxU4t//WXRwLGJMjS
u0RzcGe0BrhXTc8zu89zL0HlvXTCb0zt8BOncA0/ONG4a8qrzxgaSVhAJufs
hh8zyTnlp91JF8I1T1jmMLQKaWra5KHXw7mSH94YadrXELAwQULI+yYAjjxr
vpJwi0t5oBx7v1dSRDy53Ot/SLEOzmVuZHN0cmVhbQplbmRvYmoKNDAgMCBv
YmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDQxIDAgUgovUmVzb3VyY2Vz
IDM5IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVu
dCAyMyAwIFIKPj4gZW5kb2JqCjM5IDAgb2JqIDw8Ci9Gb250IDw8IC9GNDIg
MjkgMCBSIC9GMzIgMTkgMCBSIC9GMjcgNyAwIFIgPj4KL1Byb2NTZXQgWyAv
UERGIC9UZXh0IF0KPj4gZW5kb2JqCjQ0IDAgb2JqIDw8Ci9MZW5ndGggMjY5
MCAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqdWVuP
m0oSfs+vsPKEpTFLQ3M7b95kziarcZKdcaRd7dkHbOMxGwxewDOZf3/qBjTG
JtJqpKHpLqqqq76qri6rmQN/aqYc144iPQu9yHaceLY9vnNmz7D0t9FTySde
FNm+9mBsELeLCx0rW7vhbGFw/Ov63V9+99yZUnbs+7P1vhfrKFvpaLbe/dtK
it18oQPPOszd0Dpvan470lvd8Fv5h6O8tOKXpuTnKanmymqybXZKmpTnsgKf
2nparr4JoxQ4KqtOgPY5K57vYDoOrSQvYaJ4ZqLXrDnwhzuka5L5f9Z/h50t
lLa1DkjRBjV6g9XTfOFGFrL1IsX64yAttqAY0OwyZItTqN85T0m+zKT/O2c4
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
9o85E25ec9+3kvxMKdRtKwscdvnZtdKKun4Vf1KCMFDwv5yxG0q3HlXsSCvZ
WFHBnRUlNcSf3+TTvazR1QvJd3IVgit212e84+x/TXUGZm8HL7ToEgdPDjKc
aOZtxsj3PJXwgxMdWlgHIVkYJsnCo5hrbw6GgCSv0YteYP0o+KZRtNz5Ok9D
0BkCzDNA7nmaOmEOG3/uOxYBgygH4bBoSQeVcdHeZ9rr6jWb3UwPCs5l/Yv0
0NNMpAchogNjjZXFG6eIG4eGjiGy40n5Lc1IgYsqD6ItdgcKgOu0o/tuGL5w
vUltZUwK9BsMTHOD0fGh3jsmnbk4p9RMgqjEZ8IPo9aQefotySDMmpp50k3y
2fRDLQeGZyu8gxttX+Li+m4ffr7bhx+Gg++B+r6T7XmNtcWfhmBWIWghi91z
mVK9Mc3qom2JPLZl17BMyBLCO/2ZbJtcPiyLVDhcdCgx/MZxxz9HuUHbC1mZ
P3/JAZa1lU+Ry7m3S3Npp1epfE+JEJ6jeon75pt62AkTq5bdvV8O0qHWt8Cv
Qt9WarrGNmhug78lokzfKYngRyVD/9c3euydw71vUqWWZqTTqL8exwOVltz5
NC89+M6JC246SbbjHitZ3zM7lbiMGxq058O+5PX6DqfHhZaHP/C8dJfUgqco
aNYXv2WKGnuOiUjbkVbD3Ebnqw8VeM2DHRdo3BMn48Ik13G+9NNg8Ikq5WG3
wu+YZdKsgEP2ZPAJuo0ATcVy+usGro9ufzhJv+Fe+dm2b0GFv0Jji6LYox+z
JztlPc0Vz8caytC45YNqBJey2l/Mx7L+BNXIXMVlbmRzdHJlYW0KZW5kb2Jq
CjQzIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA0NCAwIFIKL1Jl
c291cmNlcyA0MiAwIFIKL01lZGlhQm94IFswIDAgNTk1LjI3NiA4NDEuODld
Ci9QYXJlbnQgMjMgMCBSCj4+IGVuZG9iago0MiAwIG9iaiA8PAovRm9udCA8
PCAvRjMyIDE5IDAgUiAvRjI3IDcgMCBSIC9GNDIgMjkgMCBSIC9GNDMgMzUg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago0OCAw
IG9iaiA8PAovTGVuZ3RoIDIyMTMgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNv
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
0VXhRk5pjWwB62La625Ng06+9sicqltFfReUtIe8vLQNmnKQWHJ0fMivo3V1
DDtTN+V6AKuFdYoBbMTgT4JjkLqd9o6CV87Kv6t+4O8MWK/PS+R7vsXtmmOX
g81jVJ7HZ2ze44Tb7pjFitWsIIHFMpHhzuhmsRqFxumdJnFv3jPBklwCx4EL
zPrIa0paRC8UG1iLQNFBR2PK+K7n5V3en76mJInmz3AIxZUAzrryC7p11YF1
TV0Ln1HhpgNMVOzcuElQf2PwKAaLpG2WzPDiQote7llb3AgfYl8UJrCInnVo
vAmNVkfVeHXAinP6KDLYJok/rqAgF2mcjvbjCUf9kYD97IXTsbLDC9d6cvxX
+yoVa99E/1dfNUPxel9lgbiviqSv4s+o4JK/oaRHWRQvRS1JDYPGkcech0fM
zZV1vmZ4rc3CDwGp/kabNQN6vc1SUehDnT9+Slh9kCkWDTIr/8SvghYieWI4
o3u2Nzw52y3JJce2rluu5NEosH+X172e8579/8fXJM0iX4PO3xR0gtn4zJpp
PwwziwfFTO5p4acqPFzT+gcHP+RIZW5kc3RyZWFtCmVuZG9iago0NyAwIG9i
aiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgNDggMCBSCi9SZXNvdXJjZXMg
NDYgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50
IDQ5IDAgUgo+PiBlbmRvYmoKNDUgMCBvYmogPDwKL1R5cGUgL1hPYmplY3QK
L1N1YnR5cGUgL0Zvcm0KL0Zvcm1UeXBlIDEKL1BURVguRmlsZU5hbWUgKC4v
c2FtcC1hcmNoaS5wZGYpCi9QVEVYLlBhZ2VOdW1iZXIgMQovUFRFWC5JbmZv
RGljdCA1MCAwIFIgCi9NYXRyaXggWzEgMCAwIDEgMCAwXQovQkJveCBbMCAw
IDQ4NCAyMTNdCi9SZXNvdXJjZXMgPDwKL1Byb2NTZXQgWyAvUERGIC9UZXh0
IF0KL0V4dEdTdGF0ZSA8PAovUjcgNTEgMCBSCj4+L0ZvbnQgPDwgL1I4IDUy
IDAgUiA+Pgo+PgovTGVuZ3RoIDUzIDAgUgovRmlsdGVyIC9GbGF0ZURlY29k
ZQo+PgpzdHJlYW0KeJzdU8mOEzEQvfsr6ghIU3QttstXEILrDH1DXMiQAZSM
NCzi93l2L2QO3DhNoqjbVvn5bXmgiYWm/l2fh3N6eVPp7kcS6jvf75JWV/Yg
mczovC9rcW5CmjWzOGWvnKuTaq485X19SNIiuJV9R2oVLroBbMsBj+ltaZPw
1Gg7LVmC3Xb8bX1IG4N9YuO7Ijzif0jH9IFy4dKUPkLgLfhxuCr9TsMIunn7
1CR/Se+TcFtVPkFxS3Do6kOS5X19HM70ak4KOHeaD+h2kBqHTIXmY1o6D9ET
+t+8Q3IWo/mcnr379en5/C29mdM1GrNURYPNCzwsUwM1cCg5c4OLklW5QJZE
Za106pZ74Cqg4tMtwFSphhywg/PYOeFckSFGi3Iz7BxfpIUUeri8/FMXUAOR
brqEQ4tf6sIvupdtKHp9+vr5/ifJhaxHf4S/9Y8pc+2kGmqTQdyqtZFeeGZr
Q95uutVAILUnr6zexyPGmDSD912VlQZI1KAh1Lzq1PDgioMC1BL9YCl5WObi
vQP9HhzVAWZmbINNaGUHmBeYvcCDn2Gj+e6ihjkXaqip5sGqROv8DI1zW7F9
YgSvSM1dFmwMKWmZYGdnAO0oupP3SyX+c0QGX4AMYwp6EJdBaQ/qShk6ULUr
eCURKOftPmF9AldUs1FvVEmqNLpCnbp9F6P3e+rX6Q8kNC+BZW5kc3RyZWFt
CmVuZG9iago1MCAwIG9iago8PAovUHJvZHVjZXIgKEdQTCBHaG9zdHNjcmlw
dCBTVk4gUFJFLVJFTEVBU0UgOC42MSkKL0NyZWF0aW9uRGF0ZSAoRDoyMDA4
MDIwNzE4MjMxOFopCi9Nb2REYXRlIChEOjIwMDgwMjA3MTgyMzE4WikKPj4K
ZW5kb2JqCjUxIDAgb2JqCjw8Ci9UeXBlIC9FeHRHU3RhdGUKL09QTSAxCj4+
CmVuZG9iago1MiAwIG9iago8PAovQmFzZUZvbnQgL0hlbHZldGljYQovVHlw
ZSAvRm9udAovU3VidHlwZSAvVHlwZTEKPj4KZW5kb2JqCjUzIDAgb2JqCjUx
OQplbmRvYmoKNDYgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0Y0
MiAyOSAwIFIgL0YyNyA3IDAgUiA+PgovWE9iamVjdCA8PCAvSW0yIDQ1IDAg
UiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKNTYgMCBv
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
3vVReOuz53moJiFpmC0cDiUFV0egE2B/TWW3Eu7q1UQsFFsI4iEk3daOfNJZ
KNiJxxGlns0RbXNeBxIIcEsdM4vIoQNC5O6YOfkZHXDy0zpg8RMd8LmC8tNb
HYD5lUvJqjB+qOeNZpABt9NwRMUYPKf2DOBXvHfXZyMdUagj1B8VHRlfB3Tk
UeJtnJIaNYbbdbonqvWEVOymLVhN1GVexiHEsaWekUXkkLEQudtvTn5Gxk5+
WsYWP5ZxkOQSCRLr9y5cNYGlpNaRtD8TCqVIzC5eggAsU2sON7r6WJA00QPT
DzdB5q8vRS/nMYwi3bnlJ8UMeGI1Rt0NqMbmfk2B7Km52G6fKg7TY8Vpgd11
HKC+0fvf6RvuUbDRBUpEDTE7rP2Drs7u1BJTjzBdvycdtrzX9DWn7TUlL4aD
nni16FYGCflnISH9VA5bUfceTaVjcVXS6DKMeQT73gxYYuAns8pHD0vf2j/w
p2Mjq7DsRWAoG2x7a4MZ1WQUzGhv+peO/mZHW+RAP8UNSxc10tpthLLp9a8l
WsDGiGdtVmUKaubMbbMW0bzNaiJ3n9fJT9usm5/YrM3vPmu++2EI167tXVbL
GXNoMmbJhXPSI1sRce1qOprog6MouPPBfHxJ4fFkrF1wmgdsblFsXDAcYxW3
3S8uWnGGQgquQVqHWTKkdZzSRTqlg8Hkax+2Yypdep2sguyuUVve/cC263Tz
22QGg2Tl1q8NGq0fCR/YvkkXfpsfaRyKyDTuxreLmVFDFzOthSOzD1KOmILF
6rmJcSr8URxFYsoY7eFK9Jv2z+ayLx6Ha3vMD0ckxWvp6utUmK5eYumrcB8e
ZYfiL6r63l3cdsEv5I56UYh0VoB56EVLv76NNFNMgzzygiDX95AA73lFuaLN
Ka//A1T9UyxlbmRzdHJlYW0KZW5kb2JqCjU1IDAgb2JqIDw8Ci9UeXBlIC9Q
YWdlCi9Db250ZW50cyA1NiAwIFIKL1Jlc291cmNlcyA1NCAwIFIKL01lZGlh
Qm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgNDkgMCBSCj4+IGVu
ZG9iago1NCAwIG9iaiA8PAovRm9udCA8PCAvRjMyIDE5IDAgUiAvRjI3IDcg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago1OSAw
IG9iaiA8PAovTGVuZ3RoIDIzODAgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNv
ZGUKPj4Kc3RyZWFtCnjapRnZjuM28n2+wo8yMFZEUWfeZs9ggdkd9HQQLJI8
yBbb5kaWvKI8nUZ+fuuiJNuy+2HRgMWjWFWsu9hqFcGfWqkoDosiWeW6CKOo
XO2OH6LVHrb+fvNVckQXRZgmGsYzYL+58bsbnYVFphZhPNFNHqlQJQUC/en5
w3d/0/FKqbBM09XzC4zyUJVq5YGe65+DMlz/+vyPD399HpGpOAvjMlvNUN3S
E5h36OkYNssLej8dTLveJCoNhrUKDobHh3WcB+ctTpLAOl6sYA7LHcCdh+lM
x0PHZ3Cl7nD42n6EHZ0F276rcHW33qgAR05OV4z/aJyr9rBuEODnMAx/XW+y
sgyGjgGqpkGhwFU3KgmTJCPO3XnrCGUPRy3yVgSmXm90nAW7xsK1gInB3cpT
dJPlcRin2WP9zYCW9KdCrYsRE3KlIuDmrg4f0vQ6fExTdDin+RfTmMHgzfNR
izgetYgiqa3bkV6+rVFQXnBvDNp78e9QvX1NN1ht4jKMsxS+eajLnIh9OVTO
gEXoPA80wP5R4DgjxfaG10ds7sQm08qRjHSKX/MNefFK4rXXg92tiW/CcqyQ
0zfe6wjRbnfueX6kuzWDPTVGMNuj5wt5aWtetu2C7VStRy0G3dem5zuDT6Zp
eQH9ZMh+R5khFbBrd+jODVLRadAiEtIBbJAOquEjzvJgb1ni7WzTehR8X3M0
BFwEPVLaCZ5d19YW4S0IkOmgTHJiHCaTTERdC7z/tC5i1IVOU8DH/KYJsIc8
sQ545aXreWBbN5AAyblkt+LP5Fc8H/o3ZK/dy7Tj76h/9GrrBiOoX3GNbnRg
jgitnhmqBzrgwdEYAPJAgWNBlf85YziJs2iKQJs4LedBKM41K5nh6HLTcBjM
8SSH8AL4dXR1NKH5asWf3pBk7GmSBS7PrBdRC8NMphklQpb0xsvnlpb3m4tr
pXQtkpoBP9ykURJ8ZT9iD7W/RCoBFnRSBqe+w1lDlp9GwedPqO9/86Q2uNca
Bt1OKNywObGl4WxgWYuyAbI/j/hsy0tdP/MAWiFdw/dI4pT4veBpaCnZSN3J
dDgY5ynClC3dopJah65QRMH2LLDEQx4FY4po/QCZqhpBgQtsnoVElGhy0Wx2
f9wg839FdU1xKwKuyCAuyUpEXbja1pmWfLWMyL5eeIh8nquezQztw1Bagh3O
dHiiAAM1jWUH7N94paKYBQMIZehTKsAMGqVgKOb3uQUMRgAv5LbEotgdhjkJ
xc7ZbWMWMlQEp/QqKZMw05SgQtgJtSrgN1Pxqod8dbX0dJG+GMFmwkDZK85X
wJBGhl6uqSCLcZjCnVQUBV/B4TiUZBlGaLhpzZMnszP2m2W/xahCqyhNNIA9
2/S9PJ+UKiySd+q0GdBCzvWYIOcmWUJsf2b7dajlPXkLhmLkGpPtZGvwcVPI
hK1qt2Nn4qvGkhLxe+iN4eGpgqjUt+77u5dK0jDK3ileZkD3i08PRMXL3cLl
IT1fuDymJ4XLnN4/O4o9Es84OII1t3dvrcHu4ncuPcI8uDPDsPndvfIDYuON
HxHzF56IfXJvLeeInly2O4vh/Blv3jTfPS0UTneFobJQ5ek70piAHohDgJBF
fV8ej+iNAnlIz0tkRu/rokQykIgXB/nZaWw9WskbXPCoMI8yqU+5oXnG6jcu
UjQutqzRqmj5JDm/lzlLnosF55foA35bY+WCYyoBimReGMDqZefiLkG7Vhjx
pQce6HqzUKqxKHqKcpwRsOVKoCK2A2QwbJeSNLjKARQ/cL3iT39HUlBC5GUS
fGKogerHkyWpNEzl7FMxTqyQpnoQT4ztW+WI5m2Wua7lkziCakhSNc0Gaixh
ILWTsfMuhHaIbqykkuY12v997S81S36EtOPv3rSGsu1gGMWYed94XtNmxdCd
0BOU/QtF4+N7TYI4pJmqL6kdphKqk+BfOb9L06kZgnblbo/BZpsUbPhw5MnM
YwBtQVagW5LpwvzadGkJPvlkurAkPTou30gf93smVIjNGMG0rcgvf+OTL313
vNtjkKVjq0MtBHyPnS+qoKWhPr23khJr6XPGfvPSFKS5Krj60sjyqXnjIeVJ
zXJFIlxMYbWYRFPLp0Uurrs8RaVwLXyCS93qG0wW7BTNQ6sRH45f+Y1Eq+mN
RKsLd+UV6p2PJ2zG5SSU51jqs5EAv+yz2jsEQFARI6lvT74K0v7RV7m+4r7t
DwgBVuiHThwef2uURppNu1JISDEvRX11m4bkHNfcaeQRqOAHbssiugq2jLbm
3kBx8xbxrVt5WcAwYKkqvpXvEcQrbIpqxnIbJs5KS09G7gMq7SylCI3VVtM4
kFiS5ew+qPvTuZd4wQbtZN3X57qYd+AFy2Q0k4wDvAUloke/4ORt4SqsPhVD
6JSB4MfhuHkihgdp0zuMtkqRZeOuO/t2kWZ2OFdTr49L0kDSLrlKb0+Db7dx
1YjUYanv2qMvM8dT3EljV1oAmdtbQLnqo62Oy8BUzpKvwfjA9k9vKzC9thi7
s5xIsNtEFSQ6+KEbeypJCP1HPm2FAMk6pga6Ox4xRNW8wBVwwdLU+lHPNTGC
YQ2MQUIGNjiz8IhzcNve19O+9yHtbhtZrs+zVzOpwu0g6PYUwyp+vMA4jjff
cq5E+JZt1N1tpVSZhrGK/59eaobifjPlgbiczaSb+tFJ6wfe0b3w94u8FkwO
dqe2nLN+t7a8Zm6xZ1K5DiOJWZzjoBapuVSxe3mJgSVkEb9fP33+wiO0Fvxu
xQ8UJQ+CnY4NHiUCbUfd9NVuECz8HgB5vtoZ58kjHL+N1CMYfDX0oFxjSD6/
Ek9SxKGO4/FSS+LxMJsZ0K14rjFR6X1LrqA6+TE5hnmP3CUmJCdvhroALZbq
wsv+RR6kvS+gxNG1W54cZo6O0uL8zc6OGrFyqO7kzYenU6hBce+ac23kxPhk
jaoZKttwXOCnSPTz87zIEnS9+e/ZUhlRL8SJrS//IqgXTqcG6l15JsG1Auhw
iGo6Xwc63qCiEg9xlLHGVye4aeU9px9PkdnZ5jIaZkUUPOO442NcJo7oco9O
8h8+8mCMxby1WbjLJff4pr3I/fQqTo9sMPutFU3Ro/hhmkzP8PR6d5K1g7yk
T7ebiZyf0ueAuTjdMH9KvBNQSh0mELwexpMJ5taAwUfDOC49HvpP2Y27lIo2
b2n9DyFLyzxlbmRzdHJlYW0KZW5kb2JqCjU4IDAgb2JqIDw8Ci9UeXBlIC9Q
YWdlCi9Db250ZW50cyA1OSAwIFIKL1Jlc291cmNlcyA1NyAwIFIKL01lZGlh
Qm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgNDkgMCBSCj4+IGVu
ZG9iago1NyAwIG9iaiA8PAovRm9udCA8PCAvRjMyIDE5IDAgUiAvRjI3IDcg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago2MiAw
IG9iaiA8PAovTGVuZ3RoIDI1MzUgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNv
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
LtAa3RLF+doMA7BsGlkXTlGsHHqYGumrKAeMX1mckLIXcOMqPqRSPIlTSUw5
W/hg2ciXzDxyr1lrNeqsxAZGLNsTJ4l5jtAWPkKt1JB8SlhmPC1Vn6D2JjDI
Z56AqBkwKFvVZ0luxYWrgwTUprDEckWG7s1DY9EtoZbSnGvdr2DL+67lZ5vE
uTI1Kj0Upu7Rae/xPbZ4XgBpiy9Dr2c7ZPcReSfZdzgLQO4MyTVSbPpr0fbF
pUP33jUEcljYntBFXp6i1gBmr7tHmAypucXOOtQSeOxRFkkKLpxqYNQUKDns
aaQoHYex0ytVXUgC4w0FziDLUdUFNBXEVKGHVKerTUcR42ro50XNBw7+jIXE
EKrsyNZUhFx4JQfByo+iMPQ+H7D3iLE+n0fcIMu8z1In3dgHJxooRN0VOj8J
7cBpM9tRkKCa7fnMmc2DOteKZZWpgFLaSiB0bkEVbKKS/0sPcRrkKlvoIQli
vtWZHiyR6CGIrCb+ydmNT/OT6cv2UXfP6H6ZEiffqJy7EWR9evWgMXGNs7df
BWZEr7/iqygm9IIy9IYNixTcdpWYIjWl7o1D75tkY64gZLTD08c3S2/xCTWX
ZbUMTXmdO1K40bcbG/vYyGgljgUekZwFcWUQ+WbYRlQW83MtRIj/mp7cee1V
XOIQqlACzK3s0cYoKQFQKfGYae7lweFUTNmel8zxFT9Bg3gKM0ziftyg8Uo7
zlOCPJnGSkdWoIb+bvpBo0CNL+COpTHgrtZOcvnNwIEXRG3eWgqlS6Y+YqDA
xymZOonT7Cf8NiFplkgarStOdVLroL7mYXwzMEouz6y+6G7xnlpiBSludvCV
Mk/8WglL/qz/EEQTnO0vGPp8eVZ9MnWNYHd58JPXVgfUDlPxal/hrsFSkgSh
hC1yUhWt4yVL48+IViDTFSepNIJVdJbv07cFWpp3BF5xYoHBa8Ehj+VXvDdj
w4XmpTACS0Ecxo6PPByH18Lcb4Uvhf0JF3P732VuZHN0cmVhbQplbmRvYmoK
NjEgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDYyIDAgUgovUmVz
b3VyY2VzIDYwIDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44OV0K
L1BhcmVudCA0OSAwIFIKPj4gZW5kb2JqCjYwIDAgb2JqIDw8Ci9Gb250IDw8
IC9GMzIgMTkgMCBSIC9GMjcgNyAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9U
ZXh0IF0KPj4gZW5kb2JqCjY1IDAgb2JqIDw8Ci9MZW5ndGggMjMyOCAgICAg
IAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqlWVmP47gRfp9f
4UcZGGtEUWfyNNlkcgADLHb7LZsHjc1uCyvJjihPdyf58VsXJdqWZCCLBlo8
iiyy6quLVpsI/tRGRXFYFMkm10UYReVm336INi8w9de7r5IluijCNNHQ9ojd
5E7nUVjChjudhUWmiCaEuVCrAv5nKt70sORm6CdvBxVHYQL77/JIhSopcIs/
PX349CXONyoJdZJtnp43jsoRPR3+Gegw3u6UiqLgh60KTm176eo9tKoBhoMa
Wt3LFg6WB6/1cOTWcDTcOF6+bf/19I8Pf3kaj+KEk5VFqNNi9r6OZucR0Wl1
vFEqLNOUTut2yguQjqLTPhHnMgsOZsBD1o3Ffhqcnvl7PG1jOCp3Kv7sm9p0
ODxIH265jYuAbgqXrGCnwVjeGG4J3SN3qCkcj7gD3Fd2VkFvuP0j7tGj8H6J
VNKYHfbtebsDerOvcXCPUoK770AXCeoCrlJ1B1gfI8emwVYefOM1PLynm3zH
gxrHgRqyrO74a3HM7If6hLq6VUecgoTzcpNlSZjqdFYdjmbnEd2r43YnvENy
xw4mY1i2yk5oHrC72QnZhXdgE0BncRkWuf49huNtsWw4jogNR4vh/OQ084Lm
YgfT1/+nzcR5GMF33WYmohWbifIwjxhonwVPeELfEmCsNy9w4pogNLhbINAs
A1KOD5R8fBg6kuV8486AmPvD0nXSApxL+cAFeEQz11F5qEo17oTXUTMoyGA2
W+cnNA/46RgcY3nFz9ih+tbU9uiJEa+NPiQnH1Kh6OqT2OMr+U3nREjW4kRY
euREliSWFWGRxg8kNhGtSEyI8AbxssTW+I0SW+XnJObxqw7stfqhtnLverAs
nXNvrOlIiOLnAEM+wnxHC53RSzqyE9D1oooRzZb86w6sM85S+IKXjVh7f29b
c6irwTTvuKgInlF3TcNhgu0UWmAItR16igSgyY9MK0cqriMI9J3LBhK86fsZ
QNA4DuL5++cTWlLLg/bUyl4wOhMMeL+M45gvjWeHt5szZzR4xtPiqSWC0JiL
ImzKlUQGMvJlW43SMC3KB8ibiFaQJ0TsIxeRt8ZvRN4qP4c8j5+9nM+khkxP
ZgftCVLQcT45DlrjHF91ICOumAIFyrH4dBl4iAyaQ23zjPDI4+Bixc/HpC64
6acvSeLHsLwMdYRZHx3OILq+opsdkMOB0Fb9EqURNOCjeIurW+7cHj5aEGxL
ikzyLMweOV2PaFmRjogC/aIiV/k5Ra7zE0X6/MBeAdGJkriJjVGH1Dmh3b1y
B3RDX/a89oip3PJSdCSJWnDksoAhwnuDshNdBvUzDhScLPKcaOHGlFGfbL1R
CQjb4+bHqqstegIVsQPquT0cMfYiIX1h5NyfCAyYSOIBdwfj2TM4QwnSHd4f
z6aVFieJuwy8S1uRW+LBKauEmbo9N/Xe0dXdzAXEF3quw2FzFm8aEqHsAdxG
mhW0MQ0eIF0G2wqzEWtrzBzUJmZ1B34aVBM7wMSg5DHJwc7rsWYlcvfrE3be
RSuWB1GgMQGHfMTRjaPXOHFzzN/3pv6OWxjQXgzIEjfiDnDvRnQEeWuS3rmR
AQ6h8AjkPaIlD+KWP/QgkuTqAjLv9Hcl094Wy8m0I+JAkUgy/fPnrz+iT82C
P1NtNlScNj9ty5ikrunKC2jUhQqTTK/D0SNazqDBq0OazdL6si1ijNuckVAs
vkpVPsGQpNfX9ukqOc/F+BkGFnH75nKQkJ5OUb9yOyKALlXjNuJtr3J4tFBJ
GlpD6LO4+sXYjzPGLeLF01gjWf5wHLE51p7d3pyHkfEUHTE1ucL/YkahY8ih
tXqgiolo2TU4ovXsf5Wfcw63/K7szHkHn5/Fi/fyDHJvXIkCI8jEMv+H7wEJ
vzrowIKNVeLqYfT7Nk0hYlwMz47Rp7NT+cU4AGKnU2838+8L5M1G5mVSggty
uUKMX8ep4I8QrlBX1R7Rc+RcWU7O2ODyWnYjz78fXJaNsSSnWAId74UiH18g
RtT2VfeyVW4as5q3SMH//0Zv8D9/XoJKXKJzWEfKRLMMFKFZr3nWmDmY3DCb
RYnHrOG6fwYfcRGmyoMHiKWiZ5oxW+8PpjdS41R9PwZurxY4sBNEdzEqt110
gZgwFuUjaU5EK+IUovVMfpXfKNAbfvMS9fi1FVUyMxLVUGeWk0iTNIb8h7+X
zpcozVh7Isjua67SOfLKZE9QF3gnqSKJ4wykP2CLu9Ht4Vg9mJZbv1J1+07v
fJNZcwXKp/M97rmq2RKXStSnI7ttNJtUu4pyTC90CnbuQAPztXzPcMR9fW5k
2WSZQN8ZOxCocD8snFlIAi0YbAwLosE4lEWBFaLhiO++fAwpn6BNiGtMO1bb
NMpOaqaWZaw2kEQKjvsbPwFCSziOXmhre433yjme84wHgk1aaxo+vp15Nx29
KarQfhwP44ZlzWlybwA0S/DeAPDTG/WBdvChN4lSytHx22EFESUBPmX0fJAD
z1AcxScO0qdE6SmPZiJ8F6D1FX+I7EL1DsyOgMK6I044t0cyqnLGU0C/4QoB
PW7V8BjomlA2cw9rcCPMNyv8FB5bHHRs2b/gCOLMI+fEAQcoC8mnOPPGFRFO
mem5uuNlWDbhDKfWmO12YJ5Qo0u0Q5oB4oa8l9OTiWzGpdAg9ktPIDNoc68t
LT0xxTqhoipkWf1NykSkYEX1TEOX0sF/SE/EZ8fSpACGxR9SsRtg0tO4Uu6W
iCM+D2JXOMSgxxbTa0YxDow1GXZeCVX+bTgEV+cz/ZIAxs2/SswA/MLounkX
a00l4dgpdhHSn5vhiFe+vGCRq13OjS0oD1kPlBwmkGsT2GOoZKu3mn81aZkU
3zvxy1U2NBrTvcizJ80/87fiD8qSsijEdZqBW8SL7hbxOtT7S1NRnZzMIUSr
FBHiCixECP0WBMNk2vDFWnd0Wi7x5inAsK0BiG5UVk51M3RIvVCJa/xxRdzl
+wwCD6iBsgQfiomWTslyEihlKBfqpoe4hum8H5JKKd2hgU+MV4UDjNEFCGT3
vsQyD/dDFLYp+slS8+Y9G+w5GMDwIGc9mMrZ01wOUUI9BjXbagox0cz8eFMq
erQSGkrc714QEiDC2XtmvwHvB+a6ZW5kc3RyZWFtCmVuZG9iago2NCAwIG9i
aiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgNjUgMCBSCi9SZXNvdXJjZXMg
NjMgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50
IDQ5IDAgUgo+PiBlbmRvYmoKNjMgMCBvYmogPDwKL0ZvbnQgPDwgL0YyNyA3
IDAgUiAvRjMyIDE5IDAgUiAvRjQ0IDY4IDAgUiA+PgovUHJvY1NldCBbIC9Q
REYgL1RleHQgXQo+PiBlbmRvYmoKNzEgMCBvYmogPDwKL0xlbmd0aCAyNTI3
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
7T2ugYqXeI6n0rdRZcLEgKimbuEhoKaDJNwigH18DdCR46XR2ysKz9WKc0f0
PUcF8xXvH+CUUENSCYmXRllXN1oWaui9qOhn0flckUD5smou15nb3CI/AN55
gTuWizYla5k+FIPCZvg7h0Abg3FE6hFi7rjY8gIY1TmYfMUDrb60kI7ykpIP
yD7kBQ5anO3QZETRy1ohIgBLcqN48jSUa8ZlL5Lgy6piNptcYVvWg1bdMHul
s4LL6W8Qo1OpLctqEIhpNs7QZzyAIHlRaCvyVHbarG33kuX8PJhg8KLgA3kr
FcwuvRLAN8DqikqSISfR8lKIzNlhKMMpFQMShypoVFlL1ycZIAmj1yoYM6D8
ShuZMpb43KfAORQu1xvPMwmLh2kcnF0jVcuYeMP95zZ28mNA6kqxhq1CSyyt
JeJSYgrheoi4Nlzn8nA4BHRe6bmkin61MD3bRI7LTfmC7UkCoMfnr5If7Zxb
4KLS0AnBdd8ElwnTbXCxTH8GLm+uaMFlueIquExXvAKXI8Ydfgay0eYmvNQj
2n+ZBDkN/8CdUQZmjL+uBxQ3cMLEn92PSL/TqwHq491f2MMYaM0weg12+7Vd
fOASZvkcBlXK+HxUDoYEnBMQxC4ZNZZaQ21hi6xMRjIWNy3spcbjgfkrDk6o
pUpDpEM0lF8NqFRbfy2zEOfjuyeqiVr0q0AlaeXOvuYofMSTp03lWWjFZnOR
qgcxFAn69/Eninp0J3zkJViSjuinlQjQ50MdBoMMqv744Luye4IaBrqc3t+9
FK5E+cHKy0QYOaGStwa9csuRo0L7FnHHkhqReLciDhNCLxH+j38mz2FBAthe
yr9EIIkiBnzngK01Uy1SI0xjn/ANGxamySC6+XYJpuXJGhL7NPBm6RMDeKIW
b1FA8qYPT8jBkJ2oCWQnagnZTKQYkbizHSN9+JUApFNp008DniQJOJGK9oSS
QMynWSi9fNwA19SnH+jexNaR57oc9FLl+K5v5aBqlLdczP4MeL3Y/wEnVueR
ZW5kc3RyZWFtCmVuZG9iago3MCAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29u
dGVudHMgNzEgMCBSCi9SZXNvdXJjZXMgNjkgMCBSCi9NZWRpYUJveCBbMCAw
IDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDQ5IDAgUgo+PiBlbmRvYmoKNjkg
MCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0Y0NCA2OCAwIFIgL0Yy
NyA3IDAgUiAvRjIxIDc0IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQg
XQo+PiBlbmRvYmoKNzcgMCBvYmogPDwKL0xlbmd0aCAyNjE4ICAgICAgCi9G
aWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42qUZ2Y7byPF9v0LwEwWY
NNm8jSTGxOtkN/GsDe8Y+7BeIBypJXVMkVoetifIx6eu5iFRwgLBAJo+qqur
665isPLhL1gFvvKyLFqlYeb5fr7aHL/zV3vY+vvF/0COhFnmxVEI4wmw3XSj
PPAila7cCca/Pnz34m+hWgWBl8fx6mG3CkLlBVG+Sv0A/merh+2vzqnRG9Oa
ulq7oUqcrwezWavUOeA0dopG86Bdu4Fj9uvAqcwnP4g2RYVgHSw855OtqTYI
JAe6g24n06+mLBluq09rF45q3K22vM3X0ymGOjU1QCXOhsDa1l3/9vAPeKsb
RF4UJUS6qfYMrImWL6YBaurqqIU02is6e+2mpnu3dAOTbo6E3kPk3715GPhp
5ZOkylNxsshyC+NOgIjlKpiyXPleGOQDJqQb+Jde3KgST+XJ7RsF5uLGKFoQ
8vTGP/0Mj727h5/3azcOYucROVXDT6kLlOlfcDlyXsL45Z95/MyHyTMG/68s
wUrwDEk/U6y5XO7WbpRGcAeym5leyz2882UdRw7Oy17jSuyYlncaDfrYigD1
lhcL2ZxgMAKx183LNSi97/yHlI00YAGVYNghEF3ckuCfL2hVgToZ+ZnDGv7E
kxrV5UCHGl6BR4B98Av83MGbafs0jKaXw4Gu6bW3dpNMOQGv0KvhLGk9IQEl
PcLxoxiH3g53TRmGR+oZ6TGRPnsyqz1fiqAuiCv1QXtAixI58EDmBgTRkf6o
G7B+WAjgOL5dLLVlICSgkQOPOGED3/IJMmE8aXG2T4AVnl18E4DdGcBrnoOp
o19piuORLRrWSpK1K4SnXhznMyHtewTYa/Q9vk++B5CqPALsyFWVh0zdE+kM
8gPJwOVdjQI6thZczvGDjCwjEEEzH2ALWZHRY3F5W3SF3DJ5Jc5BMwnDsbA3
P/FG3R2sYjQLalcWFXKhL/CXXScoSxTGICSkCl1WaVoRK2CHS594+dH6U/KF
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
IuqIIuNqvwSGL7SL48Eu1IJdYHZQS14gbb3xS12pC9vmHvvVF2U7Jw1ITndZ
WlsbzUP6KnrT2EeYhVwIStrQDy0efFIQnl9mv71eXvY/1S8pVGVuZHN0cmVh
bQplbmRvYmoKNzYgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDc3
IDAgUgovUmVzb3VyY2VzIDc1IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2
IDg0MS44OV0KL1BhcmVudCA3OCAwIFIKPj4gZW5kb2JqCjc1IDAgb2JqIDw8
Ci9Gb250IDw8IC9GMzIgMTkgMCBSIC9GMjEgNzQgMCBSIC9GNDQgNjggMCBS
IC9GNDMgMzUgMCBSIC9GMjcgNyAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9U
ZXh0IF0KPj4gZW5kb2JqCjgxIDAgb2JqIDw8Ci9MZW5ndGggMjcyMyAgICAg
IAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqNGcmy28bxrq/g
EawSYQxmsPniUqpkV+IolZJeTrYPEDDkQwwCzwCoZ/nr09tgJ5XigbP0dPf0
9A51COCnDioI/TQ1h0SnfhBkh+L6JjhcYOunzb+SIzpN/choGM+A3eZJZ8bX
WQyD2E9jtQuTJX6g4T8JlK9MijB/e3rz3Y8mPCjlZ1F0eDpPnAnQU/mL9645
nnQSeR+ejlp5X19gpjz7/fG3p3+8ef80ElCJ8gHJDP2GBQHZsKAXLCSJbwK9
YCE/nkKTev3QHZVXNReevj5XxTFMvGeelvbXQJnG9jwdni0PrjZvxjMtIDhv
AOCI8voc9i72LSzGxju3He4mQK4f8qaweN/DyUR+GBm4ivGNiYk5wmNURpDI
4K0YqrbBNSDS8n/d5iWPctnIP9fWP54SFXp/H2Sr7lsgb4zyvlQCZ/8cbNcg
azVTKQEjXLq4XW2Dtx9wDwm+JQ6DBW8zmRgVOVYjjxBeLV0bKerYGxAZvi78
Ofi8IaaNk2HPs/Ys24CEePjK8xdc6PKrBZYFNBdMrwhm63o62O+wK/yFS2Zw
STOxksfADs7oVRGcGQrdee11drh1xB1NvxwjIFrfUOBxplGVF/iRG0KQd8JA
WfUFrt/63grRqtnh+NoiGTikAVNp6TGqmqcVGk4Ye58soRpwq23WdgMaCEaR
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
0s6+dLafdxKCqZ+EY+mYigc5Aa+GW2s3aazSW1YdT7i1Fi9y8CCZlRSJw7Rk
QwB2vrbsdTvAj0+fW3CCnUr856ozzhalEn59Sl3mOweaq0DMPSH6H/rVPmFQ
ksATinvsrsMf2xqlJlMnZHmZZWWxLA7W3Zt7DdB/IeIUigluZ4ZpimJO2eXj
jD7C4ACbi3bqKuKS+6CFfQ4DhezP46n510BEIj4ex9S4QZLlMtrgHvBg90/s
FO21a8G95TSNu6gxdxLw3/VGcPjyUleF+zjHa5jQ3NxHM2l7xOks4uFs3mqD
BLcSElNniqZU7cnWrSkB1wC1I4S8vc+AlXRr++eW+kc4vtjGdnntKkBuBLSd
HT3u9W4Jx3EjSkFcPesOZUK9rFJnMqIvnTpKtp9XMTMngQFM28ghijkRfu8U
BSpA4Rxw7xDupCFx5EeQd37L4UGxox0UFw/IWu6aVVEyNdSIL7yQZJA6iMCB
J4tymz43hPLVlD5utk5w7Eu3KYSLLRmkcWHyuM6YYHYStQycd6AdHuRGbfJC
A0C4uyX2P1Z9yjplbmRzdHJlYW0KZW5kb2JqCjgwIDAgb2JqIDw8Ci9UeXBl
IC9QYWdlCi9Db250ZW50cyA4MSAwIFIKL1Jlc291cmNlcyA3OSAwIFIKL01l
ZGlhQm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgNzggMCBSCj4+
IGVuZG9iago3OSAwIG9iaiA8PAovRm9udCA8PCAvRjQyIDI5IDAgUiAvRjMy
IDE5IDAgUiAvRjI3IDcgMCBSIC9GNDQgNjggMCBSID4+Ci9Qcm9jU2V0IFsg
L1BERiAvVGV4dCBdCj4+IGVuZG9iago4NCAwIG9iaiA8PAovTGVuZ3RoIDI2
NjMgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjahRnZ
ktvG8V1fwUcyZU6AGZzJg0opy47jQ4m0fnL8gAWGJCwQYAGgVluVj09fg4MA
6dqqxRw93TN9d9PfePDnb3xPqyQJNrFJlOelm/z8xtscYev7xdeXIyZJVBgY
GE+A3ebe7e5NpJLIX4VxRPex5ys/SBDoH09v/vqd0RvfV2kYbp4OMIqVn/ob
B/RU/Lb11e73p3+9ef80IPN1pHQabSaolvQE5k/oGQ2b6YxettsbHW1b21/b
msdfdmG4zaqr5el/vdDrrvlu729z23UHHFwr3sub86Wyfdns/G0NgP7i8sKI
KIlU7OnHzJoA3WeWA8LL67vMekjPMesxPWHWlF4mHLJtiy9uedY87/ZhsP0D
GWPzfuTaISura2sdXzZ7nSodhfANVACqiCjf7faBTgDcD7Mjj8sOv+n2kgGN
riO0BW+9lP2JN3vYO1ket7a77PY63jZ1J0t4PbxWuP2DruSONEKiLso8661g
RRKnMt8BihMvNQf+9ifrUJa9u97f6TUecBLeEYT0jrwqbY0Ieriw8aJt0eA3
3NZNz4NTtoPTXxDGMohcCIf2Kz72XNZu6ySD24cgpl5QA9OCuhC4q2y+nCwc
bnm1lMXWXoBJ8wtms1dE9IoHZtCItKc60MLlSAU3oJxhmM5w/VCjTGJ+io7B
WJDNJFPLO8hk3Mh4itgswiBf6Bq4OlzjG5gnkUMHeJGdryx4WcqQG4jxbLO6
rI88GcjQ8195UmRIRSjnZL/EnAxEULC2rryplMcTXwGcXsPDz3gduv4rLO5x
cMPBS1a2HQ8//fPDrz99y+Nn9wLEglqjhVXXs2NIjbh7NAKEeZZn4GHWExj8
/ESrwo6HQjGOiyaBp8sTiBLuICsOvJcRV2gI0kZlbRlmZnAgl8DzHUbgfXZx
A3fRJOQXTdgMo9Lh5ue1pe14ga3cXfOeLA5NVTU7cgooaWTCZzKu1+5vt24x
jZVn/E0Y+kqvRyyB2I8g5BKDYOoSxVELDF7CIlvYGfZfd6i6tw45BDf6iDAD
3NKdu+IwhqGZ0kX3+hHovUe2/gcGv/7w8f235Gn3Wpvt//jzjj/diUy1lxmw
mmwDxoXt8rZ8HuYvp2wEfCF2ssBkhZ5aHxXL/OkEvpo9e6gSL5jJ56WsKlZY
sVTwuFX1uqb0tiq/DOZDbkBUnTydjgZvj2vXjrwbap+oKgKe2FZwDH6uEEzs
sWDrcqnKwf9IvFb3tERrZfzksZqMMA/0RICQG9cOL0hS+LpUkiBUKSQkjyg7
mAXpG1XxQRD+jDTqygcg/G98/9MPH3559xPMRFdSj3Ql9UlXYHZord0fnLW2
Z14ddAbGc2/Jy0k6ca8Ag2wuilI4nVW82lt+O7wmVVGoZ/qCgSUwgIdkJXKS
NYrQZXdCDxEEHukFrlO8Ylnu4zhkhSSIM0XbV54M2oaTjI+eG4k3uMZRuWW4
ZuIREXLQSgx4y8iPJuQgygvf2Zh4O3jvbGAXb7iwb+KJGcAEHs5TUN9CQAnO
uWsTD5mXOBtaE9n4W/DEBh5zYq9IT5KHMSBFLcAmRjsP/VegSgmFsz2HRkwY
MyQJdU4Z0LjAtVyrYsWoyZHUReXQQV5Su1yb+GUnNl/cs8UgClRowoe2OIG5
b4sOiCWGSdUV/h0fOe1HtMVr35JeddtT0o9s0QQR2iJ+3vGnYm9L8oMp8J3C
5pGnL2PKitNB43Eyt1FcC1HjLe8WlgNwddd5oxJrNLxT1stoHgxwZRoMIrE9
DQpIX4MJNzkE8L6j76UIgJsloxJlx5XR6fC8sM/X45H9i0m2l2srSUdnyTy/
WdFiygBRyUZuwGSKmdK3unN5Zlbn1qVVE+2VsrAjPhGXP0skankFFfiu0mqo
L9P4sdKOMA+UVoCowMD7F3ZZ8MUqSPVDmg5mQfSm4DMK1GRG9LG6GlZXw+pq
tgNTxT3A0m2sQJvjnYw/lPtdz4OPRU3BdUo14UshA3JhDCGCcE8pA0/LwtZ7
CSlw62jmmfvy8Do4qmmG4LyouluW/oJkIBVtuJbSSSIJ/mvHswxtCQf5tW0l
gyXVhqXBkaJlQNb043BqYrKEBC8heKhORJKcuwyuGPfgDnb9xNICIOuyR7I0
DAdxAo4O3X4EheuBvy6tx+FNrMU1W+fNdZCapZIlSobcmmdT3xNJZIHlgqVj
BapuJErBGONLC/aEKlCsmW7ZLyPK0da2HbPGEqNczW6Mi5/zSgfEA5RmY0yq
PC9ig+DNzxs3+nFqHAy/nxxYMY4brHjh396+xQTBG2/sUbU7VFPeVGlw5lwM
XPnW4sFEDWR3HmHuqBlwwer6jNr/eiHdpWOza0Wh0nLG9jkK3NdcPi1JBIky
cbik8JcVvIGnwtQX2Ixf1srDWg7bBT/pkrU970OZLdYELIrNTLZDmVpnZ6gd
s9yO9XNdjNk8WlvntqhbghV0WSHccyWHDq4Vcbk+U1aP4+vAdZi8xfHb329V
A56vNAoRDD2MVl2lDgMFObYJVBRx90zBDqXSnop8vWnhwM3Sx+9XtAkyYpWk
Y5auY8jyQcTRVJscELLIqBRu7Xve9hPERHZbEbdbwGB48tHmkDWVbL/sSWH1
Z9thcYHtMx9N704LEnyL8ucN4GULcgK0YgQOUxSr2HAh+q4T6aOT7quS00ds
PdW88cnmUgXcXkxDEWBif0C3Kg+B2U+Alhe7xcS90XBBEMRqdPKYoMD8CcEb
TEiQrA9KkxMUUPx0UPUuOw4pm4ctoL53ZQHVLcK9TGoRHHdXqQOadoAtBHlR
QlwwluIrBz3jgybNc7csz6m2ESWCSOEqDopArj0o0YTMD2NMg/78hTsw0sxJ
XKcn4dZNJ6tUCNAutgutYKBiZXqYCnEIsvtIe9vvdonerhZQWJBFenuc1AM1
L82bWrhmyEXIcKzxYPI8BRKUKACXeHIiiavUV+4hstWCEWsbTHNxk+pHxN10
vduedi9WCqfOknhMKKHWaHdJYwzzCr4cC08sEwAh+zDGlXZme6GcpOcISnlT
5SAyh5ZbZIazJ6PZ+3LShD9KZJLiAsAt6whRw6fWOr8XUsG+zAGLuNcl97iL
6bh3t8lIom6bM/DPl9oVB6LVpashAj/kPjvsfSntC46Gps7kpHR0Wmw0mmRQ
AD8esiEGJrvDIZUqmSs+OoZFftPmpNHvuy74Wn9x9nzkoGgctzSnGoeTbtKo
pcTLjNYF2wdn8cgVEzmxw2A0r4ExuNwc+MuMma7IyWDsl+flpbTTw2Th7FAA
Tri0lHnPFk+xl2TrGAf63rlKyVXvY76HPwbUdiyzhmb0rIIab0eFPqxTOmyw
SUO/qVCQb8ekfNZHeSauWEkDs+6mjnOdX5x398owP9BK3/kNzJVhExguw9bi
nQOSwgDNZMcZep7RsKkXHWcfco00Th5ewsEsbjGPuomvkslzhjY+/qTFeVWK
tUApF0L2NbJ/oSkaK3ko7N2dz1Rx1bN2qIBzgyeF93DGnYiX8tj9C62ilIor
SFWU6JsfkDDar7BDWJkaFej4cQ4ywqwE3tRXxjMOD/1ivIjzAQDh7pLY/wHE
cnT+ZW5kc3RyZWFtCmVuZG9iago4MyAwIG9iaiA8PAovVHlwZSAvUGFnZQov
Q29udGVudHMgODQgMCBSCi9SZXNvdXJjZXMgODIgMCBSCi9NZWRpYUJveCBb
MCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDc4IDAgUgo+PiBlbmRvYmoK
ODIgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0Y0NCA2OCAwIFIg
L0YyNyA3IDAgUiAvRjQyIDI5IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1Rl
eHQgXQo+PiBlbmRvYmoKODkgMCBvYmogPDwKL0xlbmd0aCAyNzY2ICAgICAg
Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42pVZS4/jyA2+96/Q
UQ2sNaqHXnvbZHaDWSABJumcdvegttW2MLblkeTp9L8PXyWVbEk9gwZa9WAV
WSSL/IpWQQx/KlCxjvLcBpnJozgugu3pIQ72MPWPu6+SJSbPo8QaaHvEbnJj
kiLSWQ6NNMpTNUujjI6ULYJNFito5Ej0t6eHD78ZHSgVFUkSPL0EyuqosEng
iJ52f4Qqevzr6feHX5+GzVSioxj28ra65yc07/BLsqiI9YTf06F63OgsDbvq
vKvasd1xs8RPEp4q6KuwKx9VuJcVPbSbsek2OjzqLLw+87oXXNXArOy8q471
t0edhxVOtDDxdrcZkp+rsS1LT9SuUD1w6I2ykbUpnaGttvWlrs7IuO/uFSjG
SDMd6SRdN5hHtGwwR4TM9aLBVvk5g63zE4P5/MhgVsejnrHzQsp5xaGyRdvh
oLOKCk8woIqwb7yJppON2urrter6aue6vjZ57PVQb7F/4G65ZInu+txtnWVr
9AGw9G7RINZEJrXvGGQkWjGIEKEMZtkga/wGg6zycwbx+P0LlGp0Cgq5HN+4
+dI2J271qH+eJb2MmgUFdTiVhbV8q/9d0NPDaku2wFVNy1+eaLqufj6y3jc6
ibLEgOBFZHUmkuCu9Z+xssQMzdTXzZn21+G2PGPDhM/Mhjudk4do+oa/JX/2
3mU985C4B4/AXM/byEWl7dH4TbnblnxGdb+5Co9HJqbtNjOu5N3nTQZ8xO+T
8NzQseiUJRzvkUSz2oaXskcFDKFFhv0YhP2SP1193h8rbk98nofqTr7H47Xr
25J23rEI9XkicEIC/1bvry2xv3W/tIhiMFVSJOBiC/FAaDYe0Yz73exE8eeO
XWbBR9N1dkLzDrubnZDd/eWS/JpkeZRlZo6dgnwK4WeaT+9lEqpNCt+CRAq+
BnGUEIH7wujXYY0MfPh0MsHH5uHzQ/B5ZKoykAe202CieD5tah1HaQpat3kC
ubyYV4OjckRTY9PV1T/fqkVnKsqzJPB2Xjy5o31HjJsd1268RA3q9lV7vpXO
ZCZKAQHMSOdJFUcZxLiNjoxOZklgMfqsTqN4YZMii2IDXwuB02bJcDI78TNx
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
LD3A2NaU9L50PE/Hz9RSOtvPxUsTWWN+xLmKxL2unHzl4EdNLTi665u2do9+
RK6cqWFvDoHTuhYebbBhPyD2PDIIUDz1XNkO9ZHT7+Aext7G506GCeK3YnSi
WPxBTCEWLYp5xAXiR2m2UHt2UApuPv60O/8zRAEPudgEQkNQKr0VxQIRzo4b
OWb/BzhpRnZlbmRzdHJlYW0KZW5kb2JqCjg4IDAgb2JqIDw8Ci9UeXBlIC9Q
YWdlCi9Db250ZW50cyA4OSAwIFIKL1Jlc291cmNlcyA4NyAwIFIKL01lZGlh
Qm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgNzggMCBSCj4+IGVu
ZG9iago4NSAwIG9iaiA8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9y
bQovRm9ybVR5cGUgMQovUFRFWC5GaWxlTmFtZSAoLi9zYW1wLW5vdGlmaWNh
dGlvbi5wZGYpCi9QVEVYLlBhZ2VOdW1iZXIgMQovUFRFWC5JbmZvRGljdCA5
OSAwIFIgCi9NYXRyaXggWzEgMCAwIDEgMCAwXQovQkJveCBbMCAwIDgzNyAx
MzVdCi9SZXNvdXJjZXMgPDwKL1Byb2NTZXQgWyAvUERGIF0KL0V4dEdTdGF0
ZSA8PAovUjcgMTAwIDAgUgo+Pj4+Ci9MZW5ndGggMTAxIDAgUgovRmlsdGVy
IC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJzdXTmSbbtS9WsUZWMc1DcjwAZM
AusSH4wqAzCYPmutTDWn4Q2A+PHjPmVtSalU9krp/Od3eMTvwP/5v39+v/7+
n/r3v//317981/ZoM33/K8D/9hXnY5SUvv/ni5/F73/6h68eWnyM/h1DTo/R
vn+/Rq79MdKG/Hz98/4qj/AYc1xfLcj91RnrFcKvXsf/6xnfx7pn/L/H+oTX
wf6vxvrrNcZv0vi//v2rlJQfvX63Hh+zd3y+IDm0R87tu8TU8R/f8zFTHOM7
d0za5m7/+cp5tkeo54sw56OVPcJqrznQwyFYcH80oOYjxJzLI5Q9x2r/+VpY
LMjCco3wuo4/X38TdwRyx//fRf4H9/IxXRz+f6/TthM8mys/a98dDB1TxDJz
xRQxb8jPgQTMhKEAaaU/Zv0EOb04Y0kfIC0UQO5eHyBjPFpI1+wfIKeXr+Id
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
nmM8dCUONJiL8MJvno3xFVyb6au8NpOZT+qixQBKfY7DICwa46nrYaHR5hOT
8aIclZHz4Gpey3LIYmMfYLO5T3EJgiOxRcWRXJL0sle6bqlw337ZLOht18Qi
2J435OmC/fpj04+W8GtWg8V2fb0+0eVB+y2ov3v9xdP9O6frVxljKHru9fcr
8nkK/XaoQTj9/u3GYT/qdL5akPurM9YrRL8U+jL+X8/4PtY94/891ie8DvZ/
NdZfr/Efv/4X57P/6WVuZHN0cmVhbQplbmRvYmoKOTkgMCBvYmoKPDwKL1By
b2R1Y2VyIChHUEwgR2hvc3RzY3JpcHQgU1ZOIFBSRS1SRUxFQVNFIDguNjEp
Ci9DcmVhdGlvbkRhdGUgKEQ6MjAwODA0MzAwNzM0NDFaKQovTW9kRGF0ZSAo
RDoyMDA4MDQzMDA3MzQ0MVopCj4+CmVuZG9iagoxMDAgMCBvYmoKPDwKL1R5
cGUgL0V4dEdTdGF0ZQovT1BNIDEKPj4KZW5kb2JqCjEwMSAwIG9iagoxMDQy
OQplbmRvYmoKODcgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0Y0
MiAyOSAwIFIgL0Y0MyAzNSAwIFIgL0YxNiA5MiAwIFIgL0Y3IDk1IDAgUiAv
RjM1IDE2IDAgUiAvRjQ1IDk4IDAgUiA+PgovWE9iamVjdCA8PCAvSW0zIDg1
IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTA1
IDAgb2JqIDw8Ci9MZW5ndGggMTk3NSAgICAgIAovRmlsdGVyIC9GbGF0ZURl
Y29kZQo+PgpzdHJlYW0KeNqtWUuP2zYQvu+v0FEGIkYUSYnqrW2aIgWKoune
ih5kW2sLlR/VI9v8+86DtCRL8rZAESCmyI8z5PDjzHBWBjH8k4GME2GtDjJl
RRznwe70FAcHGPpx9ivdFGWtMFpBewT2g5HOpdBJFkQjid89P73/qJJASpEb
Ezy/BFIlQuo8yGIJvzZ43v8ebjdRkoXlJlIyDdtNJMPyvIGeDntM2F14pOCf
w0aG1RccBxT1NOWuulajOWl4aXjutrkUgN/vitaNDNJkWNcTAagZhNiwa8Um
0ioJPzkN3dGtri66rmw2fzz/BJuOpBZap7QHUFC+A0wSe7AN2/K8J6G0mIy3
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
TWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCA3OCAwIFIK
Pj4gZW5kb2JqCjg2IDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBl
IC9Gb3JtCi9Gb3JtVHlwZSAxCi9QVEVYLkZpbGVOYW1lICguL3NhbXAtYXN5
bmNocm9ub3VzLnBkZikKL1BURVguUGFnZU51bWJlciAxCi9QVEVYLkluZm9E
aWN0IDEwNiAwIFIgCi9NYXRyaXggWzEgMCAwIDEgMCAwXQovQkJveCBbMCAw
IDk0MCAxNThdCi9SZXNvdXJjZXMgPDwKL1Byb2NTZXQgWyAvUERGIF0KL0V4
dEdTdGF0ZSA8PAovUjcgMTA3IDAgUgo+Pj4+Ci9MZW5ndGggMTA4IDAgUgov
RmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJzcvT26JLuuHejXKLYt
Y3fwnxyB/CdTn6xSP8moMlpt9PQbay2AZGbuewZwzzFqE8mIIEES/wD/n6/n
O309+N///f331//1H+Prf/2/v/L8LrV//X+/7IfvXnud1X7/j//6q7exvvP6
ar1+jzG+/m5InfM7p/bVWxrfOX/V3L9TnV+9VntF3+3fv3qxh591epQnfz/5
vMHb8Q08IUivycb1FS8YT/muT9+fiLY94IPYPXyQ8YK3Wfz+9b9//bdf+Xtq
0sTJv/1s/9US5/6079K+Us3pu1Wb9IaUWr/X+MqtFrww5Zm/V/rKtffvkXf7
969clm2qfnoU+5zNYb8h2v4NPBGQNb/xgL+gdf67P+FteyAGET32sPWCt1n8
qyX+d57tf7cl/+4rf/0Pm+v//JXW96y2TTT7hNnPpxjQHmvPd5k2+VXm+n7G
hvyx13in0b7beukUkKvTedMbAH3eX/6Pn/t40/21f/2mH8Z0Bv4Pb/rn2a3v
ldPkoPJ3bdYr5cdOU9qQu9dKts3WvHoF5Od3vUPQ6/39//zFz3fdX/zX7/pp
XGf0//Suf56jfcu22P/5X79aqv27AZnNaBa6BwRb/snD6GDjjl7lu6dSvqoR
ou+Wd/v3r5rS/MYwHFJmtmn0/YZoxzd+/wpISnYcSvqKN6RqhHKcb0TbvuGj
CEiMMt7wPo/fv/7z0JB/30mCiqTv5WTj33ueWk7bs8apn2/j1LOX75myTbPm
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
b2JqCjw8Ci9Qcm9kdWNlciAoR1BMIEdob3N0c2NyaXB0IFNWTiBQUkUtUkVM
RUFTRSA4LjYxKQovQ3JlYXRpb25EYXRlIChEOjIwMDgwNDMwMDczMTMyWikK
L01vZERhdGUgKEQ6MjAwODA0MzAwNzMxMzJaKQo+PgplbmRvYmoKMTA3IDAg
b2JqCjw8Ci9UeXBlIC9FeHRHU3RhdGUKL09QTSAxCj4+CmVuZG9iagoxMDgg
MCBvYmoKMjg0MzIKZW5kb2JqCjEwMiAwIG9iaiA8PAovVHlwZSAvWE9iamVj
dAovU3VidHlwZSAvRm9ybQovRm9ybVR5cGUgMQovUFRFWC5GaWxlTmFtZSAo
Li9zYW1wLXN5bmNocm9ub3VzLnBkZikKL1BURVguUGFnZU51bWJlciAxCi9Q
VEVYLkluZm9EaWN0IDEwOSAwIFIgCi9NYXRyaXggWzEgMCAwIDEgMCAwXQov
QkJveCBbMCAwIDkyOCAxNTFdCi9SZXNvdXJjZXMgPDwKL1Byb2NTZXQgWyAv
UERGIF0KL0V4dEdTdGF0ZSA8PAovUjcgMTEwIDAgUgo+Pj4+Ci9MZW5ndGgg
MTExIDAgUgovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJzdfb2W
JDFvXb5PMbGDcfGffALHlkIdR2tLDnYDy4Ff37j3AiS7e86nXGeDHaJZVSQI
gvjn//l6vtPXg3/+/++/v/7rP42vf/u/v/7lq/XvvvLX/zDw//yV1vesOX/9
v1/olr7+6b/9Givl79y+Ul35u46vv79W7um75Q358+ufT680vvucdy+HvPTa
73qHoNf7+/+DL36+6/riP3jXT+Pao/+H7/qHc1zfKyf7O9X5fBd8MeWnfo+0
IS+9DOOj57uXQ35+1zsEvd7f/x988fNd1xf/wbt+Gtce/T981z+co7WM1P79
3361x6BP/hqtfeeK7gEpc313+7+OnL/71yrfaY72VYvR7jrt37/KWum75A0p
fdXvtZ/3ZnzA+guQbFzfNvh4PFVbz7Lf783fv/z73o7RxdPv4//961+5ix7s
ov98k/vfWLvv5eziP+f8tHxGmzWV/L3K1+zlu6xk06vJ3l/WhvzZkLGe714b
ILmWb0PPJ+R6Kncw4B8gfY4N0VOfkDHS9xwvX/+AXE/5LD4h5+v/+quW1L/H
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
bojb25hKRQud7HEDct0zLovdSJ6e4za9ASmOsTAieGbFvXithxSQq8dUscf9
hqUyttc3lir+71E4Ye1RevtaIYe47XO/wW2j+xvbdBqjCONqjDI2ZczjSEkx
06vHc0cRbFxd33Bs7lE4tvcoX9dD+VNdVuLwRY7su/xsRcy1bR8Z8w2gIcuF
Zs0VvEQ+tlEgBPfthbM2M/LCS7fb2423Ie7n0xvmdgPyG+3yE3IM9K9JQOcY
R96expjE8U7GPI93kokydCTLozlw6caTt8Nz4NIN+N23S5RvXX07Te2ruIMl
fKrRPNNygJyy8XT4bOP9x6sbIwi/b4ww/MJva4XlM95HrQFGZ5h3/KrIJghC
w14iatW9f+Ea9cUqWQkvMwzyiqGB7uxj4hQu4oCow5DaDF//onUXSY+8XEih
XIkhqvZKkCuVjMpbA/LKnC6svIpp/edf//3X/wdSPdVaZW5kc3RyZWFtCmVu
ZG9iagoxMDkgMCBvYmoKPDwKL1Byb2R1Y2VyIChHUEwgR2hvc3RzY3JpcHQg
U1ZOIFBSRS1SRUxFQVNFIDguNjEpCi9DcmVhdGlvbkRhdGUgKEQ6MjAwODA0
MzAwNzQxMjJaKQovTW9kRGF0ZSAoRDoyMDA4MDQzMDA3NDEyMlopCj4+CmVu
ZG9iagoxMTAgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovT1BNIDEKPj4K
ZW5kb2JqCjExMSAwIG9iagoxOTY1OQplbmRvYmoKMTAzIDAgb2JqIDw8Ci9G
b250IDw8IC9GMzIgMTkgMCBSIC9GNDIgMjkgMCBSIC9GNDMgMzUgMCBSIC9G
MjcgNyAwIFIgPj4KL1hPYmplY3QgPDwgL0ltNCA4NiAwIFIgL0ltNSAxMDIg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxMTQg
MCBvYmogPDwKL0xlbmd0aCAyMTk2ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCj4+CnN0cmVhbQp42q1ZW6/jthF+31/ht8hArIi6C0EQIEU3QIotgqzf
kjzIEs+xGltyJTkHG/THd26UqIvl7qI4wOGQHHIo8ptvhrTaefCndsrz3TQN
d0mQup6X7YrrO2/3Cl0/LkolQ4I0daMwANlSNp2HMFNu6Ce7gzXjD8d337wP
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
niePWShcKqJ5LzXPZigOWAC5KrtFfwPDEVpeMrzqER6ha0RYhw95fiaP+9iF
j4jtV52Zdx1jRF01Pf7Jk3XNyd29NHGrfAgbFcVw58u2YWMpPYaNUXoGm02L
BjZzi6uwsS1+MWw+QpzHX5eIr05bsFmm9sKL+nnCFi0w5ZuEHgXGFErIYD7l
36DHmPIpBe+m/TndFCFnF2Rh23C5ZEcQjGGPhTFueKPEMZU4Kav4jNQgkmeu
aLxkzhLCNeaDS3Ycmd8Hx5iysm+B5ybxQHn8085wmx29wifmtX6nieeOAE6g
y6+5qq2fb6DzhT+g6h/5RhbQT6ebrjHqrDxvZMoNvMDMg9+iFj8Xmh9ol8b+
C72GD4FlbmRzdHJlYW0KZW5kb2JqCjExMyAwIG9iaiA8PAovVHlwZSAvUGFn
ZQovQ29udGVudHMgMTE0IDAgUgovUmVzb3VyY2VzIDExMiAwIFIKL01lZGlh
Qm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgNzggMCBSCj4+IGVu
ZG9iagoxMTIgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0Y0NCA2
OCAwIFIgL0YyMSA3NCAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0K
Pj4gZW5kb2JqCjExNyAwIG9iaiA8PAovTGVuZ3RoIDIwMDUgICAgICAKL0Zp
bHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjatZlJr9s2EIDv+RVGTzLw
pIoUtaHoIQW6pEDaIH1AD20PskzbamXLleSk7993Nq2W7TRAEcSiyOHMiPw4
HPKplQ//1Er52ksSs4qDxPP9dJUfX/mrPTR9f/VU0iVIEi80AZRHwl2ja1Ll
GR2v3JHGb55fffldoFdKeWkYrp53KxVoT5l0FfsKnsnqefubUzRrN9Cx01w2
TV4Xm7ULL3brrf94/vHVt8+9ic7lKNaeDqNFLzoZdyREXmg19kL7XqDSXhN6
8buv4iuLOvJ0Gt23KDJXFo1Z+O6xxaZdK6cu4Oe0X7uhMk5ewkthT/Dbuljc
cv3X/NhbbPjhAr+bN/Cz/d0Pffiv0O/ZQPvgmfGMYVPvbXup0RANdeq0B8uF
vERzMN6ti8aw6uOhyLHmwK/FVgQKGCFjpwoSkIK2y0Zk28aWOy5nIpmx3GDI
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
PiBlbmRvYmoKMTE1IDAgb2JqIDw8Ci9Gb250IDw8IC9GMzIgMTkgMCBSIC9G
MjEgNzQgMCBSIC9GNDQgNjggMCBSIC9GMjcgNyAwIFIgPj4KL1Byb2NTZXQg
WyAvUERGIC9UZXh0IF0KPj4gZW5kb2JqCjEyMSAwIG9iaiA8PAovTGVuZ3Ro
IDI1ODEgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja
lVlZj+PGEX7fXyHkiQKWveyD16Nj2I4DbLDwTJ6SPHAkaoaxRMok5cX8+9TV
vERJGQwwIrurq6q7vzqpNxH86Y2OjMoyt0ltpqIo3+xOn6LNK0z9cvWrZYnN
MhU7C88TYj8ZulwrZ9JNOOH41+dPX362ZqO1yuN483wYxUZaaZdtnvf/Ck7F
1mTB+zY0eRq8wE8alPzSln9cqrbc89uh2eqg5ecCf5Jgtw11cKzKeguLeh7r
G/6t6gPO0qITr+rh+U14v+GSy4u8NKjCd36pev69rdeuEYE6KHZ9uf+8DW1k
QSkd1Pvtf57/DkcSaqecS2iHPQvrtqGLBla75lTywK44HnHty7FEjdU2TNIk
+HG+Nx3I8u84/lbtcPiNh3BxK8zqpscHORucAebEeUl5qcdxPDRc1Ja0rKz+
xL2XK3s5lV3nOb+W8GhBD7kZaxLapcaDwpf+rWQCpO7ea1a6RfK6ucjiHSv5
pS27Mx1NU3ey7IxTfV+2tSJVdKriOJ/p87UkgR3rg+tzfxH03G5JG6CYMjdp
FhTtK8xdTnLC3bi2FT5lvWto0Z4wiGs61OPLz85NQG0cID6GcxI06+DMVDPo
G61SQD5TNQCC2AX/5eOW2yXxHQva87Z2bSVwYVyFJkuVze3sCKoaYamDp3LX
V3S2SPvpp+fBOnWcqCRON4mzyiZu1YA9TTghWjHgBSeUb1V2JTDVKtHxfYFC
80DgghMKBAtxxgbPbMtw3ADbyuPO5BGcnj/Wojp2TIQHc+BHNPeUzT1CjE6X
NgyTsi3kLGX5qTgLwWCQjcyU/Rs+JoHcUZKp1OrZFdXFiWwlM0GByMSHrnqt
C+RzaXnOBpXQfEOFELnNvyPtjmXIGxLV6r1AFj1FJOeAy0DHc1W/8ot3l8jX
Oz58furZPArkP/dWMen6rRWpbMOVmCkaC7oFVEBmap7pCHdXoDM2Vjo3mwR5
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
OCFaSX8XnG5l21C2JdbeFyg0DwQuON39GgEFNX6Dv5sWjjQrYSzXkMBazwdl
mavcwH/pvxb2P9oqp4xlbmRzdHJlYW0KZW5kb2JqCjEyMCAwIG9iaiA8PAov
VHlwZSAvUGFnZQovQ29udGVudHMgMTIxIDAgUgovUmVzb3VyY2VzIDExOSAw
IFIKL01lZGlhQm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgMTE4
IDAgUgo+PiBlbmRvYmoKMTE5IDAgb2JqIDw8Ci9Gb250IDw8IC9GMzIgMTkg
MCBSIC9GNDQgNjggMCBSIC9GMjEgNzQgMCBSIC9GMjcgNyAwIFIgPj4KL1By
b2NTZXQgWyAvUERGIC9UZXh0IF0KPj4gZW5kb2JqCjEyNCAwIG9iaiA8PAov
TGVuZ3RoIDI3NzEgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3Ry
ZWFtCnjatVndb+O4EX/PX+H2pTKwZkWR+roeCmy37V0Pt226ycMCu/sg20ws
rCxnJTm5/PedL31Zst3DtQgQk9RwhhzO/Dgz1Asf/vRC+4FKEruITaJ8P11s
9jf+4hE+/TD51TLFJIkKrYH2gLj9uDKxr1JguDKRSiJNNAq+KaMT+B/pYFHB
lJOhDwMOOvCVBf6r2NdK2wRZ/OX+5o9/D+KFjlWgw8X9w6Klaonut588u1xp
7fveXZOV0PS22dJor9ouYTGxd1sdPvvaFm755f6nm7/ddxI7HfTyJttqaSaL
MsFCa5WGvCihimILmze0qDu3afJDORFqQxXbtCOdFSo0qwHRjNATTig0mIgL
tYr84LI4obkiLoyVSZORuK1DzZauXq5sEnrNznFjcyg37qmR4azcYsN6h6fl
Kog9V2WgmaX2SiE41o6Ojanykkfv3r6/5dYeBWivzmDOY14+KtzlYhVaFWqL
6gKLiGhBb5FjYD33y1OR5aXbcpdYwi+fCUo+1VNgtEpATRFYl45n1SQkqwHN
VEsnfOhMVDSRZiMVx8llcUJzRd4JJxT4BjZrk27Thwo2vCUNVzhivObAv/n+
qaDxvSuXcDCNfN7losYMp27w0y5v3AZJGxg5Vo6/14e947PQ1qgkHR8GWkHl
GqA1QSRsDvkGD9NAG09zDQaReHgix4bJdgeke+EOLhR/87JG1wbSJs9ahmBt
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
ArZs3rSaUb1qLVWhDUIvVjboLrK2uwywvkcpC9dxrAH98xVgW8fC1mdt7Nx9
ncJpp6IAetrZP8E/tcMkda3moqRQmaiNQH6PT0NxV1g6LweMyrd2KmeDISQo
AvTQzEmLIZwNTCeNtGQQJIOxnio3qhU18nZQ9EXhOe/E1zQd2sveOSA6750t
ET81nfPOi/Ja77wsT7xzKO9stB7GWjRXOXq0o6wGmxV6Jb2PhHpG6xG6fhvm
dc+FnZEF+MqI3a9LKU0ESdQ67IyN+Vr5XdA6OPwal7Kp2Flnzh6mJYFMe16G
ISQcWCVB8ZXLttySqrA8fHLIHUEc6OtR3XH2rQHSV8InfvmUgbv+iW3m5Tgg
S4bQETL18Yv94ImSSFYDmrknyhEfDjjN3BNlCjn3RXFCc0XeCaf+ksc9Yz0D
8gqpxHITz6UvY72BUZNyrIgzsI5VlbVM5ymle5k7/kSr0G+Pnx5DcsoeyRJX
X/H4X+cSU/AGZcLxbQ9oyJVUuNkf+WbGmIJDYScRwLqrJQsQGyqlcsirz8NB
aqgSdRENepoZHacQnvim5UNYoM/VxKbC/gNMg+zrZW5kc3RyZWFtCmVuZG9i
agoxMjMgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDEyNCAwIFIK
L1Jlc291cmNlcyAxMjIgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yNzYgODQx
Ljg5XQovUGFyZW50IDExOCAwIFIKPj4gZW5kb2JqCjEyMiAwIG9iaiA8PAov
Rm9udCA8PCAvRjI3IDcgMCBSIC9GMzIgMTkgMCBSIC9GNDQgNjggMCBSIC9G
MjEgNzQgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9i
agoxMjcgMCBvYmogPDwKL0xlbmd0aCAyNjE5ICAgICAgCi9GaWx0ZXIgL0Zs
YXRlRGVjb2RlCj4+CnN0cmVhbQp42pUZa4/ctvG7f8XCLRAdYCmiKOphOAc4
Tty0cHqBfUUD1P2gk7i3gvXYSFo7B/THdx6kXqtdwzicRJHDmeG8hyt2PvyJ
nfADL0nCXSwTz/fTXV4/83ePsPS3s7cwW2SSeCqUMJ4B20XXrroy8pJIbMJY
om7sC0+ECQL9eP/s+7cy2AnhpUrt7vcwij2Rip0Fui/+40jv5r/3/3j28/2I
TASRF6TRbobqnJ6BOaMHfM7oyQAW0wW91zeBcqobV/nwBMorFgPfUz5KAmHb
4UY4B33jCqe7caVKncNNEDsnmH2A78h3Mhg2BY/zqtQNrg8MW+vh0N64MFH0
DIHosk83QeJoMwHIiYcwXPAgvVBFholjB7vKz7h10PB0P8FDP23wHsMoSsy2
rGcugERpmP/oi7DrB9y5c4NUeWkQgyhDLwwj3oOkHk+1Oca5ZoyWozjwAmDw
qiXMgC5bggVC6uFFS7hKz1rCdXrGEub0XoNUZOQ0+gsPZvp6saGVJIBRbKTb
oyaG3+FRVyi0Yw6PN1kFz+oBVZWjlj76yod/saErAYaWjoZW9sxCVhS64OHQ
4luRidAEm94Df7z+7e8ej+4PsJk1CmaTRAuFls2+7WqyBGkwwWDCBB/tfrX6
+69o7+/c97+94QndFEcSS1tO5g0b0fRxGDpfDmWOK4cVKvQIRNagyZttdFTY
U5W9S3z7C44H3ZTNI5ITzh73IpkOvwMnz6qq5+G+w/maP4geDszBQDKhiEEy
ZnrNBs6VBlHTmomcztMjXFmgh7HXm0HBQG/Q36sqe6gMaiORslocRbHw8cQB
KI5cEQYM/BkfSOwTDkjdsDYcSDAwMzPDyw6IZGL5FQecgK44oAFChtVlB7xG
b3TAq/SsA87ovW7WATY23qjir3mjEBENR/8RzuuKAqW+7ngq9SKZzv0OiFm/
gyH5Hb7ZiOO5t8Tgd8gr+Z6K2fdglDh1hrb1xI4o4shTabiw6wc6CqJMIjJk
opcoWID5Jx53+rHsB93Ztbbj96lZr2THY1XmGYqvbNFqES2eGmOP+cwYtGfn
1XkJ4YlmcjwDWnKvtzxwMyeJ1JOR+vaU5HtxbKW9Si/AFqRAKzn6GKWEH+Th
5TDoAlX5Apekk2G2xdU84/hztu1EPqwNGEqo5WGhQYAcc9zUB2tcaqguG1SP
UBDOyCKXtilCYxIAMJkEfJAJiGiKFUbgbVOUyOIjg5FdwXsE+wMGJ94w9Biy
JJhwY60BIBuKSC6dputMHCQUejh1zYbqSiAJRqF7G1OywY60iUUj5xiPTMTp
Tg0FXeF4xoCFF/vg0UHgyYCD2f12pRJ6Sslvt4rA86PQptKho4gvI+BE7+Go
ZOSRcUV4Z6zfFg2FoqfmeVZ095kKKiqxMLzD+hcOsQR0PFF+BgwJWVTPIgeB
K/DbtyUWRARYDvbwoQcevBRsYWy2xBoKaYUiYanigBxqVv1h9oFgD2+qGBOQ
+Pf5Yh32tHVNS005+uOAvgycxcJ3PrS1wd6fbHLFL2BlymXMTmdW+g2T6PQf
pxIkiu6TgsjKhqihr6Q+5HqT54NUsEdxhoWvQzYXNwI3Lb/b4TDlR5oheY9+
jCB7fk9y2z9xWk/90a+QSg/Fhe6+2+J82jsw5gTtEwp+6XzQOXjXC/SZhNJs
CP537DRbAu/qedYESiNcnrMOap6CCuPm0eCbiQiBLbdMAsxbKbJvmrC1vMCD
hxwMzguBRrMY0X2BQGc+M84BMrVBCofIDthVx1/INx1gYSHAqAwDp28ZH7g5
rpj9FMRg1maI0tZpsJhnDQUVA2vE0OuJ2JYismbGFJcxXKjghk/su0FkqzMK
N+122OHwApWHUumCxD1HVgzeJ8pSYmab+LFHWqdq4K9as0dkTdnXPEWxzE9n
0R9nrWBhuBGeeQcxC29bnaF+q9IgyLmk721iP+OcazsFyYUI511pklHB82Vz
VlNBIxGBZYRSekF4oaYyMO4MaKOmWmHidloAw8GaKLeU14lamOtE15iQKGUv
ZbQI6p5UBxLYW9sF9bGjr0uLIJ6VZK/2mECwxa6GD2h3lFUoO91upJIEex7b
KutK18uGA+iTXg4tMVCwHqWABLQK8RBRODoDdbLwKKUKCnLKqYe6oYAomtuy
wPYEuFqz5ns84qO2G9GVeHg8Uu6G2JGZrTTNtwapjS8buRVrlCDaEMsbtGrq
UW4vJNex5DLmfNLm4BG0v75aHHxsTxrjtceso7oyP1WZcfm+fGwo10AEyfVG
m+ADOrmTUO755sbGgyVPigSekQh2HRjbaur9oolgDO4MBdleEO+AV4m87s/o
8K2BBPEL33feWWd3TPMtwspUCkbasfML1T4w+Kns8/az7p4utVgA5AUqvd5i
zYA23NNiCmN4B8Qt0Q+gOC+Q/pRhO0ycCReTuHy0FS33oFMnXFNhCxC2b8Bd
+s8MqlfjJ7Sa8ULFOY6i5VwmCIJGPgOlHK6riupNhAVzwFLKQBGmyFkkorFg
9FfB3Pb4bFrKVs4wmHXZUJhoMCYLYHMYfJTmWqHhE1NCwAsHI5RultQASmfT
3UNIvsqjsbHADxTiyWxom+ppg23OnFATmmT1Ym46iqKAVYe5Witafo85Fcb9
ITOZZroufKBqUwbOPYWiabnJajNqWcnmwo4HC+WN1qwS07Wmzkchw43AIRUM
bVHuYWec1VQCn8cKCe2ZjTDPTYjApJKu2gqI76G5isIBCvk7LLDCiCNrbRYo
SA4tWHMSULEGJd6d2f2vpvwTuwKulW3lhCj6J2ht694SKfslshuurmAGog8P
bMO3Ve9CO2EKQRukwW7H+yIsXLY73BSa9tg2JX/9BcDvfoXHz1tiC70oCmzS
4bqhJArN1NwiWQi/IbkLBP+HSl+8zwli5UUqwDjCSxAuefB+K+zMwC+HHQtE
Lnn30x1z9JJfhc6pkUBx9C3etYx13N52mjD+N12HoaMXHA1Mx3gHMx887+w8
UioPSsn5ec5/TjAwXzmFCfVBJCBjxbMqEcjvyShq293SFeZUbsZT6J81uY/c
nKLZNLwy3rzMt+7bqqK4/GUUyI//fMtrmMgxCBansRDAcvzlWgpp7PkSai6Z
gCLE1g8wozAMqDuD5Z8xlgWSgAw44hvLgbLiGsBVAnzi5csfgCsVSucVXYSh
1nR/u+Ejy3U3jKS/vZtRO//j16uK7jOwte9v7dQM9iqhq1y6eHtO+WTQ9LTo
0f/u3lHpN3GizDw83t1utFtfQQz+kczZIJCagtictj00lXIYRKEE4kgHMhg2
T7uBSUa+mBF7/heYf24xI9CTi/hNkYsV5CbmS0xAza7i+WEaG+2t7p7/YCmy
2L6B6BrXQnnUWdEFT8PIKMhdRnYV/kwnK+gcc2bWrTSDIjZAmFcMSrpyu90G
QQVxft60G7pRfNrAtZbyBGg4sxaq5swZUffrJmat/Zxqn+72UnJIoeGCMvhq
ITrBbHRsKYQPX1o8eNTgrEEMAQhXz4n9Hwu2StZlbmRzdHJlYW0KZW5kb2Jq
CjEyNiAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgMTI3IDAgUgov
UmVzb3VyY2VzIDEyNSAwIFIKL01lZGlhQm94IFswIDAgNTk1LjI3NiA4NDEu
ODldCi9QYXJlbnQgMTE4IDAgUgo+PiBlbmRvYmoKMTI1IDAgb2JqIDw8Ci9G
b250IDw8IC9GMzIgMTkgMCBSIC9GNDMgMzUgMCBSIC9GNDQgNjggMCBSIC9G
MjcgNyAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0KPj4gZW5kb2Jq
CjEzMCAwIG9iaiA8PAovTGVuZ3RoIDI3MjggICAgICAKL0ZpbHRlciAvRmxh
dGVEZWNvZGUKPj4Kc3RyZWFtCnjajRlrb9y48bt/xSL9ogWyjEi9jeYC3yXX
3l1ySRMXaJsEhSzJXsFaaaOHfS764zsvSlqv1ikMaMnhkDOc99B65cKfXmnX
qDj2V5EXK9dNVtnuzF3dwNJfjn61bPHiWAW+B+MZsl3c+IlWvolWm9mJP16e
vfjZ91daqyQIVpfXK2208oCqq5X249Vl/tn585u1dt6/hc8P600Qhq5zfv5y
vdFAynn2RXs+rLTPYEn7zn/5x4LrZbDFnqF9vfwV2NxoX/l+yGR7WGlu4VPU
G/hmW/ikLfBg3CCa8fA5hYXNf+BzsfkXfF3ETjb/hq/6unQw4tcPuEnO5Kt5
bnxwrDD3h6Ez7SyCzzUde/bmcpSu1VYYGBX5hhXAi7crO/ptUobF38w2kDI8
M1fGo1OR+8+vXq03cewy28V640eB0xY3Q4XXanHuIxhYhfm+LboOJ2WDl+4Y
/f1vjFbW/PsjYvz+8yteLTuG9tuilfM73L2TSYOK2RIJIdcWSJvoEJn0qnpY
EHzW7PaImCFiDwI3oXO/NpGTrk3sPDCguebfgyvguCvrG17qt6Ul9+rVkSpM
FCov8VYhmLlJwkVfsDibGdKC+I0LvMNJxlNxQFe4xHt7ges0dYUM+4mzT9ue
2UH4/bbM8Epbnlol4Zj1cIMCKr+42s/SGjF7PqZv+PfTxTvE+8AzElVVFoIp
t36BCkDIcNUd0/niBm4KH81HFH+U3Ya0sdGRCoLkQCd9UWe4Dw5D1V3zsKdr
gqiRz0rWyW1yHiONK6IBBx+FkEDpOAFJj94GNohXr9mK4Jj+B954IO8oUpEJ
ZF9V1kWnhO84UB7gzBm/AEYSkE1xgwQqmYEQgTvSwO3IOyzsSFpdz7M9SqtB
0F2ZCwbeCP0Bx3RTXH7gOUqmzYtWhAqQoS6/DcWE3c2UuxNtdbx83bQ8QKEe
q4Ht6rqpgHfwgvvJyiH2AaCo6ejzUxEnCF2VJPGimY9RZoZEZm70IzP3dDKe
hPyA7KIjiiYkX3mSouAcUTy0EM9Adjmk2KEYd3sM2h2aSEYW3S+ZiQYz0WIm
F6gyLyEV7VPWCUx7dgeOID3Dur5l4XrxgZvC0sw8YHZFRiQn7cfQ1hX5dHgj
w62gbVFXwxUrWDg88LOGtbrns9tdKQEQQncJnGEe6jlIq5OqRrG50XdUPSE9
oWpB+q6qn6I4qvoRxWVVzyjOVL0d4HulMLHuKvQyhGY4H9pqQffawDVDG1so
Ggeudv7x7u3m44efcOKy3uucJY0SLW2cxdVrm6VankNSYu3XZZaiZsumFjcV
WnM13pf91iYhCYui+dNacz1ldPAdrU1IT2hNkL6rtacojlp7RHFZazOKM61x
/LxGYVXoq+oO3Q2BHZvwouZiFetwrjk/9p07inFth1IHgEf5H397xvBmCZFm
PaehtM0Z8KFFihLrRW9Maa63crevChuYyY91AH4uIV77ok4ASl5lKCYFLPw0
XtJ9xsC5BeEOWw7h+G5N3s3XQUBedFlbSkRZpIvlFmFK7ho2C6WTZR0zkCRF
kygTYk5MFNTSfEuwcT+MnJ0tqHDS7MWq06oiUAgOwXXFgMmPcNaUnlqeXVVp
ffsc3cOge0jpRykxdoREI7hTdDxMfrxKSZxO8pyroV+4WI+kb0lqmOjQoURY
N2Vdj8mQqu/jUiMJVDJWGjMDXbA/z1WRtT5QpO8Fk5io7uSCDkZT+DfH9yNB
5IyYdvybc4F6qGeAY/1sKxg3UfowlLALgDYWixZc6LYonKHKeVo36GE7q8aA
GI0dQc64CCfjxjlHKhxNKadDu+xkfcqAOKUiqqKa6P5ksSgyiiK0NC55o9jh
uqW2DQEu2wwJQ2Art3sUWAL0WJeIyXYP4H1LB2AlJgem+BOK0ZECBmxEmBbX
qDDsimxogQ/xJSRQC/VtKlkfJsTz3O44miFVkjr0R0QHaYceXB7rOHJpBNjA
AIMu3RWMs2e5t+gZpRgHyRUXySjm+2xlQBMmG3JdT60ZQjHMbKUQJ6SiG3Yn
mqh2GN0Cy9AcndYzZopCMO6s4HYCGDqL9strKWJhN9+1qng2M3vjAHEZceGi
sU4ZrztWV60cJFnR2Kw4tifPceZh75YVC5cRg/JcZ+opBXDPjMFoVo5pyxju
aPj3qJjHNS61H2e1RCvjL4SL7xec4VhwtsW3oWy5FHSluIfBY/G0B9UcROsQ
Mn30KABw1cnWblUZkaPvbFMD06xss2E3npyCKMV12GkZS9rQkiyr3I8tTC/n
s3OE1rkgq36Q4xvC40TMStWTBfVTQn/czaf1Qrxk2y1y21JyaMhtZBdnxfpp
tNfIuhZAByJctM8lwtb5WG21xXVju1zYUzdSQLOoyqxshk4CPyT/SCURhf3Q
U36kV76CKp34NgsahkYZMok22GqqSHr9i/rRS0SKRQTDlhtNmOwoTWxtYz9j
/XAnNHc8LW9F8Nx3l91Rp5dEyvU0JLBAmdgsPQSO1Z2gbma4J5/4LA5e9U/8
HvfpAnhHu8BJhYrPbrnKY7kj+L7Fx5eeQkDNIOPiC1mMz24mwWc1F5/MLrFo
is7h4wf4dfWCEQnhj+iA4FfoODjMERw49PiHD3UslEd7TzjwSyTrIVlkwPfx
AjmiplcxAojZFNeKDDleSA7/d4OinZdbkgZCz/FZ5kWKjxw5xSR66iDSCt8/
enqkUVd4SokARY9hCincooRiF3nTL4gYGjUTe/rq363FUR5auaeF/wtyfN3w
pKPUPSnBd64e+JclwWMKe4Qu96TJnm52R63sZDDyOEi8nC++CuJdUKIPDeq6
yXFY011QuAMKrMzxGhkq0E3QxgK8sV5yZVfFSXRQFvOjnTyF4YMXxRgG2YLC
t708DEZ/hvG7i3WsnX/yZIp0iJ5OlavdF7iFuqECVPAl3sEY464fz9oLgOVF
VuaczGF2vy2oBj/5VIcJD5jpiHLb84wSEPzW9CwryT02YwkWY/+bY29b8Ayq
I9ma8s/EUswZDLejAXGlAXcJoU/+K8fyNQtA28aNsct+vls7H9/89P7dUh/z
7s3vr9+8xoZHKgstxtIXu31/CJfERDkvs2tjr2XmnZpxbMWnbQ0CA8rId6OG
ADK+E+Dk7x9h/S2P56o75nqetzKov1Flx+VF4CmI4VImkINfVMRBwYpxp/fS
A4sNAuWFseyz1Vk4vhjlRY+1e13YB3MsntlSCGAfkspu6liyfuA2gZJoVbKy
Tj5RaN9Tobf4oueujAoSjUvfzj5/dVc5oPx65ioviVf3MHahr0lWuzMN1/B1
IPPq7NPZ3xbeObQfKmOm/z1FqxAStU9pSYeQluKV9qB9lxRsjp84wL11BEiQ
vKInc6FF3Uy4/MQfrBKVhB6nQrh4YE9Diu+vsbj3wfiGsQ4qGAQif+DRjqsj
bh4RMAYGEwfzoofXJrx+u9YWjUusncyGkVjLqFT6mNhjaF9KqWepxZYr5qWa
Sj/0+wGbbpMA6sB+gSRKKuSED/kPCsKzsc3iy3K9iu0yvqGImYJo8CGG/zHh
eRDV963tAjr7OpBwten5EI0YLcVgnpfEPr5AMJQ3ZCRh7OC4CcdTy+72tJVC
SI/MCSuFAlt5rn76lS3x6D+gi//sMdAceK63EhyyPu8xK/Z/qNNBltj/AJzt
HJJlbmRzdHJlYW0KZW5kb2JqCjEyOSAwIG9iaiA8PAovVHlwZSAvUGFnZQov
Q29udGVudHMgMTMwIDAgUgovUmVzb3VyY2VzIDEyOCAwIFIKL01lZGlhQm94
IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgMTE4IDAgUgo+PiBlbmRv
YmoKMTI4IDAgb2JqIDw8Ci9Gb250IDw8IC9GNDQgNjggMCBSIC9GMzIgMTkg
MCBSIC9GMjEgNzQgMCBSIC9GMTYgOTIgMCBSIC9GNyA5NSAwIFIgL0YzNSAx
NiAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0KPj4gZW5kb2JqCjEz
MyAwIG9iaiA8PAovTGVuZ3RoIDI1MzggICAgICAKL0ZpbHRlciAvRmxhdGVE
ZWNvZGUKPj4Kc3RyZWFtCnjavVpZk9u4EX73r9BbqCqLIQnwyptje7Ob2lm7
7EllU9k8cEhIQg1FyjxszyY/Pn0APCSKqrykXCXiaHQDje6vuzH2Nx788ze+
F7hJIjexSFzPSzf56ZW3OcDUX66+vlkiksQNpYD2hNhO7mTquzKIN7sJxz8/
vvrjDyLY+L6bhuHmcb/xA8+VwCP2fNeXyeax+KfzeFTbnQhi57iFn/4JO5FT
6DavceDrNkgc1bzwcLvd+Y760qsqVy0vy7a+0xgWHbSRHYxAixr7ejKPtGbZ
vi7LGnl/I55/2v7r8a+v3j8OJ7IaihLfFVGweGhLs5sQ0aED/+LQwk8HTnjo
3zw/vpIYRG6QRusSDc2VxLmaRQDqnUt8W2pVbUlHoyZRX1mDv/35WgOWS4Sn
jJb3Y2h2EyLaj5ztR4auCOTACffz7ytxYeB698QZmitx8+OHsZt6wUzcO9Wp
5qQrxaef2RrZyXdQgh6UQkNgY0yQTUwN1kBrYpo31SYTsPU7WhtoVpTGNOs6
W5E1qGwua1ljo6yf9nzmqp5p7DX38gtrenizTXznHwumRSO6a7lBevtWzS/h
lgKFcNP0ngZHohUVGqJ1Ha6JG5R4IW5ZixNxb/IvvW7ISGBzckIthRtGCfBH
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
KuzH0hWxoHTYhSkovRP4jfxg00B2fDH0aVZbM4fdhAVX8zFk5K7Ae9hfycEj
wGFAF77nQTkDWUOGN9neelDw8Y8viVh/UJgQLeTrlhNk94FnUm5FLhjzmyV+
rUvF+BeMzNiXITHj51b1Rb3LGfwLM4vQIWLPOXKFe8UNm+dzqfMxT8Thkz4c
TVaFXRuUbcI7MFnCmkYddAsJMqM95x3YyvhjMjOCdzkGIgnWqrg1kJ5U22YH
xR10ad1w9OMIYIZbE0Kq1lB2ZqqevuoxMQLaYbdYVsKOCeDwnBdPB77j3jKA
VNB/cli9/5Hm+vqD1HeFJywf3EogL4XZ/0pxLey/mLfc+mVuZHN0cmVhbQpl
bmRvYmoKMTMyIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxMzMg
MCBSCi9SZXNvdXJjZXMgMTMxIDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2
IDg0MS44OV0KL1BhcmVudCAxMTggMCBSCj4+IGVuZG9iagoxMzEgMCBvYmog
PDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0YyMSA3NCAwIFIgL0Y0MiAyOSAw
IFIgL0Y0NCA2OCAwIFIgL0YyNyA3IDAgUiA+PgovUHJvY1NldCBbIC9QREYg
L1RleHQgXQo+PiBlbmRvYmoKMTM2IDAgb2JqIDw8Ci9MZW5ndGggMTUzOCAg
ICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqdWG1v2zYQ
/t5fYXhfHCCiRb3YUpem6IJmQ9F0QesCA7ZhUGT5BZElV5KT+N/vnjvSlm2l
DYoCLEkdj88dn3txdM+lf7qnXU9FUdAb+5Fy3biXrl65vTl9+v3kf22O+FGk
wsCneUvYfnT8OFB+PKLJSEUj3aVwJxuPlevT/2NXKx1EkP1t8mp4HQQ9rVUc
hr3JrKc9rXwCaGQm078Hv5w5oQ4Gn7MzPUimslgWtJiVFY2rhIZmSUNZyMcZ
tsuVLPKSFun9jMZlTkOG7XDQQKQtkTT2YzBICnMNFGVz6K75cyXbj9hpFrJY
bGhxp87+nXwgOx0dqCAYMXA+U0G2mLdlHYxVLltvzE3GOj24roBn9REA03uY
CQ159o8bujTp1xBc0bBWCxo3dzSoJ2zka+hNFXaBPO/TGU2TX18EroYjV2sH
1gJNytY3RzAhNL3G2RJ3fjx27w6maAO4trY+jUC1g+RFKoq99kO/h4VNArty
dr1x9F83uA/wPt9eyVbKrw4uZCmzAGgK+0iw8OCR5OkNwg2uyWpjO/vcPP8c
eIsMgJepuZvmN+ZuGq5EEwxeAmeVQHjL7m67OmS75HEgsU6/CI304MGSyTxi
28vmAJyXXh2ZCPS7dzdMOn7mU59y8MyX7FlMKzHgEQYcuInZ9CK6rNk/D4lV
6YCr2fbAEKPvCc41DoD3EjguPyQ0M0UMA4GrY8D9c/NSO/o7tXVKlTU/ptUX
DvnKvPGK2chkZguSXV45eZRZuXfYRoKD9++MraUkg316SGDLmrmbJnta1ieu
FXpwAlsbWGwJ54HEYjK+7AisIhHW0q7AA0EvRbw/BdYV7Nwi6M755jhSAXJw
62XbCWUqIYFoBfo1wAj4vmh1rPaJlWzk5ncQX3PIpgx+f/K8g0593LTBpaut
4miAj2uTxY09retgudIwzz/MIE6HRTYjawokMM0EEpyV53LahZbaWA3+C1GZ
Uc2N5D28g+EGATo/YD2b2GL9+XOs+jEtOdmYepNYFtQMDyGQterDtw17nX0L
L83F98e1DdOSQcjZxhQ6CTuROSHtScBlVkHIaZbpnBW4uz7vYLExpyj3nEB2
SQoOgB3aQHa2IlFZFq351blQdGWfdojkYhrScFJxANQncdLfl83Csjs75tQQ
yJgBQ24mgFzdsdqTKvV9LCBMPe9EsWq2EH8mRg1GXMxdCAe+CZjYU944Poya
NaNji+rTKNmruDVCwHXYBDgdan8+XuDcknuvGcx8x+K7UOGK8WCzQWYLBHLR
EU9vYM28s4zpNru+FszMOQgvTK06Xujn7cHBwkQCN31SeixkhD/2TdHDS95n
tvAz7OG177W6WcclC8ZkiVajUczgJguKUt+PCIUOKoplXsyyR5lQk+NQl4PM
gslnPCYmV/J5SqHsjSggHaRPIrc35la2ls819u0u7Ywpzmn+cOZFSA5cxrDb
WBCPy8rM0EzzhNuBpVHIh1C+U+hZJAXlI6aRHqswPKTRI0TKTU5JwxuPwUYH
G/eyrEuqbYslugf+uryHeIaVudPMZ2VORwnwI+7GAeQEJ9Cx+A4yRIFl3VRJ
u+fDfprQA4sW6aKNensuzZfWO6e0QZr0ybniHJosILm5ew3ZV+8nu18y5oeM
F1Eo6fhFv3lass/+5rEywHL7J6H/MhHSDaV/YiabfvQPWkxQg2+HCBnldtjz
tba9pvNuzskb7notCj4klsdDjQAIMbj/QVmXrit2crMrAQ7u3nJaMwo5VJ6a
IUcd15kXaPnI07mtRUaVjuKOFHDxdq+a08eDNa8WCrxB7hFvIGLfXnYguFjZ
2r4op9yKclIQUe0p3w2+K/9p13FdtvqwfcI5yk16cDHkA6IBqe4TJ2bW0IXv
KMM/D6wleIl7OM+CI5uM1wzBNuykaOzTGMA9QTCzDUpyF2ED3ZWLteZ22rsA
Ldod/6W15MFcAY0stU745w+MvDSZoQMsjhpJrkldouFelN3TiL+u2K7c+qId
h/avGbGvAm/c+fcJK+LsZTj+DrK0F1P8ub7VAxheeHxZQEL4enrZ/8A+LC9l
bmRzdHJlYW0KZW5kb2JqCjEzNSAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29u
dGVudHMgMTM2IDAgUgovUmVzb3VyY2VzIDEzNCAwIFIKL01lZGlhQm94IFsw
IDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgMTM3IDAgUgo+PiBlbmRvYmoK
MTM0IDAgb2JqIDw8Ci9Gb250IDw8IC9GNDQgNjggMCBSIC9GMzIgMTkgMCBS
ID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNDAgMCBv
YmogPDwKL0xlbmd0aCA5NTggICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
Cj4+CnN0cmVhbQp42s1XbW+cRhD+7l+B8unuw+7twnLHWY6jNGobpW1iJfRT
FUUYsA+JAwScE//7zjMLB2dDnUZyVZ007Mu8zzxzoB1FP+1o5cogMM7GC6RS
Wyfenynnlq5+ffTUnYgXBNI3Hq1HzP2lMFstjbtxxEjjT+HZ6hfPdbSWW993
wpvBrNJSm8AJk78WX3dZvHQ3i91SePTI02ipF0ljd22J53rR0tkutWd12lRL
QYuyaNLz5efw3dnP4dGT7UYqTzvrDT03eiqwo88dqxjxssvGjF12tfTMUR88
fhuSN+EVkZWWRPVS+NosXKXs4gOd/Qa/yIzQRhqzZrk3JV0UBZE0RkAZ78+t
UJzTpmxweSLqj0QhlDIVcOG+Sol28i3W39oV6J5IPuvASMvvvLwl2u4GVVSZ
XtgNZLB1Wfji1aCa2PzFHYRrIo0N5CWRF5qIVC+Ivrqc8OAC8ilXs0yIfoTX
TcXyHLsV0q70lDmVrOg6grloD84JRv8R4yXRC/gZIbuHlPeQbusMJhH5ZQSB
SqAgyTnKiQb03Ru0IYhwIbWyYuCyYheo/x148wN7zgcnxuGhmIoFVaogWkdI
SPME6z7lCiFLyUfYamCmRCc1aZ+LB1ATOpDGX1MJDTWuVRYyhDx3ES8FuZ2l
BYDX4oyMZLe749btEFdg4y0SbkuSiXP2ulOTtY1d7PkSIlES8YNaiUIgpztW
Ai1YOuDacgtWysZK60O7yzqNcZTndrWLuqOinGioQ5PeQNEht4MiLruYOodp
F3BIdMcWu4ESI47CDpRrdqqbLhmKW5R1mljGsrbPJGviqE7SRM5MHLNRUmnz
XRNnxDs7cXoeRHmFkfIptPBcfUNLoKHrKrZHbzGQMBKuVhaAEyPkz6bHq3h9
y7hHU3WQf4d0cDPbkeaDqC9Qpr5nkDznOPK36/9qHL1hOOfzs+UB//uoR+dl
w0vgUu4wD64loxO8fzB8IwhYcIxBDSAn73lgDPNP/dvRt/4/jj71I85BIf87
zkfJiQK55nqPGL1TxmJIa9MvKzmcch2KoYYTqHkyhQkc3kPdPWehge/dPQus
GFlWw9GImHL32BX7a9B6vmN/PHie5NjH7GM1vIeMkzFp+alMhPxf3lrQQk9V
gZve7tD3Wf+PNddOrP0wYOA0Rf4zpwh5OWC5vwdw71h7M3KakzMP0aeSo/hF
EUjznqdNZl8erKUDqtBOWnr4NjKlz/+H95bxf2H/gr/1+Gtg6kuhZxEDz+MP
BZc+JxB4xwPj7vqhsf6b47GxvwEYAxJBZW5kc3RyZWFtCmVuZG9iagoxMzkg
MCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDE0MCAwIFIKL1Jlc291
cmNlcyAxMzggMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQov
UGFyZW50IDEzNyAwIFIKPj4gZW5kb2JqCjEzOCAwIG9iaiA8PAovRm9udCA8
PCAvRjMyIDE5IDAgUiAvRjQ0IDY4IDAgUiA+PgovUHJvY1NldCBbIC9QREYg
L1RleHQgXQo+PiBlbmRvYmoKMTQzIDAgb2JqIDw8Ci9MZW5ndGggMjM4MCAg
ICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqlGdmO3Ljx
fb+iH9WAWxZF6kqCAGM7mzjAJItsZ1+yedBInGlhdfSKkr2Tr09dlPrQOA+B
gWmyWKwq1l2y2kXwT+1UFId5bnaZzsMoKnZV9120e4GjP9/9Krmi8zxMjIb1
BbI/PJhChSbOdocLih+O373/3pidUmGRJLvj807FKtTANVKhMvnuWP8r+MP7
vQo6C3+m0wB/64/wp2xb+PvH/b+Pf33/vY4vKByiMC+ATWxCA1yQwkfAdvuD
jtPgeX9QwQhXh44B08niIgtO+zgP5ifeTIOcAqZHqNrG9ns85LNytLJoUaz+
hXcOOTQdQJq2HBnWNr0leIgCf/en46IWFUehAZ2lOg3zKCXNhXAUapXD31TF
uxEUeQP6x4VePYXDBQnSK+haZWGsRK/XfFAtCUikoih4PO4LFbyeQdYosO53
eyBlgkfrHCr6BV5pTBT8aLuyn5oK3mF0EZR9zfCf9nBroLtV+TQf8IXgPWFu
0AhgFsVmbMu9BtW/3mlAHC0FEyZm03U8ymHFoRde2d0jJeCFaaSJ5wMIG2dF
4KZysjWvbQmvGsGW4zsA5PAShOfgYY5MhMf4ZsStBjE4gJteiJU9ex1oc+Ue
RyZMUrAP8e0m0GYCytzwT63DOI4F0U1jg46DAkyncuJVbVGQnyNlyG2QKbkp
PQXNwEo+xDoLswL0A65u2KZgIDRFCs8peyKNm+GZf9nZ6RQ5OFe+wNMsKEIr
FTwPI5/a31AJ3bkl7Aw1hGAMG7r3KyxmpjDx0XIVL/YD8PH787ltKoRODSiT
pRhI/OhK8HZAJLCRLjQxLOJgQtBTazlyyCs/T3xUtm7g1al0fGngYB2FBO5A
u0/zZJ2nCrIJh+GM5yASAluGnUt8YdnZyY5yZRIm8L7uSuiEtU36TDQ4iihs
EsCtN+kkFgPj6it6lWB+bdqWV0hjnjBX8P4JLR5YyC6Qmb6KEhKlg+OJlX/B
iw1JUGYhCoLVGSIP6LxuKB31rHVATj53yAZ55gEpUbNE6DqgeMqZLakSdk3P
CEQgvnYn9jo4dK9ush06l05AHjLPML+chCkSn3htv5BCIDnQ9k55AGuEM8LO
h423nEckeB6bkmygYs71CMTXqJULQF4ZQlcW/zKQwj7gelU5Ii3GUouxYFU3
rpqdV7iKxRfgZCJtn9l4jmFekUrfhJ6cMyVMUUiq6Tfe9+PD4w9ciBY/hrWz
vnwtIiNUuFcNJpFqI18pY8I0SW/zldtKWFDVM5+wSkkCyGV2tg45E6k0CdP0
OhV9Bh8xCWTPE9oOV85WnAVMki5qxQNyblItnrDr4qpuSC+gaOdpyQ1MOBBx
vOFaBPij/XVuRlsz2La2k4ot1yEPsrhZmCTFbSiYLLtxvXcYb4nQzzx7zNWo
bG9jcQJEwERrpJhchSQe9paNbIXaE4cl8y37i101dB31FEyttu6Xibx7Iwdd
Z1gHflwoAymClJ6n4qjclXiaAPbHixCw7lHteUK1Q45BEspqvwdNpGC0BqzZ
MxYrA3DGuWXHufFYUoa+cE2jtzSj2aOxm0KE2nLhq+Wy5QNvZe2tAIvats2a
ORDSecIVgk8UKY3rnCftKqgIbLX63YbIteSIdhDbUiEw+SIhrp9HCjpTUGMw
MLAaLZUcOVkEWV+LWHe5AUlTLMNivkI9l9PkiaCv94IO1ZUXtaX62LSgqvuX
oN7AFzLwhb9Z1L0qbpzbMbAEdWtbIXzy2RvhrGW+RQ+hW8sxJ3deN5Oz7TOv
f46SyIYvoScyOCGD2WJDTqokpiCXpzLUoxCVF5N8mjHQ90TtJ9HyX6hfh4XP
8mZhicveWm6l6htzQRfYu3kUtIZzhOUCIgWQWo+mbaa3aqeb2ccQH2TFPi2P
qJnM0VWmeeRgwy32n1jcHW8rLkwHmAx8q5covu+gQrY1oz359IIbSXhl2/zH
1iuILn1tanET2s5O7rRQChcYJQDqNUnM+0SCljt++CSypAWoQmGFRCEqW5O6
EDzM+BZsU2oGXPQpkMrJ8mnwwGlJuixGvIx93F9HwzsWzTtPKuMeV0a8IC3y
vSnsb0yDDB8ncGfoZPU891hz0BQlGTPHZIcnUpJxWfLPmYIcOui5Ldmf+BBO
8C2XLomypgmPgIhklzkByk97wUHcqT/Yvt70f47+2Neutbr2MoJi6+mbVACf
R3ZiMsrSf8TpMrIuXuNbhRp6XVv7Q872mlzvLte9OZ7qKA91Gv8/4+kFiWU8
NTDrp5fjqUei8TRUMqBSv6vTjCbVmCdV1lPKJRd/sRWFCvVIPmbfmjJ1lEA3
o789Zl4gvT1nxnkaqoJD5wE1qoJf0L3sK29oJOgrCswzfTKIWNaYsgT+XGVW
y9eoz4UzzHEbbVuGTJU0Y4/fGjOhv9OF79ouhiFPvhSZfL11zF++h0QSd+R6
7NxNJVMnDvf6KnWsw2Zu+JG+P9DUTpBJcIJTYEyk649EScSKlAQwcWDoM2pP
SKICeo3Hm84Lz0llcOaarvGRS/cGFuiNrEFyFoaHzST458dPvKeKVCDbUiYU
2JR85rqSBgBYUvBIIJZPM0ZoSQMMknB8y82g25Sed/HtCBB4rjTUkfgC38js
JRikIqDhk9taojfzCBWsnrwoXecNWFZ+Clp9kXMGnK39Mu6W5JDGHE2bg12q
l9qPGNy602xHioNjFh1Zz+O4PhuQ3SKMN+BbXaPyXZ6SwcfAmMm5bxKl0+yG
LQ5EwINjXGiOuHEELZX+Iw92/puNHaL5gQbpc2NHzAf+ldZgzbn1XG0J3VOL
BeEDGeq6w0MgFWpcUGXGxdJHYzK4qpRuReDvAbwfLX4qqgQJunED5fBNrptt
FvU4vUwfHB34u9QL3KxzKO5YblhQn4WLqw6Se8EMIl7QBv+5lEIQIVR/ugZ6
8GnkF37Zr9zO87gUbrfRkXgtXcSD2RABP9SASy7h0UmsUqIhJbY1g9baCIEl
g9HSIML5FUP/6RdQP/+EUv8dU88Dn/IHr+J/fI8A/C/7hJEwbWT8Ecrx8lyO
GBdZzKko0ytPWIPbo2Q/MMbyOugXyGVr/BYEOjx6/GUcEOrcWMBVUTH42Cuf
PPtuGbFqisYJFfmGW9MHhYk/OpSjNBJ3fk7dxkX7cqQvKZ/2W9+8pYIWmv5D
4JuleMW5r8RxoUIdaU8HBY6zW2b+vx3umf0XYaFG1GVuZHN0cmVhbQplbmRv
YmoKMTQyIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxNDMgMCBS
Ci9SZXNvdXJjZXMgMTQxIDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0
MS44OV0KL1BhcmVudCAxMzcgMCBSCj4+IGVuZG9iagoxNDEgMCBvYmogPDwK
L0ZvbnQgPDwgL0Y0NCA2OCAwIFIgL0YzMiAxOSAwIFIgL0YyNyA3IDAgUiAv
RjQzIDM1IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRv
YmoKMTQ2IDAgb2JqIDw8Ci9MZW5ndGggMjYyOCAgICAgIAovRmlsdGVyIC9G
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
IDE0NiAwIFIKL1Jlc291cmNlcyAxNDQgMCBSCi9NZWRpYUJveCBbMCAwIDU5
NS4yNzYgODQxLjg5XQovUGFyZW50IDEzNyAwIFIKPj4gZW5kb2JqCjE0NCAw
IG9iaiA8PAovRm9udCA8PCAvRjI3IDcgMCBSIC9GMzIgMTkgMCBSIC9GNDMg
MzUgMCBSIC9GNDQgNjggMCBSIC9GMjEgNzQgMCBSIC9GNDIgMjkgMCBSID4+
Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNDkgMCBvYmog
PDwKL0xlbmd0aCAyNzkxICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+
CnN0cmVhbQp42rVZWZPbuBF+31+hR6nKQkgQ4JE8OYk35VRsb+zZVKWyeeBQ
lMSNRGp57GSSP5++wEsU5ynlKgsEGt3oRh9fY/yNB//8je9pFcdmEwWx8rxk
k12/8zYnWPrT3a8vW4I4VtYEMB4Ru8V9YBOloxgGoYpDf5HGD7TyTbLZR54P
gxiJfv/03W++N3rj+yqxdvN03PjGqkDD0YTo6fCP7X93/3z683cfnnpevtXK
A1YjTvfihOZOXDARZyOVeHoi7ssPTx+/fH7/l90elN7e0p2/rdNr3uZ1w1Of
3u9if/t3/mhuu72Ot3lWHF955uWctjw65Me0u8jHS3G58OiZd/BH1+QH1A9O
vfeNMiakQxRHWNbRtgXp55zHv+6s3aaXjj7DbdHwdFm1PNF0t9ulYHYTc8l1
h2EEt2SXzSU0+xERmUv7Y3NpTwV+0nPCk/7k+dGdRB0qnYTrEoXmTuL0gsRr
xhLfs7oXNIC/FeUrMJTY7D95Xclkzb9XXK3FjHXedjV8lzluPzBFb9tG7fYm
sNvv8Y5pG+/K0Q+yHYzOPFERi9/eqe4ObCIVP/JNFwojoseh4IhWQ2FVnAuF
ubjFUBiLK8HvHyoYBMoA/bqCA9GKgkK0ruCauF7BmbhlBUfiDikGWAo36hnw
JLjWV/i+9QEKsz951sNDweHNiBsw8zTmQ2RzTWkXUU1lxsrYUKjeLbAJVWJ8
Wb8UwKVpF9joWGnYxmTg1Pd8IHV4PaMGlaqRW3la4GY8SOWx0KYNq3nImwzj
ASOjkAx14KWinF8KmE/51qxeiqNZv5Q5JzwSjO4E+pHyfX9doNC8IXDGiVOY
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
61jF1r3g0zVCCsD/r83yG37kJQsXClYKgwDy194JlxZkgsal1dFhonrs4V6z
oeuQhyVMxoHlig4jI8k2MNOnJyKiRgxW+qyIk013IsDYuPRfQH0X+jNWh5Y3
veyGPefqNmbBFd9xjrfuJAdypf6Mcrv3N3pwzubY1s3vMJGho5VZfkOfCfxE
Xv6hIVwyFlFwHgUK96ADJC8lrwl8gtFQIpAp9jRNxR9DvYCPjsvEWDDunOvA
eDC9yUlSeTRxnfwlHdVU+Tsm26gvsmhzhsb9Xy3du+DZvZ7cvT+IlJ4wfx2e
WfBdxmWBq9SEl+KQu3KRZmjV/HBXHJJIeQE+wcZq+kR9l16Fcj+Q8nPvBN7p
SJlEO3ac/uBIrze2SKwhCjg9MKDVDF5bxBTQeDKmsBGGJnpiSbDttGD9/R6W
+D9hu3dfxJaXx0TEdjSz3z8qMkmgjI7Wa8xAs/TnHQCjXuD44HF1cvfHMyDC
1Xth/wPYBgaPZW5kc3RyZWFtCmVuZG9iagoxNDggMCBvYmogPDwKL1R5cGUg
L1BhZ2UKL0NvbnRlbnRzIDE0OSAwIFIKL1Jlc291cmNlcyAxNDcgMCBSCi9N
ZWRpYUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDEzNyAwIFIK
Pj4gZW5kb2JqCjE0NyAwIG9iaiA8PAovRm9udCA8PCAvRjQyIDI5IDAgUiAv
RjMyIDE5IDAgUiAvRjIxIDc0IDAgUiAvRjQ0IDY4IDAgUiAvRjI3IDcgMCBS
IC9GNDMgMzUgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVu
ZG9iagoxNTIgMCBvYmogPDwKL0xlbmd0aCAxNDAwICAgICAgCi9GaWx0ZXIg
L0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42p1YS2/jNhC+51cYPUlAxfAliTwF
bdHdokAvrW+7BarYii3UklxLTup/33lQjhQp2aQIYJHD4bw5Hxm1kvCnVkpq
4Zxd5cYJKf1qU9/I1Q6WPs++KmwxzonUGhiPmIfFxHolrM5XyUjij+ub209A
U0r4NF2tH57VSiWUdav19kuUCi1iFak4UUrK6Af4RsfjAUjVpuirtokTk2XR
b2XXFbuyi/9c/3r7yeiRVLlKtBYqy0neeg9MIKOMEyuzqC5xgnvjQMujPtZ5
dIH5MU60i5AfyfsihtkjLobN/X7Y0SL3oeTFAxOfcIILpy0Tvipj2T5rR/Zp
q4XMwUw0rziS3rkXygmbZoHrOxEnWZ5GazR+X17YnOIU7KoaVN2XzbbcXg0E
kRCITIpUZ6tEWWFtRsI2LbE/oncoysCkQ7sxNjjZ4DJ4r6JmF0gVhl2HCOCA
YtoDS9EHSvvA32LEABZVzW6gUyI5iyhboIk3P6+vVeNzIY1aZVaJzGdLRXit
r8CajHipvCaBVjoX1uurwGm8IQ8ik24SGkgoGh2ja1eWPLCkxAIxV9Gugp+u
x+EJaibNTYQUCL6SDjPDWpJUpdEeg9Th2M43l7QLVcmJIedmWN1VHZoTVKnU
2vepWpZQLinrKI8nZKpw1+5bLpE8zOepD9pw8dRuMHq42AU5r+hqSdYHdNFx
G1Shoe0G3elwEQtsrqdGPZdjOORK5VGNguiU4wF3uc0nerbIig4cKBJl0Nag
nice12E7qcu98Hk60VlxcJPJEldNXQ4h2xYU7eA2GlUGgs/zj5vEm7d0EItv
GaakFanTC8nHn3P3VaYSBnd38ANjNT8DvKf9GzKVW59OzEWz/sWfzbmnvHB6
cQmHLfpQF9jJD5eFjJUnqqGhzn2qZ9IbDEZLlX0tZwoDTcLesWQOPvlzxz12
gj+ATsJps0oMdEmXjfFHB/z5AwIMjez2M35NlhPwYMQ+iD3Gmxn2GG+n2ENA
o7B1Ijviz9CmA/N+GLzEHyRO8AcJr+KPhArxAVq6cuh2bwIQmwQ5pO9fS2Kd
8FoF/t2bUtMxrJlsBGsonIudXaiahEvXyEw4pSYVcwW8nCJCX+4OFLhqWzKt
4A9FvaEII1NxYHJdBrxrqq5m0gP6iYOu7HvsL1AAIWcMekQkjsc4hVNwONOl
Abee2nrQOq/xU1m3fehJBlgYD0kgXmysMdE918GFktlsmcgXD9jRbdproeAC
gi7Snwiue55UHS+G+kEDqwOu3x+CmHPHDgBTWYHwE5PRtH25YPdPh6rkO0bA
+tOL68Av5/vX4NwYC+Wm3gXnI97X4XxgmlbvFM7TOQhkCi5QE4rXmSF8wbON
beTAyMwTDC212DFuLADNvLPbzKgrndv6u7SEXl7wxrmqI0Eu/tTBnQll5s5o
lURjmpFOEMxd9ZEPAjR/TjsjhJmofUQJhzPFjGFEe6E8pAuOvPPqxYFfuldN
wq6UgzM/CmvMLU86x2f0rTihf2eCBcKTni9Q5Mv/TNQkhmTEOCjQ86WemLUg
B8kVRbjmyQN1oTDZ0ONldKv8UFZnFi3AmPVCq2wJxswAY31BOHbunp9PjGIM
OB9BMocxoFmHNtITwaWIZA5zTN2pY9r0CYU7uWMg+wzC3ABhhF/uTfzS8opf
o/vLghsmE17pMd5Ij95cWAU9oXAweULx0ynPhdIvEAeOjVEOnlB4GwnwnPMr
CshV80D4Ww9PHCYX3NPbc8/z0GZh7MH8gsuYVugNhTuGncObCaM94MT3vJN6
MCrFOzgOTmXH0W+bLsgb7C0WbkW/l/8AaoWGPk3orJUPD3Vv6FW/9OIfWJJn
Hmrhk2xor4SRZpCDZhj5Utnwv4O5sv8A/MMNKWVuZHN0cmVhbQplbmRvYmoK
MTUxIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxNTIgMCBSCi9S
ZXNvdXJjZXMgMTUwIDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44
OV0KL1BhcmVudCAxMzcgMCBSCj4+IGVuZG9iagoxNTAgMCBvYmogPDwKL0Zv
bnQgPDwgL0YyNyA3IDAgUiAvRjMyIDE5IDAgUiAvRjQ0IDY4IDAgUiA+Pgov
UHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTU1IDAgb2JqIDw8
Ci9MZW5ndGggMTMzMiAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+Pgpz
dHJlYW0KeNqtWFtvo0YUfs+vsPoSrBbCMAMDrys1Vau2T35rqhUx2GZjwALi
xPvrey4zBhvIRVtZgrmcOffzzcFi4cNPLIQfeHGsFlrGnu8ni3V54y+2sPXb
6C3MERnHXqgkjAfEdtOVifJkEsEg8uJITDE80yba8yW8tS88oWKk/bK6ubtX
aiGEl4ThYrVZiEB7KgkWlmiV/eO03VI4KT6e2+W/qz8WgfIiP164QnlKRURT
Py1dATyUUwJd3sKjTbc4XLqhUM6hqWGyznEdN/OM1ytcbsoUnvs9PE4kwL/g
XVSwcSSSAo6JKInFjJiiOqKuyKkwEh780H/ExQwZnHhxw2JRnQwIxITUZ5T6
hI/6pXpb6nP1BBMyBUmvpNK8RPedDnhmRl6Wk4Foat6QJ1wVSTHw/lcaNktX
a5E4aE5Ohh7xZGMsGwXLSglJygFZ16h7w3b0AdUX6hyI6RqFVN3SlX6sHVK/
oTiiX2A5DqS0pPisSPrW+AVP1yWe2uNmlw9CAvPNvra6zvikQ3dQlP7MNywx
CLV08EhRcgASrTXHpPOYvT1FkwZPlykuVfTY9jpQIq7Pst0JN5C5lLvg90jo
0Kx8Rd91jfEAOYA825hwc6JjzoIzgPndfaAHZeaqxAsE1q3vxZpFhV7gAb2C
XBO+79wXezZQRtr5K6eqSWEPGLbMUQYDjuC4IPBExLxWOyByz8dLOE5RwUm3
DGJMRTfQuI85QOu7FDeOS14myp0doAMOe6I+IhUkHm28IHXdZDx7EFKxaheY
EgDa6VCDiqjapuB8GJtgYIXJfsJghhotOTH3lJKWxwAJILjLqyzPzipyDCPp
ySi8zGW2tdnUTQnUQeS0NeYHjtJ1V9QVj+075deDL9TekDX5NsUAZ+yEtjUn
NvjWFk8olz1U5ObX1Rl5DfCqRHq++BhGD2jnMdoSXXn1Ep657PMjFTKV0EzB
czFmBnWw2jgBq9RUE6BODClhYS90brGGWS5yTqkgb7kAXlICF6JDNjXOMVjj
IqcqAQz7/wVTyRz5tpkr8LPZURQnZzcCTqQGXwhsexOYM8Z5V/SSeq1Zi9sR
o9u3LH9Tdm9FL7ueEEPeun0XbMIh2IQGbH4vLW5btEnfhhl9DTOBSgzMsKbk
GlzcEW5BjTBw8CIhCw1qcz0MkQU3emQJVDyLLL4EZyYGMgo2guSPNQfjAWh7
cFF+YsAFxVlwwfEluLCWrAbvkJ7Q8JA5nFdSeQH0cxcdkUUdZI0Y016CTFFa
VyGAZAQdBnjqRwivcr6RV9ZdO4coMoghsPJDiDKgnUcUSzThzamm79OoQhcz
lyzYFmulR3VNYquZklbAj4GESvE9LPlxce08fIQT8GG4GdwCgfEIOUgn0xdw
DV9oKZz3gWJCyjVGjKR0FjHI5iFqGmkQ+RgygDpRAjaqy5S7ynBKJjagRUuN
Qcr9KnXgF2Kp45rz9tjOA56tVgxw1G29/sKMTqbRQ61S02OP9bSdJV3VjyyX
mlC6nrN22GlO9bzI8JX6cMggIbTzCuNrDdLepmkXWF8bdvtBM1xTDzHVmLdP
ZwbQbaANRi7l+tq22h8W3vO7csHcRfi9pm7d5BjdKUfjigSaKue7ZVKOrqFt
YYCASxTH9qgNys93MHf/NhQ985nGn+7W7Y6+iBCCdt0Pxcywo68lw44jhPYU
lZml/IWBxmFSFa/8hcXRq7m7H0Uv+kT0Pq0GRvfpNK3B8D6w/ytAQ6jg6p/6
p8CSuD0N3QOXHXgiPOlLywctk+JamAIi3B0L+w9+WxAnZW5kc3RyZWFtCmVu
ZG9iagoxNTQgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDE1NSAw
IFIKL1Jlc291cmNlcyAxNTMgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yNzYg
ODQxLjg5XQovUGFyZW50IDE1NiAwIFIKPj4gZW5kb2JqCjE1MyAwIG9iaiA8
PAovRm9udCA8PCAvRjQ0IDY4IDAgUiAvRjI3IDcgMCBSIC9GMzIgMTkgMCBS
ID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNTkgMCBv
YmogPDwKL0xlbmd0aCAxMjYwICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2Rl
Cj4+CnN0cmVhbQp42t1YS2/jNhC+51cIvUQCKi6fEnVs0W6Boj0s1remWCi2
4qiVH5EUZ/3vO8OHTTrSJvtoD0WAiOIM5/HNzGfaLKHwxxJGOdFaJqXQhNIq
WW6uaLIG0S/PnswdEVoTJQWsA2UvzGXFiORlkgcWf1xcvXkLe4yRSqlkcXd2
SxlhUieL1R+pIpxkLC2ynDFK03fwTB+b/pjloijT35sBhEO9huefi1/fvBU8
sEeTnHPCitJYWtyDEpxu4Cgv0419G2owsDZ7Oh0z+HfcZznIUYx79zVuHjLc
8losvffrHbzsuwZNHVCx6azgCQ+gsF/ZjRsmpI1RyiBGLhSRUkGsGOPDI5xo
evh3nMhHUFKqyql+R7JcCo1pHa0HzKR3cbVbDGZstqtmdYoULAIiRUE4lUnO
JDgujC2XcX+36zew1DIddpsGV8pYXY7tbmsF/lnbx4OthZHcZrmS6V8Gi+WI
4XEGBcN64RZm1ZrVYA88tV1nfTjc22Xddc7arQ3Jyn/4Cc389r19u30cTSo0
ymG7wzyLdNj7kxBFe0OZXGIKNgNUaAfXALi9ct1QW39YMLBu9MZ7JwNUYHtT
u/3dnX3W9mER0DwlGNTVz4tT11cloYIlBfRgUfGpITrNh1PNA10zHlGrMF4S
CUKvNNEwCZekoDoCpvmIKsuzuIzE9QrED1AIWQhmqr16gH/dB5yssQdYqNKm
eM2AzjqAgauSe7u4NwJSikmALDPzhWtXM/sCIGFzHifqNhhvRg2KZ2Nh6YcB
p6w3rsQXeH//zns2/XcGyDtXZ2z2vUseY/y4R78vJ3+At7rDvXr0btWJGtCz
t41n0VyLzbW1Yx3RHpAi0VwkuQDaK1VIe6WjvffQ1BjgcuwfsbE3SH/Fl9If
r2i6sZMIZzO3x3AMy5D+cC+mP6tlczTrHXCf5T0011nblvuQ+PBtlvg4EYV2
bDbsbZMi6gjqZiIfWRHOipD+uHD0h7F4+sM10l+ZusIA6siClv00I0rH7Dc6
5rCHTDa7v11OwpECggIbvaeSwXHBNiAdbeqD/baxB1dG2/HEBT1mhgbZLGvI
oiIll69ijUB3njW80izak9yBbd5sUXGOPzqEB0jEjhD24x7naLnF5LHLypLp
YDZVeo3mbnGavA6DPSN6QluDnR9vGM6t5uIb0cBt51oYZ3Ww3hHf2vjACODz
LmKHdQvrA+RlecPodmfx0ykE2NuFIcTs0W7w5Pq599Z8XriLxQvere76Nd7z
CQTM/eXQfHv4vWH4PPgW6IeqUZYYcu382HLs7PMO266G8NC7UkAWceM5uTFp
0JnQ+YwKRaoWgIOFPorKHPTAzURmTIU6OaMSaIdH3XManKLQVTCSW5cTVq5y
TeDRUWkELQZ0PXpk3cHruUmNaiAZK4N2iWRhxXy5ng/muTXoPOYXbiJZCPtr
3OQTOZ3a/5MgBnl6fr5s8ajI1/bA8lzGfwXU2da/vrssZ1mRCq4Gn+z/SEd9
dS3mo4tmAMljJsLLObi89zAlSFnpqYuPdhefRVYZcm5OF57/z5e9sD3+wy97
F9cclylcUPy3wJk7zujKAMsbqmhtnB79VyQMB74igYRZnenLzxKxe/Hyw7gm
VfGqu89Zdf7q43QmMA99+18fKmF+qpj6GcOr5Gcd4zUqHNw/iaDC20Gvgl86
8z+IPHf2D9GMNVJlbmRzdHJlYW0KZW5kb2JqCjE1OCAwIG9iaiA8PAovVHlw
ZSAvUGFnZQovQ29udGVudHMgMTU5IDAgUgovUmVzb3VyY2VzIDE1NyAwIFIK
L01lZGlhQm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgMTU2IDAg
Ugo+PiBlbmRvYmoKMTU3IDAgb2JqIDw8Ci9Gb250IDw8IC9GMjcgNyAwIFIg
L0YzMiAxOSAwIFIgL0Y0NCA2OCAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9U
ZXh0IF0KPj4gZW5kb2JqCjE2MiAwIG9iaiA8PAovTGVuZ3RoIDEwOTUgICAg
ICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarVdbb6tGEH7P
r0B9MZbqzd5gl9dTNZWq05fWfWr6QIDYSBgsII7y7zuzs2CwsU/PRZEwuzs7
31y/CSLg8CcCwSWzVgdGWcZ5EmSHBx7s4Oi3q1/hryhrWaQVvE+Eh8ONTgTT
0gSbicZP24fHJ60DIVgSRcH2NRCRZCIwXDChbbDN/wmL01qERQ2Pfv3v9vdA
ahZzUCM00zp2IlUDp2m+3uhYoZgIXyp41OkBr643VioV9ntaRCIKV6jtBR5V
ncLzUMBjRUfvqKrDdz3qhXu5w+Yz2A7vnoofDjvoFSGhbu65HMc2GZTi1mEA
RlOa1ClxCGhf6uQKglldWry65+NNnA5Xp7OTVzh94/Gc94TnvB/xpGU2EQ5v
X8LRDmNWlTt47m8mvcUIvDvVcdiis7CAqk3EoAShBiUU2COameHpa0lZdfte
1bX3GR5UHiNDjOpbMUjVGwa6XkLCdFeVryXvjgh/ppgO0MYIexN5VIGL1G8e
EbbDG33ZjNhLFdUVlDMRZgsxj74Uc389c33qoJ95xLs3rDEskaKHtaCToYB8
bWICvjL634WWNRi7m6kgJz9jeDtQrrg154RAiybGmO93F1XdcnmO7T3/QdhT
550Fj09AymcCBnpm0NfBRgEFG0p7xCQD+QSiLzgP//7zM5gWx+EfRee6fwed
7v15fFJyog2bGwg9Nk7Pdl90KImUyWPkP7zWpbu13zPgkDThB6yPa6CFEOVx
e5+uYXXCQ3+53w83MGTHqqDDijbfcYEHbU4bz0Jpsm82bqSWDGqcO/PeWldv
114Iy3QUe6mfGJChicItGr8vPsictPV2lTVC90WdF/loIPVczFkk41lDoZdg
dfvatAeIqYzDrsGw4FuaQcvW9D78pvSDGRAhQ70Pv27HGZsYxpUINFfMSLE0
ssdp7EU3E9mFYSwN04kcFc6DRARhZ/V7d1hHC8Mai7Yd23pFyxWV6sIoPg/F
e6P4/yr1t3xn4OBqzoPasXdVUAOdx6NJWAJtMQX3kpPR7/ItuGaRlXfGto+l
s1NeDezBiymdo2F068vDeq79ckxPNV2N6deyGvKY+v9SEI08UrN0Ljp/ySki
ggJKkiVSEdyzyi+ArzADOP/ysk577IPYTFjmqxhGQWMdaOXisnN7FhnGhh++
8Tram9MLSWFz+3fPMKjqhILIMngwYxncuMUyKnLx4meOb9qhki/8UZyZKJlw
jVYW3fogBPSk9XYh1diRarylnmpiJrmeFccR5ho6WeZ43UrHJRbiQjUB+Sva
lCoGTw9Fv4eMANnktAEURRfeurLe0WuG90iqcTnDxi86ZEguwr98kJ1U+cyF
zujaC+07AqXIu/9NWgLKC3+vzpdG5ECF/X7gyeOxKrMUMwZ8eYsURSKhce9x
YsRsBLWdJO4jZukTZvgm2iTKfcoMpDlLIFAOU1wFXgZNVurSqOFj6KxoAPsP
D2E8d2VuZHN0cmVhbQplbmRvYmoKMTYxIDAgb2JqIDw8Ci9UeXBlIC9QYWdl
Ci9Db250ZW50cyAxNjIgMCBSCi9SZXNvdXJjZXMgMTYwIDAgUgovTWVkaWFC
b3ggWzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCAxNTYgMCBSCj4+IGVu
ZG9iagoxNjAgMCBvYmogPDwKL0ZvbnQgPDwgL0Y0NCA2OCAwIFIgL0YyNyA3
IDAgUiAvRjMyIDE5IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+
PiBlbmRvYmoKMTY1IDAgb2JqIDw8Ci9MZW5ndGggMjIyOSAgICAgIAovRmls
dGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqlWEtz2zgSvudXKJcdqiqi
CYAP0TfFmWSdcsauWJs5zMyBJiELNXxoScoe7/z57QcgURYlH6ZcFsBGs7sB
fP2imATwJyYikP58Hk4SNfeDIJ3k1btg8ghLX45GYV9R87kfhQrmA2a3OFNJ
4KcgcKZifx4L4vFhzVdiDr+xkJMWXnlF+j6QIGTghyB/lgTCF+EcRXxcvrv4
LJOJSHwposlyNXFcjmlZ/OYtpjMhgsC7Wmf1o4YHr5uCHbG3apsKZ4l3dzMV
3uIe15bXML1ictHAKLx8WwGN3qz76R/Lr+9+Xu4Mc0cVp4k/H92745jtWMhu
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
PK5L+KdcHdmvazAuwH+mEVYlTfUy1hFKBQXikSNcxqBVItj/5pldkQT9ZHrm
yxU0ANDOvgH/AdNp+Dsmgr86Bf8z+iJ/Hp36xu5Af2TKYUdjuYamrPFGemxr
Li8uuIqHG6KvVN7zM8yf/TUBGX6e6Lfwp/RVE1LEBQL0E772F3nOxetdKRX4
SZScPUbHc/4YX0tC20/eGvTsIdQnZy9tz3OsTKbCV4FycqjTDF8rg8acVo+V
/R/Mo9cMZW5kc3RyZWFtCmVuZG9iagoxNjQgMCBvYmogPDwKL1R5cGUgL1Bh
Z2UKL0NvbnRlbnRzIDE2NSAwIFIKL1Jlc291cmNlcyAxNjMgMCBSCi9NZWRp
YUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDE1NiAwIFIKPj4g
ZW5kb2JqCjE2MyAwIG9iaiA8PAovRm9udCA8PCAvRjI3IDcgMCBSIC9GMzIg
MTkgMCBSIC9GNDQgNjggMCBSIC9GNDMgMzUgMCBSID4+Ci9Qcm9jU2V0IFsg
L1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNjggMCBvYmogPDwKL0xlbmd0aCA2
NDAgICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42o1U
226bQBB991fwCFJ2vXeWvuXSVrZ6iVTUPkR5oLYT02JANmmav8/MAjHGQCuk
Ydk5O3NmzizcY/BwjzNBrVVeKC1lLPJWuxnzHsH18ezNmyPSWqqVhHUH3DpJ
6yXSUGv4IKZNSkLGKVcWQVfxbP5BCo9zGmntxQ9Hag0oXt/5d+o+uI+Xs/fx
WzTONRVH1GC+GvKPdIJTFsmTdEsaEKOZHwdW+EkgQv8lKwLu7y8CEkrcJ9xH
jIr8K1wXAQHQCpHbBvO5iXFd7MoEzyYVhnBe/ubtZABnVrQZknxdA740aX6k
+QEzVQBLcoLdgCIJV1Qp40hnmxcMBnjOosi//XT5LV5cB0TDaQIvCJbUX+Ue
mVQN6SKrdx+Kfb1Ybw6/HdeyPQXLMktXmB8/qhS9ee1Nc2SPtDb7onQhN/vk
Z5qlVSCs33Dqi9c03YSCCm2G1WswpANy8ik1IF8Lwk5skU1Vgnk3n4NN/4Ap
EoqkN+ia3+DGCszTDonneOCA0CxxlRwc6tZtoKtKwa5uWlfTngUGrDCia2hJ
t3gMI2b9gpVVlGk7WXCLOSv4ZF77kbDgCzcOcPUEjYw+mYrlE5RMJKgigBdj
YAyMiJLKX3xH5b6iSpc1JHdzsTmXq7mSRkqqmJi+3B3Q+OVuQe5y67HLPZFP
U6vH/kXHyelRGZ6cDpX+5Dw/o6G/cAbczFP3G3gEM+9zFkpRDsVONanFTDep
HwmZjWvCLI2gjGlNjqAJTRqQ08SMajKe7/806VEZ1qRDZUSTv2B3GapR4kWm
aIrdoDDaUCXNZKdazHSn+pEmhYlAPBFO63LEDCSLOJVMtnEwl9Rn/xUAofc8
2SvkPbNQZW5kc3RyZWFtCmVuZG9iagoxNjcgMCBvYmogPDwKL1R5cGUgL1Bh
Z2UKL0NvbnRlbnRzIDE2OCAwIFIKL1Jlc291cmNlcyAxNjYgMCBSCi9NZWRp
YUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDE1NiAwIFIKPj4g
ZW5kb2JqCjE2NiAwIG9iaiA8PAovRm9udCA8PCAvRjMyIDE5IDAgUiAvRjQ0
IDY4IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoK
MTY5IDAgb2JqIDw8Ci9UeXBlIC9FbmNvZGluZwovRGlmZmVyZW5jZXMgWyAw
IC9HYW1tYS9EZWx0YS9UaGV0YS9MYW1iZGEvWGkvUGkvU2lnbWEvVXBzaWxv
bi9QaGkvUHNpL09tZWdhL2ZmL2ZpL2ZsL2ZmaS9mZmwvZG90bGVzc2kvZG90
bGVzc2ovZ3JhdmUvYWN1dGUvY2Fyb24vYnJldmUvbWFjcm9uL3JpbmcvY2Vk
aWxsYS9nZXJtYW5kYmxzL2FlL29lL29zbGFzaC9BRS9PRS9Pc2xhc2gvc3Vw
cHJlc3MvZXhjbGFtL3F1b3RlZGJscmlnaHQvbnVtYmVyc2lnbi9zdGVybGlu
Zy9wZXJjZW50L2FtcGVyc2FuZC9xdW90ZXJpZ2h0L3BhcmVubGVmdC9wYXJl
bnJpZ2h0L2FzdGVyaXNrL3BsdXMvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFz
aC96ZXJvL29uZS90d28vdGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbi9laWdo
dC9uaW5lL2NvbG9uL3NlbWljb2xvbi9leGNsYW1kb3duL2VxdWFsL3F1ZXN0
aW9uZG93bi9xdWVzdGlvbi9hdC9BL0IvQy9EL0UvRi9HL0gvSS9KL0svTC9N
L04vTy9QL1EvUi9TL1QvVS9WL1cvWC9ZL1ovYnJhY2tldGxlZnQvcXVvdGVk
YmxsZWZ0L2JyYWNrZXRyaWdodC9jaXJjdW1mbGV4L2RvdGFjY2VudC9xdW90
ZWxlZnQvYS9iL2MvZC9lL2YvZy9oL2kvai9rL2wvbS9uL28vcC9xL3Ivcy90
L3Uvdi93L3gveS96L2VuZGFzaC9lbWRhc2gvaHVuZ2FydW1sYXV0L3RpbGRl
L2RpZXJlc2lzL3N1cHByZXNzIDEyOS8ubm90ZGVmIDE2MC9zcGFjZS9HYW1t
YS9EZWx0YS9UaGV0YS9MYW1iZGEvWGkvUGkvU2lnbWEvVXBzaWxvbi9QaGkv
UHNpIDE3MS8ubm90ZGVmIDE3My9PbWVnYS9mZi9maS9mbC9mZmkvZmZsL2Rv
dGxlc3NpL2RvdGxlc3NqL2dyYXZlL2FjdXRlL2Nhcm9uL2JyZXZlL21hY3Jv
bi9yaW5nL2NlZGlsbGEvZ2VybWFuZGJscy9hZS9vZS9vc2xhc2gvQUUvT0Uv
T3NsYXNoL3N1cHByZXNzL2RpZXJlc2lzIDE5Ny8ubm90ZGVmXQo+PiBlbmRv
YmoKOTcgMCBvYmogPDwKL0xlbmd0aDEgOTQwCi9MZW5ndGgyIDM1ODYKL0xl
bmd0aDMgNTMyCi9MZW5ndGggNDIzNyAgICAgIAovRmlsdGVyIC9GbGF0ZURl
Y29kZQo+PgpzdHJlYW0KeNrtkmk8lH3bx0PE2IWsdRLZYmbsRrImYsauIjTM
ibHMMMaWyk5EVNZI2ddmKOslO1HIkn0vEdnXslT31HVfz9Vz3S+f59Xzec7z
fPH/Hsvv//scxykqZGwmrYnB24O6eBxRGi4DRwDaSHN9OAyAy8BgWhBRUW0C
iCZi8TgdNBFEAHAVFVlAF7SnHCgfQkERAVeEiALaeA9/AtbJmQiIa0v8LFIC
NN1BAtYBjQOQaKIz6E7RcEC7AWZ4ByxI9JcBNN3cANOfHV6AKegFEnxAjAwE
DgcwWAciYA86YXEQ6E9P+jhHPKD0Zxjj7fFXygckeFFMAeK/bEoAFJMYPM7N
H8CAjhAoCk+5DaR4+d+w9U9xXW83NxTa/af8r0n9Rx7tjnXz/3cF3t3DmwgS
ACQeAxJw/yy9DP5pDglisN7u/8zqE9FuWAdNnJMbCEjD5WVg8n/GsV66WD8Q
Y4wlOjgDjmg3L/BXHMRh/umEMr9fPqD6mrqGqKtS/17tr6QxGosjmvt7gADs
7+pfDP+bKUMiYP0AaxhlynBKIeX962Tzj8su4BzwGCzOCZBVUATQBALaH0L5
iSikAATAASwOA/oBoB/FMVQGhydSWgDKZG4BjngC5Ode5RUAqLO/hzOI+xn/
FVJRBqD2/0VwGAyAYn5DOAAFf0M5AOr0G8pT5H5Dijr2N1QBoO5/I2UkUNxv
SOkl/IaUXq/fUAmAev/C/xy2lhbeL0AarigHSMsqwH4qKQIqiiq3/nulBQ7r
6Q3q6wAKMBhMWVb5V9TBm0AAccRf/zllk3+xI5ayfBD0Ax0go0N4B9Uwl+TK
iMLbF7J7i2glvARS88O66sPLU1VllqZUOQYIVT3m4MlN9nB2F2wxW9KKwTMo
xlFhhrdS82Z7gBk0fIS9nZlTIvOR2bE1h6VrttQdT141s7o/jvo0euqjR5XU
2tjpnWmfelqy4SJcKYt3Jfpo4fDQt63broHdM6OMKZjTc0kQmye1homg5cJ0
fOf+8kV8Nn40t+PEtUc7x7+P8jZP9rtOMKeq3H2CpBlMVTtkgEn4Ob7vhsDT
XE+NXslQ0ftRWv6JVUjmtc+QceoIilkpP9+zhU3Qpd+F9rhSnNCyovaxjOWZ
18Xm5b4yNm9CegdK2reh5Q+LjmY3XOIfolt+HwG3qU//1slHQ7PwbgEm1o3Y
j2MccCxYeMPiiemxeCG7PyAfQowdyOxU1+g8ZevEKxXC/XTkO2xv3Xqde6ei
6zjE4FjSKp15ohb0D4v6xYbRx0d1kSk3WvuVmun3IxjZZSzeBiiFZBs0y6jN
nrAYJW9k6DPd0662PbG8EFhQwxkeyi3Sb6TUkraXLE2cX74YRrjRyJh+CfFu
TEC4Dou+DRnbMRfelHxji+xG7h32ReY6Vh04CtLCLiCZh161QW4oe7/q/Lrs
i92SPKUe2NRI+GPqtW/CwCLLEQVxyRNHqRVwVumjxSOQVnlJ09CPV/LPPDDd
NheoxZi+yBhEyrkz8j64l95XfOZZ6BKQIdNuzJ6FUT5Oq2pTS63LcFNPqGLz
taj5IifjrLV0Q3dK0KN7rw/vs05lMEdcuOlRUmq5tMcqgmzMrR2weG+DgwfB
BU17jEsbbkECMVuZISchKy9lAkgV+t8FTehjuJRSX81EVQwO2QqgpKW0maZP
7Z/uem6TeE27I0FEobcoe5TW7iv9ZktHZHYrtnY0jtodcvWDa+FeM6fhd/3C
Z1HSSLiPEWQ2k06HpOJYmh/vbMDZdyonOXzZAux/PhfW+S2cw0695Lic8pSC
Iq/2xCKZ9nAzjGmOIzVWq3PZtCLAf9JhnSH8zskwBxWXsYs8jxIm90zy7ziu
V2eP8t5WkTP1XRNOgMXmHwFH2RIQ8l8GNxlYy4u0Vjw6c7CFuwaJeQc5L6PG
XyuBs6SLp7mlt/aG6j7dGoyETHXEMzvoJgaEtby9U7CXKa1bfZjLvK2tyhi9
4uLwYoxNyn0PZa9xT4TLoOiVq5RIOta6cV8pKyJ1tHFrNaFIdrYtLjYwSNVG
lAqpnW02zFtmIHIjMio6iXk3homR7NGhcgL3JADRhRknbX3rRgQ1FsffntWa
0x46ZuFWbxUfVe0u+Ml58xYx7/hW8ddQYcnwpAqtpR3U47eyAZYhpLndly3R
krQyrVTRszyPm5JUsx91r8QxXe9Qv+N10EBDTcVg2Qbkb31d7t3wXdnZHjQ9
ezUs2yluS2a1wqMynVOyOsEJc+q+p8WQ7tiWgoxYg+RTIo5ORs9M2JKsiDpk
hZCUHA9zpE1Q9A1XdU3uK2aPiEe2TEIbgy/d9eagazESYEIPBzyJZd54u3zn
IVBtTf2yzIctrvzmnfd32Z+fpeKtT7k81VQtsa34Ujk1xrA1uq/ElK+/89L1
uKnSYjHnj3JsbqEF3okDVrfdctA11OrZFle+cuYdZ67yXe+tz3vVpxtvwOz7
gWlk9cVYQe1aQoyPUd4MtxUJtn9jIpnus5rAfZ2LzI0wTetBP6121cbG/b5z
ImN06tUnO6Emvtaq9U2Jq0n1DoNhePrt4W4x6FKwzDfeiE9dxx9eKSTo0fAE
oKyefGtaEvf72pNzNKhFlj5p8ta+kF/HBcG8O+SDWW7FHK8M24PWwB1ESu6d
wxiFHR1+A+g4ys7INyUunRp+o8vL2emJcdHcNlHNKU0EMhwdkarPv/lV4XFa
edCjwNISrA4DYhzL3HpvXeclj3KqD99J/rJr9JhHI0qTt+myQvvcI7otZqSo
qL8v4dbTeYFwq+wEcndIXmII7RoeSrfh2w1/6CZPgwRnGKJNlrMxszJX2S5o
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
r2WX2CpfWWyTH+5yFhb393bknueux0tZSnm1BFhQO28bFABHAnIYYb0rQgZv
z6dr3U072rmBNHFq96INjNbPxhU+bW9SuLEZGVJjEY+2ddo5O0vgkSe/auKe
nQmuM5rpfQWu3uRpqeT1y2I7tmGw5SLOd2o1+SFduLDK7JbeiOYi6eRaGonP
gF2p2tNuIuqNgcoag0/KkwUF5DLdc1W0sJIkqp9f8kOf0CUUz1H7eq2Br+hl
L6/gLL4ZGwaePkLvC8LNOhkl/qqmsWDIQHdaTOhQpIWaXtKZ9yG+7WUSTZ6F
5ScmBRuU20j+9de3C8BeFe64lvIzbBLxaxI7QHLDnE9whll++RcFY7hyRp8C
14lBu7rF6Nr6ZItrty7U9AzcoNZY0rTeyuyx5Tiz0FSuJS1RQBRZM4X9Dx/I
/wv8nxBwcAPRBCLeHU1whfwLKtqErGVuZHN0cmVhbQplbmRvYmoKOTggMCBv
YmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNvZGluZyAx
NjkgMCBSCi9GaXJzdENoYXIgNDUKL0xhc3RDaGFyIDExNwovV2lkdGhzIDE3
MCAwIFIKL0Jhc2VGb250IC9JQUZMTlkrQ01USTEwCi9Gb250RGVzY3JpcHRv
ciA5NiAwIFIKPj4gZW5kb2JqCjk2IDAgb2JqIDw8Ci9Bc2NlbnQgNjk0Ci9D
YXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQKL0ZvbnROYW1lIC9JQUZMTlkr
Q01USTEwCi9JdGFsaWNBbmdsZSAtMTQKL1N0ZW1WIDY4Ci9YSGVpZ2h0IDQz
MQovRm9udEJCb3ggWy0xNjMgLTI1MCAxMTQ2IDk2OV0KL0ZsYWdzIDQKL0No
YXJTZXQgKC9oeXBoZW4vYi9kL2UvZy9oL2kvbS9uL3Ivcy91KQovRm9udEZp
bGUgOTcgMCBSCj4+IGVuZG9iagoxNzAgMCBvYmoKWzM1OCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDQ2MCAwIDUxMSA0NjAgMCA0NjAgNTExIDMwNyAwIDAgMCA4MTggNTYy
IDAgMCAwIDQyMiA0MDkgMCA1MzcgXQplbmRvYmoKMTcxIDAgb2JqIDw8Ci9U
eXBlIC9FbmNvZGluZwovRGlmZmVyZW5jZXMgWyAwIC9HYW1tYS9EZWx0YS9U
aGV0YS9MYW1iZGEvWGkvUGkvU2lnbWEvVXBzaWxvbi9QaGkvUHNpL09tZWdh
L2ZmL2ZpL2ZsL2ZmaS9mZmwvZG90bGVzc2kvZG90bGVzc2ovZ3JhdmUvYWN1
dGUvY2Fyb24vYnJldmUvbWFjcm9uL3JpbmcvY2VkaWxsYS9nZXJtYW5kYmxz
L2FlL29lL29zbGFzaC9BRS9PRS9Pc2xhc2gvc3VwcHJlc3MvZXhjbGFtL3F1
b3RlZGJscmlnaHQvbnVtYmVyc2lnbi9kb2xsYXIvcGVyY2VudC9hbXBlcnNh
bmQvcXVvdGVyaWdodC9wYXJlbmxlZnQvcGFyZW5yaWdodC9hc3Rlcmlzay9w
bHVzL2NvbW1hL2h5cGhlbi9wZXJpb2Qvc2xhc2gvemVyby9vbmUvdHdvL3Ro
cmVlL2ZvdXIvZml2ZS9zaXgvc2V2ZW4vZWlnaHQvbmluZS9jb2xvbi9zZW1p
Y29sb24vZXhjbGFtZG93bi9lcXVhbC9xdWVzdGlvbmRvd24vcXVlc3Rpb24v
YXQvQS9CL0MvRC9FL0YvRy9IL0kvSi9LL0wvTS9OL08vUC9RL1IvUy9UL1Uv
Vi9XL1gvWS9aL2JyYWNrZXRsZWZ0L3F1b3RlZGJsbGVmdC9icmFja2V0cmln
aHQvY2lyY3VtZmxleC9kb3RhY2NlbnQvcXVvdGVsZWZ0L2EvYi9jL2QvZS9m
L2cvaC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei9lbmRh
c2gvZW1kYXNoL2h1bmdhcnVtbGF1dC90aWxkZS9kaWVyZXNpcy9zdXBwcmVz
cyAxMjkvLm5vdGRlZiAxNjAvc3BhY2UvR2FtbWEvRGVsdGEvVGhldGEvTGFt
YmRhL1hpL1BpL1NpZ21hL1Vwc2lsb24vUGhpL1BzaSAxNzEvLm5vdGRlZiAx
NzMvT21lZ2EvZmYvZmkvZmwvZmZpL2ZmbC9kb3RsZXNzaS9kb3RsZXNzai9n
cmF2ZS9hY3V0ZS9jYXJvbi9icmV2ZS9tYWNyb24vcmluZy9jZWRpbGxhL2dl
cm1hbmRibHMvYWUvb2Uvb3NsYXNoL0FFL09FL09zbGFzaC9zdXBwcmVzcy9k
aWVyZXNpcyAxOTcvLm5vdGRlZl0KPj4gZW5kb2JqCjk0IDAgb2JqIDw8Ci9M
ZW5ndGgxIDc3MwovTGVuZ3RoMiAxMjAzCi9MZW5ndGgzIDUzMgovTGVuZ3Ro
IDE3NzQgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja
7VJZWBNZGoVRASOyj9CtDQWKrIZKyCIBpQGTdFQWkbWlgZAUUDGpglCBBAUh
pANuCIqtxnHQSIssoizTbaOxRQRUZAdFHRhZRB34VHABaaS7wHHmG/px5mm+
qftS5//PPffcc39b64Dt67z4aAzEQhFsHYlIYgA+voF0gEQECba2PmKIi8Eo
somLQQyA5OZGArwkcQAZBEg0hqsbg0wi2AI+aIJMDMfFY4C9j8MciQ54iSAx
zOMigC8Xi4dEuAaPKwS2ozwYwmREwEsoBALndiQBgVASJE6G+EQCiQTwYR4G
xEBxMEJwmfPDQWJRgP6xzJckfGolQ+Ik3BRgj5t0AHCLfBQRygA+FEtw8UPx
syDcyX/D1EJxlkQo9OOK5uTxjH7X5YpgoewffVSUIMEgMeCL8iExspAaCn20
5gvxYYloYZeDcYUwzwuJE0IA+LEEJ7FgKcQPgDFePBDLFSZB83UI4S80gcc2
b8HFNyg4LITjNP+a860ALoxgQbKEf4rOcecx6V8Yz0YMS4EdIBEESTgRX5/+
vllwFBPhoXwYwceBSgO4YjFXRsDnAkdUYBcJgBE+JAUgKe7XhYigGL4FwCNJ
A2JRMWHuMSlugAuKQHPFeUwFARcsBZ3Hv7+Ttzcq3bWOTAfWkXEiiUQmA3Qq
mPbvxGAETpRAnE24FgjS3T5ekycRiyEEmx8iPK9POBbG04UgKcQjPLiH8twV
gmM/KEvSmWfbS5c4anvH/ZjnV329S7MsqzdfW3juzpZEx/6qsOkylanByJIR
q5SZlUn7ru7e1sJ6mZmYd7xndiQ5ekSV+tPKsAmVr+xJgs1k1qjhlR+634xR
tf07+5tLCsKLGk69ahw9E2C/Keip7l+ttep2JNfUnVTQ6GEslTA4+9uqta7W
gUbHE0tyKNl9KUYFhxf3tWWlC7L1Ljs9GkevSkymz+qdPjIb8fbynSuFM8L6
8ecV5AnKaPRs2hDnaGX5r4HeuWr93O4PSUNHIka7DQwuJFzPSWVarvz8Frui
3yv/7qP9XEpUe8IH8OZrSa/XwT4m20G9rfrdFxW7c+TrveUf7hk5Pnsx289n
hwqmLazsiuQrSu7cB0PM4GFplXJitf1EheKlxYZh4z99aZeo5pTWTQdRYYJ9
Rw2mNIq+pbXcc+BnpqnHFFu9xV/BP+fxd+0xRanNB61ITJGu7b0zPu/o52kd
bwlR5G8H3oeNWzW9MhhEX+zmncg9Q95/W7Eq9NZSVueNmUxKDOccf+wXPXWr
bgCttZhaeMcy7/o7Zf0VuxfTzJ6vJjW6W0cMYgT+WY2Fzxnb15gypDQXMPfg
3Yw+fc4AveV2uV7t0GH5oCDV98AfTx6dsNOo1ZkXSx6OvrYK8Mmo0jNRG7cV
jhoTb6g8qzUbMzMKGx0o2cXMyOrLss4aDavAqXLN+u/Wsm2aw82EnpAm/CcB
VulUpTINumjOIVvrI5/Nhm1ZaXbdAIve21yZHq/4ZtfG09uWvBjmDsF72rIi
rolYTcGr2bnJ8WTJqncPkPr1mguhPe6BbymG5YWPmYIOkrbcm1IVU65fVuQe
M/rQTbajQjh7LIQRUDowfjQn220iLlpZkmkZodqcvuy1/0bbkL3ghSnDZX3l
7rzN3bWCcLFBEXaY1mYoKytKFFIMj2/bg+o8KEvvfYPWKfdHbaBJ/5ZYmuI8
Ptln47xz/FTuq7Yfi9HGDkLX6rpkU45uGT0KaGuJTb1UMNjUbC27ae/qcHuY
+rTIcrFje+3p8OqpmNXcjGpfz9ZeV7ZtSm0L23FrTxMljfjF8ljwDet1wqFm
h/NRX9Y8rLlHOP+26tG9PURmr35qutKMBU9GHTrDWjo1vAYdY0d2xjzeALp5
SJvkch2FU8jXjwYNvic+v1mvdHKJMmnb+4B6+aSiKOJla8WzsRwd1yP8kF+t
Bp8Y2y8aGtaO6bE4aGP0/VcrSk9Ec82tbzAcHJ8RDh0wrDS7v8rYXOvS7PkM
f3pDl2VLgk60x/Y3mklArrzIsG19kpvzc2ZRxrL4G2f+rLnwvlKX/YensuK+
/MjZpV2RGnNREqs3vL2ACZiv8jsGCx4HOPvU5888efaL+V6dSItrjHc2Wj0y
E9pi41bFfmZAx6WztaHoSa/WLvVGCY1UbEv/+tq+LcFXoQrixQqmXex3n0FL
QUWnBW9PDVsWcTt/1HJi55RTaua0IlXjHnyKKt93v69hZpdPY52foL8vmTch
LlWZrAAb1m4IS3FvNqOPuTRs3fzeIC41N818ffuibosTBxbdVQ3In0qy42b/
MnDJQ1jv2LWcUDsSbJOXYulcqfZkqRTsOuUB0Zizh1NbY74yHfwPP8L/Bf4n
BHhCiCvGUBFXvJPwG+yysPVlbmRzdHJlYW0KZW5kb2JqCjk1IDAgb2JqIDw8
Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovRW5jb2RpbmcgMTcxIDAg
UgovRmlyc3RDaGFyIDQ5Ci9MYXN0Q2hhciA1MAovV2lkdGhzIDE3MiAwIFIK
L0Jhc2VGb250IC9NVFVYVkkrQ01SNwovRm9udERlc2NyaXB0b3IgOTMgMCBS
Cj4+IGVuZG9iago5MyAwIG9iaiA8PAovQXNjZW50IDY5NAovQ2FwSGVpZ2h0
IDY4MwovRGVzY2VudCAtMTk0Ci9Gb250TmFtZSAvTVRVWFZJK0NNUjcKL0l0
YWxpY0FuZ2xlIDAKL1N0ZW1WIDc5Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3gg
Wy0yNyAtMjUwIDExMjIgNzUwXQovRmxhZ3MgNAovQ2hhclNldCAoL29uZS90
d28pCi9Gb250RmlsZSA5NCAwIFIKPj4gZW5kb2JqCjE3MiAwIG9iagpbNTY5
IDU2OSBdCmVuZG9iago5MSAwIG9iaiA8PAovTGVuZ3RoMSA3NzMKL0xlbmd0
aDIgMTIwNgovTGVuZ3RoMyA1MzIKL0xlbmd0aCAxNzczICAgICAgCi9GaWx0
ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42u1SbTyUax4mRNOKoyMvJ7nH
ia0wZrzMeFlpmMQReTclMWae4WHmecYzL97tySgvx5GDEFEOKaRfK8fxnop0
kkiUiN0Ku4QKnTo42Ye23d86H3c/7W+f+8tz/f/Xfd3Xfd1/faK7lzGdgwZD
jigiMqaQKNbAwdXTElBIZIK+vgMGsUQwijBYIsgaUKysKIAuDgGmZEChWptZ
WZvjJOCACqIxOCRUBHY57F4l0QCdD2Ewm4UAV5YoFOLjGmwWD3ihbBgSRZMA
nccDnqs7hMATEkKYBOKQCBQK4MBsEQiGQmCEYLLqxxnhooD2scwRCz61JBAm
xE2BXbjJ3QC3yEERXjTgQFyCiRuKnwXhTv4bptaLO4p5PDcWf1Uez+g3XRYf
5kX/o4/yBWIRhAFXlANhyHqqH/TRmivEgcX89V1nEYsHs+lICA8C5I8lWOgI
R0Ecd1jEDgVcFk8IrdUhhLPeBB7bmgUTv/0+h11cDNdec63lzoIRkXe04J+i
q9w1TPkXxrPB4CjgTyaRyRSciK9PfwHrjtqPsFEOjODjYEEFLAxjRRPwucCR
BYilABjhQFEAisL9mpAQVIRvAXgk8YCLYoTVxzS3AiYoAq0W17AFGZiIItE1
/Ns72dujUbHGZlRgbIoTKWQaGdAsyPH/TvRB4Agx5MzAtchkmtXHa7HFGAYh
orUhwvP6hLkwni4ERUFswpNHKNsmKSyv7mRFwv7S3kqFPbL2IT9mul1re9iy
WTr4nSyv/K5LxJ7RGuZiVcHWLRMKE7qRy18I05rjPLodXx2PyMwf+DAhCZoo
iGn4gjlX4Bo9LtB7J32p0lTXvzBtIXuob7SrIudwWUfR69svS9x3Mbz/qviU
KHPDX1J7ozCJSmM6FvB8kk/UGJgRPVXzIypSzJNHIlVzsuRHeqQJYclK9YbD
b9BmsdpiqdL57A9HFyb79vlvOztADUDuDzwOfcTnhbK+SXcyNNdNL80obGhc
Xqw+a2LXa1ZnkJmP9NuezWZR99d/mTVw95l2XG1RAinxaf+JrpJIozG9Jh1M
Wh3iDzldnJKBL0mndSr36hbfF5981ENQSx/w6xx/XLm3IqHxYa7Wg+s9X/E5
kmT6zBTBf8vSdfO4p60kuce+uTHb6rYOq7QHfl9KIf3O8cKv8tyqTXHMldn2
jbL1Vsc8IwMIy4+H065pmFFUvXYcZZR1uRzp9tPWDsrdrD7mnpN2bOrzETOV
KZAFDWdo695R7rYMMrXr431mI6+dcieNCDGjQgkM7qLqPtudTXnqe5zr7W98
PdbH/Kn/FLHXL8o4M5iyTbq59MyGax1zcyOyDjbKgjNt8S3PQ3tXZjzg5l5b
p5rXzOrgwZD0YH5n6bynutGZxty9vwSmPdCpv/rQg0jQGLvZcWSwuI6OZQf8
AZTmz8/O3lL3yA0TWb6ym7U34rspmEnAwOXOHwxn8l0Wq6mvioDoG4Xe2DH6
V+w8D/0+bHHQTjKhuvKeSv681ZPPVBJ2lBkKFr/b0VkPK7yx/uDzcoPwbaJU
PTm7/t7u8G+fPe1Rc//Vr2uL3NGEIRuZrJkcZdp572xSh9umhqTlsqp4Ukli
8xsD6+8ZVxPapjK3K8YonBOcIzskdQVedJpTOFRdEOPQP2UfrdlCPySBKFvD
g24diOOatn6wzPshXev3YWQtg5tX5sThVKFWpFEh2O5c+8TikkGsvA6qIa27
UjbU/vaae7zAtJJDqFJ74VA22dJDPyt/kWiZUnNk4Xl25f0n5S2dGayh7fYH
Ibl7mifeBdej00OpjEobUB2kpYDIhsSeLvxS9Y9awVVGP1/YUyMKHPGSVl1m
6L23zTaN95VR64DGzpGm5ctnG4uCAlv0bA53f/tC5sJdWuZkbU8S7+2V7Lrk
+YdT9O2XVeTaY/5cJE2J3HDgGLX83FBKbTp6XfF08cLtnzXo3TcH5LrSzm/1
ZkbwFR9EHiSKlWW9bOPu6KWSanMu6Z2e9IpbiCo9fjfCsbx5WHfQ7Jnr4dGL
o8paksuxjHSNk9rDqRpcdiG68U89Nr7LSfE8WhAvIOOXU+U6qQ7t8uLwpb73
MaM1Q1nMo2Li4CknNOBe1ky2L1NJEGA5Oazky/oxItmocWyIar2BW3zmlXZv
sTubtxKBjb9c0mnLkKjZDYw/UpYMxwQMl83rE8u8KXBDiv6LuZKdJd3vCm/p
BadGyFxtndCs2LWxaSlOXS9R/UBTfJ55mN3KaENpUGhiEuW48sZ9vfOv4zOa
T2mfNlz6uvDd+EF5xmeEHX9pFmbde564s3NLKHbpJ52/6SttcjPXbCNq+ihW
Z7nTlsF0axVl0Hn3wO3zmErTXvJ/+BH+L/A/IcDmQSxMhPJZWDjh76L0r2dl
bmRzdHJlYW0KZW5kb2JqCjkyIDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0
eXBlIC9UeXBlMQovRW5jb2RpbmcgMTcxIDAgUgovRmlyc3RDaGFyIDQ5Ci9M
YXN0Q2hhciA1MAovV2lkdGhzIDE3MyAwIFIKL0Jhc2VGb250IC9XRVVZS0sr
Q01SOAovRm9udERlc2NyaXB0b3IgOTAgMCBSCj4+IGVuZG9iago5MCAwIG9i
aiA8PAovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAtMTk0
Ci9Gb250TmFtZSAvV0VVWUtLK0NNUjgKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1W
IDc2Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy0zNiAtMjUwIDEwNzAgNzUw
XQovRmxhZ3MgNAovQ2hhclNldCAoL29uZS90d28pCi9Gb250RmlsZSA5MSAw
IFIKPj4gZW5kb2JqCjE3MyAwIG9iagpbNTMxIDUzMSBdCmVuZG9iagoxNzQg
MCBvYmogPDwKL1R5cGUgL0VuY29kaW5nCi9EaWZmZXJlbmNlcyBbIDAgL21p
bnVzL3BlcmlvZGNlbnRlcmVkL211bHRpcGx5L2FzdGVyaXNrbWF0aC9kaXZp
ZGUvZGlhbW9uZG1hdGgvcGx1c21pbnVzL21pbnVzcGx1cy9jaXJjbGVwbHVz
L2NpcmNsZW1pbnVzL2NpcmNsZW11bHRpcGx5L2NpcmNsZWRpdmlkZS9jaXJj
bGVkb3QvY2lyY2xlY29weXJ0L29wZW5idWxsZXQvYnVsbGV0L2VxdWl2YXN5
bXB0b3RpYy9lcXVpdmFsZW5jZS9yZWZsZXhzdWJzZXQvcmVmbGV4c3VwZXJz
ZXQvbGVzc2VxdWFsL2dyZWF0ZXJlcXVhbC9wcmVjZWRlc2VxdWFsL2ZvbGxv
d3NlcXVhbC9zaW1pbGFyL2FwcHJveGVxdWFsL3Byb3BlcnN1YnNldC9wcm9w
ZXJzdXBlcnNldC9sZXNzbXVjaC9ncmVhdGVybXVjaC9wcmVjZWRlcy9mb2xs
b3dzL2Fycm93bGVmdC9hcnJvd3JpZ2h0L2Fycm93dXAvYXJyb3dkb3duL2Fy
cm93Ym90aC9hcnJvd25vcnRoZWFzdC9hcnJvd3NvdXRoZWFzdC9zaW1pbGFy
ZXF1YWwvYXJyb3dkYmxsZWZ0L2Fycm93ZGJscmlnaHQvYXJyb3dkYmx1cC9h
cnJvd2RibGRvd24vYXJyb3dkYmxib3RoL2Fycm93bm9ydGh3ZXN0L2Fycm93
c291dGh3ZXN0L3Byb3BvcnRpb25hbC9wcmltZS9pbmZpbml0eS9lbGVtZW50
L293bmVyL3RyaWFuZ2xlL3RyaWFuZ2xlaW52L25lZ2F0aW9uc2xhc2gvbWFw
c3RvL3VuaXZlcnNhbC9leGlzdGVudGlhbC9sb2dpY2Fsbm90L2VtcHR5c2V0
L1JmcmFjdHVyL0lmcmFjdHVyL2xhdHRpY2V0b3AvcGVycGVuZGljdWxhci9h
bGVwaC9BL0IvQy9EL0UvRi9HL0gvSS9KL0svTC9NL04vTy9QL1EvUi9TL1Qv
VS9WL1cvWC9ZL1ovdW5pb24vaW50ZXJzZWN0aW9uL3VuaW9ubXVsdGkvbG9n
aWNhbGFuZC9sb2dpY2Fsb3IvdHVybnN0aWxlbGVmdC90dXJuc3RpbGVyaWdo
dC9mbG9vcmxlZnQvZmxvb3JyaWdodC9jZWlsaW5nbGVmdC9jZWlsaW5ncmln
aHQvYnJhY2VsZWZ0L2JyYWNlcmlnaHQvYW5nYnJhY2tldGxlZnQvYW5nYnJh
Y2tldHJpZ2h0L2Jhci9iYXJkYmwvYXJyb3dib3Rodi9hcnJvd2RibGJvdGh2
L2JhY2tzbGFzaC93cmVhdGhwcm9kdWN0L3JhZGljYWwvY29wcm9kdWN0L25h
YmxhL2ludGVncmFsL3VuaW9uc3EvaW50ZXJzZWN0aW9uc3Evc3Vic2V0c3Fl
cXVhbC9zdXBlcnNldHNxZXF1YWwvc2VjdGlvbi9kYWdnZXIvZGFnZ2VyZGJs
L3BhcmFncmFwaC9jbHViL2RpYW1vbmQvaGVhcnQvc3BhZGUvYXJyb3dsZWZ0
IDEyOS8ubm90ZGVmIDE2MS9taW51cy9wZXJpb2RjZW50ZXJlZC9tdWx0aXBs
eS9hc3Rlcmlza21hdGgvZGl2aWRlL2RpYW1vbmRtYXRoL3BsdXNtaW51cy9t
aW51c3BsdXMvY2lyY2xlcGx1cy9jaXJjbGVtaW51cyAxNzEvLm5vdGRlZiAx
NzMvY2lyY2xlbXVsdGlwbHkvY2lyY2xlZGl2aWRlL2NpcmNsZWRvdC9jaXJj
bGVjb3B5cnQvb3BlbmJ1bGxldC9idWxsZXQvZXF1aXZhc3ltcHRvdGljL2Vx
dWl2YWxlbmNlL3JlZmxleHN1YnNldC9yZWZsZXhzdXBlcnNldC9sZXNzZXF1
YWwvZ3JlYXRlcmVxdWFsL3ByZWNlZGVzZXF1YWwvZm9sbG93c2VxdWFsL3Np
bWlsYXIvYXBwcm94ZXF1YWwvcHJvcGVyc3Vic2V0L3Byb3BlcnN1cGVyc2V0
L2xlc3NtdWNoL2dyZWF0ZXJtdWNoL3ByZWNlZGVzL2ZvbGxvd3MvYXJyb3ds
ZWZ0L3NwYWRlIDE5Ny8ubm90ZGVmXQo+PiBlbmRvYmoKNzMgMCBvYmogPDwK
L0xlbmd0aDEgODE3Ci9MZW5ndGgyIDgyOQovTGVuZ3RoMyA1MzIKL0xlbmd0
aCAxNDA3ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4
2u1Sa1ATVxgtqCARpypqEMResQgIJFkgRLCovEJBE8BIC1qrS/YmLCS7YdlA
wtsBKwTxURV8gPhAsFZrdRRQWtBSxoy1CkqxdAQqAesjrUUeQlXsAjq2+LP9
1enun/3Od+65Z8/3OcwPl7j5YWQMFJIE7YZwEB8QIJJEIzyAcHgsB4cACqI0
ThKBKA19AOLtjQA/tRwgfMAT+LjzfPgClgMIIFVaCpfH0sApwHmEJAB+Skjh
UpQAIpSOhUpGQ4oqgISU4pDWcoCfQgFWjZxIBKtgIqSSIMZhIQjAcCkNYqAc
J1jcEUchhIwEgjEYU6tetZIglciYAk6MSWfAWMRIQqEFGJSxuGKSuQsyTv4N
U+PFhWqFQowqR+RHU3qjjypxhfYlg1Sq1DSkgIjEIEWMp34Ix8yJIIarleO7
ITSqwKV+hFwBgRviyeF58McaeKIQ10AsHKelsUCGKhLhKA4JbLwVJr5RI9zV
EmFwsNDl5VxHm+EoTtCrtSoIeK/ZozXyumZSonANWMvj8HgIQ2TeV1/rxl0W
REhJDCfkwJ3vBVCKQrUsZoOYig9SEYATGNQAqGEcczkESTNHABNNOpCRFGtk
rMw6cWOYaCE9go9CHu6AywiRyQoo+wvq8RIdm+wI/OZf+/uTmlQ3d2/g5u3F
uEAQLyAQ8NP/Towk8AQ1DAkEfB6Pt9h9LAapmqIgQY+uG5Poq1qGM1OAUAOl
rNYWUrokJ66o8pPPMoKONB6fxLUY0p+832p+Mao6Yz+OpUv4ByLmy+myB4c6
z22tZ8c3WYdKl+y2os7OKRBv+bjvsNWJc7qD5VHbs/h1nB8lbG22rnDqsIvj
g5D6hA/2FG/qtPWpowz78ha4tvYtyNRbHsDu+a85UvukvWXKjEWrPl1kbyNo
PWbeZjKbrW375eY7j6sziy77Sn/7/qeVIeHsRKHOsUm2dEpMHzrQxVonS2pq
com463ep+V5nsjX2bFrYlrq1GqNdrv1mh55vJeWafl2GbeqtKypz9o3chwWH
+tPCLFh1dv4NbY31OZc7uduygmvtVs7VGzxin9roXcSFM+W8dg/TM3er53wX
1xV5+hSy+cU9c5ujGYPlaHxx1S67QGNKQkWN75NIdkE6Z0XlnuhHZTX1U1pq
ZiFWy5pbA7YNlVqIr5rp3EXqcwOF1bFbH3LZ3b96Xm1pDC4zZCnfspxTkhax
ropVEIYKh80KLnW35zeokJQvKkJzXJ8vHIq2lvUf3C8+mbbCvf6duRcWP9nR
odg4i50Sapvv6Tf4NWfeqdaeLY2VF2WDleb8yfrMssv7iieE3ZEVi6c53a18
LNvbIe68YyQ3Gycu9401BB0SPvtI4MfPwPOq4h43DZckmdSc/GOn9pZ9QEqe
m1k2zzj1S7WzxaT72zQn6NKOwBOLIqLKqorDSgW1e/mnd+hUz158PpU1u7Lp
4nXEyr+7oSeuemXpzukTew03vA4bbwW12y97+vbsyOsXzqu4In1WtnVSSH3z
BrNq+5qz+ZVOJUVduct6vbxLvYPn96UHq5wbjq0f3mR57fiudtOlurMmQfMS
jDcJX9QQ9ZzUNRn0OmWCY0fvdpOA6Taa/IoNWG34+/H80xGFMsPc1V2+rpsk
7wqwbEtXl4S16ZzUwfY1Kca25gk/3w7UZy0wteLsvp3teCUzeCA0ZWgS1hjI
7tm63DTNLtdoLZVdMnrl9Tgb8/tdd0vR3y2jWyxdvjp/vL1oUI750gndovLJ
uyRujnvi7Qqias7k9G4MqxgE24/F9Sbp72gfKRbOMD8q+sHhzACc915h8X67
ouTirNTUg8leV0o0S0uu1a3Psm178I3nshgTSf/M3hbeP3xY/wv8JwSkCohS
NKlEqXjWn1cLCJNlbmRzdHJlYW0KZW5kb2JqCjc0IDAgb2JqIDw8Ci9UeXBl
IC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovRW5jb2RpbmcgMTc0IDAgUgovRmly
c3RDaGFyIDE1Ci9MYXN0Q2hhciAzMwovV2lkdGhzIDE3NSAwIFIKL0Jhc2VG
b250IC9UU0ZHR0YrQ01TWTEwCi9Gb250RGVzY3JpcHRvciA3MiAwIFIKPj4g
ZW5kb2JqCjcyIDAgb2JqIDw8Ci9Bc2NlbnQgNzUwCi9DYXBIZWlnaHQgNjgz
Ci9EZXNjZW50IC0xOTQKL0ZvbnROYW1lIC9UU0ZHR0YrQ01TWTEwCi9JdGFs
aWNBbmdsZSAtMTQKL1N0ZW1WIDg1Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3gg
Wy0yOSAtOTYwIDExMTYgNzc1XQovRmxhZ3MgNAovQ2hhclNldCAoL2J1bGxl
dC9hcnJvd2xlZnQvYXJyb3dyaWdodCkKL0ZvbnRGaWxlIDczIDAgUgo+PiBl
bmRvYmoKMTc1IDAgb2JqCls1MDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAxMDAwIDEwMDAgXQplbmRvYmoKMTc2IDAgb2JqIDw8Ci9UeXBl
IC9FbmNvZGluZwovRGlmZmVyZW5jZXMgWyAwIC9HYW1tYS9EZWx0YS9UaGV0
YS9MYW1iZGEvWGkvUGkvU2lnbWEvVXBzaWxvbi9QaGkvUHNpL09tZWdhL2Fy
cm93dXAvYXJyb3dkb3duL3F1b3Rlc2luZ2xlL2V4Y2xhbWRvd24vcXVlc3Rp
b25kb3duL2RvdGxlc3NpL2RvdGxlc3NqL2dyYXZlL2FjdXRlL2Nhcm9uL2Jy
ZXZlL21hY3Jvbi9yaW5nL2NlZGlsbGEvZ2VybWFuZGJscy9hZS9vZS9vc2xh
c2gvQUUvT0UvT3NsYXNoL3Zpc2libGVzcGFjZS9leGNsYW0vcXVvdGVkYmwv
bnVtYmVyc2lnbi9kb2xsYXIvcGVyY2VudC9hbXBlcnNhbmQvcXVvdGVyaWdo
dC9wYXJlbmxlZnQvcGFyZW5yaWdodC9hc3Rlcmlzay9wbHVzL2NvbW1hL2h5
cGhlbi9wZXJpb2Qvc2xhc2gvemVyby9vbmUvdHdvL3RocmVlL2ZvdXIvZml2
ZS9zaXgvc2V2ZW4vZWlnaHQvbmluZS9jb2xvbi9zZW1pY29sb24vbGVzcy9l
cXVhbC9ncmVhdGVyL3F1ZXN0aW9uL2F0L0EvQi9DL0QvRS9GL0cvSC9JL0ov
Sy9ML00vTi9PL1AvUS9SL1MvVC9VL1YvVy9YL1kvWi9icmFja2V0bGVmdC9i
YWNrc2xhc2gvYnJhY2tldHJpZ2h0L2FzY2lpY2lyY3VtL3VuZGVyc2NvcmUv
cXVvdGVsZWZ0L2EvYi9jL2QvZS9mL2cvaC9pL2ovay9sL20vbi9vL3AvcS9y
L3MvdC91L3Yvdy94L3kvei9icmFjZWxlZnQvYmFyL2JyYWNlcmlnaHQvYXNj
aWl0aWxkZS9kaWVyZXNpcy92aXNpYmxlc3BhY2UgMTI5Ly5ub3RkZWYgMTYw
L3NwYWNlL0dhbW1hL0RlbHRhL1RoZXRhL0xhbWJkYS9YaS9QaS9TaWdtYS9V
cHNpbG9uL1BoaS9Qc2kgMTcxLy5ub3RkZWYgMTczL09tZWdhL2Fycm93dXAv
YXJyb3dkb3duL3F1b3Rlc2luZ2xlL2V4Y2xhbWRvd24vcXVlc3Rpb25kb3du
L2RvdGxlc3NpL2RvdGxlc3NqL2dyYXZlL2FjdXRlL2Nhcm9uL2JyZXZlL21h
Y3Jvbi9yaW5nL2NlZGlsbGEvZ2VybWFuZGJscy9hZS9vZS9vc2xhc2gvQUUv
T0UvT3NsYXNoL3Zpc2libGVzcGFjZS9kaWVyZXNpcyAxOTcvLm5vdGRlZl0K
Pj4gZW5kb2JqCjY3IDAgb2JqIDw8Ci9MZW5ndGgxIDIwNzkKL0xlbmd0aDIg
MTI2NTgKL0xlbmd0aDMgNTMyCi9MZW5ndGggMTM4MDggICAgIAovRmlsdGVy
IC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNrtt1VYXM22sIsFdwjBadzdXYO7
uzfQWONuCRqc4BYgEAjuGtyDu7sG1+Dy97fW3ivZ+7885+o8B254R41Z452j
alY9UJOrajCLW4LNgdJgRzdmdhZ2AYCkkqYmOweAnYUNmZpa0gVo5gYCO0qZ
uQEFAOz8/OwAcXdrAAcbgJ1HgItbgIsHmRogCXbydgFZ27gB6CTp/0niBYg7
AF1AFmaOACUzNxugA2QOCzN7gAbYAgR082YBiNvbA9T/ecIVoA50Bbp4AC1Z
kNnZAZYgCzeAOdAa5IjM+o+RnKMVGMD777Clu9N/D3kAXVwhUgA6iCQ9AKJo
CXa09wZYAq2QWZXBkFpAiMn/G1L/e3Jpd3t7ZTOHf6b/V5f+r3EzB5C9939l
gB2c3N2ALgAlsCXQxfF/p+oA/y2nBLQEuTv871E5NzN7kIW4o7U9EMD27xDI
VRrkBbRUBblZ2ADcXNyB/woDHS3/twOkb/8yYJVWVtDRkmD8rwX916CqGcjR
TdPb6T+z/pP9L2b/w5D2uIC8AAZsLGxs7JBEyO9//2X0v4q9d7QAW4IcITuC
mwdg5uJi5o0M2RoQ4gb4sgNAjpZALwDQCyLMyuIIdoM8AoD0xB9gBXZB/mc9
ObkArM7uYDegpbn9PyP/DnIDWB3dHcz/WWRrxz9hHgCrJdje3szlT4j/vx7/
90L/d5iLDcDqZOYCdLQHWv0VZf+v6P9K5gCwmrn+M4Wr3Z8gJyTX3t31TwAi
agF2cDD7E4FY2ng72QD/GHJBDJ0gE4Et/4R4Aayu9mauNn8ifABWH6AL+E8A
8hJgR+B/mBti7+b5Z5wb4u1m4wL8KwOibAV2/9MHboiuFcjjrwyIritkCf/D
EFlXoMdfrpDlYgX+j0ZwQ1QdQX+L8P3zzvbgvx7i/2caB9D/jPJAhO2Brn+a
xQMxBjq7m/1ZUh6IsfU/RwnwjzQP5z+LB3T953j5E4SIiv8hiJLkH4L4SP0h
iMv7/xAvxEH6D0HKyf4hSCG5PwRpjfwfgtRT+EOQpij+IUh1pT8Eqa78hyDV
Vf5DfJDqqn8I8vpqfwjiov6HIC4afwjiovmHIC5afwhSXecPQarr/of4IfX0
/xCknrmLmYUd0O1/bHh+SGVzSPh/7j9+zv9k/88PgR9S3h3ywbq4WoBd/uwC
yLnJ+mfX80M8zP8QpAsW/yF2NoiW5V/4zzb4C//ZtX8hxMP6L4S0wuYvhMiA
/kLIwtj+hRAnu78QImX/F0KsHP4gO8TK8S+EWIH/QoiV01/4z6b8CyFWLn/h
P5/RXwixcvsLIVbufyHEyuMvhFh5/kHIDcrq9RdCrLz/QoiVz1/I9c9K/lvk
/z7sJSTAXr7M7ABmDshxyg3J5eHn9v+faVqOIMinJicFOVzY2Pg4Of8VtXB3
gZyGbv+6XCHXyH+zFQhy5wCBXkAL5MU5sIVgiG1qQ1hxwPv8iZI3DNAS1o3x
yrWd020owQsJ0PaFQwrODGs1ug+lGTjoe2/2yDyfiFwjW/3URqXPPjjHp82+
7HmY7mX4NBPpXmYoee86UdwGH2H8aJi5PuaGVplaGy5O0ivoyz7vP8pTpZPS
3EdYIYfqMvCo68oM4eHVlc6w1woPraHhJFfHTHMujuAKX/XETPoMtzoeHGAb
jtjEuHwBbnXHfshHzE18MYG1HNU2fcF5hW4F4MZlyaKMog+SGDxZncslrrqe
tyNXi2pUt3i/mJhFqlgz4nXabVOTCg7rZT6gm4o/zurKaDjNJRbrUWfQpLc4
po6LSRrERipIWEhuvl/H3Y2nm9lIIqzn3Raj2hvdOMy4g43kMM3ljpmtXtbQ
ZUUr9VmjH49pQfo8Wyztsn7/1vUqJvOZUGfTbJc5rw6Xc5DCbCfQO93/BjbR
iAHfJ/n2qxFuXG13QwmHXRoTR3+NrnU46Xxt7Fso9vw17egYXvYi78NKpDLD
vb48+l7cAO0IxiCbdd6ffh54SRfstvcinK8BKKxk1LTcY2g5vmM4dvCnKT7t
qDGXSsMd6eEyMCfUjNaBYn61KV4joatPrO/71FtSAsR18Ywnwce92wy907VH
QdIrq7w/WdcvrpxRms4M83VLy/KFAvSH5jqM+qLWe8aRWhj46EneF3SZXCSA
t45lngeRsI6yzH5Pa7Wv/1x+pxsq4yHQd149gj31WsuCCDsdwPFhKWvbXpMT
qEVT9ijARqz9UJV97msEFyVj4yq71gwWzdIY016dxm4W5scf/Vyp8ZhkFqaE
1QTNlxCDgu3UJ+vaC820Bo5wqCYay1WAEfkhuTGRa7dP7UaC2LxsE85eOHh/
Xv38AOi17SD6xfOU6+4i0S4TVEDUlQi3NggzXNmGhmVHltZJdE046rIUrX2X
y6u9GYp6xXyj83rN6yt5iZh/xZ5wf3MF/oG6xI07FzkaM8y651Pr2d+GN0n2
Okf6pqkW6+jXhCrO8cWEqI7cx21dQvxYTrc0QRtENNDtQhydBQ+1Z4O2XTLN
5IbR0KnM7TaPbI7i9fvd681V48vG5IuQYwMJP8+ZrBveshPMKN8ZMHjxE4Zs
4Uv/gaVampqKL+m83JNVHMX27bcDRTjMPU+i9MuaMpixvU+czzLNrOJ9fdj+
SGGTcC7Si0S/Eo+6DkM1OJ7T8LsmWlfPcZ2+hLDY7JbmRyXRr5npaBSE0QzW
5Rkp0CxjDqrnCEWUmKVhtFBOuGGLGD2MtklyIzSsnRxsqpmBkjq2PkaEGe1L
dL4h21P/BA61wQXDBA+UoPW/JVvy2MiqCCGClZ5RAr/h95b4yJIWpKOfqOMB
0Lbs/dRc7W0wVM/Bq1T+SsVDrlZJz3ku/82YJldp5cBMLyJn/t3ZTnCS2Lcp
YwYuV/BnsjH8biyxqxSmSKEB+XKC/oEReKa9yjOtyUbUalEmrWpJfgSCmE/m
BYSx41PJjfNM3VcGiDsjymkvZymZyWf0DfLYz2vtNlofGCuGbFwLuG/7F1u8
iHeAFf67gDE8GMww3IkV3Ya5y9XrDF7yGYfi9axgv0bXtfvAvR3eLOdQE/xy
gjxJ3necg9cD6uKeWarcD9K3DjlEJwILSYQ1FY/aT3bbMmLQmnTSXfWj7mF0
cI1vY+Kq2nvcG+x10DJxYIkTFXuWNwfYvCYPKec2tEiwKdUABZfYcvtij/fl
b4+p7xg/irxhPmfBjA5uwi2NiSRxadI6Xg+H79tamDaI2QzD3y5/thdtn9nh
9eaI2+hK36rbfqHc+qU9AHPk21K8yyle3NB7CRSmLPhEh+DxpWoCfb/ho/tQ
U/rrnjsoVBQOt5imQmpmE65tchw5aTEgOYC95JlJzzjgcgEPF+mqpJuFZ4Vw
fCRwBtqWy4h8LKq1kyzazQNe+FKfj9ghZlpRWev963XlHWgh5YL16m4V13/6
KgEj413P0qjyxCQKagvm/pRoco18RwUQP+37ksuy6BSPbFx1fea7Jb/bW8Bn
wtEz4tnLZgLzUbY4kTBE3Zf5wPSwqJfWuI8/uP01bLyIcpjQMRc53hk4QWFR
k3Kz/vIcOEuz97fiZJ3z8xNv/FWi5j6yQ200Y9JIvGA1bmHRGD85cyxbz6Oz
ve5XLEroO7nbpHf/gsJWItRVap5O3+dv9lOIReBRCVqMdvnjiR1DOJnwB0cK
8jLBfvnI9rYJeZ+0i1Du/o2hg6We37sITXo0ei5qBmYc6Cyf5be4rxewVARe
y35/SUq5/VCy+ihON2ZL5cU5OBzHtcH/bEhIzoeW3cLw9q6mmHPVO+UlKOAk
MYEtg1uQYwVJLuzG9jP7D4LpUFHYmPFoL3EZDjJjzM0hEnTHi9KE37eJXLGw
J0l+IBLVtLD9G+QapYEivRWVTQ6llYkmVBmrMSrVyWSsjsQ1XSteIyF3eAZ8
src77BSCCgNYn8O7rzHSButW3MfScBKEBowk8gjIiux87oZPGNnh4EJ/+GTj
+aiNGOttwo2T533TVtan/uhmhJwLHypckEDHvs5Gm6xU487bQEjLDXqYk8N+
kRuKI/g1ufRGZSTzIJxMp+GSn2FkXMDJMBHYXLaZi2vWktoUoCYQo6BahEN5
c1ha8nNMarrt0HuOz7hJuW3uoMXqOw+p3N3sEW4sgdJndydKk8NOKnXGUfcW
VrupW+UvAZnkh6wa9ZrLsdWFzkJAc2axz59wMa/UBCxjraSZ0sBRtBevXud6
n+TxhjLe9lsmanSC+T97HKs0lBETrXoehRxCYQ99nw1UVGpssIh7WR2QLXZw
w6mjHnNVmnal0lMqKCsQjXxSjR8I/YqivMFxEw9eZcYpJDqJonVBt1pA0ZnS
dQ7HdZPw8ttvDMWqxkcPdQkfQcqQ1pkuHSs3EvTLCWCJ7Ti9C3TZjrYCjJQO
i/XxrNqWkE0XmNO13/PGTU94w9mzogtzLbSFUKcpt2DPRHl3sQxyoH39drPA
9MUhwE/5C24w6seQkysGEs6zWxAyjARcmsoK525Q6YzCSIN+wwiFYszkZEDh
AXyJlxOQqtql7K1qjt32N1W2AWKEzPPZI01nr9POkXFH32s7l0B4XDDsDGrC
4vTI56WXvlDPNLV4NlTJQoLVqOywy1Sc5isyos6v5W1o1RLnm4s0nfU1vCdo
3eEJrsuu73VzuyKDiVNDWYs+0blQ8NmdXB0G4o2Yi48yyu8FpHYZAxXTalYI
z0g7bvrxZmHYBNL69OCd7PVDPn1mAZpKVhRUsXnE+n4XJ3K2p+BkfwqJVnqI
rlX+zkgprZe93ECDuBm29eX3LLMX5umrlx97KUfEPZYMzLoU7TunLFNX9V/p
dGhuPCYv0d6AmK29eCGpX1GXr2aHDiemiTrRLliWacEbpCMcyqIeXVKoITSU
ASj72imGvB9VCvjZd+Q/Il+ak6VgY5cHRJE5Gen6tDb2MCbWIsqSRwPzrIQk
kawNDD9F2s7Q5TBWWAiBCey7OAXSW7tmJfYmZ6h+mZ3OEYZPJAf6yj19cPbm
hmeZ6Vh5SB1/mpILyKImG7Kgg/+QfDLUxcmjkKz/1elJjIZ8KvcNNNWv0n15
4XYzG8ftV+E3n7cYK7SpkLnbhecFU15xRtIW3OqSmr8CLul+tLSCzOx/q8Go
qtRQwP809Lm7Mfl0Xv+NvXens6cPNN6AP+gvHHTcPzs6h85Qa6GbzL6dqJMG
34I6+hJXZvdl0HH4gLK1mGvE0ueXfZMsFMd5nStypEB/QmOJZiE/gLTzQzV7
1FqYvTBwP++lt8D4mEGcsxq5y7fhGiXL61XgPVglwSn7xEazcHuOMvaYrjdC
gTcs2aTddC0Kp+rt70aEnXO/O3tkTA24EVjtcZh8cpZEZkvyFXC1H4HVbdOg
FOs35HlsKwfyJU2izRSrixd3M9JYl2x9hqu877yBsvorXf0V0iyJcKi5h7xX
7AH2m3e9QWcmdBUg35jpNE5EWEBcNm21Wtr8UsSdafPKQbdL03TvBMCSv8Bn
N+W2wNrUACVsq9JbpQlNzH56/s1q8uYC2QkaFYetnMEuk/JEZe1H/+Nyb7lr
6x7wNdGDU1mBm44/Xyn275m6fae6PCLmB0/XbnRjsu8NE8wRiYna189XSmY3
1Ai9vzFnFaOWylnqtM3K67WqaLoHfhcSAnGsQZxO2MPamcYX7XFtE8I/YZIi
JMU9Z0LfNvJGurVdsaPhIISwOF6JO0AFFjC/PlZ1itsEAAQ/f8jeeEUlC5d8
bLBtG0IaICZ/4MRSxlBeM36aWmKW+VxJ4lInPbnJroqMgImVZoI6FmNTxMdC
G1M3+DF8sJ9P13MfKcf9wOSJwtB2cuTjkxeRw6q8ZSSDSJnrnoOG+hoiOL01
kc0pJCJATUi9W6RNN1WtXveCCMofi4T6V5gq1XWbp+Cr3DCCtGRxHiXdUEEW
N9GyTJ0sTUkOu6RQJ5XxzlSGgHlNd2iBrXmVSNXle/OopySbCDI78OTHc44F
FQ/PuJ7t+rHkLrNfsm5L9byGgFi+2x/vw2/NRpUaaK65uZ3U+vwMuJeSPplo
EwxlhumcGv/O6tQi8K7Q3SmaYOeScnzS5/xII3SzuXugfwXA7K3FEqvxs1zk
0/2qFyDLNwSCCl6qw1FTMeP3HRLxkhVZ/Llbj12YyzUv2VZkvTyqjZRLyH1V
ranIGXr96yCifVPjw+ipKJhWhtx5lpTcvhpD3x0zlxS04tRQsHsnsA02c7Ap
ZEOjfiFiS9FfECCTlKUAAAy6efCaPrAKJ5qX2Yz6NY0jMQ+2MGScLTBsCP/m
+aQ3Zu/Q9J6ZtGBkaZknyZqELKn8Urcv19Qp9Ig+G2QhlMBP5GMxA8PKw1zx
OtngFjMzRv3Gs6ke+gcaP8ibPfTWL3X+VUixRcmavMWIK1kz54ZJ4GI5CJha
J7sx4n6yw6ESkqFdV2/wJnr7jDLZJEKOINgwrd538OONkvn7aRJNH0Ojee/n
xsOlz7i2sj9hfDIDknzv4i7IDL3eu2ev4FZUGiNvJuHlrVY19NVJjr4ZzM3c
bHqtRK8aRzTydnKR7rYjJMeBKuH/PkQ6+17xsz7KgSRHkylqeKcGs412UZNg
fKfzaECknpBYNdfwl6+7lz+9wHu5QlJzAaKEyrgPR7jHoiu6tTS7Dh95nfQ8
y6gpo9QP7l7rNT2rck/CAxycKwcs7BlTjQ+DuWI88LdcXknvCLuiNRCu4EEL
eIDuCwaKtIBjO9iZW50ommRP32P8jC+Mh3fz6sazCVHMhkv5WEt7xvCvdXHe
aIMg5viMJlosx+i6XtsVzueuYQ62uZ7ee9SfQ3XjIa7bpNAClLfq3y0cMDIy
3HYDSymMBvCC91fHWJhcBAplo+4y4m9Od/2yg4n8AxAiemrJkHPg+cyD8RtW
68E3KnFbgu+kBg1d3wCvdNuJp8jcRk6+wag+EASrhYVv0RvM4M1tP0pEunrp
MO4rYXVnMj+ivP34DBxyciFDn/bYK5N4UB9KoY6kWOCjcjA/5pG98Wd5ahxe
tbG2G7CLUCNjqiLZR+/q5BHpiZTMLqLXYCbRmC0sL2dBtwvZT5IF7YcrDbAe
f/pqjlH3Eb2GtJR5IVdf74DDENVnudbYcQXB2kWksdM9GlSVERH5SyXjbPRT
iWeISlHdaaP3ixK+ug9Z8qcev3ucjVHCZng0VeH9i1db73iYPdPSvKSii1Ad
EMv7Ao1A0oJwMxNeMrCmAnjcN5kuvZtnQP5SBSWHwqCCUmoMdHhiGLVqkK1m
O4g5/ZvJ0FNOuWOBwsHaj+YDKmiYRTAXdVfRfh8/XN5Ii/3Q+tTq7YqT9+FW
ipJhIJV5g4w25TZx/xx5girc/AYDLOSaK524kFCbVM6HHsKQy9CuX34jae7f
U1q/0j0rchaEV+A110xEKNmVAJNpTWjbsTLDmUUwjz6APyfjnEifH914wTaK
VmPYPHiohFk8h7xZfijyE1vJup1N5XG57rFIXoqCRfxeYTi+K7c3ay5b2O6A
gjab4FUSwcbghOClS/LwDUijAORkUjRG6z+0C+ehU9FPeBkZzaYq5W/mgXX9
Nm5ABS53ykOrNV8Ip9yPxYb+KJ1cJAHZU3KpKoYNXE7W+iWhH1N/MWcjDiuP
nvU0cOmhNZs2kjxpKsAcAy73cmWfys9j7eHmFBUhDeD5acd3fOoDEiWqvpI4
FgYfpl/X8Y12YVWk+8LqEQzPqDh5yJm15hqYIhmmFoG7zeg60a5chaJauq0n
bnCt99alQarN20yECG0Z2Fza04OGnfO0GvVugTm00xMb6ZbRpqbU89syl5LD
qovpvrLyRs/cSfZDZ2a/hTRILAFQkeh1uNfuH9H8U5Dc9mc3thUO3sD40uju
r702bjly//cqZD99VPNF8D3fd4TLc1wQnjXmrIny9mp1o3+2QpEjFEhbNS13
77uGRSnyIsJP/LD8FY9IroEGxVkppvKFP2DNh0dhv3D5KF2AczQNUdwu8At3
KYsd1SIelalc0kbP3ZulMR1f/mOdPXKavgVBVffF3ErGoBS1JOnWp0AfYZVa
dBK6BMeV1tP0qmUS+aKnE8F7wHOGS0sH/IKmLSydTNko5nkBdAD7Z9C80M1S
FB2a8oc6QMzX1u0nxLgj06OhlPEP5iS9Wz/rD8U4FnxAyDcD/Unjo21YiJ+M
nLPtJZ8pdgKZ4iWQ44Ijx/mX6l2eXDQUv5mPJ++YMwy74rZZcCe7BCGuyL6p
rMnqLrk3tKRNC+M3yAb2Oo8++xmp1LcKGGGoO9nGu3q9azmzsr4YWiRKmp6U
tc7quvVEuE7iHt7JrNUbfQEMzcjE4KtmP+itEtErsotv91HfcMN0kvUpeDlx
ImGsin/dkkrgKg7P2wn3RQSjETg0fII/OaGcErBArV3qghJG0q0YcCXt/TRX
Wr73gYepYPwwJIYjDDaTujvFcTbKAYau8Oc6DP2qQRqfa2HYGmgX3YMP6rLn
ltBUvzKKtv2HsX6U461FFOVwu7XmoxxdNL/7dwxDB6/0jANfUr4knpjjoZEY
JNXLyA/yD1RnHaXGwyHBrtdnxIjFHuASFqmtoE+NuV3fZlOUNPB5j2bKlHcH
qKfW1PVj70eflZf66q0XhDPO8/YTNAcKQwd9Nul3Pf07wsqTtQyOmXApitw6
oBEIP6WWW/AVtfgU06hdLy+KCF8R6G5ZWe1EZLqOTd+1nTLWNfvpZpQtn5k8
keDXZF4/Yavgyv3aiEZW9yN8O/FiwfvThaouV6Zv29itzwFlnsAojgCuRm9d
FB5ZuZKKLAJbvx7N0pyKvFp/7kB7aWCcNaOXRU/yJ/jksX94cQecdpFuVfkx
tYU8dBSFit7rW25namxAAko4N5UqoPLhO4sdDCmFKXNQYaISjO5hNHWanCjT
nnGTvY1fC1VQN860leZLshGLzyQo6WNPPgd15rWavPiJND+TkoFSxSDOvmQ7
ECPUwD6M+rTU6/zp2DtN4uArLToT36ETrUH1vhyutyrap9D5kerghIGtKOFs
vlIFMRg93RPXMUId1eUnMknvPeE2m7ZTYfalAVpX6l+ZHEQWa8myr9HKrOd9
BSPLzjIPbaAYrvNdA4EfBTAeiVSnLQxx5VrKc+MD4Tw+zb+Rr1SpRmNhWx3a
C8zhtoiuigfokJTKw3vWGdY5u0P4Izo3aHP29RMGmuHmuEUN4Lg+zlv9vHJ5
EvA949QMbSOXPrNrcmrtaRjyaiA0VOk1bEZsBI+UNC5+rXchwPg16t3Ye5cj
LZav4X3K0d9keSzmrAAd2VhJywVtEGBdUG9ZaNDTgIHFxBETmumapUdRf5qN
FkEq+TYOjxQxl6+Q6txgggTPjfP0IEan2KJzWbEAbIAkhPAQwZ+9ewnmHF+a
zU8/a8asj2ahGdSPdiKtYVbYt80jBk2i3H5c4gf7zB/O+HYWs9PQdvVPdCUk
be6qFlXA04/S6iAN1QxymeRTu/VU0egaPHt+Cs7R3ephXKbYVWRgo+mxFU5L
yg/c9AjYY+wW88/4uv2RFnRX27QYGq02aorwZieX5oSbk07+vNhc/bMUT8l1
zehxnjuNWIMjK0xTbHtgzI5UpTc8yYGeeySUBBOniaqaDG6G291ilVtB5Xs6
z1254cAMrkbGyKQX/q2XMQVSe17U0Qyinzvoe0xB2i6AI8sP4aNlbx+N3QEk
ysjdts/7MXS5poRFAbaHm3cRfvNBaNJwMJZjcLL3djPD1BaxsaItYpHwDNHv
7r+8WAQQZSl3jxdafypC3U4ByV0zzCEipYrCus8NDVL3fmrAqdVw6BUWLFcU
l0xiV3JrS2Q5WzWkbIIKkWMbg74vMu9FqjjHmk4e+2AZ/xSbQdB9y1y6Y7nT
GGMW96A8wVuNzk5vjNN4IGBXYxo1y+U2cqU49puNd3S541pipsoPZ7Lnnpjh
+5hwMk5w4OhnOqH5Pu3FRSLDOFTZ5wuuOrrhtEkLemLkoU0YPvVNISPiwvNZ
PajZjOdhdYFQV/LQtDzD7NVmmJiRy/Yjy3qBnaf+wWDAsZ6ytbwbIRNFQALb
NE3i53RFDvjX98SFUBJL+YmYwRffFzNsme42JyztXeVwxUgzfktpezLc9z0u
Cq2paIJShtT6u/sb4igA19zdUtx03M6axOz4zGCznU9OWYtlGCG449Vt9bEj
uL8HAFAG3xQph1k2VNCo27ITkSJ45a+6aURkGG4tN5TYofZUBx8mCfBwlObq
noDTsngGG0G/ZDuLjYjDPsV8vXsKR1ypUSvg6DsuxC31HT8a8K5fODupbOtz
MH5dWq/5ohXwxYjGqkRu/uZYXJ2eW9m9Z/YnSE8uF+PG0IQLJ9pOzOzumEGE
uJZk7XMYP0iQ927OP3jL9WaP1QH0smLj86U9IDsUFHDq1BR58wwuEk6uzXZ9
ijeuuj3bPnpHbonOeOxGuQhISutZFfmhT3bEkI2Wy438YGcSWtHgUKkF3//w
y7Y5BDdkkg3Pqp6hEiGwO5Yj9YO5YO6+4inztLgTrlrK+o3U7a9j6g/NOpva
XuEvKAFkv7ldtr9hNFlfLcqF/PhUPKtEdbZ6oCwDKpXBA2EKABYceKkJhTfZ
A4KaAqAf+kz4NFsTspHSHHOy4KZU3xMU+82KO5Vpf31qwBibqhvy7ZUy7ycr
8ND4JrLK23EzqPbuuq608ux3/K61x20vAXOpkpcKaM9bh3juix/+4KG4Og9H
CVwFj694KZFqXy2mWQ6Nb+pABCGwTLZlhyhAEVh61IymTNYfAsNKEcixh58U
tnWzfm8mIpmbs2MlCJ3D9N7g8nY6yJUomkIYzRdakfnFlNyu/h1hRUavMwAD
/fvOEHFZczapCgV57e+oh+cSb0TP1W+YlFKVVWI/3BPh4k2J4WUf0w0da/o1
Rwmj/S6nYGD9SZauiPdvysYODR0g/8QOQmlKm3OWcFA/06NSLBE7V70Ks5bV
EyNhb0Uher58B7izfS8+LjU1SzFJ7X8oaVd6n7iSdmJXlxfh/OX8+jb0JbTM
ctCj5tYt2CM033XrWBPOBaNuVC8USnecy7SE4GI6NBBuVrxFk3P0213DgHHq
nSVxyhxijOgAev0tiInVcwTx6/AWW7WDtuBXu3KvWey8yCTv5sTp57yQw0mm
F/HjazvyFvX0OxE032HFTN3oPmCouIUxS7QQ/urJgxFyBYOHso+OtwrRsHLa
ODG6bT7LK2z2w/ogD1qLi0eSxSCxrhZH/ZYU3Qhfbq9ThNiO5yJOOmUtL4Uv
0I6WNM+W0UwKWcdSE4ZYYRc61DzRn2QBrc6qdaWwqEECvR0JqgHDpVpmL1ii
/jq1GTaJmH1b+EDxknaGmrYTu9Op8iqT5Kg4yP/6kuIRoG0XQRnerF6WWsXd
Jx5bJ4Y0BPyZcRlAQZlZLnXM65ydNy3bu6PI6ZSMwC0ZsmgDK3miaWEDZGwT
WriqRuGoG6iKWzs7R+xb3sLPLll1/F0/uD35fmh8qvInUTgHgSHGtlVazOks
CSIq0sReVGoXh2woiuTkAmdZ8wdNy7HBIhksUQRh5stgw0M3mAThb9IFqPD8
EYbFqT8XmxuK1NtHotGqDxXm+PK8tdfhnTpEOICbX7fZCp2mmVHw4ZS0+FPL
owUa7NJFotrVQuh+yCKMNeLXP6agFf1coxLNp9QQni75vW0W73wnnvhjD9GR
V1rRwCVdANix1ckYmTxa3ubKNrfeRa3n4Zm7dxapvBKkEnLk+8T8EN0nf+4K
4w9VnqPjItDKEnLYU4czVUmgY0yWwRtse/I7bVVh3Hp9lb0SZqPkR3L1tcBO
wc3DLTJ4kI2rOfz3xwILevjVpQEUjMcZaSZJ96/SxC9mH2BxLJHEm2JqFwTT
27OsQu7CoEzrOU7v94+SpTR2q61PGgtHmM7hLN/27LaYNXp85xIOHbRAaV9u
l6QUx4lMm/os9GZM0rABeSMK/3lW6cEy43dCE7fCz0NjCstppC3pak6HXZ8A
c0qJysSKD+J9t7T51VPkeyir2QH0HjDC1aG2Mw8WxDF3bJ4JMGLkuyGTDO/W
YcLMZBv8ZQVO7cIRFO9qvZMMhmxxkecPcjLP+j2j3J1GOC+FJ5uZup+CGMpX
SrbzyKJC4T/VRFlZnZuA25IBCoAgnaHdS0NugunzY8ciqpnv5GBJIh6m0kac
oyUDFLScdf4erNis+QwWO3M0cZKpO99YUbixD2JfwvDOgWRXcTmXFcycAfIX
Edn16urnEprupqo/ypVZ+cmHhBYifB6z3iyGYnxvOgnzDAiGV2/xXENakejO
xSsPy5rVDXPDxUqaAM6Q5oVSxWVnBsiyHPmnftP5nHFTGYsTZ1rlmrtaXENo
IFCtT60tauEptVFPhoccYrso5rDbMTaLHDdCiHYG5vtsEydSDetsatKW03uM
i/JO7+WcpU5XUHxIXi2CyRNXECm6WNKi61lk4rSFzJU8E+vtK8g8P8yeWOsa
lPowwlRyXZavhFOZ5Fz5S5sVzn+bdYb3hmVhGHu01vzyNdLJcrx75ORAAd3r
FilPmDg3qNFFg6vR2LkdppdvGpiZSF+JjpheZ7r39b1SS/fw5qS9WkcL9k1a
QUOQ8CPc13cZ9TAhhtu68sgRQFY3Uk/W0/gwJiT0mTDBU6qi2VbSdGuGsEYj
Ygt7p2vGZROw8JsqUBCrjLhpybAvxmVgShZtEw3u5DXO7sldZWp4Q4LcppVe
rRb1g2hEpXM7U4Kv6+yA59qLU8z4V4OA3MMGfZH29MuPdD8/6tLG34vpmdq7
MUPbJ0kMLblbiX2WuDTd75pC2S7iVBj3iLEu1vjlodz5SrSRBJMjf69yOE4P
H5O0gjWUDiodjSTa6OdEEqVxRYHRgCZOpMZ6QbAwFjkZRwWi4jtzDrr8tLgH
PSyVJ2XuUpljRCmNiFO51FMunFRIwC25fPjYRhup2I1vYXHsk7HtUyMNm73Q
GyzbODMyd7d2GWVSj8KhmnibluajOIDrqFqJzsG3V3+gc9oY7q7Es8A51sDL
dBuB99VQgrMUSpkJH37om4imS7WsCwluKvTXoCLKfaTuH3UvDmaT24VLSS+a
9zRDxnhmSanHvYfUiwzBYKUkXyIVDSpLQX23ExTMVvniDeZwIk2f7YO6Cj0h
TAziuHfhN6VTreoJwov6Xmcl+UXT57PjrJL0UR2zUmiU6rEX9DYjv+fUjdsZ
OUfhUdMZeSM2sWVC61ocnsv6LnJj6zL3w2LLioYjv1L+0JxdubmfZX3gwqgk
ajWgy3ijGcphwu5Iwoi4sQovDkrhK+JwrUjc0YBPj0sitrXmaB1GIuTdfouX
zQynuUBjj7FJv8+0zfI9nDmrtujhPSuxhao24rIzFAd73gSmA63RT3HcQiae
E0eqnRR54e11M56h1nix4JkJaei0TK+nH/OW0ChMsIgKj80lTmZXOd8L4NqX
P/RcXiYwmBVXfHvheqYT2fjWPDqSleJawYSPhIfw2/u0SVNkD5OGSHmOqnW+
QXTa0SMf9Spvy8CJb+ONKzrm/kGd+3veMwofL3rfEt4ZmpErAC61TpcS5Q6+
BWuDxqtHJ2vcI6LIhByzESyAXOF+0KZfz7NiOZ2vak6mJHtIjymtBQtD4Zs2
xYNGTnj1NHkn3enBw8ZHxMuIAQYZBcbNvv5Sq8mdPNuaubefYJyI+y5Rsbxu
e1NShUbgbrpCOxOU9qPHqL1NGGhXduiOCpMQisi8KCYIve7vSIA4B82eOU/K
JQnA6catJgf+1j5f2rSCGsHU1VnAQgFScRKVOLNOXBlr0lyo38Oum1TGsfkd
t9ywpKMtjMFQcLy1in6i4p7yk9oerK9979zpI4vW7Gdm+6LNxSnxpjo79HiE
d206L2pcjj8sd4415CfdbgXQbt43cXmGmbaxZaKPYRhn8i3nw7CgTRa4RVN7
PdS9h4bbW8Od5ETA9axQkoEKvVZLDUcqnS4WZIyvSx3ywcqRp8KHU2v+cjga
+Tbh8HZelZ8lt15wEBkoW+iI9C19l2zoOKD6fS3u+Wj9sZM5GD/0uZ6lzQTX
O9JUuFcSJywx/KAwhtnOhjeeSpaYX77jaK61vUW4whPcvCC7KT1NWhtcJ8MQ
Zke9XN1Bi58Q4T2U6ln53AD2kWO5FtSrDZkPeHmmXjCmgCb0QOSmAY4gre6Z
Cxit3VZrXLzxpy95jvWkz6Xs4nr4+C1+MZ1oDdOmWEzrQ+Rtr5CDhxjR2aOu
dMuuD4oAjw0nCW/y8QKC44Zd1bsESvh+NcOETZZPsgLRVh8G0aBEWdfCmeCZ
1pV51Rz95myIXXxMgJIiov4xE0N3cMdCOV72ipehmv3h3o4vpQPiv8lcX56H
uFDTTkRtLlFoKqaxC9P78XEXTDVY6Ty86Vyv4Ryl2d7Fku1TJsHyBPBcol03
C1jz1LRvLnK08/PB6lNvgduaXGjkqNXpPjxjznfPiLoEpxQNnTFE5/zGChI9
/Bb7dgVhbU9pzlXUU3czYv7JhoSR83jCsmzCJpfJprGgdTicu/1FfexQBPoc
LkzbXewXtYnThPUxP3FV8UYarJR13eJwsDExl1ZMUORvKRTEeu2eSLS8XlWM
Fzg84F70tfuR1Ye5t+jLrSWwtF+MZiM3uyqNlgTJv7mUPOToCe/oL5Cr4os9
VnRGx0LjCS6pTkUPUX2IbBrrtFPL44I1Ms9WWenlG36XzVis4L+vgyzY7WMH
P5N/SqG3nhUfDhzzpG3pKbdXnSyIzt4Wo2eednh3UNMp9HWCYcqDZK2oXJzk
oYMRH2YQGj7DDHtsRJ2+UK6zvWR2yKM7jLityv4HXdkef9gJ26Zefrdx/OI9
Ws19DwzS064jE629TjUGByeCGPL+MH4UCXGPwtS6ZdEi7Vbuj88r94XYQbjS
Eg3vpypCDWy1tknLhHwCDG/iHA9ohN48INT5xRn3eIYGf3jA7+GYHeGy316L
StU33xjZWztbGIG6bXeoeAeFuQjFUvTtQ82Lq1iwcEXyFlXhlLa6wE93xSPR
t8Ov7HIHRXSh2O+7SIc8+qL27jRbhBY1t5mQyojGuQfOnxV1lTZxW3HKvCMf
Wj6aq9cH5udDeSTIlxsjiwQndTvV1EjrRbJdL5KcUHWjfOGm2awSMr/5WJut
8L6SzK7WZKGpQVvydej5+9ueDlbtZ7pVbBR0Caq5GrlGTZaZ/Qhc9GPLtxu2
Flle6+cyRys4ntAZEhh5CJ5u3OvZuXyXha4DjBtFKz3sBk7zgj8FJbhhTO64
kWnT0VjuzPUwp2vS1I5xJ6dK9MJZ3i/IFDF3MzDIGrEL4YJXhhrziDrI5lgJ
f0i2+O9MEvHIE6vv6kRaJuegQk8pCSRREbvHqujtf6k0IX0geawyCwBXH0qG
90/EXAjpEwTkkiFdc/ReeBmZozY3wzTJws+eS0VZLU6F98Dj84hsng79/Lpv
BCefH0w37sByfPouWcs3W4+AIX1KURqERZTvvCkfP7QhJpwyScoV3tSgYycr
qcrne5Tl3yGVdsFY02Ldf7ZD/qHZC99wndMQVen+ldPJnY+aHi/lOciiFJ7h
s2z2KBM5abTwa2UBlsc6vWBLOlSxXPaIZKomTXTiujoYGN5GjriaZ61YjaV3
f//1lGPyQ0ZXeRgp/uB1/wxCznpdei+5yAR3RZND3F4/JvHFG8qfBs+nxgOF
hblFGHyHMFVSHBJDC7l9hC8jZaAhkggKgtxdFLioQYEU5zG2BuGU86/viDSf
pE9jX4Re4oHhtdMtff5GY8uXrhSvjpE3CeVXQO61E/yIlk+BKhKLdRtowdVz
y/OF5lmRUF42Q9XpRgtBO5RxoyVqoudjZcworrxvVLLplj1LGqQZrold0puF
Pau0h7w7ijUeVQlD5pIOgVin5oIv8oOoSif+BxsSsoqB0frn1HL8DX08Eufl
CCR9PzZY21H9iWEiqn6rNAWKeta8ihdqhwtcY3Qj+XiLc5W2jaRZqFidxh1h
L9rgLt0hVGc0UzbXvyH8TeEIZsMaVpEO/hS1/nP1vMRDo6UrMvNO9cyhM2jk
QQCvaMEXbhVopyp6STrIiGhYPHZFMwhXcB9PMpylFj9zbYgrnzb1ADP0K72+
1netxXakbcJSk2Utyysag9WJHg7j1Rr0jT9mwRwAOvmcNRos0yZYXwyFuPeN
mFAC/jHzdceHGm+1mxv6huquozO4NeA0DykSx4C71r/wYaTi47luB4+qGg4H
CR6samc/UW9HVBAV7zXQFzV4REoRPBQk1DLW6tCnOl92ryyoJIs9fm/VZ9hq
uHoIehAlS+Zh1XIV7ppXsNWlypXGmbe/j1fOhOd7G2hiWiosEqgpqbT6lBba
T4AZbxc4+GCWAMNAEZ3iyZutM98k/COfZeRyVAxeN9dQPss3u6azQ9HepnCw
FOxiUzCYZRsyruemd8gL5WOy/OMZddeTrOHbBdLcF+rogTfmpovhwvx4xuFX
nANPbY/t1aH1zOweJN5RbKNluIlLzmDvE3OryKiJrcS1zQnl4Mj0oFiOostj
T6GX7R45ppdRHEuYM3lC/5L2weCYexk6TH/0E9Wr6haasM6+5T66yx5freMT
IfYaRdI4DFjJpYXvlzmU8Oq9jteTGESePpuPvj5D5AB7hpuMl3Y1/uNTmueA
6282vMzFRuujNJL1G7+Cf15wXr/LT2JbFzMbFdJuy17sqVo4g8H3EgJz4dpG
aBBN2aWucFkIKV4djhfnDP6WEaq5IuJ1iWkr+my0mHk79jZD0U046/3iYFEd
4W7gR1Gn4mBVP184pRb7TgmR+KwceDFl3EAju4bPulOKNYvnWcyHi1c+vDam
Z7tP0VgK+z1DFQz2eekHaTghLXfDgbeNzH57eDD2JrFCaVi1E4HOsYITqyPK
v8xz6PPU5xYMPLChWL4df+xG21hhc/ss4qCqsRXkPSf2cZRk2WR44qnM3UnX
j+b1gK05OF1ZQrz9WZ0WPc18bRgDqMSzDZpDFjFUkE2h22z6kszvHxTxXO/e
fm7J0uGeRQ4jIAv7TSj6ziCF0K6IRZxdvovR/NeQsUHplPRb+Lt4brTx4tjI
GCCdNdW7cHRBRc/tFukRedcdY7TdD8j12qMSsCcepUqq3FZvNvWPmQeq63l+
m4ZaJSKtByzYjyUPgysl4ogya7ZZo2EXfyL/4tLigq/oeYobegkLTiqozpyz
QIBLmzzU7aAtdP7cJEVyLanXNyfkXuqODdWaJPnRL3U0UFge0GMiU9b/fPuY
uDVy4Tt6QWXeEfOQFxqR+AnOt7kvLchfwdbWQGAFHV4fQcRY0Rh13nRitjSk
oUo6g1k+AfMHEmc3WummvvFQYlqu1l42R1uv8ulHtKZtNaIWkcchFYP7SyyU
9gDtDFDKCSWZ4Y2rEzFRNCw6KSZUtf5zytAS85e8nl5AqP7OwU2GbmzZ2aDM
UHK3DtN9/io9s3rHBV2qTKCGk/Qn6DTOd82tKIbhl8fovmFlT7poIlTLwhas
wpbIqV8Kmqy+L/B3sf765fIYgdyy2oEV+1QkEvTE+tQR3ggr0vMzj3AhHq7j
jdOzEIrjC//Tu/6cKJqTmlOzcZWh1F7fYAp45mGKz4i/GXbEYHR5XNNnbczE
xRQQRdWMc2w0YduKkb9uIkgi8Ffd8eINWRYXVX66/fJINCkcp8niMjG2USk6
+2gv1WbSiGrsyEqSbuiIBCJ8NrM+Ll/+EQ8XvKC1LdcklNahMeW8SEAz2rfs
2gvww8QJpdcZL1Bu2EektjYR59Nvzq1wB8kTPNacti8hU9zgqi06pPKWrHMM
BsoY9PM1HAN+Rld/udJuvFntYVIHDL51tTF8RxWb8TBmLwklWs5vSTWfb36e
Cx4pZVc6erZyNidv1NyFFoGR/t3zaM9p9s0GX2mUF/bHloqxAToro4Vq/bv8
tymg73tuVtaLy2+FoM+DtUJFEBYSNA5ob3845H4foLs4QOz8+BpeW8QJ9diC
so9nAU0t7OTx+B0azU8rzKOsAhSbBrJYSSSyp20FvVclrkXhW9k5zrUxmI3D
x3emVAqlYPyyeLhkRNNqXuMtxs2AuS/sSNwu3MPHT6OP2H8kh7fbjYpN6Yyo
oVwwCEUmRoPsRffbRjQcATVt4FuzPsJ3MahB1Bzo2o7ziyQcJoWvnU3VcXAy
U6z1kiMEqTzHdILQ+GjFj+vrXHzExejBKZuhZp7TCkpm8si917fVGOska3Gs
XgRaiNi9e3OIVPZ9haLyYXhePSaogG/2zrNSZl8NfGkNLszI+6oDW6VZtC/S
L00NrimE64NboJLwR+zM9sWQFe5B2RmnlJ1f7eKIRmQM13pguDiNQfGC2etr
SPOY2tp9ULmYsZKHluK1vwn2vvFwjUkYWP7a6C1KOL8xikNxpiTbK6VrG8XW
lGZEKLVq5DQ/U2ddZwNGHilYGCS1RujEY0CHD7FWvagppAmUeN++z2956Ks+
Uis25OggNkc6ubXtIWxTRjz4+gDmeoikodeypHRMwV9LoNAothI5ImK59mFb
vp4WhAktRrZszeP+0Wo5ruE3Nxw9QP2OUlfsfjaEvViL7f/hD/L/P8H/Jyaw
sAeaubiBHcxc7JD/DxzEtKxlbmRzdHJlYW0KZW5kb2JqCjY4IDAgb2JqIDw8
Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovRW5jb2RpbmcgMTc2IDAg
UgovRmlyc3RDaGFyIDM0Ci9MYXN0Q2hhciAxMjQKL1dpZHRocyAxNzcgMCBS
Ci9CYXNlRm9udCAvRk5LV1VCK0NNVFQxMgovRm9udERlc2NyaXB0b3IgNjYg
MCBSCj4+IGVuZG9iago2NiAwIG9iaiA8PAovQXNjZW50IDYxMQovQ2FwSGVp
Z2h0IDYxMQovRGVzY2VudCAtMjIyCi9Gb250TmFtZSAvRk5LV1VCK0NNVFQx
MgovSXRhbGljQW5nbGUgMAovU3RlbVYgNjUKL1hIZWlnaHQgNDMxCi9Gb250
QkJveCBbLTEgLTIzNCA1MjQgNjk1XQovRmxhZ3MgNAovQ2hhclNldCAoL3F1
b3RlZGJsL251bWJlcnNpZ24vZG9sbGFyL3F1b3RlcmlnaHQvcGFyZW5sZWZ0
L3BhcmVucmlnaHQvYXN0ZXJpc2svcGx1cy9jb21tYS9oeXBoZW4vcGVyaW9k
L3NsYXNoL3plcm8vb25lL3R3by90aHJlZS9mb3VyL2ZpdmUvc2l4L3NldmVu
L2VpZ2h0L25pbmUvY29sb24vc2VtaWNvbG9uL2xlc3MvZXF1YWwvZ3JlYXRl
ci9xdWVzdGlvbi9BL0MvRC9FL0YvSC9JL0ovSy9ML00vTi9PL1AvUS9SL1Mv
VC9VL1cvWC9aL2JyYWNrZXRsZWZ0L2JhY2tzbGFzaC9icmFja2V0cmlnaHQv
dW5kZXJzY29yZS9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Ev
ci9zL3QvdS92L3cveC95L3ovYmFyKQovRm9udEZpbGUgNjcgMCBSCj4+IGVu
ZG9iagoxNzcgMCBvYmoKWzUxNSA1MTUgNTE1IDAgMCA1MTUgNTE1IDUxNSA1
MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUx
NSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgMCA1
MTUgMCA1MTUgNTE1IDUxNSA1MTUgMCA1MTUgNTE1IDUxNSA1MTUgNTE1IDUx
NSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDAgNTE1IDUxNSAw
IDUxNSA1MTUgNTE1IDUxNSAwIDUxNSAwIDUxNSA1MTUgNTE1IDUxNSA1MTUg
NTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1
MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgMCA1MTUg
XQplbmRvYmoKMzQgMCBvYmogPDwKL0xlbmd0aDEgMTI2NQovTGVuZ3RoMiA3
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
dOEXAuemTFX5y9e7SEcpI/qaFUcy/FlEPYQVr1IbTVONyWqAsoAXdV/vzVhT
7LU/JI01Yxjxvb4Upqyj5f5/vDD/V+B/hICVIxgEd3OCguAOmP8HnwMy42Vu
ZHN0cmVhbQplbmRvYmoKMzUgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5
cGUgL1R5cGUxCi9FbmNvZGluZyAxNjkgMCBSCi9GaXJzdENoYXIgMzgKL0xh
c3RDaGFyIDEyNAovV2lkdGhzIDE3OCAwIFIKL0Jhc2VGb250IC9YRldZUVYr
Q01USTEyCi9Gb250RGVzY3JpcHRvciAzMyAwIFIKPj4gZW5kb2JqCjMzIDAg
b2JqIDw8Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50IC0x
OTQKL0ZvbnROYW1lIC9YRldZUVYrQ01USTEyCi9JdGFsaWNBbmdsZSAtMTQK
L1N0ZW1WIDYzCi9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy0zNiAtMjUxIDEx
MDMgNzUwXQovRmxhZ3MgNAovQ2hhclNldCAoL2FtcGVyc2FuZC9oeXBoZW4v
QS9DL0QvSC9JL0wvTS9QL1MvVC9hL2IvYy9kL2UvZi9nL2gvaS9rL2wvbS9u
L28vcC9yL3MvdC91L3YveS9lbWRhc2gpCi9Gb250RmlsZSAzNCAwIFIKPj4g
ZW5kb2JqCjE3OCAwIG9iagpbNzUwIDAgMCAwIDAgMCAwIDM1MCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDcyNyAwIDcwMCA3Mzgg
MCAwIDAgNzI3IDM3NyAwIDAgNjEzIDg3NyAwIDAgNjYzIDAgMCA1NTAgNzAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDUwMCA0NTAgNDUwIDUwMCA0NTAg
MzAwIDQ1MCA1MDAgMzAwIDAgNDUwIDI1MCA4MDAgNTUwIDUwMCA1MDAgMCA0
MTMgNDAwIDMyNSA1MjUgNDUwIDAgMCA0NzUgMCAwIDEwMDAgXQplbmRvYmoK
MjggMCBvYmogPDwKL0xlbmd0aDEgMTU0NgovTGVuZ3RoMiA4NDI3Ci9MZW5n
dGgzIDUzMgovTGVuZ3RoIDkzMzEgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNv
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
HqpKrWGXLnZh9iN6A8fhX32scSysYe/H/zF2Fddsqi2/xcGrzBKdv8aYgERc
TWQ4gWsIlz3TGR81TkUp8xgVj1iyVgZHUsQXKnbDVezeG/GodBQLJ07VqIwe
losnnsdJwDZgZrymHsamO1TVd8lta+x9R2xblna7x5ZJd7rUpBMJ9w5nugiw
BL2ZSLvQMvYhH9wKMGMRvmCsCBahS9mhnIElXrUDML6Gf21WtelcKdCVhL0W
YWc8j6m85hugwPkz7oNTiSfvjxjJeidpzqNdh1n4cZcPSJ9EmpKKPpzP1Ecp
Npw3G49uE4toUzsLfkuNiRpdnAiih2tWK11NGK9nhy5nxH4N9Gvie3ccYz36
hcsSI/iitZZM+gThuaczIgGT8vO8X+UR3B0ZElyHLsvHY2QqM4WUdgPojZyT
WOHyaXhctynqLBfiET+1IuYPUeqSP/Sp4B2X3l9K3X4JycNbSuBXprYGKMoq
cUQKNemTUUYlTcRE+8Kq4NCN3xGcgAA7KUwMMK5GjktzxlPGQpJN35iU7gLO
2FikJti4c/fzSOlHsrwln1bhnkWZdSftJaaxcCwwLYsevZDv5JUZtnhKz/BJ
slREOhcTO43FfMoqtksNre5Xl1ECVCakTU+aqOI69b1XkekvIlrKwGMyWh+V
5Y4qD3rl6meIBggqFE2+mStqgacCS7cmTMDKi60q1+eVDah7VrjyknxwBVGS
B6rKqHbrRE4Kcq+EH3HJzlkSf9j+6L+Mah30DmMPCkAmZMp4AFiVGSrpTz8i
rTIlvymjbPt+locmX6XUaUSG59srfYL25fi9T5kY3wedY1MTaNNjxtyHqDW8
feN8Mr4t+7Iu5t+ueL2pZUo3jKWi8KeVh69qwgqGBKGTUsjOhKLcj70WWRGy
5CyGF9POHYYCs2FTOBlCHRTnxZcCU/W7XY2cUkvx2fRsed4lnYmn4lPThKBX
TKq32cRWhAM40R4sj9eaaTcIeZ3PCso9vZIdEHbnvuTEXmT6wEvkbOh26S6O
Xch0ooi3Fj3FaxB5CpUF8CqkClSR+2hOGwzimYZr2OdZ6bxSIGBhQtKuXApn
mG8zG0J1KwCJTgQ/fGBzjaPjK5OHxYvQ7FI26FmEdxKs9dhRm4Fl0c1EzBQd
C2YicdJdQa8CPac/aIyJ52Tawtaz73WVBr3BDqq1QFSaxzLR2jwdDCDLYBpD
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
J4CFRyfRSec+6Hw7vUWymcQof3K/7At+4Gk5T9mQWujpVTpDJ+SIF4Ov7QqN
cf8pI6bRguhWvQn6KiPCg3FcU3Ej1vBz3jalJVobRhMvMMI8lHym60gyT4Cv
uPK7Ld1305DdNJ1vU042xHV6i+AVYqKA+7ok3Rqzpg6+dju/ka+sNlGW0Vq7
9Kb5lLpL9XLcjZ/a69uajhOfN5K6e/qOXc+OTearZZAl+LiKcW2Jl+HKE5mV
fWanlnxLwmywo6hk1IwID5JFqx2HrqYHtsnLaCK+B/6SVktSVB5Ae3pEGBFu
rKO3lI/HrgUJVKD67GGnW4KfsEu3spvQhlD4nusw8HffNnaMXSRYYJfb3sgZ
DZ23bfYQiRiOQwtKjuHVe7bK5hZmLKM1xo4p2bJpFkrp9YhJPSMp6ugHTyV2
Dn9+vG2LVKHbWMS3HuupFsSO5OgnZV/qwSRHwnTqqV00ZWY5tP/iWL8j8Ajd
uyTTojsuGMAMU5CC0zxq7Zzz5e3jG+hfloFLSRZ2XiukfIxEG+Cj8/M6l+Za
KN6yyhTRurUTMcfYhuOdZOdjUQe3JsCgQ9tGw0CNqGp1p4v0rsfrSdTzzaMP
CnsCWgdUlpy7CKw+Hh6EJoEjXBQPpzXiKNWA8fTGxoohruJNZ1knA60FSinW
nsfVXw6NY61lZPvkrJ275Pnr2+m/o4kdU12E9C4r+leMxEeMqXsbOn13rTzj
ts6rnn3prPYKZcN68EsNHs1UEPUZEdA/DZodo/HcNVUvWFzBOGdoa/PvP7f+
shVMmb6o4KhjB/Tu0c5eB6USqoSTRGrkLU895Kqor+MeLz9U5wvXGkCdKoKf
21HT26Vm9j86fWutlMqudPLiG6PnFJLvsBjbEYKJ23ZJU6PBQvZU+T1PpRQY
SEzIKnBIcuxsIqa8ULkZun6sTgwaCW6LjkqQDbOIGXh/3VqO1BonV1JhXtgL
l96ULhqF923g65z1ry1HunI3orLzHqOKjXoWPZhZfeky/qvfX0UvOWq/ec/e
0IzYkCXOcPigZ6vGke52A2O0WrRgV8pipXh7xmuHRtbRMUljD8vS3JgH1b1F
Pb+g/ZQ4spGLO0PfgFfgw6sH/jbgrW4ckowf6nS2n3gU6FDZlZyPXnMvZoHu
HL8N7VNub4gtGxZXocbsOHQrOVDIZ8elRlQpEoPL+IZl9bBHx8Bz6S3ZP9ts
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
DsmQ5CUyj0h/SvsntXGUpo+hxDrltRwPWccXpN+qJF1g+H0Df+QS5d4N4hBs
6Gbn+D39tLsfXV/QQnVisC4gJaxhPfa4pL+cDPH72Iryxu2D+Gq32zGNhyTn
h0BM0k9wYyuMAXL6ptaFlQQLxSorrAybaOQz+gJYQVnYr/g924PehGWNQqNv
lKghqmlOd5wiCOIr8ZSlvg+jENqybmqCq3R37mb21UNCs2NizFFwUzTYUe90
V9B6j4TsBjpzRJMQTpDlDOlMXDszQMD7YFAp2zwC7za+tWyodrpbrIdl+Fla
6rkGURWJWHqvhRYg5T/RYs71+Ms0jyxJeX8SjuneBXo8Q8+aSIkd0E4urDpn
ZLAzgrl7rgZ5p4WkB+thrne8U1end0296hoSo0N7Utyu1b+JkDZZ4VdRPv8M
xfF/+EH5/wX+nyhgZgcyAbs62puAbVH+F2yKeJNlbmRzdHJlYW0KZW5kb2Jq
CjI5IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovRW5j
b2RpbmcgMTcxIDAgUgovRmlyc3RDaGFyIDEyCi9MYXN0Q2hhciAxMjMKL1dp
ZHRocyAxNzkgMCBSCi9CYXNlRm9udCAvQlFLR1pHK0NNQlgxMgovRm9udERl
c2NyaXB0b3IgMjcgMCBSCj4+IGVuZG9iagoyNyAwIG9iaiA8PAovQXNjZW50
IDY5NAovQ2FwSGVpZ2h0IDY4NgovRGVzY2VudCAtMTk0Ci9Gb250TmFtZSAv
QlFLR1pHK0NNQlgxMgovSXRhbGljQW5nbGUgMAovU3RlbVYgMTA5Ci9YSGVp
Z2h0IDQ0NAovRm9udEJCb3ggWy01MyAtMjUxIDExMzkgNzUwXQovRmxhZ3Mg
NAovQ2hhclNldCAoL2ZpL2h5cGhlbi9wZXJpb2Qvc2xhc2gvemVyby9vbmUv
dHdvL3RocmVlL2ZvdXIvZml2ZS9zaXgvc2V2ZW4vY29sb24vcXVlc3Rpb24v
QS9CL0MvRC9FL0gvSS9ML00vTi9PL1AvUi9TL1QvVi9hL2IvYy9kL2UvZi9n
L2gvaS9sL20vbi9vL3Avci9zL3QvdS92L3cveS9lbmRhc2gpCi9Gb250Rmls
ZSAyOCAwIFIKPj4gZW5kb2JqCjE3OSAwIG9iagpbNjI1IDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAzNzUgMzEzIDU2MyA1NjMgNTYzIDU2MyA1NjMgNTYzIDU2MyA1
NjMgNTYzIDAgMCAzMTMgMCAwIDAgMCA1MzEgMCA4NTAgODAwIDgxMyA4NjIg
NzM4IDAgMCA4ODAgNDE5IDAgMCA2NzYgMTA2NyA4ODAgODQ1IDc2OSAwIDgz
OSA2MjUgNzgyIDAgODUwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTQ3IDYyNSA1
MDAgNjI1IDUxMyAzNDQgNTYzIDYyNSAzMTMgMCAwIDMxMyA5MzggNjI1IDU2
MyA2MjUgMCA0NTkgNDQ0IDQzOCA2MjUgNTk0IDgxMyAwIDU5NCAwIDU2MyBd
CmVuZG9iagoyMSAwIG9iaiA8PAovTGVuZ3RoMSA4NTEKL0xlbmd0aDIgMjc5
OQovTGVuZ3RoMyA1MzIKL0xlbmd0aCAzNDA3ICAgICAgCi9GaWx0ZXIgL0Zs
YXRlRGVjb2RlCj4+CnN0cmVhbQp42u1SeTyUa/+WrCNrHaqpPERkYmYww8hu
bMlYSkhojAeTWZgZ+74rRcghS4U4KZIlIstkDYkUsldkSZElW+g3Oe95z/s7
58/3/ev9vM/z/HFf3/u6r+/1XN9bWsL8jLyOM9UJNKBSGPJIBaQaoGeqa4NE
AEgFBEIXIi2tRwPxDCKVgsUzQDUAicEoAgagE2vB+tRQymoINEQa0KN6+NGI
rm4MQFbv+E+SCqBDBmlEAp4CmOIZbiCZpUHAk4AzVAIRZPgpADokEmD58wQd
sATpIM0bdFaAIJGAM5HAAJxAVyIFAv/pyZjiQgVUfi87e3n8seUN0ugsU4Ds
js3jAMukM5VC8gOcQRcIHEdldQNZXv4Ttv4qbuBFIuHw5J/yO0n9bR9PJpL8
/sGgkj28GCANMKU6gzTKX6nW4O/mdKmkv7UxZuBJRIIOxZUEAojfS0S6AdEX
dDYnMghugAueRAd36iDF+a8WWMHtGICbWdicwdrA/jHTnU1zPJHCOOvn8U/Z
n+wdjPwTs9KhEX0BOwQrXiSLyHr/WNn/pZk+hUB1JlJcAUUUGsDTaHg/COv2
sBAKCEACRIoz6AuAvizHcAUKlcE6ArAiCQJcqDTIz4GiUQBc52dpB7EmBMf/
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
3cerd9naptduxdi7w1BXSInu72yWNNAolfdSWkvCC7VlmAEdjPBG3dZgYM6F
AO/ki2WolJPC0XNSCCktqAXUXVxbtCABd+5jQoig+40Ltg8FN1S47tbwVF23
q4z34B8UW6kRPiyWHavpaBjprsJtrd+K/9ZBuOrrWVr42nGIzVBV391xXlKc
w1PsvZDCoM8+jj0HDxnd5n0tjpRS1TkV85Sjb1+iy+CemP3dezQCM+Lq91Rl
DSk2layuwOWzUj/lGHVZB6Qbzmmzx1n0qRQh/s0H8j+B/woBAgnE0xhUMp7m
Dvk/tkHX0GVuZHN0cmVhbQplbmRvYmoKMjIgMCBvYmogPDwKL1R5cGUgL0Zv
bnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNvZGluZyAxNzEgMCBSCi9GaXJzdENo
YXIgNjUKL0xhc3RDaGFyIDExNgovV2lkdGhzIDE4MCAwIFIKL0Jhc2VGb250
IC9PUVhTRFgrQ01CWDEwCi9Gb250RGVzY3JpcHRvciAyMCAwIFIKPj4gZW5k
b2JqCjIwIDAgb2JqIDw8Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjg2Ci9E
ZXNjZW50IC0xOTQKL0ZvbnROYW1lIC9PUVhTRFgrQ01CWDEwCi9JdGFsaWNB
bmdsZSAwCi9TdGVtViAxMTQKL1hIZWlnaHQgNDQ0Ci9Gb250QkJveCBbLTMw
MSAtMjUwIDExNjQgOTQ2XQovRmxhZ3MgNAovQ2hhclNldCAoL0EvYS9iL2Mv
ci9zL3QpCi9Gb250RmlsZSAyMSAwIFIKPj4gZW5kb2JqCjE4MCAwIG9iagpb
ODY5IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgNTU5IDYzOSA1MTEgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDQ3NCA0NTQgNDQ3IF0KZW5kb2JqCjE4IDAgb2Jq
IDw8Ci9MZW5ndGgxIDIxMjgKL0xlbmd0aDIgMTQyODgKL0xlbmd0aDMgNTMy
Ci9MZW5ndGggMTU0MzEgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+Pgpz
dHJlYW0KeNrttVVYXM22sItbgrsEGgju7u7uGhwabdzdJbg7wd0lOMHdAsE9
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
OlZsz7Y3/y1bTHr5jb65P2gSn8aOuVL5d3YNvUMn3a3JUaD1mMcRUU7OFXyZ
SRIXi9KTZDWXqELH0IfZzl4L5v+Hf0j//wL/n1jAFAQ0dnKxtzV2skH6P/LH
yFxlbmRzdHJlYW0KZW5kb2JqCjE5IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9T
dWJ0eXBlIC9UeXBlMQovRW5jb2RpbmcgMTcxIDAgUgovRmlyc3RDaGFyIDEx
Ci9MYXN0Q2hhciAxMjQKL1dpZHRocyAxODEgMCBSCi9CYXNlRm9udCAvT0hC
TkFQK0NNUjEyCi9Gb250RGVzY3JpcHRvciAxNyAwIFIKPj4gZW5kb2JqCjE3
IDAgb2JqIDw8Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50
IC0xOTQKL0ZvbnROYW1lIC9PSEJOQVArQ01SMTIKL0l0YWxpY0FuZ2xlIDAK
L1N0ZW1WIDY1Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy0zNCAtMjUxIDk4
OCA3NTBdCi9GbGFncyA0Ci9DaGFyU2V0ICgvZmYvZmkvZmwvZmZpL2FjdXRl
L2V4Y2xhbS9xdW90ZWRibHJpZ2h0L3F1b3RlcmlnaHQvcGFyZW5sZWZ0L3Bh
cmVucmlnaHQvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaC96ZXJvL29uZS90
d28vdGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9u
L3NlbWljb2xvbi9xdWVzdGlvbi9hdC9BL0IvQy9EL0UvRi9HL0gvSS9KL0sv
TC9NL04vTy9QL1EvUi9TL1QvVS9WL1cvWC9ZL2JyYWNrZXRsZWZ0L3F1b3Rl
ZGJsbGVmdC9icmFja2V0cmlnaHQvcXVvdGVsZWZ0L2EvYi9jL2QvZS9mL2cv
aC9pL2ovay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei9lbmRhc2gv
ZW1kYXNoKQovRm9udEZpbGUgMTggMCBSCj4+IGVuZG9iagoxODEgMCBvYmoK
WzU3MSA1NDQgNTQ0IDgxNiAwIDAgMCAwIDQ5MCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDI3MiA0OTAgMCAwIDAgMCAyNzIgMzgxIDM4MSAwIDAgMjcy
IDMyNiAyNzIgNDkwIDQ5MCA0OTAgNDkwIDQ5MCA0OTAgNDkwIDQ5MCA0OTAg
NDkwIDQ5MCAyNzIgMjcyIDAgMCAwIDQ2MiA3NjIgNzM0IDY5MyA3MDcgNzQ4
IDY2NiA2MzkgNzY4IDczNCAzNTMgNTAzIDc2MSA2MTIgODk3IDczNCA3NjIg
NjY2IDc2MiA3MjEgNTQ0IDcwNyA3MzQgNzM0IDEwMDYgNzM0IDczNCAwIDI3
MiA0OTAgMjcyIDAgMCAyNzIgNDkwIDU0NCA0MzUgNTQ0IDQzNSAyOTkgNDkw
IDU0NCAyNzIgMjk5IDUxNyAyNzIgODE2IDU0NCA0OTAgNTQ0IDUxNyAzODEg
Mzg2IDM4MSA1NDQgNTE3IDcwNyA1MTcgNTE3IDQzNSA0OTAgOTc5IF0KZW5k
b2JqCjE1IDAgb2JqIDw8Ci9MZW5ndGgxIDEzOTEKL0xlbmd0aDIgODU4OAov
TGVuZ3RoMyA1MzIKL0xlbmd0aCA5NDM1ICAgICAgCi9GaWx0ZXIgL0ZsYXRl
RGVjb2RlCj4+CnN0cmVhbQp42u2VZVSb3Rag8eJSnBYI7u5etLi7W3AIBIfi
LkWKu1OsWHF3d4fi2uJWoOik351727nzc+bXrEmyst5nn332ebLfc95QkSmr
MYmag0yBUiAHFyY2ZjZ+gLiCKhsrgI2ZlVUMmYpKHAw0cbEGOUiYuAD5AWx8
fOwAKaAp5ALy4efi5OdiR6YCiIMcPcHWllYuAFpxut9JPABReyDY2szEAaBg
4mIFtIfUMDOxA6iBzKyBLp7MAFE7O4Dq7xnOAFWgMxDsBjRnRmZjA5hbm7kA
TIGW1g7ILL+VZBwsQACef4XNXR3/PeQGBDtDpAC0/2jSASCS5iAHO0+AOdAC
mUURBFkNCHH5v6H138WlXO3sFE3sf5f/3aj/bdjE3trO838mgOwdXV2AYIAC
yBwIdvjvVC3gv9wUgObWrvb/PSrjYmJnbSbqYGkHBLD+K2TtLGXtATRXtnYx
swJYmNg5A/+JAx3M/1sC0rl/FFhENRU130sw/Oue/jOmbGLt4KLu6fifqr+T
/2G2PwzpDtjaA6DHCmkvGyQR8v73lcF/rSXpYAYyt3awBLBzcQNMwGATT2TI
7oEQF8CbDWDtYA70AAA9IMIszA4gF8gUAKQnPgALEBj59w2F3HMWi39i/0J2
CFr/Bzn4ACxOriBID/9p1b/DnJwAFjOQvb3JnwgXgMXK09EK6PAnxA1gcYRM
BJn/J8TN8bsc0Pn3hv4ThEwV/UM8ABbx/xAPZILMH4JUlP9DkEyFPwQxVfoP
8bICWJT/EKSK2h+CyKv/IUhNzf8QZIey/PlRfLwAFtM/BFnB7E+jWCFLmP+F
kD4C/8LfffwLIQaWfyFEweovhHTA+i+ESNj+hRALu78QomH/ByHbisXhL4Ro
gP5CiIbjX/i7/38hRAP8F0I0nP9CSGdc/kKIletfCLFy+wshVu5/7SKIlcdf
CLHy/AshVl7/4P9+bMTEQB7eTOxcbADIF+vvNvMB+Lj5fP7XTA0Ha8g+kpEA
cLGysvLwcfwTNXMFg4EOLv88qyBn8t9sYQ05wUCgB9AMeXkBZCYQbJPSEFrq
K1kwVQZPDy1m2Rin+LVrth0laCke2q54RM6Jfr1W+748HRt9H36f1P3xjXNk
2weVcamzAKe41PnnfTfj/XSv5jfal+kKnnuO5LdBRxitDXPXx1zQSjPro6WJ
OoX9WecDR3nKtBLqB69WyaC69dzqujOCuXm0pdLtNMJCaqk5yFQxU51KwznD
1twxEz/BrU0G+dqEITYxfLsAtbm+vi9AzE141r/FjcUyayPlUN2mx1E9EDku
KQzDxKh56RuqepcBsFQDA/bhVxBVR2SCsrFDq7K8iCSNps/xJyTDFdzOGJvb
tMmeqLgN1ot3jTgYjKwKZZeKWM8/FYAqPtL8QvR6PgQk3/Hlt8kl+FFu+p99
wEhwyfuoqU+nC0+G1mxDga/bn54xhePFhn6dqUEk6otM7iiS+OLt+i7dQNSn
2BnZegfz3kaM7tFXyRQFo29AUPlHNn52PYm8XJ8qPpiFJObdxZZYjCdz1aa+
rvJstCqWwuOMgjrMh06q12tYIDiz9Xeqn7+oNYjm+wbsBiR6BE9wWbyRwRXJ
y0amD0X1NtEIdWIV2q9EKEFXlETHR3Bz22+to0+nrGgTrh7x9hJ4LlE64Rt7
sFfXq23ryzbESzF/VZ6VqGE3d45IeaaVYQXVsMpfFYwiMhBIC+aOERBzWUMY
4a6KNZPqfiM+CB6jZBEgY5RbhP7olPdZPj3xBCqh6AGodb3pivm+ahGQelwA
3VRphYWRypO8F3CBgCOjsqHnCseez/pUUO+qy1t/kEJf3k2BkEuU9nhHkOXU
9O06SbnlMPOi+UPn4FiyTMxYQhQRPmaDI9DnB0WxzrcwLRxvHGRpBGfag51f
vT4E4bXBceLQkqibbbinh1C70eNm4VePAmdLy31Q0HpADBY1e1hN6poXZOtF
9sG8IHszfdYu2xNxGmdHur0Wbdbm75HvKHvZbWaulN7Xv+erC6f6YpF2O41/
KC97LPGu074MKm39id2UK1nfzNyTLDDq0vp4yIvhbfQXO4+GPZPqVykdDIMj
7HVq71xvZN780Jm+4ZISdrLMVvVTkgS5y9HfPV8tDQiwRKU9Yzi3SHydxC3G
fk9SMJg37iEkXEcqO7EHcM2wkZew2F5Cvx0Mtf2CsJ0Hh1HFtPVk82S07FvW
gJNklfK5zUMxFViN/r0uIz4m3Fjm4johEfZwpYlfIZqDmZysKhYkK6Ou/Lah
mDpyGOQYT2kEK7egIbbxvs27ZcGSZL8qPmw7ddSrvChGpL5u8LsFXncJa2Ep
Tw9wjLZE+CRWMIXY/mcRsomek4ga++Yk/KD6k1s86Hj3G+0rDnnOrW3R2Jc3
EnRF5uUhfiQUHB9cD+jMdU9U69+y5dD4YSxGDM3/dDgwoFEiM/3Jn5uBC+eJ
RxzFYrR6CAV4Giwika2GI2J/f+Rr4U0rtqBrSKDgHDTXCCuNeLO7w3gG3viS
aeyM+s0urHjeCTNSxzpCU70L2Yi16A76m2QKB88bOTr6OW6f1VCnY+nd90Oy
WF3jHGSuezQxuZahsHf6GKzYlTW1ZWu1HD7NONqoZks+o4dQ349OtwOmGJpD
V3/hLa6KU+GonDUFLPaU50GtZyG8OiaYiz2i+2HVEqpHZl5k0H59OvFLoRDV
lFiUY+Drz3KDz8zP6jOJbh83yda6Pw863H5wcE8iBLgvTiDTLhGPk3xM/GmU
d0k0p6SHQ4rMk8UvdZlFQfZQfK+y26nZvt+49naWy+AwWTw6Dte2kzZmupv6
Y4fpybezD+JdTljSuWvE5cQI0gjGzngCxG+N7Dy0UeurihtZsKHkBqFyQOkJ
M2H+qTVXtDZ9cS4JZ2un1HtaRmAfwWyVeQSaiO3lJZmIg7BPxyIqz3pGBtti
Ae1Vx3hdpkSvAsBSPqyUBZh4WYWt/mUDP+FVtQIMksxlSb5OSbpsVF+O66oQ
yv5qse+R4wriuUpUNMnoGhBWftMiKZCsAW/Qx23xUjzz05C6ukne7LCit8Sm
/DHnm6ePBOuKhObwCCWKCUKudtqV5HbZ82cP+YlGpxmagF50HetTVixrtLEG
KsYJ8SONeW+DAg4iXIVPeGL1hUKsHCdsYxksXw2CqX5uoFs2B7E7ExaoG/Ot
I2GQSBF99jP9IIGKySfobivkyDvkfuZae+qxKW90tNJuRdpDG9sGRReyWlsK
f3zEtGMHTgGHOY1qA3kFG42ZlCbPI5q4fbunn/ofHh1757+PKSm9Dr3QoLZ3
4q5s84qOZdAf4AVc3Ehr7xjaZCtVuB25lpfNsNHrVt0mtxssFei6V1oE3khA
ZRunEcWREX7loZFI+Qm7vAIf1vviHb6qHJVawl9h7iR+PddT8sNd0LAIOm1+
tqiKQuW6IeJTbogjkSxNrPzorC58hnYuI40vDbN43ZPOp+7+FaKdhzUEOpKO
4btojpIlzrFRSi06RxNf7YtA8zH/x00wcYYHpYSE14PdbJE1Vy3LA2NQQIjy
FuPOBi6yh6V4uuyv2XJhlghb/+NDEC28dSoffrkPOEbKZuXy+6o71GDkhWJQ
sttuHormI3RC6vel1nzlDej3xzgkciJcezr7T34m1o4F7IxIpT4yLHmA+Cms
g41fDPzHA6ct2Fql9qO9WKY1KlaNHRyLIgoa+uBPDyYLVVmNb60o9X40M7K7
M8Qa3BaoJN6RdgrN+8AFClloZumnWs6jhEy6/8hTZ9DLvJm9gycLseYt9edE
PRHeGi7O783+FCBcwfLaNaDLR0d/PhdD5GqUEEcujCSBueML7xdVhGhmrSjD
/SeCoU11tEYsTOgC+3fllYvREcljzIexL0yakzdytMrHD7eGwh2FwVf9Se1j
XwsTPvgyqdRrBkWYBAtPpn26B1P7qBl2pXa1IaTXIMyZ80x+cRV4W0wiv1W9
sEI8JJ5fcXFI0cU4tic7z0N4vCeYfkYoKc1y5elwi/cgISZqQLLKIqUeryT4
eNkHshhiQy8jzOHhlRo7dy+5lN76vFL2+o4j/DKY2ebGc52tIRx00kD1geBc
ErlcKIVpmmiPJQv2JqkB16CxBY7C9ItDXZFEjYIAzTWKhxUqu4nu14qZkvWc
5gxO9nASAs6sCO8qLMsZwQBRSbgqXr/7u/Ut6VTae+Q3WMn7NofogcP7YdeW
udT45fvSFMttLcNDJ5FfIzo4GJreZl+cisfbb5WfrAHfWmzifjEfjg+UUd68
HZtEdYl+XjrwfSc9id2H2Zgnuuv5Ky13WMxtNZcQ5fCXq4ye9S2O5BszaXg/
LA0our1wCkSGqdyBb7p6P6/bnvyLP+cCL1iizob4eaLw3ICr28gktaijI0hb
ePDD2vfv3fziiDIkDQLupNni5/yoKIKFzQ/hfqKhpc76Mu0q7/g1UifVWnHx
G8cz4x6J4cLp6rDVYCAYyuMSmWJTQUlgaijMDtDbzs5sxHx+SRxCMbVIL1ok
KrcHirRTo1lHBkrJKYqKlyo4BNZUWybgvE1+w3zxvilD3zKx9/yZouP1aNEv
85q8BtZ0FZl2CnIYeWEcKRmd1w/GKKllzL4wF+se2SRJ3hXxWSBuEfInnvcs
qSaTdntL5aqopw/CdSp1aOYpNFsiCZ28lHMBQW96PJu4iTEXYwnOSWjqhhH5
FGQOO6sdjkJgYWPMYEIzJDDIXr3eaWcK7Hm6vrUJp8nMG/6AWejvVUr19ZqL
ao9oOQcUgk/xditN5FU1u9NdRPv+M2/OhkgmlTDFlft8w0ZxCybRAvh5ej5D
YHLL+Zc7OWV6Yd9e/iTieh2eKFKm08CWBn4lpdwo6mwFRrymDaouycXhThwq
wqm3UjnWi7RduhI7+zPNIxLDjLkijMBZGmFJ/ZRoMbqK0U6RxFLWWh1Y0oaC
qfys3vNZOBEGWs7uK9L23Z5wUf36kQNixz5YppJ/ulfGxi20WLK9RipLhg4I
v1WAVUVdr2nQepXf9/x2KUhlc5KVeKZQdhYmWTntLlwP/R0ajP6gWSZtGNEF
D7vKvv3U16pw6PaxXlOQPn1NRk2bt3PWrzxdW0ERGBYXP/YDJWTgcFe7/3PE
ASLnxWjaR17tiMglHr+Kl7OfiZfwc6kv9YP+ZhJcRN4aT70sF0h5sCFe7PPR
3AaLtFk5x6/0Xh9yYItJLYDkooPlD5s9QNULS3xQ1CmbB/2oDNsEGsnEpcrB
NRxUDdbkb37ZuYmQOO1esxBTZZGHy7prbJyBIpW6l36QAcaekmNzfYPGlDd5
X/98UDwbocYFYUzbXwCYvYRVG7QKDXm3RiyJMMmbkZQKNb1fW0p9Wt4H5pTj
JZqodPgIbHiEoCLKZczsS/qL4xju8ZwmS+PRneK6mChmwvZOsUWdHAhQpIhK
oX5pkqVXSA0n9+BsDpBmdY+kw9ThWL3mHdzbCxmJ7lG3075WO2IVL+12SYEa
e+KddNwzPHJPeSptuHlquhhrTCOjF72wHq1nIv840R1Hpy06c473GTxbrZbV
dNLcd2sIEFGLtHxscoDu67u56Zmza5K24XeSQ0smmYyyfrg+fZs0ay87BvWz
kt6LDWMLK020B0pVNb6nHNVOWsFk87XVvVh45J1L9NipW0RiewHl6Q8dPo7e
2GTtAGrlk/70T2meI6q+W7KhBPjU+QRbniL9XrCsuv4wfjvLGyS+buhPSWYt
w6/sCrVSFJSGNn4W6PJbrWv3T56Uu9c/6H/Q/aABx+8hLB9y8pag/tAu4FRk
2MJpZ12o4X4zKPJZqDbh6fVK2qiRaPIb/pw0PU6lDV0TzxFxLH8T83XH5EmM
b8LkDVqVnCoju8LLNi3dFIbBw28m0gV0HE1du0Kry8ylad6giliFtru0MH9W
2s9Xgzei0qQrYm0zYJreC3/BWu07j6/hsArcyf1yV1gRidUMxS9El96CvE8D
V0y/U5D+XaBRj2sZJUXZLGckSCBfvagzX74n4NdhhPaiX9c72PSURFJH7hsr
iduiLy29Rc46ChF1mF2iZsr5YTK1tsYv+xYvQb52iGxtoEEt4qSsMOIYPAM9
JGKWEJQYN6+AaukNlkYeOE0cxte44b4nFp/QCOIIPb5bKVdllh8IkC2QPYsc
p4mNsRy2COo4TiU7lw07sQ5cDOMtscQ2Wivr2ci/he6WrRhEFN1mD87WjXnP
Xcd5t6J/jEsmTidVm5URqpZb9OSGeB9WCaLe+V6ExdrZLWJzlHpBIOyhORlI
lHT5uJs6vfhtlH2lYoKmCpP14eaqGqAluJCKp07uTzCiSl9O0c9crcTmjZ+t
fMNT7ksxK8CTj8SNmhPQKRT9qyn4R0GCglKPCGqlE2sIlrp6sHx2LabF24Mo
uXdt4U23WKxOP6S/rV1ANR5RJUK5oHYAqzsaMBLxfGo+fQvfsGYIuEF5G6Kb
ll///Xbimz31lFuB89qjJ40SDQDhSxZHsHOolU7uDPHLMmEiB3Th7WS94Dri
fVxvvNlU/PixAkoeWDylt4H1TnwmXFXhWBrkF3HjLfGlb8j24fJsWt/+Rrtt
bMSH01TBv9twNFEpDgvjRQ8zWkQTfRbM+JZhtaK3VWrpOfUn2uZz8rwS51ss
An2V+nJPb7wEGL6vFd9E74yRyHbAqvfxN8oiMyWMKFg9ZPYbmVPRSdhKYn06
3Wjr2SyN9j/fb6ojQjnfgsx9pL/xwb/SX7dA65vP4/w5Ak/3mCm1ydao+/SN
0cxtooRrIEzO12XNiAvEYerZrBfzyd5xuG/HHuY8kofOKaLKlezri1ajePpB
sD1qVwmjeqIMjBFNaLqRhzF0UkBDukP12yUnjWhYsWw1LCvGgBi+SK9+Iy8O
AemYZRlVEq1RlYHW89Ayjk/sz6K7/XFRT1Mj9AEejA9vpmEEJCrddT9YtTn6
y5ccUT/o8HkSj+DWNujHmB2rZ0H9wEruRr5DE2+U8aneCtbFiVhhPPHtgxl2
/Nk+oqy5QdSZg8y9FX9CjDcyR7lj1pny46xdWooysf9HTZ0wjvXUCnH07N3d
rKDVqdzY3lnridz6x7Vq25fiSOopnKlogxvYErHwrrrK8I8+t/HaW9ZYLHPT
xvyjSiN8vEtteVwOCOrRx8tNwJXsIbl7Jo6WYsSHigDU58z0L9pGQfJM7lOz
A6QjqtXfD9aFLH6JqcaR15/4PzzjWOlFFI6npag8Ra2/3DPwdy7yXwtJWtyO
/yz7LCnnr3FUdySwDCyyXWxSp/+lAY+oe5/5AXmpdZX7KHbBJH45TZW0UJCU
8VN7l5fUl4jzyY7UN+bq93t3Ga8iYYgVTz11ibAJYgqFhAmoc4S5mycNWqm3
nE5Dtv3uyWLRVYa4ob2jo9GOa5fI1YEqDTPDLGKvaiWfZZXhZ1qy+sABKPGu
afYe+mJbdn0dqToS4pk7SgFw5eGdFvfDSDmjvW1NNK2T9Wq9LRL8qaOonbIw
oWEfJqJh6xTepwvfnWKfMSiDVsM0oDFKIiZixjwWd7j3iL8P2lOdl26KsOgR
TgofqWdPmIhVzqNunKnZ3OzYSIrqM1LjL8sUstIHxPkHgevF9Isklmki3Ogx
slIZ+mmZyusehvgLotQrTyjVb9g1OyVS1AjGNfcW5t62oprzjGHZgFN1HEFj
duq9ZK07d6L5LLxjdJctFLMPIWNURmfLgZaYkTCdc7OBSZ0cVKYXUtEY36ue
iqkDJRQ/Bpi72SjAdhRNItYQR0RZF3gQVE7yMFbcYcarLOQ909HPqzqrwUU9
JDIF2ODa0zIspGIXak8zHTkeiHheMrGLQ9eOijnZ3IMQwlSBp+OJu5xibW+m
8viiNIiDiorFMkGVjTuv6H9ZfbcLsxC9qXIo1jiwVzs5qBQ2n9dO3j65NLIh
tlLjW5UktCHMwQodkRGN7cjG4ecvx35DqZYw8qjm5gHq2ry1Yi+VotHLFYg+
JVX3PDpn9wieDSTUFCbzxDYxo4j3REz1vxoo2NOvkufPoN0so4hbOLR9y2/D
7+/b9U3lSiNIIlkmuEeFBZnQgn+8ba4qG6MNH+YzJkNpY13NmdWcKKPu3lbF
HNI+bSas8f7Vq7YDLmZKlUJASGjdF7PxHBT8a/Qro3dZYKkilfS6i+oyBqyx
AjhszVTe0Db4kVWx8wGCYtdWIq7vxijK6t8uVoBqgzOmZ1Pp12v88CLUZP03
0JQwpGF2gh+p+Cj87xJ+bS19qEi3093Xh9LmitjhFO4hSXom+/HUvMF1AY2G
1xeI/lF3N2MqpnTowQYptU9jR3llG3Tq3TcG+92I8z4s1qS6Fl7l+ZLmcgpK
XLPkdaQfyYu/DCrBsm6eK8t5N1ou9SXgI8fR3TCYwecDZwayOpVO6xYlTRQj
O1p9joU4PYwi0Y/rbGykofrRmNjHiRDU6aIomZDonXIK++v7Y3UxOhkAyHz6
s2tE6+uaWXLOfXoHLPjFxgkJLdcPMlS8SAV6fFEz/VJE+0Gw9gjxpTqXan19
KiU7k+a8a3UEX9/LIA03JBe0/og3x3eOxRrkSOnVKr80kKy6HJD+nn4UkCx7
y6H34yH/QkBGr1bQhLBNScWvWfCVo5VlCs6KkNwzbbER3gJTr/0FxyzD66gm
ckWS+WPVjxnWGXJLWMmTYa2enZ48n1lItXRxUJnPy+MqD13TJQVcdymVhYTI
FjucE8T1D7fXm4zg0xNwcBvnkjp/MlcPFtMpGi4ok/q+xqo55+/IgKm8at6V
f2/MTxsvjc/3jTAVHlbav+92hffB55rcXUEYVSmOzxujMkV9tslkvtN5OZG4
Z15YGgH8eFPsp++Htr09YZlBjX+imQcVlNn6+ViPYBp66BHAJKCAtKQeD58z
2WJ8ISslr0LxbTgPebHE2/59kcg7zJPsfoQEN/JXA8aWskwr+3Yq70TagWkv
dFhETnEPvvf6nzYKhNJFoQTraZEWREplrwiu7yumrzzPLTWkyX1S03ntbhmO
vzK6b/Vb1a2MJ2DU/wDktI/7dicblOfC9TicdZpwsZc+0Uq+20dm1dwlUdQo
e5frkS4/zKre11K1FrOh3V2fvI5peRJVWKKOGVa9c6F68hkAJ38zrfq5bWHC
XBbghfu+D1plDxuUN/coJWgrPCDPMOLwFQxnOvpZyU6xKxq895JS7/qJsRMK
ORPXQtLn+F3SsKq5A3oHZ3BsWjFuCTr/eNDHpWmRo83TJYbbbAaApeuXpxNj
4RA4NMXOOBMj6KiyGaW6lccjew3sYaaxuzQhWn/JiUnl/eAY4p8VA+p+64ow
um0bu8ai+rQeBz2Lt6fZGPr2kZJC21xYrwJRl74KCjByRg0JGz2Alx1teHQw
jA/RY2+NAiWuE42BFsn2eOu2B7uluXgD3wPnLRbL1l/Mw2WbD9BzF7sFWfFo
h+CTVHVnPGtFpLxtkwaGK2EN5JueTiVvwbxcrbXbMvwx+XcKjsvDZ2Z+/Q2X
hbgsqwHcpMJKvZX6R11OfK8yjZnqBx2pDOrj7BV0xnNNrE5EBqrHY2DP4sLV
0N4zwRL6emYdfJSeGCt5jo6tsZVDoLWUY+CMdFp1gzIhaNuiPPJQEDhHqUkW
d2TQ8x3gDsddlOLVWf18y8+dtCYjz/fJ0+v1FHe4T+72BIZgWpFq1OJ740PU
vmQqWSP3Tjz9ev9JuKryFxpafh9YsRcmfSkazI9eNaQw5BlsPZzhwYJLfq8b
wvjzverWa2XTVlMYzFJQkFAIN0Whywfhm3zqC2u6fmTzN9THRKxethQV1gYT
biBSWKNsOvkh1RYNo53M0SDHbibBUlXDxBuh9+XdrEyh6ygwB4QzJqZKiSyi
bzEPYs9KINSZJ6Vu0DulLvGk9VU4cQdMQI+Sko+MxQGiVgM6PxdWO8znNNPP
dVLxalFhU9s4O/GiaRGw+hvCCnn+UslfGyJYWyUz184P+ZCr89z3a00qwNmJ
G/BTEmEzTe2IQu2m2h8ePfmejPHSd1H3dop80iwkIgwNM75ofTmbsfzepFqD
CSpkr6u4o3NqCrr6nd3eavm1WfXTrc6eXhgf/n7gq9rb/VokPNkqfxSs875f
trQKIFGxWMhBkAtSBpL2XC1n7cj7gmYkJNDdcgxYd6CtzV3MbT3otoSbrdAk
HvNDlbuwr0nV2BckDKa2ZIZPQxlyeWR8ZpD7Z5FQ9CJuiGc9UPUZXnMrnnqX
zIlkp2avX2MDycN2kURiuBc91KtS7mvxJadf9gRWCK1ev3c/yJTJeGkOwswb
AQ0dq+FgnZgIwnF9JC7ks0+b3Ej/qQh3DA9NC3pJoDR1TC1/1Q9n9VWmOzm7
UjleszgBvM6/Qlub2dNv+yJLrDRZ7ho6xzUQMqfVZxYB84zwFE3nNU1jHFZs
1TQj6rNSIu74DtlSjTwdj9vVLMt417O+e7JXmdIvV0fNwKUW1QuDO/H1kLRl
tQPZaSt92VRbKq2OyqbB8ECKBNcng21iFanMHW2rdaHSwz3XM5pfqW/Ohk6E
QuAda9vnZM0JEusEwEGqXWzyQ1dWncPeko/V69FQhKuDqIVmD24BnsAsAUL8
dP5W0guRI6Y7la9hsh90cqjQYXW1KNC98nxV7BMLpOISXkZKxDdCZ6WtM8b1
C5Er5ndYx7KdMOADL2A4l4RtashdOGE5L/UylZpYJRqNJ8tgQ6cDVKpyc12V
fJyE7vnmSnNNGEdX18YNtVvHsDK0d+RdD67CNvOTFjuS+mM+aT0cFIexlT72
NXatj1hkWrTk50o563w8LKvi5FUPNls/dxUCtRytajqpLG9o9a/Sotc6JA2i
J0m7yZbpc03vl47akKxh9cl+XPEUWZpy/XF2XIoOFYrKWKcTRn8SY+SL5XCR
1mQ0OnobbcLPk90IfjU4+v7E0LtzQf/VYw9eAcX9+pq1z0dssMwDy+XMTvrt
l54fsMJkIToYZwK0Xqov5KLjOw9LNwv6KewvX3B+xKUatSkF4bjEAbYb0PNi
C4hDSJcLcaOhj4/1RHMshXpWFhdlaF7/WoP858sp0RqmLajkspl9zhQVEpzn
uaro+NrhQ78hTku6uBaNwzRnvuZfe5OVusuvlXNwsKBQACfIwa2h+VAmZ+se
qstchuiTao08vv7AusZoT4gS+sO5GF9RgVO6U1CMydLZSGl3QGgrgMXka8gr
p6ETG8P5qHihF55tza6YN6td7bci20hDTc0abjNJAViWUAQsDMKRL7Flegju
doiLPbepzAMlKSdBwHfNTx+L8k216qVaEbEaJhdknPvEBcs9dD5mT7Sil1dk
bLgBt28OeEIDVmT404h/jpahs3uwmohLezvlaRn4ltzp5maJIXJGKgXIX9v+
GmPXKh8M2nQS+BxnG+JtCG4cbMA5HAtADE7gWcTnypLnNzScQXbvCwyKmXdU
zXiGXtXLcM1Z8zMRlYhMn+5jZbUh0X4EzKyLEJG8KynpgcotUuGxvcj+PlRB
eW1V/uh2K6q0npieUQWK1E9hO4Sbtgp0/PCpkuezJnTuqcunU4Qb8VtGcQAt
Te7+92vPrhon0V3msrRXksFuMFwN10p4ubaEJCvVH/Zk9VHsTMMcXlTztK7c
2PRjM6WCHP202XLEiGWMBzWUyDt4u/HwZo0WwAdLGFayHDJap29alKq2gNTz
OH2h/bdzTDkURxu+kz9kXYzg3wbfda9vzaASPaD6tU3csRLunUk8Up2FvxP/
QLYvJVku7jaPifKZwdPQeLxIjXe35TUXBy3cjaUfyUbintRpP+qbtCZAYDnd
mxz4yx87eTppcazFo+EZfvK+r8/YV31d+bfqw2KFGauk5bOduqiFMQ9m58IB
kY9ini/+tKQqZ7qfRnARHj0U5WRlz02JepVVI4aVbGW0vjuMfO9odXkfv4rt
Ps5hb5/i3DE80FgrN2ra+I2NACcrEhTCgUNO5zlf01mhkMVl+PL29iRxoHD7
CN+pqV8n5ox7v/OlGNqut2kNAf5Nw7hqhQ7qkw3jolWFNvqmYwmb6cW3Gu7e
isjv7AEmZwGvovLddGjpRPaNB3fJojsxcb3CG5DHS52230aU4IGN7PRO+WWz
NU5Hy5PudTu6be1OdPDRKS2/aSXa2A9fxqWLs3P1oyH93F6oVEFQbBPyLo20
W5YUH/SdYER5oJML5N2d3FcRqA9+scXuNnapXfXFLlXeTlw0vfK2lYBBE/sa
Ze9fzYaqm9EegfmrCS97/5LTeOJrvIRTFb/EJf0IySRKCQDqnHGx3YJ036/g
a//Rsv4sLRO9gP5bVPNUD5Zn0UDdfVle2V3PSGlsUi4kCkLd63aJj2bLCdYq
Tbe7fphPcNZy+rrH5ogjFe390eMi+Xt57FjG2t/h0a4vwmqOK3oO3/Wr9Zyn
yrosMTTMR0cofmq1dO/8OGbc2vaBJJXB3BV+nWL7rGLbELVI+Bt2LqVVjCFC
TvBx8/REyhfiIDMR7OwmU0cX3Qg5FynoINKnK17W+jDLvXC7EvJYBTIHvHYx
H9mR3DkbPMUC2Li21L3zKxYfowdd1JSOXv7lmUP+oBFaphnxeOYP57RdiJ77
qjjn3ubKnrqo6F/pdO5KoegdAjngAqvbMXjo6uI2ziuWfIkxyQdu5ai/9Rdp
ytmS4p/OhTJUp4b0Mpu/sEaUsP4fvpD/f4H/JwqY2QFNwC4gexOwLfL/ACFk
xGBlbmRzdHJlYW0KZW5kb2JqCjE2IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9T
dWJ0eXBlIC9UeXBlMQovRW5jb2RpbmcgMTcxIDAgUgovRmlyc3RDaGFyIDEx
Ci9MYXN0Q2hhciAxMjIKL1dpZHRocyAxODIgMCBSCi9CYXNlRm9udCAvQVZO
VkdEK0NNUjEwCi9Gb250RGVzY3JpcHRvciAxNCAwIFIKPj4gZW5kb2JqCjE0
IDAgb2JqIDw8Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50
IC0xOTQKL0ZvbnROYW1lIC9BVk5WR0QrQ01SMTAKL0l0YWxpY0FuZ2xlIDAK
L1N0ZW1WIDY5Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy0yNTEgLTI1MCAx
MDA5IDk2OV0KL0ZsYWdzIDQKL0NoYXJTZXQgKC9mZi9maS9xdW90ZXJpZ2h0
L2NvbW1hL2h5cGhlbi9wZXJpb2QvcXVlc3Rpb24vQS9DL0kvTC9NL08vUC9T
L1QvVi9hL2IvYy9kL2UvZi9nL2gvaS9rL2wvbS9uL28vcC9xL3Ivcy90L3Uv
di93L3gveS96KQovRm9udEZpbGUgMTUgMCBSCj4+IGVuZG9iagoxODIgMCBv
YmoKWzU4MyA1NTYgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDI3OCAwIDAgMCAwIDI3OCAzMzMgMjc4IDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNDcyIDAgNzUwIDAgNzIy
IDAgMCAwIDAgMCAzNjEgMCAwIDYyNSA5MTcgMCA3NzggNjgxIDAgMCA1NTYg
NzIyIDAgNzUwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTAwIDU1NiA0NDQgNTU2
IDQ0NCAzMDYgNTAwIDU1NiAyNzggMCA1MjggMjc4IDgzMyA1NTYgNTAwIDU1
NiA1MjggMzkyIDM5NCAzODkgNTU2IDUyOCA3MjIgNTI4IDUyOCA0NDQgXQpl
bmRvYmoKMTIgMCBvYmogPDwKL0xlbmd0aDEgMTE2NAovTGVuZ3RoMiA1MjMz
Ci9MZW5ndGgzIDUzMgovTGVuZ3RoIDU5OTUgICAgICAKL0ZpbHRlciAvRmxh
dGVEZWNvZGUKPj4Kc3RyZWFtCnja7ZVlWJRtt4ZJ6RIQAYFHSnoYShBRWrpD
mmEYYIgZGIZGJATpLklBurtEQkJKQFIapEMxEGn26Pt9r+73+7n3r33smfkx
57XWs+7rXmvNMRw3tXT5ZayRVjBFJALNDxYA3wHk1PX0wIIAWEBQUJaYg0MO
BYOg4UiEPAQNuwOAJSSEABlnFCAkBoAF74gIYT7EHIAc0tkLBbe1QwNcctw/
k24DMk4wFBwKQQDqELQdzAlTAwpxBHSRUDgM7SUAyDg6Ajo/n3AFdGCuMJQ7
zFqAGAwGrOFQNGAFs4UjiEE/PSkjbJDA7b9kazfnf4fcYShXjCmA65dNbgBj
0hqJcPQCrGE2xCANJOY0GMbL/4atfxZXdHN01IA4/Sz/q1P/EYc4wR29/pWB
dHJ2Q8NQgDrSGoZC/DPVEPaXOXWYNdzN6Z9RZTTEEQ6VQdg6wgDBvyS4qyLc
E2atBUdD7QA0yg32S4YhrP/pAdO5Xw5ADx480NOV4f3XUH8FtSBwBFrPy/nv
qj+zfzH4N2Pag4J7AiaCmP6CMYmY97+/mf3jMAUEFGkNR9gCQqJiAASFgngR
Y9YHQ6KADxiAI6xhngDME2MYJIBAojGPAJiePAJskCjinxMVFgNA1khHRwjq
p/5LEsFIzpg5Ia1/S7cBkKsjxNXutyIOgLxhKORvQQIAIRGwv1lUEAChPX7H
RcEYtkPB/sgQAkA2SLffB2Msg1xh7jDEbwVj5a8p/a1gzoUiHZG/c8Qwivzf
JI4pqvM3YVYOBPmbwJgOgmB/4E8Df6AIALL7AzFu4L8RMz8Q4g/ElEL+gZhS
zn8gphTqD/x5sT8Qcyv0H4i5gPsfiGmkxy/8z62SlUV6+vCLAPxCwqLAbWEw
IC4o+Oi/p+kj4C5uMGV5zAAEBcWFhX6pUDcUCoZA//odY/b132wDxyw3DOYJ
gxLPTCGhkk/sUxpCiv0UXoyW4PNgy9o2xmrUdoy/Igl6H4ftWDCg6sKzWPPw
pDSNmnwDf4PF44zRNbzVV/ut4n6AS2zq5MWGu+VGmncz48Ovaepe686sP4J2
KV42TBzsiWJrji0OFica5fVkfu7dzdHiktfbJJi/idVp4l7Xmf5E7PZDxTRH
/afBNZzCN3UoU12KQ0WeLnhQJsbjLYwE+dk/JWzinfuCbHW7evKC8HnChQXW
MfRKRKCQbNb7xhF7qadp/PTiC6bytscLkWYMAFZtQTuIwyq9ovNZRcREC2Lm
5Y/Z9tEV3ZbqTi+sibMPRFY8b+k336hxEYxKuBp+JChVJNPB272j0FimTung
ilsepBQsKFSocECXeD9d8yOMN8g4L+VWUR2V9yWT6nAQcz1lQzBd8mgbPLDR
Bhi8u/yar2xBIeGrfKfGHrmxr0o3W/zRDexWWcOLq5XCB+07cYSXVCMpNOpT
e8653Z1r37hydjnWRDlOma91+HENiWYessg6PJLZsSd9sgC9pZuUj1uyTbjS
xy+e/Y7n5hb8mVfWY/bixAcCOeQVHkS2RG1kVCVjKoIzCNp8JhTxqSTl2HJZ
VGcOoLqFMseaXi1GPvNspb/tLDIjRUgqF7fu1aV5fMbmNUiVzWzSVszwgULk
rjXQxsw7CnXAOxsi+UT2etLJ5rNTDbu4Ahfr4M7ne9s7RRIxtxAdMzyPmz07
PfHnQCqPTvORU5UhzrtimtiLMQOnlbBHdl3PwVfjDMWGS0si8jvKOLiC4GbK
r8JYSve34GnEqx+D68IHWVmzaK2En/VLbc6IuqrMznrTWHVSTahM3nthYrg+
Wn9GonQdWBNinYs+mxwnpz1uEdQs8pIQWG7tLCgvxWJeMs1ErhmKEoULqkRM
PC975v/4wuqiXFxuP1JhBbgnKIUTmjKyMjFaGtGCHr4V71bgF1CRR/diLSFF
3MEVbz7+ATex6QfpABp55oXA49qitQz1GbS2LIx3q4mPJ5myBpFTePXqcIon
w5X6SKmFOC9s+wY0ts1lqv2WQeUCf5j+jAk/qWErXTZTnFjbacMXv6htRDwt
zin959csxMosSUxBKfx708RFqS5XP5smpCGrXPP3xHrmxDfIfuRMk8UIpqHS
PZP6J6l7x/2kkwIKhUKIvJ/EuHO6z4pw2hi7Tl5uj4/djSLxU8LXSiJiqRlX
jbpdTV11u52e7VOD1Fs1oZz0LxSl4kww2p4DM3LPdoGuD2LN5sfvb1glCvss
uEzQXQ/Ld9eMIeYbGHPns75L7MNxWD5+7bjw5Vopw/i0Pj9KRi3vqWnrES1r
Fz8sEdx+5/4BL14OPcnDJ3zm1bEkrsF20qalUmqFxa6JwxB5YsbSY8z/cUM1
r7Yvs0F1uPZr7nEi2j2yRLkrZF7z9zbM0TwtCgwCWswVmxL80aaRV9M2Fvr8
JbgCPUoePCJ4uYw+ejH0wzRvV7/fY0hyGlRL85a2lmmuh2PnkySzimYLc9q5
k0sWQa97zGe8ovXm7+evr3fh54/cCUhkFxUPX1Cdzydhb7/qydy4tWMEpiKk
T1QwWLM3LJR4zxL9kCDHfEKhOVWvB5sqrqRwgiByiXzuDp+nTb+HbaThjaHs
y9Y3iCmocNLVWENBGqOQzIYu6vpBveIS51ovcLWUD15iRRWVGc1mIFI6X2hZ
cu0BdqCPAWpy1LF84vm3ipECsjgQHe/GWEJnh9p04MiLM0prqT5hG2T6G3os
vOlLmzz3/UxTw4Nq9RdBbKTUkXrYfAgsNfiaYwYrSbiNYuKuoajbN3b1dI3l
oxwh1UeHy6UagN1nUE/fPJ0sq5J5imQFNWUmPpBFk8NYZjawix2DePOoqLsI
zNJvPc716FWRU+xMAdikW0GTZeLtXXyv78OjGfHQugFJ8JLew0qC3BqquxlZ
2QtKsUHbhAg9ZoZ0969Y+JLRGrDwg4NhiebpVXiHYleaeeTH83lrLZA9P47B
9ikf4X3+1GdaZOEZ92+Ts+L0pIySPbuGNAhc85gJ5QkSjOznkQXNo5kOZcoz
8QRTugxLa32aXa+Rr5IaAveNzLR9tCllvO5j03yCu1L6x87aRONqmby5XBeu
ISpEvcWtfP4qQq+UiFvTLQG5rbs32tuieyd6/iPhV/7cfXdTL8dWYk3ZQrZ9
LYvPOE0HxGj8TypNMbEsL6+aPWyR8/HtGb3VQB9T6i+ntrxFCyhIf3svLFJh
nuHmqsPYvAm+YBb4fCthnECOjiVt2h72NQB84021nLT7RZ3eKxmEk5+bRmqS
UwH1eN3t3pCC6aLh99Tb68bi0ezO9lsPd84Ns5SDL3yOvAYBLAnCV752rGyX
04vd5vFqp6wTqxOheUs59o8uAtUuqMzK72lje+2YeOt/JpYA6J0dGyECm4cr
5IG5K8AjzyyqfuAIEdVcmgoyFNmvJbafUxRjeJCUeXALHVBOktuPeIhnfemV
iFXS/ZB9mUzs5n7xNbpQLoNr7AUVFMpTeGqyMQ7iUsLELFeOWue6x9vcrXg9
+jXUuhTsPYxtLfy3PTbADvf5t5+946sLwrrBs1mZys05bFDywuPCczPpum14
i7QDVuDxPMKazoq3KXKcni6fStGA+Prp8cSyYrKz0URowLXCo3lxTW4yj5fG
JudOzzM7cvBpA8+rRrHwhVlv9mVwF/2gh/hHPf9impy4DqM72DTvGopy77lp
Z6+TprVamrQdYLx8OYMleq5B07e1Tv/B1JxGY5O+qeGLgfiHkzrUiv0dqdOl
REh3huSTd8CRQsemlk1lFK7xxvfF0Jdh+gD6RYWyLgI2/sLVv82xefod+97K
KyWmdd49r4OTU1/wvVekDsExCQlztTjOSFj8WnvgBYjE4eTW2UB8kOskl0Jy
iMQjg3a87ebCiaOX36pIP66KxA0spk/qZ4f3RkHOPJ98rt/YlPGqDZd+pRem
ZrLxyPubpD49bqTApolFz4d599DDWYRe/YZLXZtRWEvCB7qPW0T0ZO1W2tLP
8WiTyPE/tu9EanFbZ2vj3oKa1r3vakYWf/1BH8APnWMPC2LzvZJlSxuIa0JS
10A+sQnl4Cz9nuA/JYALEKU4hbxr9LRUAe+9DF/5mGG28GlOvDw9kqdVJ+Bq
yzcP8qN7hAPCstvQzHBh8bLjjpssFA421lzkJ6qjJx+7jb9TCZNp9+b5xLpw
HFVfXl6fugrqRUbceLDFRmuY7i+0Y/25pIIL2Wj1bfG1B4ir6Os+S81r91aA
3Ljp+LN2+LxnCP7192tVnHsVvOCp6q+Zi+dEVgWbLNkyYbbBV++2H20mTUm/
q6oNo3KbUwrX3b2ZaEfd+12uputJaikNqMRU9/TtZRKHtdu5Gq09bF9ecc67
eIfZX8MvgWKAchh7rcioPU2CA5JaDB22CAJVEU10UjOrJpcph4s6SrkVoeK+
qPJ+K76mn+EoR/Ng6X3lk7zmm48RfCUQctNJiEaHtcDKsDcKOIc0Uy9qGG2S
Voaywx53DJbgHpASnamrgdwJOT+sRepT0j/3bh0D+dvNugNLyWezTBHrjwAP
w+inMibYtO6OZdSqpktbGkHJ1W533YzlZcaAbo2VwonsgaqYCGdCsq78k2wl
HWWKJn9zRp5xZkuZoleikrzjPqAMODMjVHcK2s5LyngpNy4O9/oAUWMhJTgZ
EGVirX4lJl8h/ZTnkq/RxMigiaoJEdhGeCP7/ZtmfCpLpzPV8fG44zmqmSsR
vQF59d9eDHkM6Wqs7z8MERhGvXXRHAgoI6hfpOlM52OenfDA9aA7SfU+i7Ml
8LtDIMfgKcJlTPJObSkOIb8earMXINYaUkMf3hTBRhn3hYOi1oMqP0ijR/ra
85epUZArrXEP+25J+t5hZx79bnFgfI3Oe+qkTe87+X3vmLH1XrhHQUEwBMxj
vsM/GLh7QrAWXNak3EU61YPDvxIjiCebM/1UT2OYC69GQjlMN52NU9armrlx
OyBpbDNu01dlDm/9hze3PV0rMXBlvtJkn7+4ofx7pAKxd+Pa9069FW2y9mdZ
kjGShhmLBEOLKZ7BODFrHaUqxGT5D7vrhgSydPhljYZRqqUTuEIkXWJO8/ft
b+Xx6bsYjtxIjbzdp4qQxoUmtbsUWM7Ke2uuW9iet4mVsPUJMp63790tj7rs
BlKXuAg6I3Uml6t4ghpCaJVKtWNR3cPkpkm4le/2dvFB9/Kf3iDRYCOZd2Uk
uN9jbJwr9qS3xZUzbYUggNSmqU/7S2aCa09qWKgGeFDiO3uI8F4wurNBNAyt
/iI0+e11Uzq15xVGDNJ7IiSNLW6eh4G5chXPzYbm2bcIyytArqzDxUYrFzQ3
P8GySz48h5Y8nWpQsJzDpePtV9W7zM28pDDpsiRu2Ux5wRHrLO/Hf7k05K84
ArjkPZ0ZFM5aZ7tDy74S2tMeQj/ymexUZiz4oQ5o8jQMJHsj5Razgzwz5N2J
ARSnfc4VeN9Hhccn7+ncKxZzyEqt3d0WvW/jruVyvEvRIKJntPZhqLv0eKz6
RCu8QDZKFksw6WVDSTKehFdW3MiW4fCwDrk44EsX94PlpZSjsq+wnIAT24j8
sy84kZT5njET33MJlMW/tEx2lAodHob0qpjJsvOytL3JzV3z2J8eH7e34oMs
X2Rc62XFzfOtV0+k2AaqlQKrPJx3wwxON+x3reqryxw5Ly77VQs64we2vNq5
JJvIq34EvahMqEg5k7jK26xmpcrI/spGWvthMb+jl6OviI5RjfzI4y4rvroO
4AFe6evmOuZY312lfousoIPhnb5vbweVz7Pj3b1vc1EwikyQEqxeS9Qlmz2/
fVbH0NXJ1W2xf0WZIVObIZo/uoxtYw8bX9XaYTqhigQCZZVcdWOnyad3edZa
ZBVe479YZjsHJchl2a2KP+GuQgZq6KhWWqM+j6o6DNgJZ8g/C73P3fmkLZuh
gVfc88eIjrJFZJ5qN5J+/EXkIXBNwhjOh41mTMLKoJ8vKfR97NR+dPy18M7i
Po1IV1BZZn657b0e0O3wbxEJHLKGI4Ltd0TekW+ut62AKk9PdusfUMcaMQY8
F3ynnhyKGq3mo6S41jy7QXc33kDDn4xdvc/ChZKX0kKHcevunnDqvA9DY6fJ
4++rGtUtYDnCWtMpvVS/BNRNweT0H4e1TFXd+ibsJ8JM52eJO8JnaUsMzc0F
2hZ2qwXGBbP1F4w8irnC1Z39/QH5IsrKt8t3imB4B3kzo5mOB2ZSY6/FyyH9
s2YiBNUN4vsSJifCsa08wYYScCJi/QD7aUl26SJHhoNYjhY/15pRCgV6tqnq
vWjT7nUTJcnXePN6RyNznb5t6oeqT5rcnj2gOHz12O0wuuZ4cvCug8DNyDPp
H0YiDdyBPbbZRcqFUcZL7DtDX59xRc8SXW/ofhYDOV3OgNgoXY3AvxJvKbk+
IgGuiELHVIXNWjLISiHyLDxMxnsvvSmePmgcfMygG0QMNhTxrzb7cJie57bv
oc6yBUqANs72p2nS0J5vmz2v4IxzUenyELH9xL+7gV1mNI6SGINPJDlnO8oU
KFCEL2Azbwj7UoJzbzH7MDYzLGcaXFAn1aiYlmzeQyvgfU0HwwdjhpzmMnhK
6iZNUhbLCU6jymcQkUnfgn48rDTJ8c/yppT6LhQ4P+5+g78fnxKiIQBSiRTx
aNs1s9/V1yf3Jc370b9AzaePjqOgoXdwuJw9Xr+5zG1MRpMzlCb8Egt6Gha0
1EHow4kvJ1vfyRaTodxLOyVpvnM2HK3vNNsXLz6HVHRQC+HtdxrNax44qnws
63n0OrRXsZxpsjlXWHmo+bSh7W0Pj2IMjR9RDpe2PtkoWTEFGHJlWZUkhlVZ
aM7yQGS3bEMolZ4ryRz/rnZOxA6DH5bl+nbtyRcVwequ+jtENcovIDpcBplM
Ur7+GlP39zxifc7IrYzpXt0oKML/qu6Bs1DE2ZPA/Cg3znWI8CirAWWAuz3C
NzvBRyGNE+ZV3Rm3b0HcOWH9BYftgfsO1ty7vNnC7KJdqzfW3gkBrzM+mvZY
RVLEzSIgNE2S53jgLhvcb6/tuRaGw2muawp7nrYUoOKvz73rc8j3vk4e4dav
gT/dbZW6QFhejb8QmHItPP2EMyma9UriMd8SnaRe+Mtw+4CgPEVEClnjl/vn
XCobtIEniUr+6l8FO+xS28dqg+DROKslkSbttjOzS2lj5PDhPDeSsxbjiid9
GrIg5ZCz7seF+/g/srpejjmtVPHvdOJUBwY2WRkOWWov+eYx6S8wNY8LeEq9
Yy7W63z7hRDkF9T4mG55CDvqve0mTuoIAZWqLKdS3+u5GHJTnpv1DHELb5Ob
hVy9aUiNY/YzRKc17khgIxs+a1XDBtPccAttl9qKngSbvNckj2uegQ4VlL6F
s7zhgvNGngSWrfJpNR0yVzL26zaU1CTfMNFta1yrrXriTbW6vGRpidYT8WTD
PXIWTae7m/gsVi97S1Y/S6OZSKpebV9zNvueWrHksBEbv2TLKe2Y7iSrzv3c
WiUQASdvBGhFzpgTzi3OzDReKsZ410Xc7Qp21ZEw0+sN21YDYyyfnq1KnTwy
NZMwkQyBo3TUrZEpoqe7RrXYq5Muu3FvmCbuKZ1TJ7Lkv3a+Ec2RsprazZ3M
ELPXkOdFjZZEJ/qRVxUXUb2JLg+O8dHg6rhieK2wdEfhpt2iUqZK4IlTafAG
8T25oOOV3PznO3SG7gz2UFJFe2Ufu8v3XZac2in06s7dip446QoXrAbY5SKa
Fou2lKwDWQQWDoP1Xz+ljS/QXo/+ShzBp5RaOOejkKCoqcG9mneJI93qk1jx
tAW+ebEpUGx9zdKljfHQkzqewvL2SFSD/anyNhbuwvZ1z9b7PKaxMAtzM2N/
U+YRp+2HDUxNFRznW9SqNnLqyoxlXU3G54qB2QLesRdhoUrQEvch3w+uR7Va
XIeJyZJCi3QD5cnWqPRs1qfKe7PvgAE/ZgnrVqpQmV1x/MGokA/xZisxZYjy
OB23l1QDNBYsOOq9+NAhWOZU5j3zyj7dOge8+jt1juufqSg1Fhem+fwqRIDO
6AXB/+GL+P8L/J8oAHWEQVBopBME5UD8X5nx6bxlbmRzdHJlYW0KZW5kb2Jq
CjEzIDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovRW5j
b2RpbmcgMTc2IDAgUgovRmlyc3RDaGFyIDM2Ci9MYXN0Q2hhciAxMTkKL1dp
ZHRocyAxODMgMCBSCi9CYXNlRm9udCAvR0dHVFNBK0NNVFQxMAovRm9udERl
c2NyaXB0b3IgMTEgMCBSCj4+IGVuZG9iagoxMSAwIG9iaiA8PAovQXNjZW50
IDYxMQovQ2FwSGVpZ2h0IDYxMQovRGVzY2VudCAtMjIyCi9Gb250TmFtZSAv
R0dHVFNBK0NNVFQxMAovSXRhbGljQW5nbGUgMAovU3RlbVYgNjkKL1hIZWln
aHQgNDMxCi9Gb250QkJveCBbLTQgLTIzNSA3MzEgODAwXQovRmxhZ3MgNAov
Q2hhclNldCAoL2RvbGxhci9wZXJpb2Qvc2xhc2gvemVyby9vbmUvdHdvL3Ro
cmVlL2ZvdXIvc2V2ZW4vZWlnaHQvY29sb24vRC9SL2EvZS9mL2gvaS9uL28v
cC9yL3MvdC92L3cpCi9Gb250RmlsZSAxMiAwIFIKPj4gZW5kb2JqCjE4MyAw
IG9iagpbNTI1IDAgMCAwIDAgMCAwIDAgMCAwIDUyNSA1MjUgNTI1IDUyNSA1
MjUgNTI1IDUyNSAwIDAgNTI1IDUyNSAwIDUyNSAwIDAgMCAwIDAgMCAwIDAg
MCA1MjUgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1MjUgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDUyNSAwIDAgMCA1MjUgNTI1IDAgNTI1IDUy
NSAwIDAgMCAwIDUyNSA1MjUgNTI1IDAgNTI1IDUyNSA1MjUgMCA1MjUgNTI1
IF0KZW5kb2JqCjkgMCBvYmogPDwKL0xlbmd0aDEgOTU5Ci9MZW5ndGgyIDIz
OTQKL0xlbmd0aDMgNTMyCi9MZW5ndGggMzAzNCAgICAgIAovRmlsdGVyIC9G
bGF0ZURlY29kZQo+PgpzdHJlYW0KeNrtknk8lIsax0WoIbsQ8ToIySy2sYUh
QrZjFCIaM+8wzKIxGJRspdCGY0vZE9WgrJFTRJaULYPsy8kWIpUs3alON7f7
571/3c9933/e77P+3ud5FGTt0KooHMUDNKOQaaoIKEIXMLFGoy0QSAABhUMU
FEyoIIZGoJAPYWigLoDQ0UEAKH9PQA0OIJC66pq6cA2IAmBC8Q2iEjy9aICS
ifLXICSAIoFUAhZDBqwxNC+QxKqBxRABNAVLAGlBUABFJAL2XzP8AHvQD6QG
gDgoBIEAcAQsDfAAPQlkCOyrJAsyngIgv5tx/r4/XAEg1Y8lClBiiVQGWBJx
FDIxCMCBeAjMhsLqBbKU/DdE/VrczJ9ItMGQvpb/PqZ/C8CQCMSgv0MoJF9/
GkgFrCk4kEr+NdQR/K7OGsQR/Em/ei1oGCIBiyJ7EkFAFaH23UjwMyPQQZwd
gYb1AvAYoh/4zQ6Scb/KYM3umwiYua0ZyslG5cdWv3ntMAQyzSHIFwTgP8O/
MeIns2ZEJdABFzgUDkewAlnvj68Tv3QzJWMpOAKZdRaaWgCGSsUEQVj3wSJN
IAQBEMg4kA6AdJZkGJRMobFSANZczgB4ChXydamszcAwX03fSRuAefwkHQCG
/SchWP1h4BbUBGCELchKJf5EBByAkbcgK5eyBTUAGHULskr5bUEtAEbbgiyJ
/luQ1SjgJ6qxKgd9w3/fgrExhR6iqqMBqKppwr/+gA6A1NQ+86+BR8mEU/6g
xSFAEw6Ha/+9baw/lQqSad9un7XhH4wnsC4CBOkgFtLXQ8HqRXknl58vCDXN
aS/kVPaTSs2Pel57rjRVDzo7pCfUTa146QBKLwmeE/Qm3BFIenvkHgyH1xyR
KEedfhaChp3rFXy2S0Q5Kw3NvYCddXVjb8porOMn3bj4pk9mwrdCZaFfbmU4
oJazyGoagcyWeBuzvYDZs7Ec6nO2baSPJwUnN5kEOZFRbfUHeGxq+Grr57nD
lBxKX16TmGvaivBmn0TdYKfPwK5UndgMazbLlYznYo92Gbvf0ngwI573QKGQ
I0KGueBMc+g+OBw5Z6E0dOqVTVRnlfF+aSJzzqTHgISConFoPkPo721Fm1az
sof5PY/vMjk5idQihyQC7h4JcsVv0LMCb40P3CztXMNMY/C7OYKKVyKdzZai
LQ8KHr3WscRk6HbYFnMmu9hqaQ2qDw/YjIQaF021FDoqGz5YzO2etO6cOXyR
seIqk/TWglpq4dqSmdv8GfXwj3dubcJZ03Ew+Qb+EF/k5SFKnHPgQMJ7Cbbh
R4Jmu4ufsackMqqE+UPEJY8lZaVPPzJNsG6ETEvyrVktPu1v1F+yyzVP5+Nw
VB3nKLQ6d5/ekrEsO3gDf4CrIiN5TlfCS7ou24epqyoX1XLFsFUpHMXPaYuR
H16cpNv6dXHiE+6GhXNF3z7jzCfGiLF93GynUJ7E01BhV8eR8btRoqDQKzNY
EO4UvuxclUyviB7DP7Vnfg/8Q36l5R0YP3jFppNtLd48WnfFtNaiBl3JaTJz
JdA+c+dEUn4yfupBzuoJV5i0l5odmoPO1lVS1H78zHg7Z2w/1xEPMTbhrFQ5
LkkzLldVOKV630OVqdakoUTnQUhijW90nUhm6fRsO4eepSxj/N5q+sy5RoGq
OJXZT9vs9VSiue8/CfJ0WVC7fFWxWOF+16DLovTx8xFnPtjmu7W9vkB7mR6y
8yKm4/xzyx0dn5afr8n2Ft0S8XnrGhzx4XN3MWZKQeBoga6GI+ITkduG9GJv
jmuA0WrsbiU9lfjNOYOYq5TjqqrKUa12/BNHeUeF5LmXRkS53oyalLXbB3xo
cyv7NK0rdHXeuws6HHOBerKid9IaFe1MuHjMjf28TLxkZpD+HubFm4ZpiPT3
lmGXLDal679s4xZQml9dWc637MjUdXtZxoeoXEziXT8qKK3gLUPemWfexp1j
qzgw2br6kfP2YllxF/nyozSxQ5pqIQupjG2PceG4T8/0l8dbYu2Q9YMUheQ8
yVCNIOdUS97awsCrJzMXBDVoDuUf2eQ9BaPee2gSn4xC+tctzGaEt1EvSb0L
k5An4SIGI89jurtPmpY3Tjm1Jz7h3tsiOqEej5Yz7U2p4OEpFXj63mL9UyIs
ar9x7dwyfpSEq6Kcaqs3iE23UE5Qujaqf12aK1N9r4C6rOXZUbVOxHZ6HZ/3
UnOOTADUU/upkG+uVGaI5tj0B4cg753pR63TVgt5bJr3/3FcFfraKhqVVT3s
gyq1++hprXz1VsqeSAZzUqahJj31qrVwI1PELrva+i66APKSdKQKHSVaU5PP
5pewnNJJinh0za3E3rnV1cg5kq27WU9xmMelO3sxY+nOget5INWXe7vyXcPD
dTqbiV4hEt3PC9sgEogAtBcpr0aul9LpUm06IF0S/dvtOeT1Ttt3B4jm3JWv
3Y3/Ck3ZUUPfNdK+e3HZqChgdGCmV7AOsi9uDILieY6iX+GK3VjJd1IaPkas
e/M0acYjPNXhUGzg9SYvm2UZrSPD3j6RDuvnV/bFbs9rGhNl481z2H+SsYwa
i8qWX9NozrHvf3iOq8sscMKEyKhXXpeoO9bgkcv4YioTrBKkiJ4WzrSs252o
HR3qYHAytEppVmo1CvlIi2bQo6gEpTbLPoiqJO1cskKG3dOYPxROz8o4g7HU
kufTGe1K1DrO7pB7xGWzyR3v2H28qv8BjD0Bv5RwlorlNzYtwh/PcI+biPMz
d2JTYC6WalT8pcgQbfTtzHfyM4cVvUu1ag/342c/a6deVC9V31ASGdYsNHDf
IBTboVCSVOe2YJ/RmpumWrU/rkHFzqr1pOemsmyM1GLi7Vo+wwIeZVdR8ZgX
HoOfBm7MXVKzRGBHedQBOn9SXG9JWUTZ5of4R94nTr+fr56Y2j5ks6cyVE+K
bjhesMHjPmdA6TZs0OQjTMhhp9JtRdzLjU+ZuCar2TBDApvPIgVoNzh2N6C7
9SvvTq1BVsC3PTv2OXXxpemo/KnIrOaLuSB5O6Be/rfCjiH1sJtHeD+NZ+P1
pZh3qCKmEjI7C6M8aMni+9J4cv/SbjCKHf6wamS9d7+Haat7uovWnOmsQ3J/
TNhRTWJAoX9vbNOoRGq9b+sZcg15BFutHewW3SzRlQV/uzFhI1ZW0CeQ56Tj
+Kh0j7VEik5q5UqXdEvwq2ukjcwYF9G8NyJcG6kxYQTFWYGKyJKwu698xru6
zt40+tMmzbLLw1ylsOfWxtFovbsfbUGMjyS4OOAvfNI8q9URq0bcuJwVIJYd
qO5pGTlAT14uBALu9s6ml6rcUHa8DO7x8nKt3lcQ2MXjMOK90iCevvpqx2tH
2zoONZQjg+TZ3mwh9FJ0m1SJEmf1WO+KMUk4XsUnfOLwweC2Mav1bM4O8cxo
9hsXwvOb013G96UKjUUKY5JM++PtHYz03fBek7mpbQORA8Rd60Zna3ifEYf8
SkvkVWK/jBoN6LlmWWNc9XrSy8oLRvpayeU49RCkpDC52J/N32PmsnZaK533
RuSaJKxthrCjxZckc+Ddb4wUbulGhjjy7gLvsY0INca9wfTZZu7HpN+3fQ61
oC7snDGRatNx5ngntip43h9qGsN+47bwocOEm+N2xy7HZjyeMxtMbJr9Avaq
V2LfhwC3Ot9FUV48Lg+7eMf/9cPmN33uzNQdk1+Yonnq+988MHpf6nB1kynG
9/D5kzhjfztatYMl38UI65ED3SRUzIfq0TJx4tD1eShQ46TfEhoNyZmKPqbw
RLSYJOFzX71ew0BSuyQvSv/06bHdtWv6sxf8NoUKxmRfkIKpcv1Cr6DBAbSL
Jr4pZkDU+qHaBaGeHopHT9xcHCx8b0SYi2jhHZF4c6cn8dLtSHpfU7CNpGa6
xjmX9XtSRLpNRHlEOXPHQeTc583Df9a+CjL0CTC2bUR3fCFRCwcVx2Q52e4k
WX6E5uvl2s6t9bbNS3pXsO2XIAbYhzo92Lut74oyfB58keAgKHPiRJYiA31B
ixl86fNtxSUj2ek12Cn4f/hA/l/gf6IAlghiqDQKCUP1gfwDiz81hWVuZHN0
cmVhbQplbmRvYmoKMTAgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUg
L1R5cGUxCi9FbmNvZGluZyAxNzEgMCBSCi9GaXJzdENoYXIgOTcKL0xhc3RD
aGFyIDEyMQovV2lkdGhzIDE4NCAwIFIKL0Jhc2VGb250IC9IT0ZBWE4rQ01T
U0kxNwovRm9udERlc2NyaXB0b3IgOCAwIFIKPj4gZW5kb2JqCjggMCBvYmog
PDwKL0FzY2VudCA2OTQKL0NhcEhlaWdodCA2OTQKL0Rlc2NlbnQgLTE5NQov
Rm9udE5hbWUgL0hPRkFYTitDTVNTSTE3Ci9JdGFsaWNBbmdsZSAtMTIKL1N0
ZW1WIDc3Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy05NCAtMjUwIDEwMTkg
NzU4XQovRmxhZ3MgNAovQ2hhclNldCAoL2EvYi9jL2UvaS9sL24vby9yL3Mv
dC91L3YveSkKL0ZvbnRGaWxlIDkgMCBSCj4+IGVuZG9iagoxODQgMCBvYmoK
WzQ1MSA0ODQgNDE4IDAgNDE4IDAgMCAwIDIyMyAwIDAgMjIzIDAgNDg0IDQ3
MCAwIDAgMzIwIDM2MCAzNDAgNDg0IDQzMiAwIDAgNDMyIF0KZW5kb2JqCjYg
MCBvYmogPDwKL0xlbmd0aDEgMTc0NQovTGVuZ3RoMiA5OTY0Ci9MZW5ndGgz
IDUzMgovTGVuZ3RoIDEwOTU0ICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUK
Pj4Kc3RyZWFtCnja7ZdVWFzLtqhxCJDgbo1b0ODuwd01SAdrGmgadwuW4K7B
g2twCO5OcA9uIWiChdNr7X0WOfs83vt0vwsv/GPWHOMfVTVrTuip1bXYJK0c
LYByjmAoGxc7lxBAWkVLS0qfixPAxc6JTk8vDQGaQ20dwTLmUKAQgEtQkAsg
6WoN4IZd5xPieSXEyYdOD5B2dPKE2FrbQAFM0sx/DeIHSDoAIbaW5mCAijnU
BugAy2FpDgJoOVraAqGe7ABJEAig+dcdLgBNoAsQ4ga0Ykfn4gJY2VpCARZA
a1swOsdfTgrgt44A/n+FrVyd/vuSGxDiApMCMMEkmQEwRStHMMgTYAV8i86h
6girBYSZ/N+Q+s/kcq4gkKq5w1/p/z1P/2uEuYMtyPPfYxwdnFyhQAhAxdEK
CAH/51A94L/0pBxB/6uQAtQcZGspCbYGAQGc/wrZusjZegCt1G2hljaAt+Yg
F+DfcSDY6j8VYBP3twCHpKGCtq486z9r+vdldXNbMFTb0+mfxH+N/5u5nhg2
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
SMGNCv3pUuqHIapq6szc4Z+QGy0MjFzMM9bR5A3NTZk7qaFE4gsvcwQw3lFU
3kaFFEq7NUPUS3JluKgcnODN58UZJA6MqxeuV0QUKzLx8zVPb+JqNLJCP5RV
ZmDzdCy0yXNlX4mU3zMw9ep4qIvRbSe1Fi29ogpP9DC8E5ihoIhJQuMcT49m
4wR+6KiNGkyZZ51uSxXy/WksXsfPjMDiUF6gubMSnPXZDXXMjpJP57Ay7iuu
yObr77eYKeLdim1L+2qnCy003LUdiFSLJr2t70nepKlRXdasI/Lgbo8jeiAF
cuprS/dprgv583jbuLAubTVGB0ZCp6KgwmStkKbkjGT2LYrQDDKGNgpljsK3
vi6rUaaev9tqf5Ztt67I0dd8N8t9m32Jkl+7Pej5UvbmlRDmxyvzGzJZB6Fa
SVrc8bEFeU7RV00HITX+sE+MuWS3+kTIFVdhQ+ElRgI8Js0s6uDY6afSWE38
BoMfrEz6E5u258Q0fjxCQloJ8mmMc9Zbor/5LBfTYyodCGYPjn0yU2aZi4Im
fLogde4Wjokx5X3Swena33fc0QWdZElVjMfI7qKv23J5P024Ul3hVGAQAZLA
t7qoRJxRWpjxSWiyKBReGpaLR9tSt879juZYnx3slk5LX8/2sZfP1QpWyTcQ
UrBWIfTwI1XbBmuvsbtWRFWPdb75ToDZEjQL/WmOLVq2fXPDjBx8+KKNn3Jq
9FfUfjNEBgvn1o57sh+hQoGuooL11IlIMyX5jp9MgYclXxZTByfEJb/HC1xs
ETrauCNg7gMRVONulmvdVEZKmtejKZ+L9oSwQ0oV3DCY99d4EGpmsPdMSlwA
4bcp6r6ppscIrMpDXA/1dxlifs55HliYEme2ReKymkVLFGZNZc2zeLYpeqVY
eiiFkVcJmkAAz/Fu5+0nCRX5u4tH7BtF8QV3OtFKJGxKMzKNZOyrCH0ZvOyM
GYmdpv4wf8AKx6HAhOJPRd06iZYlI3tE8A2PQinBd+4fp5YZJWN9J8apYGt3
BANftiy1teiwAfemOcfF8rCv8d2JDkarDw2K2GrP1U2/FFvOVaIFfXzG/nzj
ON0bX7dXU47dscIEsYLHnXGgMos4z7/Jl4RP0hhZDvA2Mju8X8z5VqUUX9Ct
mWVgSkte6dUIG4HsmSjdUrd4ggxm7hWC0NjiUoL5+V3rfNwB43Uxv8z0Jc31
GI1UAsUOStBRSlFHN4TczEidVEOvRB/s33ZGb15dhFuqVr4dJ+ikRBeIW1rI
bGV5b9ApfFZkgVEwvR2QrO0xMn46HUF7h2vBNxNUmZaVayP6dV7bw8WynwGJ
3FVfSZzrDi/zfmFPIQ/ti54jQWiSyNGPG7dOmg3s30BPgeNsYX9GQmz/3X2L
qMQgQHoddEfQ5025c7ACLu2OTm1sHjf9c6ZD3gSJcLV7FTw8nHePWp5raoy7
XdnCmImpMpL+LoJcUSROzZlhPXaydnVKS07sH8yfI0yr8cqF03lmEftz+6Dk
28ZtNL5Gqha+mJrCcAPqF9PYBf5e0DEJSiJod7Nx2NitxGM9okrE7w5sPyLS
vVzuxBKfVJyjpagMn09CBoiEnNqumJkbGaHwJJHM0dKNoNU2rUnGcYWksuom
bDyP1x/MHGh8zWypFbxtzthnQAD6adCyjufQQ/FSCgFLprip78zsTcDg/hSK
buWHJJIpTmNx7u+mH6Q1Fl98fYOT583AiBiyl4fGXXiBZlVXYBtOd2UzGC9N
RJuGdc8p4ibbbo/kem5DRqe39Ba7RuqlzNCGjKj3vd6aK6dH3MMKPOUs7bZK
Yk1RsY3hs2WzGeWE92dG5bcjP0jU5TimD1U/++1A7sN7Ehh4CM8V3tdwSpla
1X2/bNlm0mmvgwslxHdb1I0x7c2OZDhT2ko4tgnuDQkjZEEtdI9+BX8fGJPW
+Dr2+rGzvSLHvTC57EsBy6kJlOewrhxn3vRK/2tpSZb6u9Q9bjrXgBdxDzG9
MbOF4ByZXu94Xy8Fy5+VfF9QOlvchdAG06eIB5Q1CLZebEW0ZII3547rGdiH
A8ajkmIZytdeOhQIxlBL0vPAt7/ClmWHgP1jvSPUEcS/2RJ4PVQNQpFrKStc
RSRR9aWNIyQKxf0pttYX6h82B1xOcjLW3bkk8aeHBQt1rNDpDFpSeFXM8dAl
ZXMt7c4mldYBVznwQ4H0ScyjCniqUc+Z7o2RNDX9rxRYjqsdVKTyp5IUHjrg
ZrjGBVDV0Uccbsog6u9F8BC/ZJPqMvRrzW7Yq1pxgnsEFR/CcUTvjuJI0D3k
bR3kJ3BpgI8fk0O0cEVQU5oQS7XkEOl4H4ViO6R3bw9eNKkMvBFManbKcjmu
scFfuynYkBW2bPEpPm9bnwwKV4l8nqvRi8t8zMEVMlmPqzW+b1SEkoPPZhy2
hxV7OBvAG1vFhPTrE/SNlVPmjHB+POsOfUJrjG6oSDDBmRrfr1953uJeInpI
u/WTS+iZl8iV7JAx8y7KCu/ZhH2nHAJ6SmuEjxeZflRdK1PGIu98LNUDEbBV
Akv56EnRDKtyxVYug12UuS8LjS9JJ/LlBi5FWYZx6t6T4YWwKqGc3+anjw7T
ImXLHfrkHvQw8ZSw7vW3mYFnG0Af7IUPPdPiVloPfby84lA3l17Go89eYvoX
MBLoM7Ifyb9HrXr+DfGylCiecncHWR+ScGDxtaBURLj8y93v1Jr05vZ4Z5eB
jx+hnjhR9sFZD4+PCA1AjzEHhXRCMidxc69hhvmw2rYXGIuz+hh1xBUSB5/J
Qqhvju2rM8zwJzPdrLUR+DcMnU6YGMxxOxChZ2eXC5cFCOU/bLJRb98yaNS8
aiHNPS77gLGaMM9LF2pg29lf1CeHfpail1v/RcaDLStejPkjtTY/dppfU0GU
ZjvKFAgj0xs0Tr5TaFW3dwDRmhIXE8hxrCSVpttiwXX9cmW3oKHM4qjcct+A
18Tmos9ZSyU9T3BOyoBtgcUnxDX5bSrUh2CflrbkPXH8o5WPXZ/9XGdmxPLM
Q31GyGCCjg1aSG0wwZ6z0Fp8bJOQtnSSTMTGYYPq9fq9xcPKJIWl8jTWtNqq
g3eyOiGu7QtAA13bIVa64/wiC24NEekNTmonztyMxSF37p3CTDzeRfZzDXVT
SEIE23Dokc6H9epYJt6pWuGuc6CG3VV2UHDdlkuZJMU4Zd430oEGNuZUNu53
Ad3IWCaKy2ZeLD9ufY7lKls/oG6gQizP4N+NX1dq6bWPKtg3539cEDwVsMmj
+7b8iLY4dRb387kKAXnDoZ5q8m6XamgmRWAxws971sj6WwdA+RTLojHJdG/f
TCe7jgdim2QLzdUPnX7goXIDvpoWenmVs+3NvGJvk1taFjp02lTp3JjfrWDw
1RwG4fi3GX8cUmq/CBObl4sOg4SZXOdX2GnrQw/muYMPI3ZG9e+RCWeVxt4j
GY+3oUaWNuUsb8tUCpOx68MvR08nIRJJK+X/atAR40C6mrN8iN9pWVlpzdCs
RN7R3sL7mBAn4MEcvROKm5ooa1dw0WGo2mJry6SumX5GW6V6QzYSymwhOEBY
8oiwzp7s4hXVgn5pOiBxz3ewCX+kzXAKkBgvtxx1SAIOYX0cJOrHQ4zrOPc4
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
9msJzJafofS5v1PMB1edpptnJqk1PmhT9Ca6b23L1rourey1gceWXhwQPzbe
pjHd1r+w7lFGDOj5Vlunc0O4uyJtrpBcJ4Vky3a5PtekXCrUmoELkhimGXhY
ySJ17rJN1XbP1oi+GJ+lXsjkjb/n/OIWdhyqAnEqlDsSkvpNnZvVr9ItOy2w
NSwdEu+K7+Db8ELm20vsjRV0GTzlDyEta1uY5YOK/kJlSi/8cT8C9uQ1DDrh
bojdpCXWhnB2aYnzjQSQPnSGbndTET58IGrSgo9EGdZixyCReEwQDZv0797S
JVsvZ582W37f5kiqZIk8P7wgVxc++iCgy5ISapgDcZX7gYYv4LA6p0GtV/G9
8/ahG6BJNrYuqgU5T5/UpmsUmY6HiNeYG53ODni9p6NGJkuUZTV1rqWASHMm
jzN7friDvTG8jbrqjm85x+4Na6ewtyopf0d0MQ7umgGeyWH8th+mLjoDIA43
gtR8yPe0hLHo6uh94g3jY0h0UlB3N7n4l6joRUoRtH7Slya+BHR5fn57lHz3
xqOhNW7E5iyJtCUle8hAisXgbQkdMGFbjf5NBWLoQ0vMQXl1xs5PHJWJ2sVS
G2ev9wgCNBT+C599utzjMBlqBrD1zUtJyvBeJ+UP007inaDFE7OX2r5Q6iKL
UI8KQG7AVDlzFzqpBKuxILFLWFdStD+GBgThFtdKex3xanLwePkhTeihHArY
hA1dnJvYhG2Bo41NdXD4EGagRYYsWvmgq6Q0FU1Furj+xShPClnL1muv1yOE
eyOFe7bkJc6MfKCpNIHBSk0Har7zz0gDIVXYrsE7pPD8etU/KRpwvr7pLH/E
fY2YNZqgz18JOlw7GFP55lZ51wN8yc3pp9oK8aHIap+qMdpyZDjo2DKJjhTP
wavvXO0SBV69FOGQ06A5aKo2ix1Jda2UQQJ3ciYtU08gFiLPogk00Mhg9fAZ
w3dHwz4Rdr9loE+M7kk3T1cgZxlUeaXvSSJObzhMOjtuEdL/FKs6So75xNz2
jKdv2rHJ51Xap4uhg1TOPcMbF/T9/p2m/ehCoqhl12fnGif32HO/yk+eHYLy
Q1Mz6J59I1cQFgsbeUPAJe2w/+YDJ/ftw3KzI96Y2ApJqZbX3oo6G4on5NTG
y35PpOkEyWEhO6sRoDSRbT4JF7Ad/90hDWp1O36MzwMycIlz/C0ozJly5J/U
dsyjcdNyg6iDZ/NMc8HoFjS1adg/5oMFotd752Rmf5nnEqmwGCB9Qt43YoXu
+O0n8/G0Avst5icliVxSP/s77lZio0MMbBzctaFFs7edBCYMTN/96jpI9K9M
Fx7XozpaFzPp9F98D/xqI562wOlO2ZzgaP1pmMqUm0p9j0pCRH/V/lD4V6n8
Sz2LwqqT2L0ihJ6Tm0BDyUH3ptukD9VjNfQT02lNGQf+SGB00eypkyFAc7GP
G2L8COjB5DkWQ1BMA5w1K/SdUGquUapGT6puXPctjQwnyYF17u/eSTpcYFZn
72fMuRIjZ/eBRVkMb8z672x+z1ESKqSf14gLpjjdp+iLPltbDDzpasN45+6A
/J7SKfWIQ120hNpzQ2N5YZrn1jbog1/6R96vYViCg0kvqnt0mopQX47F+clS
J8a4hCV5IB/OYGL6CBYM/PBka09mryo8vT8WLpwUWI0u6pMesY8XCBARyriC
eh9GwcWfRujyxqJdyK+Q9UrpbVvwN3t4DaPm7ZeGpePr4cEja0coBLZHFN7r
2ozvIzx+YUTO3H+ukzA8cNeCSqSsftQrVXPQ9hXO67YCNecZtApZTvQQktJg
+bDjfhJrTdRJQSBjZvCsi5JOy/n1ASSl8DCuhHhFQ5ROim99necgFjxF4JLI
b5kexN3WuqFU3tC8LhS8c+osy2sQ19915USPIXsU6im8FvLGdNT1TodyKYOd
AJGlbeyuTPQak9zJEATZDNAmQbydvqigUOtZ/cTk9Cych7Ew5heUdllDS3Hr
QMi5E9xBZ78hMuVez6u0SMQeKS4qiFAtSv2msW0UePGVk8eU/sO1eHbfrA4x
lPP/8Af9/yf4fyKBJQhoDoE6OphD7NH/C2fJ8iplbmRzdHJlYW0KZW5kb2Jq
CjcgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNv
ZGluZyAxNzEgMCBSCi9GaXJzdENoYXIgMTIKL0xhc3RDaGFyIDEyMQovV2lk
dGhzIDE4NSAwIFIKL0Jhc2VGb250IC9BWklUVkgrQ01TU0JYMTAKL0ZvbnRE
ZXNjcmlwdG9yIDUgMCBSCj4+IGVuZG9iago1IDAgb2JqIDw8Ci9Bc2NlbnQg
Njk0Ci9DYXBIZWlnaHQgNjk0Ci9EZXNjZW50IC0xOTQKL0ZvbnROYW1lIC9B
WklUVkgrQ01TU0JYMTAKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDEzNgovWEhl
aWdodCA0NTgKL0ZvbnRCQm94IFstNzEgLTI1MCAxMDk5IDc4MF0KL0ZsYWdz
IDQKL0NoYXJTZXQgKC9maS9wYXJlbmxlZnQvcGFyZW5yaWdodC9jb21tYS9o
eXBoZW4vcGVyaW9kL3NsYXNoL3plcm8vb25lL3R3by90aHJlZS9mb3VyL2Zp
dmUvc2l4L3NldmVuL2VpZ2h0L25pbmUvY29sb24vcXVlc3Rpb24vQS9CL0Mv
RC9FL0YvRy9IL0kvTC9NL04vTy9QL1EvUi9TL1QvVS9WL1cvYS9iL2MvZC9l
L2YvZy9oL2kvay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kpCi9Gb250
RmlsZSA2IDAgUgo+PiBlbmRvYmoKMTg1IDAgb2JqCls1ODYgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
NDI4IDQyOCAwIDAgMzA2IDM2NyAzMDYgNTUwIDU1MCA1NTAgNTUwIDU1MCA1
NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCAzMDYgMCAwIDAgMCA1MTkgMCA3MzMg
NzMzIDcwMyA3OTQgNjQyIDYxMSA3MzMgNzk0IDMzMSAwIDAgNTgxIDk3OCA3
OTQgNzk0IDcwMyA3OTQgNzAzIDYxMSA3MzMgNzY0IDczMyAxMDM5IDAgMCAw
IDAgMCAwIDAgMCAwIDUyNSA1NjEgNDg5IDU2MSA1MTEgMzM2IDU1MCA1NjEg
MjU2IDAgNTMxIDI1NiA4NjcgNTYxIDU1MCA1NjEgNTYxIDM3MiA0MjIgNDA0
IDU2MSA1MDAgNzQ0IDUwMCA1MDAgXQplbmRvYmoKMjMgMCBvYmogPDwKL1R5
cGUgL1BhZ2VzCi9Db3VudCA2Ci9QYXJlbnQgMTg2IDAgUgovS2lkcyBbMyAw
IFIgMjUgMCBSIDMxIDAgUiAzNyAwIFIgNDAgMCBSIDQzIDAgUl0KPj4gZW5k
b2JqCjQ5IDAgb2JqIDw8Ci9UeXBlIC9QYWdlcwovQ291bnQgNgovUGFyZW50
IDE4NiAwIFIKL0tpZHMgWzQ3IDAgUiA1NSAwIFIgNTggMCBSIDYxIDAgUiA2
NCAwIFIgNzAgMCBSXQo+PiBlbmRvYmoKNzggMCBvYmogPDwKL1R5cGUgL1Bh
Z2VzCi9Db3VudCA2Ci9QYXJlbnQgMTg2IDAgUgovS2lkcyBbNzYgMCBSIDgw
IDAgUiA4MyAwIFIgODggMCBSIDEwNCAwIFIgMTEzIDAgUl0KPj4gZW5kb2Jq
CjExOCAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDYKL1BhcmVudCAx
ODYgMCBSCi9LaWRzIFsxMTYgMCBSIDEyMCAwIFIgMTIzIDAgUiAxMjYgMCBS
IDEyOSAwIFIgMTMyIDAgUl0KPj4gZW5kb2JqCjEzNyAwIG9iaiA8PAovVHlw
ZSAvUGFnZXMKL0NvdW50IDYKL1BhcmVudCAxODYgMCBSCi9LaWRzIFsxMzUg
MCBSIDEzOSAwIFIgMTQyIDAgUiAxNDUgMCBSIDE0OCAwIFIgMTUxIDAgUl0K
Pj4gZW5kb2JqCjE1NiAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDUK
L1BhcmVudCAxODYgMCBSCi9LaWRzIFsxNTQgMCBSIDE1OCAwIFIgMTYxIDAg
UiAxNjQgMCBSIDE2NyAwIFJdCj4+IGVuZG9iagoxODYgMCBvYmogPDwKL1R5
cGUgL1BhZ2VzCi9Db3VudCAzNQovS2lkcyBbMjMgMCBSIDQ5IDAgUiA3OCAw
IFIgMTE4IDAgUiAxMzcgMCBSIDE1NiAwIFJdCj4+IGVuZG9iagoxODcgMCBv
YmogPDwKL1R5cGUgL0NhdGFsb2cKL1BhZ2VzIDE4NiAwIFIKL1BURVguRnVs
bGJhbm5lciAoVGhpcyBpcyBwZGZUZVgsIFZlcnNpb24gMy4xNDE1OS0xLjEw
YikKPj4gZW5kb2JqCjE4OCAwIG9iaiA8PAovUHJvZHVjZXIgKHBkZlRlWC0x
LjEwYikKL0NyZWF0b3IgKFRlWCkKL0NyZWF0aW9uRGF0ZSAoRDoyMDA4MDQz
MDExMTkwMCkKPj4gZW5kb2JqCnhyZWYKMCAxODkKMDAwMDAwMDAwMCA2NTUz
NSBmIAowMDAwMDAxODAyIDAwMDAwIG4gCjAwMDAwMjY4OTYgMDAwMDAgbiAK
MDAwMDAwMTY5MCAwMDAwMCBuIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAy
NzcxMzYgMDAwMDAgbiAKMDAwMDI2NTkwMyAwMDAwMCBuIAowMDAwMjc2OTc2
IDAwMDAwIG4gCjAwMDAyNjU1ODIgMDAwMDAgbiAKMDAwMDI2MjI3MCAwMDAw
MCBuIAowMDAwMjY1NDIyIDAwMDAwIG4gCjAwMDAyNjE3NDYgMDAwMDAgbiAK
MDAwMDI1NTQ3MSAwMDAwMCBuIAowMDAwMjYxNTg2IDAwMDAwIG4gCjAwMDAy
NTQ4MzMgMDAwMDAgbiAKMDAwMDI0NTExOSAwMDAwMCBuIAowMDAwMjU0Njc0
IDAwMDAwIG4gCjAwMDAyNDQxNjggMDAwMDAgbiAKMDAwMDIyODQ1NyAwMDAw
MCBuIAowMDAwMjQ0MDA5IDAwMDAwIG4gCjAwMDAyMjgxMDkgMDAwMDAgbiAK
MDAwMDIyNDQyMyAwMDAwMCBuIAowMDAwMjI3OTQ5IDAwMDAwIG4gCjAwMDAy
Nzc5MDUgMDAwMDAgbiAKMDAwMDAyOTU2NiAwMDAwMCBuIAowMDAwMDI5NDUx
IDAwMDAwIG4gCjAwMDAwMjcwNTggMDAwMDAgbiAKMDAwMDIyMzcyMSAwMDAw
MCBuIAowMDAwMjE0MTEwIDAwMDAwIG4gCjAwMDAyMjM1NjEgMDAwMDAgbiAK
MDAwMDAzMjM2MCAwMDAwMCBuIAowMDAwMDMyMjQ1IDAwMDAwIG4gCjAwMDAw
Mjk2NzEgMDAwMDAgbiAKMDAwMDIxMzU2NSAwMDAwMCBuIAowMDAwMjA1MTY0
IDAwMDAwIG4gCjAwMDAyMTM0MDUgMDAwMDAgbiAKMDAwMDAzNTE5NiAwMDAw
MCBuIAowMDAwMDM1MDgxIDAwMDAwIG4gCjAwMDAwMzI0NjUgMDAwMDAgbiAK
MDAwMDAzODI2OSAwMDAwMCBuIAowMDAwMDM4MTU0IDAwMDAwIG4gCjAwMDAw
MzUyNzcgMDAwMDAgbiAKMDAwMDA0MTI0NiAwMDAwMCBuIAowMDAwMDQxMTMx
IDAwMDAwIG4gCjAwMDAwMzgzNjIgMDAwMDAgbiAKMDAwMDA0Mzc1OCAwMDAw
MCBuIAowMDAwMDQ0ODc0IDAwMDAwIG4gCjAwMDAwNDM2NDMgMDAwMDAgbiAK
MDAwMDA0MTM1MSAwMDAwMCBuIAowMDAwMjc4MDE0IDAwMDAwIG4gCjAwMDAw
NDQ2MDMgMDAwMDAgbiAKMDAwMDA0NDczNyAwMDAwMCBuIAowMDAwMDQ0Nzgz
IDAwMDAwIG4gCjAwMDAwNDQ4NTQgMDAwMDAgbiAKMDAwMDA0NzYxNSAwMDAw
MCBuIAowMDAwMDQ3NTAwIDAwMDAwIG4gCjAwMDAwNDQ5OTQgMDAwMDAgbiAK
MDAwMDA1MDI3MCAwMDAwMCBuIAowMDAwMDUwMTU1IDAwMDAwIG4gCjAwMDAw
NDc2OTYgMDAwMDAgbiAKMDAwMDA1MzA4MCAwMDAwMCBuIAowMDAwMDUyOTY1
IDAwMDAwIG4gCjAwMDAwNTAzNTEgMDAwMDAgbiAKMDAwMDA1NTY4MyAwMDAw
MCBuIAowMDAwMDU1NTY4IDAwMDAwIG4gCjAwMDAwNTMxNjEgMDAwMDAgbiAK
MDAwMDIwNDI2OSAwMDAwMCBuIAowMDAwMTkwMTgwIDAwMDAwIG4gCjAwMDAy
MDQxMDkgMDAwMDAgbiAKMDAwMDA1ODQ5NyAwMDAwMCBuIAowMDAwMDU4Mzgy
IDAwMDAwIG4gCjAwMDAwNTU3NzYgMDAwMDAgbiAKMDAwMDE4ODg3MiAwMDAw
MCBuIAowMDAwMTg3MTg4IDAwMDAwIG4gCjAwMDAxODg3MTMgMDAwMDAgbiAK
MDAwMDA2MTQxNCAwMDAwMCBuIAowMDAwMDYxMjk5IDAwMDAwIG4gCjAwMDAw
NTg2MDIgMDAwMDAgbiAKMDAwMDI3ODEyNCAwMDAwMCBuIAowMDAwMDY0NDQ4
IDAwMDAwIG4gCjAwMDAwNjQzMzMgMDAwMDAgbiAKMDAwMDA2MTUzMSAwMDAw
MCBuIAowMDAwMDY3NDEwIDAwMDAwIG4gCjAwMDAwNjcyOTUgMDAwMDAgbiAK
MDAwMDA2NDU1MyAwMDAwMCBuIAowMDAwMDcwNDc1IDAwMDAwIG4gCjAwMDAw
ODM3NTUgMDAwMDAgbiAKMDAwMDA4MTQxNCAwMDAwMCBuIAowMDAwMDcwMzYw
IDAwMDAwIG4gCjAwMDAwNjc1MTUgMDAwMDAgbiAKMDAwMDE4NTMwMyAwMDAw
MCBuIAowMDAwMTgzMjU0IDAwMDAwIG4gCjAwMDAxODUxNDYgMDAwMDAgbiAK
MDAwMDE4MzAyNiAwMDAwMCBuIAowMDAwMTgwOTc2IDAwMDAwIG4gCjAwMDAx
ODI4NjkgMDAwMDAgbiAKMDAwMDE3OTYxNCAwMDAwMCBuIAowMDAwMTc1MDk4
IDAwMDAwIG4gCjAwMDAxNzk0NTQgMDAwMDAgbiAKMDAwMDA4MTIxMCAwMDAw
MCBuIAowMDAwMDgxMzQ0IDAwMDAwIG4gCjAwMDAwODEzOTEgMDAwMDAgbiAK
MDAwMDExMjY5OSAwMDAwMCBuIAowMDAwMTMyODcwIDAwMDAwIG4gCjAwMDAw
ODM2MzcgMDAwMDAgbiAKMDAwMDA4MTU4MiAwMDAwMCBuIAowMDAwMTEyNDk0
IDAwMDAwIG4gCjAwMDAxMTI2MjkgMDAwMDAgbiAKMDAwMDExMjY3NiAwMDAw
MCBuIAowMDAwMTMyNjY1IDAwMDAwIG4gCjAwMDAxMzI4MDAgMDAwMDAgbiAK
MDAwMDEzMjg0NyAwMDAwMCBuIAowMDAwMTM1NDEwIDAwMDAwIG4gCjAwMDAx
MzUyOTIgMDAwMDAgbiAKMDAwMDEzMzAxNiAwMDAwMCBuIAowMDAwMTM3NzA5
IDAwMDAwIG4gCjAwMDAxMzc1OTAgMDAwMDAgbiAKMDAwMDEzNTUwNSAwMDAw
MCBuIAowMDAwMjc4MjM2IDAwMDAwIG4gCjAwMDAxNDA1OTUgMDAwMDAgbiAK
MDAwMDE0MDQ3NiAwMDAwMCBuIAowMDAwMTM3ODE1IDAwMDAwIG4gCjAwMDAx
NDM2NzEgMDAwMDAgbiAKMDAwMDE0MzU1MiAwMDAwMCBuIAowMDAwMTQwNzAx
IDAwMDAwIG4gCjAwMDAxNDY1OTUgMDAwMDAgbiAKMDAwMDE0NjQ3NiAwMDAw
MCBuIAowMDAwMTQzNzc3IDAwMDAwIG4gCjAwMDAxNDk2MjggMDAwMDAgbiAK
MDAwMDE0OTUwOSAwMDAwMCBuIAowMDAwMTQ2NzAxIDAwMDAwIG4gCjAwMDAx
NTI0OTUgMDAwMDAgbiAKMDAwMDE1MjM3NiAwMDAwMCBuIAowMDAwMTQ5NzU4
IDAwMDAwIG4gCjAwMDAxNTQzNTAgMDAwMDAgbiAKMDAwMDE1NDIzMSAwMDAw
MCBuIAowMDAwMTUyNjEzIDAwMDAwIG4gCjAwMDAyNzgzNTMgMDAwMDAgbiAK
MDAwMDE1NTU5MCAwMDAwMCBuIAowMDAwMTU1NDcxIDAwMDAwIG4gCjAwMDAx
NTQ0MzMgMDAwMDAgbiAKMDAwMDE1ODI1MiAwMDAwMCBuIAowMDAwMTU4MTMz
IDAwMDAwIG4gCjAwMDAxNTU2NzMgMDAwMDAgbiAKMDAwMDE2MTE4NSAwMDAw
MCBuIAowMDAwMTYxMDY2IDAwMDAwIG4gCjAwMDAxNTgzNTggMDAwMDAgbiAK
MDAwMDE2NDMwNSAwMDAwMCBuIAowMDAwMTY0MTg2IDAwMDAwIG4gCjAwMDAx
NjEzMTUgMDAwMDAgbiAKMDAwMDE2NjAzNCAwMDAwMCBuIAowMDAwMTY1OTE1
IDAwMDAwIG4gCjAwMDAxNjQ0MzUgMDAwMDAgbiAKMDAwMDE2NzY1OSAwMDAw
MCBuIAowMDAwMTY3NTQwIDAwMDAwIG4gCjAwMDAxNjYxMjggMDAwMDAgbiAK
MDAwMDI3ODQ3MCAwMDAwMCBuIAowMDAwMTY5MjEyIDAwMDAwIG4gCjAwMDAx
NjkwOTMgMDAwMDAgbiAKMDAwMDE2Nzc1MyAwMDAwMCBuIAowMDAwMTcwNjAw
IDAwMDAwIG4gCjAwMDAxNzA0ODEgMDAwMDAgbiAKMDAwMDE2OTMwNiAwMDAw
MCBuIAowMDAwMTczMTIyIDAwMDAwIG4gCjAwMDAxNzMwMDMgMDAwMDAgbiAK
MDAwMDE3MDY5NCAwMDAwMCBuIAowMDAwMTc0MDY3IDAwMDAwIG4gCjAwMDAx
NzM5NDggMDAwMDAgbiAKMDAwMDE3MzIyOCAwMDAwMCBuIAowMDAwMTc0MTUw
IDAwMDAwIG4gCjAwMDAxNzk4NDAgMDAwMDAgbiAKMDAwMDE4MDAzMCAwMDAw
MCBuIAowMDAwMTgzMjI2IDAwMDAwIG4gCjAwMDAxODU1MDMgMDAwMDAgbiAK
MDAwMDE4NTUzMSAwMDAwMCBuIAowMDAwMTg5MDk2IDAwMDAwIG4gCjAwMDAx
ODkxNjIgMDAwMDAgbiAKMDAwMDIwNDgwMCAwMDAwMCBuIAowMDAwMjEzODQ3
IDAwMDAwIG4gCjAwMDAyMjQwNzQgMDAwMDAgbiAKMDAwMDIyODMxOSAwMDAw
MCBuIAowMDAwMjQ0NzAwIDAwMDAwIG4gCjAwMDAyNTUxNDMgMDAwMDAgbiAK
MDAwMDI2MjAzMCAwMDAwMCBuIAowMDAwMjY1ODA1IDAwMDAwIG4gCjAwMDAy
Nzc1MzYgMDAwMDAgbiAKMDAwMDI3ODU3OSAwMDAwMCBuIAowMDAwMjc4Njc4
IDAwMDAwIG4gCjAwMDAyNzg3ODggMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6
ZSAxODkKL1Jvb3QgMTg3IDAgUgovSW5mbyAxODggMCBSCj4+CnN0YXJ0eHJl
ZgoyNzg4ODQKJSVFT0YK

---561407174-1284099112-1209550804=:16355--

From owner-apps-samp@eso.org  Wed Apr 30 12:39:33 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B98346242C6
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 12:39:33 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAdZ2U010033
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 12:39:35 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UAdZrq010032
	for apps-samp-outgoing; Wed, 30 Apr 2008 12:39:35 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAdYPY010028
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:39:34 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 474671E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:41:30 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEANbpF0iJ3jon/2dsb2JhbACsfg
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6938915"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 12:36:36 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jr9io-0005Jz-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:39:34 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jr9io-0004Ig-3K
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:39:34 +0100
Date: Wed, 30 Apr 2008 11:39:34 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: TODO: Draft document to-do list
Message-ID: <Pine.LNX.4.63.0804301137080.16522@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

This is a list of things which the authors know require more work in
the draft SAMP document.  By all means supply suggestions for impovements
in these areas, but it's not necessary to post a comment to the effect
"but the ... section is incomplete" - we know.

   1. MType vocabulary.  Several aspects of section 5 need more work:
        - formatting
        - more detailed description of existing messages
        - consideration of what messages are required
             (especially hub housekeeping ones)
        - decision on which MTypes should be described in this document,
             and where other ones should be recorded

   2. Terminology.  The exact meaning and use of terms like Notify,
         Request, Call, Send etc are still under debate, both in the
         text of the document and the API method names.

   3. SAMP/PLASTIC comparison. The Appendices contain the beginnings of
         discussion of changes and interoperability between SAMP and PLASTIC.
         These need completing.
         in Appendices

   4. Examples.  Some further examples of use of the API and of actual
         message serializations would probably be a good idea.

   5. Proofreading, tidying up etc.  Since the document is still in a state
        of active editing there are probably plenty of minor errors and
        typos.  There may be some larger inconsistencies which we haven't
        spotted as well.

   6. LaTeX issues.  Crossreferences and bibliography aren't all working.
        Document currently only compiles using pdflatex (does this matter?)

   7. Implementations.  Need to write a hub implementation and adapt
         clients to use it...

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 12:44:28 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 9A1426240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 12:44:28 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAiUD7010569
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 12:44:30 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UAiUan010567
	for apps-samp-outgoing; Wed, 30 Apr 2008 12:44:30 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAiUxX010562
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:44:30 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id D05C81E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:46:25 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAMfqF0iJ3jon/2dsb2JhbACtAw
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6939057"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 12:41:25 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jr9nT-0005LL-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:44:23 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jr9nT-0004J8-HG
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:44:23 +0100
Date: Wed, 30 Apr 2008 11:44:23 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: ISSUE: Annotatations
Message-ID: <Pine.LNX.4.63.0804301139550.16539@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Message "Annotations" are a mechanism intended to allow dynamic runtime
refinement of MType semantics while using exactly the same syntax.
They were discussed but not much used within PLASTIC.
There has been considerable debate over whether annotations
are a useful feature.  We need to discuss whether, and if so how,
to incorporate this feature into SAMP (the mechanism might be a bit
different from that proposed within PLASTIC since it is not under 
the same constraints of backward compatibility).

The current version of the draft document does not discuss annotations,
but a description from an earlier draft ran as follows:

\subsection{Message Annotations}
\label{sect:msgAnnotate}

         Message annotations allow recipients of messages to {\em annotate}
Mtypes in order to narrow down the semantics, without changing the syntax
of the message.  In this way, messages semantics can be dynamically
extended/narrowed down without penalizing senders who do not understand
the ad-hoc annotations.  Annotation strings are dynamically created by
applications and may be declared as newly supported Mtypes any time after
the application has registered with the Hub.

         The syntax for an annotation is as follows:

\begin{verbatim}
                 <mtype> '@' <annotation>
\end{verbatim}

As an example, consider an application (A) that has registered and declared
support for the {\em process.votable} Mtype.  Upon loading a new table, that
application can declare support for the new annotated Mtype
{\em process.votable@append}.  The Hub will notify interested clients of this
new capability, and a different application (B) may choose to create a menu
of similar options using the root {process.votable} as a default action,
and the annotated Mtype to invoke a specific behavior.  Application B doesn't
need to know specifically what the annotation means, but by sending it back
to application A using the same arguments as for the base Mtype, application
A is able to dynamically extend the Mtype to create a specific functionality.

         Applications SHOULD be able to parse annotated Mtypes, however they
are free to ignore annotations they do not understand and process only the
base Mtype (if supported).

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 12:51:58 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id EF9516240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 12:51:57 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAq2UN011373
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 12:52:02 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UAq1lW011372
	for apps-samp-outgoing; Wed, 30 Apr 2008 12:52:01 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAq1uw011368
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:52:01 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1117C1E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:53:57 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAPLrF0iJ3jon/2dsb2JhbACtAg
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6939267"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 12:49:03 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jr9uq-0005P3-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:52:00 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jr9uq-0004Jt-Rt
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:52:00 +0100
Date: Wed, 30 Apr 2008 11:52:00 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: ISSUE: Envelope/Body distinction
Message-ID: <Pine.LNX.4.63.0804301147550.16586@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Should we formally distinguish the message envelope from the message body?
The same applies to responses - should they have separate envelope and 
body parts?  If so, what goes in each?

This would presumably affect the message/response encodings;
would it affect anything else?  Contributors with an opinion 
are invited to give example serializations (either XML-RPC 
or some similar representation where the structure is clear) 
for illustration.

Here is a section which appeared in an earlier draft of the document:

\subsection{Message Content}
\label{msgContent}

         Message content refers both to the semantic part of a message which
is what the sending application is trying to convey to the receiver, as well
as the structural parts of a message that may additionally include
information needed by the messaging system.  In general terms, the "body"
of a message is strictly the semantic part of the message, the "envelope"
is any part of the message providing delivery, routing, or other metadata
about the message (e.g. the timestamp it was sent).  It is dependent on the
implementation to specify the exact structure and required elements of a
message, but it is sometimes helpful to think of a message in terms of what
is being sent between applications in its entirety.  A familiar example is
an email message, where there is a clear distinction between the 'envelope'
and the 'body', but what gets delivered to the recipient is a text encoding
of both parts regardless of the intervening mail system used.

- this was removed because it did not mirror the current message/response
encoding prescriptions.  However it could be reinstated and/or a useful 
guide to how we want to do this, if we do.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 12:53:59 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id C981D6240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 12:53:58 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAs3db011656
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 12:54:03 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UAs3s7011655
	for apps-samp-outgoing; Wed, 30 Apr 2008 12:54:03 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UAs2IJ011648
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:54:02 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 20EB61E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 12:55:58 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAPLrF0iJ3jon/2dsb2JhbACtAg
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6939320"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 12:51:04 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jr9wo-0005Pv-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:54:02 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jr9wo-0004LK-2k
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 11:54:02 +0100
Date: Wed, 30 Apr 2008 11:54:02 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: ISSUE: Message-id management
Message-ID: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

The Asynchronous Call/Response pattern described in section 3.9 has 
the sender generating an ID which is used to match the message 
with its response between sender and hub, after which the hub 
generates a different ID which is used to match the message 
with its resopnse between hub and recipient.
This permits use of any value for message ID by the sender.

Some feel this is unnecessarily complicated and prefer a 
required message-id of form <senderId>-<uniqueKey> which would
enable the same string to be used for all stages of the message's
life.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 13:02:46 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 715DD6240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 13:02:46 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UB2piI012971
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 13:02:51 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UB2o5c012970
	for apps-samp-outgoing; Wed, 30 Apr 2008 13:02:50 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UB2o1m012966
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:02:50 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id E8B3A1E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:04:45 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAIbuF0iJ3jon/2dsb2JhbACtAg
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6939556"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 12:59:52 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrA5J-0005RO-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 12:02:49 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrA5J-0004M2-OS
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 12:02:49 +0100
Date: Wed, 30 Apr 2008 12:02:49 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: ISSUE: getHubID/getSelfID
Message-ID: <Pine.LNX.4.63.0804301154190.16702@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Clients require the public IDs of other subscribed clients so that they 
can target messages to particular recipients.  It can get these using
the hub getRegisteredClients() and getSubscribedClients() calls.

However there are two special client-ids which the registered client might
want to know:

    - its own client ID
    - the ID of the hub (in its capacity as a registered application,
      which is how it would send housekeeping messages like
      "the hub is about to shut down")

It's not obvious why a client would need to know these (e.g. you'd
only need to know your own client-id if you needed to send a message 
to yourself) - but people may come up with reasons (diagnostics and
testing is one possibility).

Currently the hub ID is available from the hub getHubID() method.
Is this method necessary?  There has been the suggestion to remove it
and dictate that the hub public ID must have a fixed well-knowne value
such as "0".

Currently there is no easy way for a client to find its own ID.
Should there be a getSelfID() method?  Or should this value be
returned by the register method (note the Standard Profile register()
method currently returns a private key specific to the application,
but this is not in general the same as the public id).

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 13:06:00 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id DA09A6240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 13:06:00 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UB65r4013353
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 13:06:05 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UB65j2013352
	for apps-samp-outgoing; Wed, 30 Apr 2008 13:06:05 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UB65BM013348
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:06:05 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 7ABB21E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:08:00 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAK3vF0iJ3jon/2dsb2JhbACtAg
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6939641"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 13:03:06 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrA8S-0005S8-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 12:06:04 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrA8S-0004ML-9n
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 12:06:04 +0100
Date: Wed, 30 Apr 2008 12:06:04 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: ISSUE: Well-known metadata items
Message-ID: <Pine.LNX.4.63.0804301202580.16746@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

The list of well-known metadata items in section 3.6 is currently:

     samp.name (RECOMMENDED)
        A one word title for the application.
     samp.description.text
        A short description of the application, in plain text.
     samp.description.html
        A description of the application, in HTML.
     samp.icon.url
        The URL of an icon in png, gif or jpeg format.
     samp.documentation.url
        The URL of a documentation web page.

Is this list right?  Should more (e.g. contact name, IVORN) be added
or some taken away?  Should more be RECOMMENDED than just samp.name?

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 13:06:03 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6CA2B6240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 13:06:03 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UB68ds013370
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 13:06:08 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UB68u8013369
	for apps-samp-outgoing; Wed, 30 Apr 2008 13:06:08 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UB67Hx013365
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:06:07 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 37D721E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:08:03 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6939643"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 13:03:09 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrA8Q-0007VQ-79; Wed, 30 Apr 2008 12:06:02 +0100
In-Reply-To: <Pine.LNX.4.63.0804301154190.16702@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301154190.16702@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <C7E33CF2-4326-461A-93A4-AAAE6635F511@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: ISSUE: getHubID/getSelfID
Date: Wed, 30 Apr 2008 12:05:53 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> However there are two special client-ids which the registered  
> client might
> want to know:
>
>    - its own client ID
>    - the ID of the hub (in its capacity as a registered application,
>      which is how it would send housekeeping messages like
>      "the hub is about to shut down")
>
> It's not obvious why a client would need to know these (e.g. you'd
> only need to know your own client-id if you needed to send a  
> message to yourself) - but people may come up with reasons  
> (diagnostics and
> testing is one possibility).

I think I've done something weird and wonderful at one point when  
doing status monitoring of PLASTIC that involved having to know 'my  
own' ID. I'l try and dig it out of the eSTAR code and see what I was  
doing.

> Currently the hub ID is available from the hub getHubID() method.
> Is this method necessary?  There has been the suggestion to remove it
> and dictate that the hub public ID must have a fixed well-knowne value
> such as "0".

Seems reasonable...

> Currently there is no easy way for a client to find its own ID.
> Should there be a getSelfID() method?  Or should this value be
> returned by the register method (note the Standard Profile register()
> method currently returns a private key specific to the application,
> but this is not in general the same as the public id).

Isn't it currently returned by the register method under PLASTIC? I  
think this is the case, if so, I'd like that to continue to be the  
case. If not, seems sensible surely?

Al.

From owner-apps-samp@eso.org  Wed Apr 30 13:08:55 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0DC7D6240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 13:08:55 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UB8x3Z013623
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 13:08:59 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UB8xUP013622
	for apps-samp-outgoing; Wed, 30 Apr 2008 13:08:59 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UB8xZq013615
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:08:59 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 7DED51E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:10:54 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAK3vF0iJ3jon/2dsb2JhbACtAg
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6939705"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 13:06:00 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrABF-0005Tu-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 12:08:57 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrABF-0004Mc-Ne
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 12:08:57 +0100
Date: Wed, 30 Apr 2008 12:08:57 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: ISSUE: Messaging pattern descriptions
Message-ID: <Pine.LNX.4.63.0804301206220.16765@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Sections 2.5 and 3.9 currently talk about the same thing 
(Notify/Synch/Asynch patterns of messaging).  This looks a bit redundant,
but the intention is to provide a high-level overview in the Overview
section while deferring the nuts and bolts to the more detailed section
which appears later.  Is this reasonable or should the discussion be
collapsed to just one section (and if so where?).

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 13:13:44 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id E286B6240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 13:13:43 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UBDmHH014228
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 13:13:48 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UBDmmB014227
	for apps-samp-outgoing; Wed, 30 Apr 2008 13:13:48 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UBDmTF014223
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:13:48 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 667F51E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:15:43 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAN7wF0iJ3jon/2dsb2JhbACtAA
X-IronPort-AV: E=Sophos;i="4.25,727,1199660400"; 
   d="scan'208";a="6939840"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 13:10:49 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrAFv-0005Uz-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 12:13:47 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrAFv-0004N2-88
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 12:13:47 +0100
Date: Wed, 30 Apr 2008 12:13:47 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: ISSUE: Lockfile location in MS Windows
Message-ID: <Pine.LNX.4.63.0804301209060.16781@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

This is a technical issue.

It is important that the lockfile used for hub discovery in the Standard
Profile (sect 4.3) is in a well-known place; this well-known place must
be identifiable (preferably easily identifiable) from any language.

For Un*x-like systems, the directory named by the $HOME environment 
variable (which happens to be available from within Java via the
user.home system property) fits this bill nicely.

For MS Windows, it is apparently more complicated.  From java, the
user.home system property looks sensible, but there are subtle 
technical problems with this - see:

    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931

Even disregarding the problem faced by java developers, it doesn't
seem clear where best to put this, since the idea of a "home" directory
in Windows systems doesn't seem to be as clearly defined as it is for
Un*x.  Any Windows experts out there can advise?

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 14:11:45 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2BFD16240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 14:11:45 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UCBm81021187
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 14:11:48 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UCBlwc021186
	for apps-samp-outgoing; Wed, 30 Apr 2008 14:11:47 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UCBl95021182
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:11:47 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1DFAB1E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:13:43 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.25,728,1199660400"; 
   d="scan'208";a="6941425"
Received: from mailhost.u-strasbg.fr ([130.79.200.153])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 14:08:49 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m3UCBZDR061412
          ; Wed, 30 Apr 2008 14:11:35 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m3UCD6g08793;
	Wed, 30 Apr 2008 14:13:06 +0200 (MET DST)
Message-ID: <48186252.A48C69C3@newb6.u-strasbg.fr>
Date: Wed, 30 Apr 2008 14:13:06 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
CC: apps-samp@ivoa.net
Subject: Re: ISSUE: getHubID/getSelfID
References: <Pine.LNX.4.63.0804301154190.16702@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.153]); Wed, 30 Apr 2008 14:11:35 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr3.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr3.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Hi,

> However there are two special client-ids which the registered client might
> want to know:
> 
>     - its own client ID
>     - the ID of the hub (in its capacity as a registered application,
>       which is how it would send housekeeping messages like
>       "the hub is about to shut down")

As they are indeed 2 *special* client-ids, I think it makes sense to
have methods allowing to easily retrieve them.

> There has been the suggestion to remove it
> and dictate that the hub public ID must have a fixed well-knowne value
> such as "0".

I don't like the idea of dictating an ID for the hub. It is much cleaner
to have a getHubID method, and this should not put any unbearable
additional burden on hub developers.

> Currently there is no easy way for a client to find its own ID.
> Should there be a getSelfID() method?  Or should this value be
> returned by the register method (note the Standard Profile register()
> method currently returns a private key specific to the application,
> but this is not in general the same as the public id).

I think we can have both. The register method could return a map with
keys 'private-key' and 'public-id' along with the corresponding values.

Cheers,
Thomas

From owner-apps-samp@eso.org  Wed Apr 30 14:14:27 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 7ADB66242AC
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 14:14:27 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UCEWco021557
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 14:14:32 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UCEWc7021556
	for apps-samp-outgoing; Wed, 30 Apr 2008 14:14:32 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UCEWBX021552
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:14:32 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id C45101E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:16:27 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEABEAGEiJ3jon/2dsb2JhbACtCw
X-IronPort-AV: E=Sophos;i="4.25,728,1199660400"; 
   d="scan'208";a="6941505"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 14:11:33 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrBCh-0005eK-00
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 13:14:31 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrBCh-0004Te-3q
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 13:14:31 +0100
Date: Wed, 30 Apr 2008 13:14:31 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: ISSUE: getHubID/getSelfID
In-Reply-To: <48186252.A48C69C3@newb6.u-strasbg.fr>
Message-ID: <Pine.LNX.4.63.0804301313240.17185@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301154190.16702@andromeda.star.bris.ac.uk>
 <48186252.A48C69C3@newb6.u-strasbg.fr>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 30 Apr 2008, Thomas Boch wrote:

>> There has been the suggestion to remove it
>> and dictate that the hub public ID must have a fixed well-knowne value
>> such as "0".
>
> I don't like the idea of dictating an ID for the hub. It is much cleaner
> to have a getHubID method, and this should not put any unbearable
> additional burden on hub developers.

I agree with that.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 14:21:36 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 7C4906240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 14:21:36 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UCLfwj022432
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 14:21:41 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UCLfWq022431
	for apps-samp-outgoing; Wed, 30 Apr 2008 14:21:41 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UCLf9H022427
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:21:41 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id B5CEE1E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:23:36 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.25,728,1199660400"; 
   d="scan'208";a="6941703"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 14:18:42 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrBJX-0000Nq-7z; Wed, 30 Apr 2008 13:21:35 +0100
In-Reply-To: <Pine.LNX.4.63.0804301313240.17185@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301154190.16702@andromeda.star.bris.ac.uk> <48186252.A48C69C3@newb6.u-strasbg.fr> <Pine.LNX.4.63.0804301313240.17185@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <3CADE9FC-ED66-4311-B018-F66732EDD1CC@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: ISSUE: getHubID/getSelfID
Date: Wed, 30 Apr 2008 13:21:26 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

>>> There has been the suggestion to remove it
>>> and dictate that the hub public ID must have a fixed well-knowne  
>>> value
>>> such as "0".
>>
>> I don't like the idea of dictating an ID for the hub. It is much  
>> cleaner
>> to have a getHubID method, and this should not put any unbearable
>> additional burden on hub developers.
>
> I agree with that.

Yup, can't think why, but it might cause problems down the line, and  
it's not a big overhead.

Al.

From owner-apps-samp@eso.org  Wed Apr 30 14:56:02 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 8A7566240C1
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 14:56:02 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UCu5PQ027070
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 14:56:05 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UCu5AI027069
	for apps-samp-outgoing; Wed, 30 Apr 2008 14:56:05 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UCu5B9027065
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:56:05 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 14A861E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:58:01 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AiMCAHIJGEiCT8iXemdsb2JhbACRVgEBCwUHGZp6
X-IronPort-AV: E=Sophos;i="4.25,728,1199660400"; 
   d="scan'208";a="6942672"
Received: from mailhost.u-strasbg.fr ([130.79.200.151])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 14:53:06 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m3UCu3aF071418
          for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:56:04 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m3UCvZg17015
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 14:57:35 +0200 (MET DST)
Message-ID: <48186CBF.9705DD77@newb6.u-strasbg.fr>
Date: Wed, 30 Apr 2008 14:57:35 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: apps-samp@ivoa.net
Subject: ISSUE: Naming of error object encoding
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.151]); Wed, 30 Apr 2008 14:56:04 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr1.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr1.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

In section 3.8, the error object is currently made up of a map with the
following keys : errortxt, usertxt, debugtxt and code.

The naming of those keys could be improved by prefixing them with
"error." or even with "samp.error."

Thomas

From owner-apps-samp@eso.org  Wed Apr 30 16:10:29 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B66546240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 16:10:29 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UEAZ3s007115
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 16:10:35 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UEAZPk007114
	for apps-samp-outgoing; Wed, 30 Apr 2008 16:10:35 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UEAZQu007110
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 16:10:35 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id BA10F1E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 16:12:30 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.25,728,1199660400"; 
   d="scan'208";a="6944839"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 16:07:36 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrD10-0002h4-8a
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 15:10:34 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft document introduction
Date: Wed, 30 Apr 2008 15:10:26 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

Mark et al,

Mark Taylor wrote:
> ...over the last few weeks, the SAMP authors have put together a  
> draft of the standard document for the proposed Simple Applications  
> Messaging Protocol...We would ask readers of this list, and  
> particularly those who anticipate using, or wanting to use, the  
> resulting standard, to read the document and provide comments on it...

We just had an internet outage which conveniently let me sit down and  
actually read the spec cover to cover. On the whole I'm pretty happy  
with the specification...

The immediate problem I have with the document is that  I'm a little  
unsure how the mtype mapping from what is outlined in section 5 to  
XML-RPC method names works in practice? This isn't, at least to me,  
entirely clear and possibly some more example documents might be in  
order. Sorry, it might just be post-lunch time dimness on my part.

Based on the specification I'll try and put together a demonstration  
Perl SAMP hub (and a couple of simple clients) in time for the May  
meeting. It'll be good to have a few prototypes kicking around.

Cheers,
Al.

From owner-apps-samp@eso.org  Wed Apr 30 16:30:26 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 829C86240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 16:30:26 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UEUWN4009783
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 16:30:32 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UEUW4m009782
	for apps-samp-outgoing; Wed, 30 Apr 2008 16:30:32 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UEUWxb009777
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 16:30:32 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 12B591E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 16:32:28 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAL4fGEiJ3jon/2dsb2JhbACtEA
X-IronPort-AV: E=Sophos;i="4.25,728,1199660400"; 
   d="scan'208";a="6945420"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 16:27:33 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrDKI-0006GK-00; Wed, 30 Apr 2008 15:30:30 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrDKI-0004hF-Or; Wed, 30 Apr 2008 15:30:30 +0100
Date: Wed, 30 Apr 2008 15:30:30 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Alasdair Allan <aa@astro.ex.ac.uk>
cc: apps-samp@ivoa.net
Subject: Re: SAMP draft document introduction
In-Reply-To: <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0804301513380.17813@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk>
 <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Hi Al,

On Wed, 30 Apr 2008, Alasdair Allan wrote:

> We just had an internet outage which conveniently let me sit down and 
> actually read the spec cover to cover. On the whole I'm pretty happy with the 
> specification...

good!

> The immediate problem I have with the document is that  I'm a little unsure 
> how the mtype mapping from what is outlined in section 5 to XML-RPC method 
> names works in practice? This isn't, at least to me, entirely clear and 
> possibly some more example documents might be in order. Sorry, it might just 
> be post-lunch time dimness on my part.

MTypes do not map to XML-RPC method names, they map to (parts of) 
XML-RPC method arguments, specifically the value of the "mtype" key
in the "message" map-type argument.  The pseudo-code excerpt from 
sec 4.4:

    # Send a message requesting file load to all other registered clients,
    # not wanting any response.
    map loadParams = ("filename" -> "/tmp/foo.bar");
    map loadMsg = ("mtype" -> "file.load",
                   "params" -> "loadParams");
    hub.xmlrpcCall("samp.hub.notifyAll", private-key, loadMsg);

shows how it works.  The explanation for why this is what you do is
in sec 3.8.  Hopefully this would become clear if you sat down to
write some code following the spec, I think it would be a good idea 
if I added an example in sec 3.8 of an encoded message, to make it 
clearer what I'm going on about there.  I resisted spelling out 
all the XML-RPC communications in sec 4.4 because it could run to
quite a lot of pages, but maybe I should do for definiteness (could
go in an appendix?)  In the mean time if you want to suggest some 
text which would have made things more obvious, please do.

> Based on the specification I'll try and put together a demonstration Perl 
> SAMP hub (and a couple of simple clients) in time for the May meeting. It'll 
> be good to have a few prototypes kicking around.

that would be great - it would certainly go a long way towards testing 
whether there are things we've forgotten to think about or to write down.
Since this is all still under discussion you might need to revise the
implementations in accordance with decisions yet to be made, but I'm
sure you can cope with that.  I'm plannning to write a Java hub reasonably
soon assuming we reach agreement, but most likely not before Trieste.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Apr 30 18:22:11 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 992F06240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 18:22:11 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UGMI2L026054
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 18:22:18 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UGMILZ026053
	for apps-samp-outgoing; Wed, 30 Apr 2008 18:22:18 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UGMIf0026049
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 18:22:18 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id F12A31E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 18:24:13 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.25,729,1199660400"; 
   d="scan'208";a="6948914"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 18:19:19 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrF4O-0005ZL-8P
	for apps-samp@ivoa.net; Wed, 30 Apr 2008 17:22:12 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0804301513380.17813@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk> <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk> <Pine.LNX.4.63.0804301513380.17813@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <B73AD5CE-70D2-4DBB-87B2-6E4FA9319061@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft document introduction
Date: Wed, 30 Apr 2008 17:22:04 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> Alasdair Allan wrote:
>> The immediate problem I have with the document is that  I'm a  
>> little unsure how the mtype mapping from what is outlined in  
>> section 5 to XML-RPC method names works in practice?
>
> MTypes do not map to XML-RPC method names, they map to (parts of)  
> XML-RPC method arguments, specifically the value of the "mtype" key  
> in the "message" map-type argument.

Sorry, didn't really say what I meant.

> The pseudo-code excerpt from sec 4.4...shows how it works.  The  
> explanation for why this is what you do is in sec 3.8.

Going back over those sections a couple of times makes it a bit  
clearer and I think I know what's going on now. I'm a bit concerned  
about adding asynchronous calls into the protocol, but from previous  
discussions I know I'm going to loose if I advocate for synchronous  
only, so I'm not going to try that again... I'm pretty happy I think.

> ... I think it would be a good idea if I added an example in sec  
> 3.8 of an encoded message, to make it clearer what I'm going on  
> about there.

I think that might be helpful.

>> Based on the specification I'll try and put together a  
>> demonstration Perl SAMP hub (and a couple of simple clients) in  
>> time for the May meeting. It'll be good to have a few prototypes  
>> kicking around.
>
> that would be great - it would certainly go a long way towards  
> testing whether there are things we've forgotten to think about or  
> to write down. Since this is all still under discussion you might  
> need to revise the implementations in accordance with decisions yet  
> to be made, but I'm sure you can cope with that.  I'm plannning to  
> write a Java hub reasonably soon assuming we reach agreement, but  
> most likely not before Trieste.

Okay, I'll try ad put something together by Trieste then...

Cheers,
Al.

From owner-apps-samp@eso.org  Wed Apr 30 20:15:38 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0BB606240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 20:15:38 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UIFh6N007578
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 20:15:43 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UIFhPS007577
	for apps-samp-outgoing; Wed, 30 Apr 2008 20:15:43 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UIFfCe007568
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 20:15:41 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1C41A1E402B
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 20:17:37 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AoIFAHpUGEjRVYT5ZWdsb2JhbACCNTaObQ0DBA0PBZVnhXY
X-IronPort-AV: E=Sophos;i="4.25,729,1199660400"; 
   d="scan'208";a="6951313"
Received: from an-out-0708.google.com ([209.85.132.249])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 20:12:41 +0200
Received: by an-out-0708.google.com with SMTP id c36so134678ana.36
        for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 11:15:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        bh=qEyq/96fCF+nzEQ6m1Vm+Y4uCp9kavp5xF/pBvVujfE=;
        b=aUn2XB+nZEL9Lf1XMvlXF3A/bHhPgqATAtw1NIibnp7KkSWuMf29j7HZ0JsHstFx+NbMf6GXUk3r+4M4qL91jJSdOZ2U+mNPZX7sivIVhHP6p/6VyEXALfTbxySkrlqApFlipOowx9IBSgbiGD6Xk3aCH8jAvfXKcSaIJ33bsJ4=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        b=ObU+Qd5ayokxMgd/KUFIHUkKxxQbCqvBcA4TZrx6g/98/yoykZIqt2sIquFYeHRNewaNnwG4mAR3AARhOnDmtTYd9TOUkTIu6M6CBNytk5skN9YmRaKPaLGiw4f5FRrzfS7+l4WbqA8ZfcmX+tFLBmvJbfUkLFpq5nKfzAM3P2E=
Received: by 10.100.140.2 with SMTP id n2mr1746372and.95.1209579339371;
        Wed, 30 Apr 2008 11:15:39 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Wed, 30 Apr 2008 11:15:39 -0700 (PDT)
Message-ID: <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>
Date: Wed, 30 Apr 2008 11:15:39 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: apps-samp@ivoa.net
Subject: Re: ISSUE: Naming of error object encoding
In-Reply-To: <48186CBF.9705DD77@newb6.u-strasbg.fr>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_4544_5528306.1209579339368"
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>
X-Google-Sender-Auth: 20debeb72ed6cfb3
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

------=_Part_4544_5528306.1209579339368
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Wed, Apr 30, 2008 at 5:57 AM, Thomas Boch <boch@newb6.u-strasbg.fr>
wrote:

> In section 3.8, the error object is currently made up of a map with the
> following keys : errortxt, usertxt, debugtxt and code.
>
> The naming of those keys could be improved by prefixing them with
> "error." or even with "samp.error."


I believe in an earlier draft it was explicitly stated that a message
Response was
not itself a Message (something I argued against).  The latest draft however
is a
little ambiguous on the matter, saying only that a  Response should be a
map
(which may be empty of sending back only an OK, but should contain those
keys
if an error).
     I would take things a step further and suggest that the error map that
is returned
BE a Message map containing a status Mtype (e.g. status.error) and where the
errortxt is a required param and the rest are optional.  In this case, a
successful
request could reply by setting only the 'success' argument and still have an
empty
map, but we could have a richer set of error returns that perhaps aren't all
fatal.
For example, a status.warning Mtype might still reply as a success but pass
back
a warning message, or a status.invalidParam could signal a specific
and universally understood error condition.

    My main objections to this simple set of keys are that 1) we allow only
an OK/FAIL
type of response, and 2) the 'errortxt' is allowed to be free-form (okay if
all you want
to do it pop up a dialog,  not okay  if an  app needs to parse the message
for information).

-Mike

------=_Part_4544_5528306.1209579339368
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<br><br><div class="gmail_quote">On Wed, Apr 30, 2008 at 5:57 AM, Thomas Boch &lt;<a href="mailto:boch@newb6.u-strasbg.fr">boch@newb6.u-strasbg.fr</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
In section 3.8, the error object is currently made up of a map with the<br>
following keys : errortxt, usertxt, debugtxt and code.<br>
<br>
The naming of those keys could be improved by prefixing them with<br>
&quot;error.&quot; or even with &quot;samp.error.&quot;</blockquote><div><br>I believe in an earlier draft it was explicitly stated that a message&nbsp; Response was<br>not itself a Message (something I argued against).&nbsp; The latest draft however is a<br>
little ambiguous on the matter, saying only that a&nbsp; Response should be a&nbsp; map<br>(which may be empty of sending back only an OK, but should contain those keys<br>if an error).<br>&nbsp;&nbsp;&nbsp;&nbsp; I would take things a step further and suggest that the error map that is returned<br>
BE a Message map containing a status Mtype (e.g. status.error) and where the<br>errortxt is a required param and the rest are optional.&nbsp; In this case, a successful<br>request could reply by setting only the &#39;success&#39; argument and still have an empty<br>
map, but we could have a richer set of error returns that perhaps aren&#39;t all fatal.<br>For example, a status.warning Mtype might still reply as a success but pass back<br>a warning message, or a status.invalidParam could signal a specific<br>
and universally understood error condition.<br><br>&nbsp;&nbsp;&nbsp; My main objections to this simple set of keys are that 1) we allow only an OK/FAIL<br>type of response, and 2) the &#39;errortxt&#39; is allowed to be free-form (okay if all you want <br>
to do it pop up a dialog,&nbsp; not okay&nbsp; if an&nbsp; app needs to parse the message for information).<br><br>-Mike <br></div></div>

------=_Part_4544_5528306.1209579339368--

From owner-apps-samp@eso.org  Wed Apr 30 20:37:02 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id AC33B6240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 20:37:02 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UIbBHV013374
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 20:37:11 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UIbBFm013373
	for apps-samp-outgoing; Wed, 30 Apr 2008 20:37:11 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UIbAs1013369
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 20:37:10 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 654F01E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 20:39:06 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AoIFACtZGEjRVYT1ZWdsb2JhbACCNTaObQ0DBA0PBZYMhXE
X-IronPort-AV: E=Sophos;i="4.25,729,1199660400"; 
   d="scan'208";a="6951660"
Received: from an-out-0708.google.com ([209.85.132.245])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 20:34:10 +0200
Received: by an-out-0708.google.com with SMTP id c36so136217ana.36
        for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 11:37:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        bh=YFfzKYSf56HAyHVRPHLBDOruaov4zLMVRsvsz3wnn9Q=;
        b=rLBmEP3i+T1PNinQ8zx7WVcA5DN6MIrHIro5n/49s6DamMZRGaAsMI5i+SXFGzpx8ARb6uLXhkFFKyPrnrNhbBap8WvSgprmPwVYSSqaRUs1SMVPHnVKcDQb9/UVx6HUkw49YTfQ5NBR+3FQXA/JRXmrI6p1iKMe2OxDNPHgR8Q=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        b=IYM4jjEuvQOo1TUbiIdnpQIkFFhz/hK+RSjA9EJpthRfPaD2oAAHHs2JNtLFdbQBpIUH09oq1S5u6hLb6V94uI3eZ5eWpfQpa96OwqzzYWPp/IEtURwUc4PLkPuy4BBoZZy6/s1hd2z3dJxN6zCe8r/0pGFtepSSvBcsqZbu98s=
Received: by 10.100.154.19 with SMTP id b19mr1782934ane.115.1209580628516;
        Wed, 30 Apr 2008 11:37:08 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Wed, 30 Apr 2008 11:37:08 -0700 (PDT)
Message-ID: <8e768d0804301137g13243c81tacb6036fb46b8d42@mail.gmail.com>
Date: Wed, 30 Apr 2008 11:37:08 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: ISSUE: getHubID/getSelfID
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0804301313240.17185@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_4740_3544990.1209580628498"
References: <Pine.LNX.4.63.0804301154190.16702@andromeda.star.bris.ac.uk>
	 <48186252.A48C69C3@newb6.u-strasbg.fr>
	 <Pine.LNX.4.63.0804301313240.17185@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: 56771e5ae055daa5
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

------=_Part_4740_3544990.1209580628498
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Wed, Apr 30, 2008 at 5:14 AM, Mark Taylor <m.b.taylor@bristol.ac.uk>
wrote:

> I don't like the idea of dictating an ID for the hub. It is much cleaner
> > to have a getHubID method, and this should not put any unbearable
> > additional burden on hub developers.
> >
> I agree with that.
>


There's a difference between unbearable and unnecessary, and note this
affects the
clients as well.

If the hub has an ID like any other app, then the Hub implementor needs to
intercept
messages with its ID a process/reply-to the message rather than deliver to a
client. If
the hub generates a random ID string like other apps, there is the burden
of getting
its own ID and using it to filter every message; if the hub creates a fixed
ID string it is
no better than using an id of 0.

For the client wanting to know that e.g. the app.shutdown Notify is  coming
from the
Hub and not Topcat (where the action it takes may be different), they are
required
to query the hub for its ID and similarly filter based on the ID if the hub
messages  have
any special meaning.

Neither of these is unbearable, but having client-id=0 is a simple way to be
clear that
a message is coming-from/going-to the hub without the extra overhead and we
can
eliminate the getHubID() method  (I think it PLASTIC this was used to ping a
hub to see
if it was alive, but in the draft we now have an isAlive()
implementation-specific method
for that).

The broader question  was whether there was any example of why a client
would need
to send a message to the Hub that wasn't covered by existing methods like
getMtypes():
One such example would be an app.whoAmI Mtype sent to the hub that would be
sent
to return the public ID (in fact this should work for a message to any app
supporting that
mtype since the receiver see the public ID and can reply with that).  Since
this is more
of an administrative message it should be one the Hub supports rather than
relying on
clients, but we could use the message rather than a method to do the same
thing.


-Mike

>

------=_Part_4740_3544990.1209580628498
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<br><br><div class="gmail_quote">On Wed, Apr 30, 2008 at 5:14 AM, Mark Taylor &lt;<a href="mailto:m.b.taylor@bristol.ac.uk">m.b.taylor@bristol.ac.uk</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">I don&#39;t like the idea of dictating an ID for the hub. It is much cleaner<br>
to have a getHubID method, and this should not put any unbearable<br>
additional burden on hub developers.<br>
</blockquote>I agree with that.</div></blockquote><div><br>&nbsp;<br>There&#39;s a difference between unbearable and unnecessary, and note this affects the<br>clients as well.<br><br>If the hub has an ID like any other app, then the Hub implementor needs to intercept <br>
messages with its ID a process/reply-to the message rather than deliver to a client. If<br>the hub generates a random ID string like other apps, there is the burden&nbsp; of getting<br>its own ID and using it to filter every message; if the hub creates a fixed ID string it is<br>
no better than using an id of 0.<br><br>For the client wanting to know that e.g. the app.shutdown Notify is&nbsp; coming from the <br>Hub and not Topcat (where the action it takes may be different), they are required<br>to query the hub for its ID and similarly filter based on the ID if the hub messages&nbsp; have<br>
any special meaning.<br><br>Neither of these is unbearable, but having client-id=0 is a simple way to be clear that<br>a message is coming-from/going-to the hub without the extra overhead and we can<br>eliminate the getHubID() method&nbsp; (I think it PLASTIC this was used to ping a hub to see<br>
if it was alive, but in the draft we now have an isAlive() implementation-specific method<br>for that).<br><br>The broader question&nbsp; was whether there was any example of why a client would need<br>to send a message to the Hub that wasn&#39;t covered by existing methods like getMtypes():<br>
One such example would be an app.whoAmI Mtype sent to the hub that would be sent<br>to return the public ID (in fact this should work for a message to any app supporting that<br>mtype since the receiver see the public ID and can reply with that).&nbsp; Since this is more<br>
of an administrative message it should be one the Hub supports rather than relying on<br>clients, but we could use the message rather than a method to do the same thing.<br><br><br>-Mike<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
</blockquote></div><br>

------=_Part_4740_3544990.1209580628498--

From owner-apps-samp@eso.org  Wed Apr 30 22:56:58 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 14D7F6240B7
	for <vomail@fiction.hq.eso.org>; Wed, 30 Apr 2008 22:56:58 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UKv585028733
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 30 Apr 2008 22:57:05 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m3UKv5GM028732
	for apps-samp-outgoing; Wed, 30 Apr 2008 22:57:05 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m3UKv3GT028713
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 22:57:03 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id BAA7C1E401D
	for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 22:58:58 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AiIHAO55GEhA6bjod2dsb2JhbACCNDeObQEMBQIECQ8Flh+Fbw
X-IronPort-AV: E=Sophos;i="4.25,730,1199660400"; 
   d="scan'208";a="6955207"
Received: from wr-out-0506.google.com ([64.233.184.232])
  by clavius.hq.eso.org with ESMTP; 30 Apr 2008 22:54:02 +0200
Received: by wr-out-0506.google.com with SMTP id c55so503377wra.0
        for <apps-samp@ivoa.net>; Wed, 30 Apr 2008 13:57:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        bh=5gBy3KqBhAe5z8c6r37KAopVHUVyRBMEfovlP1ITUZs=;
        b=W8mXbe3YAzawH9UGUEvWd1mky/4+vHu/IK4IoDCVF1wXRDkFvqYs9PZ+SvvpfHCQoQHJk06WmnNQdU7EScGkNondsoGbuvh79RWxiZ4PoqKLXnCnTIEUA5K/43+79uVp9YA3IFXeHgyxtB0cZAtrzo3f7MwrCLfpgNMifp7U7kk=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        b=BpspTHaU+v5ar+YJj+5AUR2zYuvrFWtob+4zqkObEBedsKGQZLa2OEoWbHzpwU6mGF3ySJQOSVMdauyZDRRnl6leDRZeLymfLzwWcfC7BJCDEW2Y3wWNL7jyMVFaQi7X/vw4yVKpvWeu+daVJoqgQHXeZ2UDvR0JyqbyJupiebg=
Received: by 10.100.108.20 with SMTP id g20mr2035395anc.106.1209589020944;
        Wed, 30 Apr 2008 13:57:00 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Wed, 30 Apr 2008 13:57:00 -0700 (PDT)
Message-ID: <8e768d0804301357o7fb91ed1w10e4f0468df5adc7@mail.gmail.com>
Date: Wed, 30 Apr 2008 13:57:00 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: ISSUE: Message-id management
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_5610_5735988.1209589020918"
References: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: 7b312cb10e5a57ae
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

------=_Part_5610_5735988.1209589020918
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Wed, Apr 30, 2008 at 3:54 AM, Mark Taylor <m.b.taylor@bristol.ac.uk>
wrote:

> The Asynchronous Call/Response pattern described in section 3.9 has the
> sender generating an ID which is used to match the message with its response
> between sender and hub, after which the hub generates a different ID which
> is used to match the message with its resopnse between hub and recipient.
> This permits use of any value for message ID by the sender.
>
> Some feel this is unnecessarily complicated and prefer a required
> message-id of form <senderId>-<uniqueKey> which would
> enable the same string to be used for all stages of the message's life.
>

To be clear, the issue of complexity and the form of the msg-id were
separate ideas,
not that the latter was proposed (entirely) as a solution to the former.

On the issue of complexity:  The doc Sec  3.8 makes a point of
distinguishing between
the sender-msg-id and hub-msg-id and to its credit does not forbid them from
being
the same.  OTOH, it doesn't say whether the hub-msg-id sent to multiple
recipients
needs to be the same or if this is a per-recipient unique value.
    Where things get complex is that the Hub needs to maintain a mapping
between
the hub-msg-id and the original sender-msg-id (as well as the sender-id if
the string is
truly random) so it can return a response with the original sender-msg-id.
Presumably
you would also want to keep track of a recipient-count so that once all the
replies are
received you can clean up, however we don't impose any requirements on when
this
is checked so we have no real way of enforcing the requirement that every
Request
have a reply and could end up with a lot of this mapping/state structure
building up in
the hub.
    If a mapping of ids and senders is to be maintained anyway, what extra
benefit  is
there to having different ids between the sender-hub and hub-recipient over
keeping a
single id throughout the message cycle?

On the form of the msg-id:  The suggestion was made that including the
sender-id as
part of the msg-id could avoid maintaining the mapping in the hub entirely
since the
sender-id could always be derived from the msg-id, and when a client replied
the
hub would simply pull the sender-id out and deliver the response.  The only
hub structure
that would need to be kept would be a reference count for the message-id so
you would
know how many clients (or perhaps also who) didn't reply.

So, the model is that outgoing Messages are routed by the client-id/mtype in
the method
signature (since there can be either a single known recipient or some
unknown number
recipients), and replies are routed using the msg-id as a form of return
address (since there
will only ever be one sender-id no matter how many replies are sent based on
that msg-id).

Cheers,
-Mike

------=_Part_5610_5735988.1209589020918
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<br><br><div class="gmail_quote">On Wed, Apr 30, 2008 at 3:54 AM, Mark Taylor &lt;<a href="mailto:m.b.taylor@bristol.ac.uk">m.b.taylor@bristol.ac.uk</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
The Asynchronous Call/Response pattern described in section 3.9 has the sender generating an ID which is used to match the message with its response between sender and hub, after which the hub generates a different ID which is used to match the message with its resopnse between hub and recipient.<br>

This permits use of any value for message ID by the sender.<br>
<br>
Some feel this is unnecessarily complicated and prefer a required message-id of form &lt;senderId&gt;-&lt;uniqueKey&gt; which would<br>
enable the same string to be used for all stages of the message&#39;s life.<br><font color="#888888">
</font></blockquote></div><br>To be clear, the issue of complexity and the form of the msg-id were separate ideas,<br>not that the latter was proposed (entirely) as a solution to the former.<br><br>On the issue of complexity:&nbsp; The doc Sec&nbsp; 3.8 makes a point of distinguishing between<br>
the sender-msg-id and hub-msg-id and to its credit does not forbid them from being<br>the same.&nbsp; OTOH, it doesn&#39;t say whether the hub-msg-id sent to multiple recipients<br>needs to be the same or if this is a per-recipient unique value.<br>
&nbsp;&nbsp;&nbsp; Where things get complex is that the Hub needs to maintain a mapping between<br>the hub-msg-id and the original sender-msg-id (as well as the sender-id if the string is<br>truly random) so it can return a response with the original sender-msg-id.&nbsp; Presumably<br>
you would also want to keep track of a recipient-count so that once all the replies are<br>received you can clean up, however we don&#39;t impose any requirements on when this<br>is checked so we have no real way of enforcing the requirement that every Request<br>
have a reply and could end up with a lot of this mapping/state structure building up in<br>the hub.<br>&nbsp; &nbsp; If a mapping of ids and senders is to be maintained anyway, what extra benefit&nbsp; is <br>there to having different ids between the sender-hub and hub-recipient over keeping a<br>
single id throughout the message cycle?<br><br>On the form of the msg-id:&nbsp; The suggestion was made that including the sender-id as <br>part of the msg-id could avoid maintaining the mapping in the hub entirely since the<br>
sender-id could always be derived from the msg-id, and when a client replied the<br>hub would simply pull the sender-id out and deliver the response.&nbsp; The only hub structure<br>that would need to be kept would be a reference count for the message-id so you would<br>
know how many clients (or perhaps also who) didn&#39;t reply.<br><br>So, the model is that outgoing Messages are routed by the client-id/mtype in the method<br>signature (since there can be either a single known recipient or some unknown number <br>
recipients), and replies are routed using the msg-id as a form of return address (since there <br>will only ever be one sender-id no matter how many replies are sent based on that msg-id).<br><br>Cheers,<br>-Mike<br> 

------=_Part_5610_5735988.1209589020918--

From owner-apps-samp@eso.org  Thu May  1 15:26:34 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0609B6240B7
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 15:26:34 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41DQdTx024197
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 15:26:39 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41DQd79024196
	for apps-samp-outgoing; Thu, 1 May 2008 15:26:39 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41DQdZP024192
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 15:26:39 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 99DC01E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 15:28:35 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6968212"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 15:23:37 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrYo2-0000Py-91
	for apps-samp@ivoa.net; Thu, 01 May 2008 14:26:38 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0804301513380.17813@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk> <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk> <Pine.LNX.4.63.0804301513380.17813@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <F4048941-F36C-4CA2-BEF5-C29098A57688@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft document introduction
Date: Thu, 1 May 2008 14:26:36 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> that would be great - it would certainly go a long way towards  
> testing whether there are things we've forgotten to think about or  
> to write down.

The initial thing I've just hit is that when you start up a Hub, it  
should obviously check to see if one is already running.  It  
initially looks for a ~/.samp file, but if it finds one it should try  
to connect to the already running hub to see if its died without  
cleaning up the lock file. Now, it's a total waste of time to  
register the new hub, which is probably just about to die again, as a  
new SAMP client...

So I'm guess (since it doesn't need a client-id) I can just directly  
call getRegisteredClients() or getHubId() to check that we have a  
running hub rather than having to register and get a client-id first?

I've got a feeling this is going to be controversial, but it's a hack  
that I've used before with PLASTIC to build a Dashboard Widget  
(http://www.estar.org.uk/software/plastic_monitor_widget.zip) that  
does PLASTIC status monitoring.

The specification is vague on this point, so I'm hoping for wiggle  
room here...?

On the flip side is it a deliberate design decision that you have to  
register with the Hub to make any SAMP calls? This wasn't the case  
with PLASTIC and could come in handy at times.

Cheers,
Al.

From owner-apps-samp@eso.org  Thu May  1 15:46:50 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 63BB46240B7
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 15:46:50 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41DkqgG026013
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 15:46:52 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41Dkqon026012
	for apps-samp-outgoing; Thu, 1 May 2008 15:46:52 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41Dkp9Z026005
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 15:46:51 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 950971E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 15:48:47 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEALJmGUiJ3jon/2dsb2JhbACsVg
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6968561"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 15:43:49 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrZ3v-00010i-00; Thu, 01 May 2008 14:43:03 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrZ3u-0008C6-Ud; Thu, 01 May 2008 14:43:02 +0100
Date: Thu, 1 May 2008 14:43:02 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Mike Fitzpatrick <fitz@noao.edu>
cc: apps-samp@ivoa.net
Subject: Re: ISSUE: Naming of error object encoding
In-Reply-To: <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 30 Apr 2008, Mike Fitzpatrick wrote:

> On Wed, Apr 30, 2008 at 5:57 AM, Thomas Boch <boch@newb6.u-strasbg.fr>
> wrote:
>
>> In section 3.8, the error object is currently made up of a map with the
>> following keys : errortxt, usertxt, debugtxt and code.
>>
>> The naming of those keys could be improved by prefixing them with
>> "error." or even with "samp.error."
>
>
> I believe in an earlier draft it was explicitly stated that a message
> Response was
> not itself a Message (something I argued against).  The latest draft however
> is a
> little ambiguous on the matter, saying only that a  Response should be a
> map
> (which may be empty of sending back only an OK, but should contain those
> keys
> if an error).

In the Nomenclature section (2.1) it says

    "In the terminology of this document, a Response is not itself a
     Message."

>     I would take things a step further and suggest that the error map that
> is returned
> BE a Message map containing a status Mtype (e.g. status.error) and where the
> errortxt is a required param and the rest are optional.  In this case, a
> successful
> request could reply by setting only the 'success' argument and still have an
> empty
> map, but we could have a richer set of error returns that perhaps aren't all
> fatal.
> For example, a status.warning Mtype might still reply as a success but pass
> back
> a warning message, or a status.invalidParam could signal a specific
> and universally understood error condition.

I'm not necessarily against supplying a status in message responses;
a "status" (or "error.status" or "samp.error.status" or whatever)
key could be added to those suggested above and could take values
such as "error", "warning" and others from a well-known vocabulary
which we supply, possibly allowing users to extend it for their 
own purposes.

However, I think it would be unhelpful to label this status as an MType,
since such statuses only make sense as something returned from a Message
rather than sent unprovoked.  Also, if the status in the reply to 
a Message is an MType, it suggests that any MType is allowed in that 
slot.  Does this mean you can only receive a response from a message if 
you happen to be subscribed to the MType that it has when it is 
returned?  Given that an MType is documented to require some returned
value, does it mean that you have to reply to the response?
What are you supposed to do if you get a "spectrum.load" MType 
in the response to a message with a "get.param" MType? 
If you say that the only MTypes which can be allowed in those slots
are "status.*" ones, I don't see the advantage of these being MTypes
rather than just some separate controlled vocabulary.

>    My main objections to this simple set of keys are that 1) we allow only
> an OK/FAIL
> type of response, and 2) the 'errortxt' is allowed to be free-form (okay if
> all you want
> to do it pop up a dialog,  not okay  if an  app needs to parse the message
> for information).

Fair objections.

> 2) the 'errortxt' is allowed to be free-form (okay if all you want
>    to do it pop up a dialog,  not okay  if an  app needs to
>    parse the message

as I said above, by all means propose some key for a non-free-form, 
parsable value, and values it can take, to go along with the others 
proposed for the error response map.

> 1) we allow only an OK/FAIL type of response

I think you're suggesting that you might want to return whatever
is the return value from the message (as determined by the MType)
but also have the ability to flag a Warning or some other non-OK
status rather than assume that if a value is returned then the 
status must be OK.

The existing framework could be adapted to that - by allowing an
error object and the result object to coexist in the same map
(and possibly remove the "success" argument of the reply() and
receiveResponse() calls so that the notion of an absolute success
or failure is abolished altogether).

However, I'd argue against it as providing an unnecesary feature.
Procedure calls in most modern programming languages get by with
call semantics in which either the thing succeeds (and you can 
look at the return value to find out the result) or it fails 
(and throws and exception which you can examine to find out what
went wrong); no fuzzy third way is provided for.  This is the 
model I have in mind for the synch and asynch call/response
patterns, and I don't think that we need anything with more
flexibility than that.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May  1 15:53:38 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 271BD6240B7
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 15:53:38 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41Dri6r026736
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 15:53:44 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41DriI9026735
	for apps-samp-outgoing; Thu, 1 May 2008 15:53:44 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41Drhvo026729
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 15:53:43 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1A3DF1E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 15:55:40 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAOVnGUiJ3jon/2dsb2JhbACsVQ
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6968715"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 15:50:41 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrZED-00012C-00; Thu, 01 May 2008 14:53:41 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrZEC-0008Cv-V3; Thu, 01 May 2008 14:53:40 +0100
Date: Thu, 1 May 2008 14:53:40 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Alasdair Allan <aa@astro.ex.ac.uk>
cc: apps-samp@ivoa.net
Subject: Re: SAMP draft document introduction
In-Reply-To: <F4048941-F36C-4CA2-BEF5-C29098A57688@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805011446150.31517@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk>
 <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk>
 <Pine.LNX.4.63.0804301513380.17813@andromeda.star.bris.ac.uk>
 <F4048941-F36C-4CA2-BEF5-C29098A57688@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 1 May 2008, Alasdair Allan wrote:

>
> Mark Taylor wrote:
>> that would be great - it would certainly go a long way towards testing 
>> whether there are things we've forgotten to think about or to write down.
>
> The initial thing I've just hit is that when you start up a Hub, it should 
> obviously check to see if one is already running.  It initially looks for a 
> ~/.samp file, but if it finds one it should try to connect to the already 
> running hub to see if its died without cleaning up the lock file. Now, it's a 
> total waste of time to register the new hub, which is probably just about to 
> die again, as a new SAMP client...
>
> So I'm guess (since it doesn't need a client-id) I can just directly call 
> getRegisteredClients() or getHubId() to check that we have a running hub 
> rather than having to register and get a client-id first?

Alasdair,

the method you're after is isAlive().  This is described at point 5
in sec 4.2:

    5. Another new method, isAlive() is added to the hub API.
       This may be called by registered or unregistered applications
       (as a special case the private-key argument may be omitted),
       and can be used to determine whether the hub is responding to requests.
       Any non-error return indicates that the hub is running.

This is profile-dependent, since one could imagine other profiles
in which, for instance, you can always assume that the messaging
subsystem is present.

Although in earlier versions getRegisteredClients() and getHubId()
were callable without having registered, they are not now.  It could
go either way, but I made this rule up on the hoof just so I could
make the Abstract API -> Standard Profile mapping rules as simple
as possible, and write at point 3 in that same list:

    3. All other hub and client methods take the
       private-key as their first argument.

> The specification is vague on this point, so I'm hoping for wiggle room 
> here...?

I hope none is required.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May  1 15:58:21 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 7FC4E6240B7
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 15:58:21 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41DwRnf027176
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 15:58:27 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41DwRKG027175
	for apps-samp-outgoing; Thu, 1 May 2008 15:58:27 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41DwRwX027171
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 15:58:27 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 889C71E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 16:00:23 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6968791"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 15:55:25 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrZIo-00014H-8r; Thu, 01 May 2008 14:58:26 +0100
In-Reply-To: <Pine.LNX.4.63.0805011446150.31517@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk> <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk> <Pine.LNX.4.63.0804301513380.17813@andromeda.star.bris.ac.uk> <F4048941-F36C-4CA2-BEF5-C29098A57688@astro.ex.ac.uk> <Pine.LNX.4.63.0805011446150.31517@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <F54F3797-A379-49C0-A194-C87B3982F58C@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft document introduction
Date: Thu, 1 May 2008 14:58:25 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

> the method you're after is isAlive().  This is described at point 5  
> in sec 4.2:

Ah!

Should be listed in section 3.10 as an operation the hub must  
support, surely? Which is where I was looking...

Al.

From owner-apps-samp@eso.org  Thu May  1 16:12:55 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id E88BB6240B7
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 16:12:54 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41ED1gl028655
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 16:13:01 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41ED1I1028654
	for apps-samp-outgoing; Thu, 1 May 2008 16:13:01 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41ED0Zb028650
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 16:13:00 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 18C051E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 16:14:57 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAI5sGUiJ3jon/2dsb2JhbACsYg
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6969066"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 16:09:58 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrZWt-00017R-00; Thu, 01 May 2008 15:12:59 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrZWt-0008Fm-JU; Thu, 01 May 2008 15:12:59 +0100
Date: Thu, 1 May 2008 15:12:59 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Alasdair Allan <aa@astro.ex.ac.uk>
cc: apps-samp@ivoa.net
Subject: Re: SAMP draft document introduction
In-Reply-To: <F54F3797-A379-49C0-A194-C87B3982F58C@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805011504510.31693@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk>
 <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk>
 <Pine.LNX.4.63.0804301513380.17813@andromeda.star.bris.ac.uk>
 <F4048941-F36C-4CA2-BEF5-C29098A57688@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805011446150.31517@andromeda.star.bris.ac.uk>
 <F54F3797-A379-49C0-A194-C87B3982F58C@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 1 May 2008, Alasdair Allan wrote:

>> the method you're after is isAlive().  This is described at point 5 in sec 
>> 4.2:
>
> Ah!
>
> Should be listed in section 3.10 as an operation the hub must support, 
> surely? Which is where I was looking...

not unreasonable.  However, as I said:

> This is profile-dependent, since one could imagine other profiles
> in which, for instance, you can always assume that the messaging
> subsystem is present.

To elaborate: some of the participants in the debate prior to it
appearing on this list were concerned that "implementation details"
should be removed from the abstract API described in sec 3.10
and described only in relation to the particular choice of wire
protocol etc that we were using (i.e. the Standard Profile section).
The particular point of contention raised was including the 
private-key argument in methods described there.  I thought that 
the isAlive() method was in a similar class, so moved it out of 
the abstract API.  But maybe I was being overly picky.  I'm happy 
to move isAlive() back to where it can be more easily found, 
the abstract API, if nobody objects to that.  Anyone?

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May  1 16:28:37 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id E1CBF6240B7
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 16:28:36 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41ESh4c029881
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 16:28:43 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41EShZj029880
	for apps-samp-outgoing; Thu, 1 May 2008 16:28:43 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41ESgme029876
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 16:28:42 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1A3D21E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 16:30:39 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEABRwGUiJ3jon/2dsb2JhbACsXw
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6969278"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 16:25:40 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrZm3-0001AG-00; Thu, 01 May 2008 15:28:39 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrZm3-0008Gs-E5; Thu, 01 May 2008 15:28:39 +0100
Date: Thu, 1 May 2008 15:28:39 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Mike Fitzpatrick <fitz@noao.edu>
cc: apps-samp@ivoa.net
Subject: Re: ISSUE: getHubID/getSelfID
In-Reply-To: <8e768d0804301137g13243c81tacb6036fb46b8d42@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0805011520410.31759@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301154190.16702@andromeda.star.bris.ac.uk> 
 <48186252.A48C69C3@newb6.u-strasbg.fr>  <Pine.LNX.4.63.0804301313240.17185@andromeda.star.bris.ac.uk>
 <8e768d0804301137g13243c81tacb6036fb46b8d42@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 30 Apr 2008, Mike Fitzpatrick wrote:

> On Wed, Apr 30, 2008 at 5:14 AM, Mark Taylor <m.b.taylor@bristol.ac.uk>
> wrote:
>
> Thomas Boch wrote:
>
>> I don't like the idea of dictating an ID for the hub. It is much cleaner
>>> to have a getHubID method, and this should not put any unbearable
>>> additional burden on hub developers.
>>>
>> I agree with that.
>
> Neither of these is unbearable, but having client-id=0 is a simple way to be
> clear that
> a message is coming-from/going-to the hub without the extra overhead and we
> can
> eliminate the getHubID() method  (I think it PLASTIC this was used to ping a

I guess this is just a matter of aesthetics.  I (and Thomas, from his
comment above) don't like the idea of dictating particular values 
for strings that implementations must use; you don't like the idea of 
having a method in the API which could be eliminated.  We probably 
just need to go with a vote.  Anyone else got an opinion?

> For the client wanting to know that e.g. the app.shutdown Notify is  coming
> from the
> Hub and not Topcat (where the action it takes may be different), they are
> required
> to query the hub for its ID and similarly filter based on the ID if the hub
> messages  have
> any special meaning.

For that particular case, I certainly think that there should be a 
separate MType for "hub shutting down" and "client shutting down",
since you may well be interested (want to subscribe to) one but not
the other.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May  1 16:29:02 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 208046240B7
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 16:29:02 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41ET8q1029946
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 16:29:08 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41ET8os029945
	for apps-samp-outgoing; Thu, 1 May 2008 16:29:08 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41ET89E029941
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 16:29:08 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 745E11E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 16:31:04 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6969289"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 16:26:06 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrZmQ-000211-7m
	for apps-samp@ivoa.net; Thu, 01 May 2008 15:29:02 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805011504510.31693@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk> <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk> <Pine.LNX.4.63.0804301513380.17813@andromeda.star.bris.ac.uk> <F4048941-F36C-4CA2-BEF5-C29098A57688@astro.ex.ac.uk> <Pine.LNX.4.63.0805011446150.31517@andromeda.star.bris.ac.uk> <F54F3797-A379-49C0-A194-C87B3982F58C@astro.ex.ac.uk> <Pine.LNX.4.63.0805011504510.31693@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <3FDE2ACF-440F-4B46-A1DF-DA9A8F3F3ADC@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft document introduction
Date: Thu, 1 May 2008 15:29:00 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


>> Should be listed in section 3.10 as an operation the hub must  
>> support, surely? Which is where I was looking...
>
> not unreasonable.  However, as I said:
>
>> This is profile-dependent, since one could imagine other profiles
>> in which, for instance, you can always assume that the messaging
>> subsystem is present.
>
> To elaborate: some of the participants in the debate prior to it
> appearing on this list were concerned that "implementation details"
> should be removed from the abstract API described in sec 3.10
> and described only in relation to the particular choice of wire
> protocol etc that we were using (i.e. the Standard Profile section).

*nod*

Entirely reasonable...

> The particular point of contention raised was including the private- 
> key argument in methods described there.  I thought that the isAlive 
> () method was in a similar class, so moved it out of the abstract  
> API.  But maybe I was being overly picky.  I'm happy to move isAlive 
> () back to where it can be more easily found, the abstract API, if  
> nobody objects to that.  Anyone?

I can see your point, you could have some wire protocols where isAlive 
() is implicit, but I think it should get a mention in 3.10. It's a  
section talking about mandatory things, and some way of finding out  
whether the hub is alive has to be mandatory.

So, maybe you should not list it with the rest of the standard  
profile calls, but mention that a way to find out whether the hub is  
running is mandatory, and that for the API mapping for XML-RPC this  
is implemented using an isAlive() method...?

But basically, I think you're being too picky... ;)

Al.

Al.

From owner-apps-samp@eso.org  Thu May  1 17:40:05 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3FBB96240C1
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 17:40:05 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41Fe8xA006446
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 17:40:08 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41Fe8Pv006443
	for apps-samp-outgoing; Thu, 1 May 2008 17:40:08 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41Fe7eb006438
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 17:40:07 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id ED04D1E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 17:42:03 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAKaBGUiJ3jon/2dsb2JhbACsSA
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6970422"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 17:37:05 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JratC-0001O5-00
	for apps-samp@ivoa.net; Thu, 01 May 2008 16:40:06 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JratC-0008Lk-6S
	for apps-samp@ivoa.net; Thu, 01 May 2008 16:40:06 +0100
Date: Thu, 1 May 2008 16:40:06 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: ISSUE: Message-id management
In-Reply-To: <8e768d0804301357o7fb91ed1w10e4f0468df5adc7@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0805011536550.31759@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk>
 <8e768d0804301357o7fb91ed1w10e4f0468df5adc7@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 30 Apr 2008, Mike Fitzpatrick wrote:

> On Wed, Apr 30, 2008 at 3:54 AM, Mark Taylor <m.b.taylor@bristol.ac.uk>
> wrote:
>
>> The Asynchronous Call/Response pattern described in section 3.9 has the
>> sender generating an ID which is used to match the message with its response
>> between sender and hub, after which the hub generates a different ID which
>> is used to match the message with its resopnse between hub and recipient.
>> This permits use of any value for message ID by the sender.
>>
>> Some feel this is unnecessarily complicated and prefer a required
>> message-id of form <senderId>-<uniqueKey> which would
>> enable the same string to be used for all stages of the message's life.
>>
>
> To be clear, the issue of complexity and the form of the msg-id were
> separate ideas,
> not that the latter was proposed (entirely) as a solution to the former.

Mike

the scheme as it is stands in the draft can use exactly the trick 
that you describe to avoid storing any per-message state internally.

The most obvious way to do it is for the hub to set its hub-msg-id 
along the following lines:

    <hub-msg-id> = <sender-id>-<sender-msg-id>

then, as you describe, when the response comes back to the hub bearing the 
<hub-msg-id>, the hub can unpack this to work out where and how it's
supposed to forward that response on to the original sender.

I understood that your earlier proposal was to say the sender MUST
supply a msg-id with a format like that above, and the hub MUST leave
it the same when it forwards it to the recipient.

The benefit of allowing the sender-msg-id and hub-msg-id to be different
(though they don't have to be if the hub wants to arrange things
otherwise) is so that the sender and the hub can both decide how they
want to format their part of the ID.  As well as not wanting to 
dictate implementation details where it's not necessary, there may
be practical benefits to this - for instance a particular hub
implementation might want to add a checksum for added security.
If it is obliged by the standard to use a msg-id of a particular form,
and generated by the sender, that would be outlawed.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May  1 18:04:43 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 4DB486240C1
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 18:04:43 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41G4m11008532
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 18:04:48 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41G4mcO008531
	for apps-samp-outgoing; Thu, 1 May 2008 18:04:48 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41G4lZq008527
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 18:04:48 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 4A5391E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 18:06:44 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6970779"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 18:01:45 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrbH0-0005nR-7Z
	for apps-samp@ivoa.net; Thu, 01 May 2008 17:04:42 +0100
Mime-Version: 1.0 (Apple Message framework v753)
Content-Transfer-Encoding: 7bit
Message-Id: <9B2B3B51-638C-4B52-88A0-6DCD285D82B4@astro.ex.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
To: apps-samp@ivoa.net
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Language neutrality
Date: Thu, 1 May 2008 17:04:40 +0100
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

An issue about language neutrality. You have the method names of the  
form;

   samp.hub.isAlive( )

in the XML-RPC mapping of the Standard Profile. This is of course  
very Java-centric.

For instance. the period is not a valid identifier in Perl where you  
can't have a method name with a full stop in it. This means that auto- 
dispatch from a Perl XML-RPC server is very hard (if not impossible)  
to implement.

Al.

From owner-apps-samp@eso.org  Thu May  1 18:22:59 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 653496240C1
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 18:22:59 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41GN64K010158
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 18:23:06 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41GN6O9010157
	for apps-samp-outgoing; Thu, 1 May 2008 18:23:06 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41GN6U5010153
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 18:23:06 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id B9D881E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 18:25:02 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6970984"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 18:20:04 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrbYo-00065t-6c
	for apps-samp@ivoa.net; Thu, 01 May 2008 17:23:06 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <9B2B3B51-638C-4B52-88A0-6DCD285D82B4@astro.ex.ac.uk>
References: <9B2B3B51-638C-4B52-88A0-6DCD285D82B4@astro.ex.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <68B66472-599B-4D30-BCCC-B8B40C02DEB0@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Language neutrality
Date: Thu, 1 May 2008 17:23:04 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Alasdair Allan wrote:
> An issue about language neutrality. You have the method names of  
> the form;
>
>   samp.hub.isAlive( )
>
> in the XML-RPC mapping of the Standard Profile. This is of course  
> very Java-centric.
>
> For instance. the period is not a valid identifier in Perl where  
> you can't have a method name with a full stop in it. This means  
> that auto-dispatch from a Perl XML-RPC server is very hard (if not  
> impossible) to implement.

There was a reason why PLASTIC called perform( ) rather than  
plastic.perform( ) and I think this was it...

Al.

From owner-apps-samp@eso.org  Thu May  1 18:34:40 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 005CB6240C1
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 18:34:39 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41GYlrq011116
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 18:34:47 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41GYldk011115
	for apps-samp-outgoing; Thu, 1 May 2008 18:34:47 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41GYlJ6011111
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 18:34:47 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 83E501E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 18:36:43 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAIyOGUiJ3jon/2dsb2JhbACsPA
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6971150"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 18:31:44 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jrbk5-0001WJ-00; Thu, 01 May 2008 17:34:45 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jrbk5-0008Uj-7s; Thu, 01 May 2008 17:34:45 +0100
Date: Thu, 1 May 2008 17:34:45 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Alasdair Allan <aa@astro.ex.ac.uk>
cc: apps-samp@ivoa.net
Subject: Re: Language neutrality
In-Reply-To: <9B2B3B51-638C-4B52-88A0-6DCD285D82B4@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805011714190.31759@andromeda.star.bris.ac.uk>
References: <9B2B3B51-638C-4B52-88A0-6DCD285D82B4@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 1 May 2008, Alasdair Allan wrote:

> An issue about language neutrality. You have the method names of the form;
>
> samp.hub.isAlive( )
>
> in the XML-RPC mapping of the Standard Profile. This is of course very 
> Java-centric.

That's a bit harsh - you can't have a method name with a full stop
in Java either.  The intention is namespace delimitation, so if I'd
had my (somewhat rusty) Perl head on when deciding this bit it 
would have looked something like Samp::Hub::isAlive(), which I suspect 
is still not a valid Perl method name.

> For instance. the period is not a valid identifier in Perl where you can't 
> have a method name with a full stop in it. This means that auto-dispatch from 
> a Perl XML-RPC server is very hard (if not impossible) to implement.

I always thought that Perl's quoting mechanisms were under-powered :-).

If I understand what you're talking about correctly, auto-dispatch is
some kind of syntactic sugar - you're not saying that you can't make
these XML-RPC invocations, just that those periods make it harder to
write your entire hub implementation in a single line of Perl.

As I say the intention is namespacing - the thinking being that you
might want to run a single XML-RPC server which offers a SAMP
hub or SAMP client (or both) along with some other completely 
unrelated services, and so it's good practice to avoid using
XML-RPC methodNames which might be in use for some other purpose.

In practice - that's not very likely, so removing the namespacing
altogether would probably not hurt.  Alternatively some other more
auto-dispatch-friendly namespacing mechanism could be used 
(which I guess most likely means samp_hub_isAlive()).  Personally 
I kinda like the dots there, but I don't have ever such strong 
feelings about it.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May  1 18:38:31 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 405C36240C1
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 18:38:31 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41Gcdej011464
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 18:38:39 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41GccIg011463
	for apps-samp-outgoing; Thu, 1 May 2008 18:38:38 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41Gccja011459
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 18:38:38 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id E15561E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 18:40:34 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAIyOGUiJ3jon/2dsb2JhbACsPA
X-IronPort-AV: E=Sophos;i="4.27,422,1204498800"; 
   d="scan'208";a="6971202"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 18:35:36 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jrbnn-0001XN-00; Thu, 01 May 2008 17:38:35 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jrbnn-0008VC-EJ; Thu, 01 May 2008 17:38:35 +0100
Date: Thu, 1 May 2008 17:38:35 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Alasdair Allan <aa@astro.ex.ac.uk>
cc: apps-samp@ivoa.net
Subject: Re: Language neutrality
In-Reply-To: <68B66472-599B-4D30-BCCC-B8B40C02DEB0@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805011734590.31759@andromeda.star.bris.ac.uk>
References: <9B2B3B51-638C-4B52-88A0-6DCD285D82B4@astro.ex.ac.uk>
 <68B66472-599B-4D30-BCCC-B8B40C02DEB0@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 1 May 2008, Alasdair Allan wrote:

> There was a reason why PLASTIC called perform( ) rather than plastic.perform( 
> ) and I think this was it...

according to my implementation, at PLASTIC versions <0.4 it was
"plastic.client.peform" and >=0.4 it was just "perform".
I have absolutely no recollection of why - maybe that was it.

The hub methods were prefixed "plastic.hub.".

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May  1 20:30:54 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B36BA6240C1
	for <vomail@fiction.hq.eso.org>; Thu,  1 May 2008 20:30:54 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41IV09n024450
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 1 May 2008 20:31:00 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41IV0kb024449
	for apps-samp-outgoing; Thu, 1 May 2008 20:31:00 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41IUw1T024445
	for <apps-samp@ivoa.net>; Thu, 1 May 2008 20:30:58 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 601C61E401D
	for <apps-samp@ivoa.net>; Thu,  1 May 2008 20:32:54 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AiAGAH6pGUhC+VLmaWdsb2JhbACCNjWOcw0FAgUIDwWVG4VI
X-IronPort-AV: E=Sophos;i="4.27,423,1204498800"; 
   d="scan'208";a="6972652"
Received: from wx-out-0506.google.com ([66.249.82.230])
  by clavius.hq.eso.org with ESMTP; 01 May 2008 20:27:54 +0200
Received: by wx-out-0506.google.com with SMTP id h30so1200216wxd.21
        for <apps-samp@ivoa.net>; Thu, 01 May 2008 11:30:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        bh=PMHC06qAdN36VeZ+MQvcBb+tQ4yyl7GK/QTizI8ZSrE=;
        b=YzkFvBZ+YA32DWqU5mZyG6DEO0wqJQj1LHlMBGAAfcwXHZE8/k1TI7OPV3wYUuuyRsaCzPb1/SdUNLOLFvnYpwVGD64pft3aPoFuknIEPZbFaZnrqWRot+neTJDrjse84K7rHnhcv21PQM0aMeUR//YGmWL+2hFWdpQkdVILt2A=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        b=jPKImKEv1wiRX95Jf62UphNEY4peaWhw4H7GclAbS+jONMiykAcWKTj7epGrsBV/pzod3tycXw4w39Ze8f9UjW6QQHp3UPjlMnjxIU+suVpnoKmmcazq0he0PZMOSewXUBMZYNzeKR5po0eP4CKffSx8d1U4Tayaj+CbKHAGMGU=
Received: by 10.100.133.1 with SMTP id g1mr3439661and.88.1209666655577;
        Thu, 01 May 2008 11:30:55 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Thu, 1 May 2008 11:30:55 -0700 (PDT)
Message-ID: <8e768d0805011130x59092246r93be5f3ace33489b@mail.gmail.com>
Date: Thu, 1 May 2008 11:30:55 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: ISSUE: Message-id management
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0805011536550.31759@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_10341_25137437.1209666655564"
References: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk>
	 <8e768d0804301357o7fb91ed1w10e4f0468df5adc7@mail.gmail.com>
	 <Pine.LNX.4.63.0805011536550.31759@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: e4aa79a28842826e
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

------=_Part_10341_25137437.1209666655564
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Mark,

the scheme as it is stands in the draft can use exactly the trick that you
> describe to avoid storing any per-message state internally.
>

>
> The most obvious way to do it is for the hub to set its hub-msg-id along
> the following lines:
>
>   <hub-msg-id> = <sender-id>-<sender-msg-id>
>
> then, as you describe, when the response comes back to the hub bearing the
> <hub-msg-id>, the hub can unpack this to work out where and how it's
> supposed to forward that response on to the original sender.


    If this is the intent of having a separate hub-msg-id then  it should be
spelled out
more clearly in the text, but it still looks like just a wrapper around the
idea of how
to format the sender-msg-id to carry the same information.


> I understood that your earlier proposal was to say the sender MUST
> supply a msg-id with a format like that above, and the hub MUST leave
> it the same when it forwards it to the recipient.


    It has to be a MUST, anything less and the hub still has to handle the
id mapping so any benefit is lost because one developer decided to ignore
a SHOULD.




> The benefit of allowing the sender-msg-id and hub-msg-id to be different
> (though they don't have to be if the hub wants to arrange things
> otherwise) is so that the sender and the hub can both decide how they
> want to format their part of the ID.  As well as not wanting to dictate
> implementation details where it's not necessary, there may
> be practical benefits to this - for instance a particular hub
> implementation might want to add a checksum for added security.
> If it is obliged by the standard to use a msg-id of a particular form,
> and generated by the sender, that would be outlawed.
>

    You should have stopped at the 'not wanting to dicate' argument.  Unless
the receiving app knows it is getting a checksum in the id and does
something
with it a checksum value is no more secure than adding "-foo" since all
we need is the reply to give us back the same msg-id.  If you want checksum
security it should be in the original sender, but then we're back to
dictating
implementation details.

-Mike

------=_Part_10341_25137437.1209666655564
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Mark,<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">the scheme as it is stands in the draft can use exactly the trick that you describe to avoid storing any per-message state internally.<br>
</blockquote><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
The most obvious way to do it is for the hub to set its hub-msg-id along the following lines:<br>
<br>
 &nbsp; &lt;hub-msg-id&gt; = &lt;sender-id&gt;-&lt;sender-msg-id&gt;<br>
<br>
then, as you describe, when the response comes back to the hub bearing the &lt;hub-msg-id&gt;, the hub can unpack this to work out where and how it&#39;s supposed to forward that response on to the original sender.</blockquote>
<div><br>&nbsp;&nbsp;&nbsp; If this is the intent of having a separate hub-msg-id then&nbsp; it should be spelled out<br>more clearly in the text, but it still looks like just a wrapper around the&nbsp; idea of how<br>to format the sender-msg-id to carry the same information. <br>
&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I understood that your earlier proposal was to say the sender MUST<br>
supply a msg-id with a format like that above, and the hub MUST leave<br>
it the same when it forwards it to the recipient.</blockquote><div><br>&nbsp;&nbsp;&nbsp; It has to be a MUST, anything less and the hub still has to handle the <br>id mapping so any benefit is lost because one developer decided to ignore<br>
a SHOULD.<br><br><br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">The benefit of allowing the sender-msg-id and hub-msg-id to be different<br>

(though they don&#39;t have to be if the hub wants to arrange things<br>
otherwise) is so that the sender and the hub can both decide how they<br>
want to format their part of the ID. &nbsp;As well as not wanting to dictate implementation details where it&#39;s not necessary, there may<br>
be practical benefits to this - for instance a particular hub<br>
implementation might want to add a checksum for added security.<br>
If it is obliged by the standard to use a msg-id of a particular form,<br>
and generated by the sender, that would be outlawed.<br><font color="#888888">
</font></blockquote></div><br>&nbsp;&nbsp;&nbsp; You should have stopped at the &#39;not wanting to dicate&#39; argument.&nbsp; Unless<br>the receiving app knows it is getting a checksum in the id and does something<br>with it a checksum value is no more secure than adding &quot;-foo&quot; since all<br>
we need is the reply to give us back the same msg-id.&nbsp; If you want checksum<br>security it should be in the original sender, but then we&#39;re back to dictating<br>implementation details.<br><br>-Mike<br>

------=_Part_10341_25137437.1209666655564--

From owner-apps-samp@eso.org  Fri May  2 00:24:10 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id D991D6240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 00:24:09 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41MOI3H016915
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 00:24:18 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m41MOISq016914
	for apps-samp-outgoing; Fri, 2 May 2008 00:24:18 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m41MOH05016910
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 00:24:17 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 47CA51E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 00:26:14 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,423,1204498800"; 
   d="scan'208";a="6975738"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 00:21:14 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.3])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrhCF-0002PR-9S
	for apps-samp@ivoa.net; Thu, 01 May 2008 23:24:12 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805011714190.31759@andromeda.star.bris.ac.uk>
References: <9B2B3B51-638C-4B52-88A0-6DCD285D82B4@astro.ex.ac.uk> <Pine.LNX.4.63.0805011714190.31759@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <35F30B5E-E84A-40C5-95C5-E64F3CD401CC@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Language neutrality
Date: Thu, 1 May 2008 23:24:08 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

>> An issue about language neutrality. You have the method names of  
>> the form;
>>
>> samp.hub.isAlive( )
>>
>> in the XML-RPC mapping of the Standard Profile. This is of course  
>> very Java-centric.
>
> That's a bit harsh - you can't have a method name with a full stop  
> in Java either.

Yes, alright, a bit harsh. I'd just got to the "oh no, more full  
stops" bit in the code.

> The intention is namespace delimitation, so if I'd had my (somewhat  
> rusty) Perl head on when deciding this bit it would have looked  
> something like Samp::Hub::isAlive(), which I suspect is still not a  
> valid Perl method name.

It is, but not when called via XMLRPC.

> I always thought that Perl's quoting mechanisms were under- 
> powered :-).

;)

> If I understand what you're talking about correctly, auto-dispatch  
> is some kind of syntactic sugar - you're not saying that you can't  
> make these XML-RPC invocations, just that those periods make it  
> harder to write your entire hub implementation...

Yup it's syntactic sugar, but I've just managed to work round this in  
a semi-elegant way. Although language purists will throw up their  
hands in horror and throw ripe tomatoes from the roof tops when they  
see it I think...

> ...in a single line of Perl.


Hey! I resemble that remark.

Actually I'm being careful and doing a nice object orientated job of  
work (since I'm guessing there might actually be a market for this  
thing) as opposed to my PLASTIC code which has always been a bit on  
the hack and slash side of the fence (since I never got round to  
writing those base classes   I always promised to do).

> As I say the intention is namespacing - the thinking being that you  
> might want to run a single XML-RPC server which offers a SAMP hub  
> or SAMP client (or both) along with some other completely unrelated  
> services, and so it's good practice to avoid using XML-RPC  
> methodNames which might be in use for some other purpose.

Makes sense...

> In practice - that's not very likely, so removing the namespacing  
> altogether would probably not hurt.

Nooooo, but I can see why its this way. Is this going to cause  
problems elsewhere? I don't think so, but...

Al.

From owner-apps-samp@eso.org  Fri May  2 06:18:20 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 14E4E6240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 06:18:20 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m424IGTg013990
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 06:18:16 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m424IGuk013989
	for apps-samp-outgoing; Fri, 2 May 2008 06:18:16 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m424IFcI013985
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 06:18:15 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 8CF521E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 06:20:12 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AgkEAJsyGkjRVYT5ZWdsb2JhbACCNTaOdQ0DBAUIDwWUW4Vo
X-IronPort-AV: E=Sophos;i="4.27,424,1204498800"; 
   d="scan'208";a="6978846"
Received: from an-out-0708.google.com ([209.85.132.249])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 06:15:11 +0200
Received: by an-out-0708.google.com with SMTP id c36so270191ana.36
        for <apps-samp@ivoa.net>; Thu, 01 May 2008 21:18:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        bh=eJf/aa/pI/7Uzv+EJwYVrtd00qcqaufuh0CLNxqeNlY=;
        b=cIVCvuB1EV99vy0OAldgnb5PJRGsSwoxA02Htqltr8tMp0pI3669pl55fpWwshLOKdYc2r6yJriOv6Dr1yawZY2DKMjcKvDPbcAIoNkuvmRHCa6RjhhoOqcChsJo7nnLabycaTeagklHr4ROGSEo8dw7TfQ5mXCRzcyghC3LIVs=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        b=nBfO9Lnw9WgM051bCkA+wTfJcUfofo4QPRBoWSIkDzW1fTELwhVVD0/wWSib9O8wo9wHoiE3KMzMQDnCpAkf/l/YlTHftz6Exa1zArSVQUXt3MJzs5aweqV4vHq7jFDnpeQRT695IGg04VuOkHjtvpOuP6MjtL0YwIJeL4DzaDQ=
Received: by 10.100.141.5 with SMTP id o5mr4099189and.64.1209701888795;
        Thu, 01 May 2008 21:18:08 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Thu, 1 May 2008 21:18:08 -0700 (PDT)
Message-ID: <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
Date: Thu, 1 May 2008 21:18:08 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: ISSUE: Naming of error object encoding
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_13004_10514635.1209701888780"
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>
	 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>
	 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: 3c031f551903a90b
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

------=_Part_13004_10514635.1209701888780
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Mark,


In the Nomenclature section (2.1) it says
>
>   "In the terminology of this document, a Response is not itself a
>    Message."
>

   Well, that certainly looks like an easy-enough sentence to change. 8-)



> I'm not necessarily against supplying a status in message responses;
> a "status" (or "error.status" or "samp.error.status" or whatever)
> key could be added to those suggested above and could take values
> such as "error", "warning" and others from a well-known vocabulary
> which we supply, possibly allowing users to extend it for their own
> purposes.


    The problem here is that we're then defining a separate vocabulary for a
Response
than we are for Message MTypes.  I'm already worried that we're confusing
things
to have a 'samp.hub.method' in the XML-RPC profile, a 'samp.secret' in the
lockfile
metadata, a 'file.load' as a MType and now a 'status.warning' in a Response
status
keyword.  The 'word.word' syntax is too overloaded with meaning.
    If we require that the Response 'status' element have the same meaning
as the
'status' MType, why not just the make it an MType?


> However, I think it would be unhelpful to label this status as an MType,
> since such statuses only make sense as something returned from a Message
> rather than sent unprovoked.  Also, if the status in the reply to a
> Message is an MType, it suggests that any MType is allowed in that slot.
>  Does this mean you can only receive a response from a message if you happen
> to be subscribed to the MType that it has when it is returned?  Given that
> an MType is documented to require some returned
> value, does it mean that you have to reply to the response?
> What are you supposed to do if you get a "spectrum.load" MType in the
> response to a message with a "get.param" MType? If you say that the only
> MTypes which can be allowed in those slots
> are "status.*" ones, I don't see the advantage of these being MTypes
> rather than just some separate controlled vocabulary.



    Applications that engage in free-association as you describe deserve
what they
get.   The receiveResponse() method could simply ignore anything other than
a status.*
mtype if it wants, I'm only suggest a Response can share the Message format,
not that
clients handle it in the same way.
    A more realistic example would be:

    - Client A has a FITS MEF file with an image and its catalog
    - Client B subscribes to 'image.display' but not 'image.display.extnum'
that would let
      A specify which extension had the image
    - Client C subscribes to 'table.load' but not 'table.load.extnum' that
would let
      A specify which extension had the table
    - Both subscribe to 'file.load' indicating they would do something
reasonable with a file
    - A sends both a 'file.load' and the MEF filename; B replies with an OK
success and
      and MType of 'image.event.load' to indicate it found and displayed the
image extn,
      and replies with 'table.event.load' to say it found the catalog
extension.

There are better ways to do this using the Notify as a separate event, but
since we allow
apps to make up their own MTypes some clever developers may agree on a
pattern that
could make realistic use of MTypes in both the call/response.



> as I said above, by all means propose some key for a non-free-form,
> parsable value, and values it can take, to go along with the others proposed
> for the error response map.
>

    As i say above, any such key would be a separate vocabulary and further
overload
the 'word.word' syntax we use for MTypes, metadata namespaces, method names,
.....
Having a Response be a Message means we can use the Mtype for the status,
and
the map would depend on the mtype for whether errortxt or some other key was

expected.  Things like a 'codetxt' key could be optional, but regardless
we'd have a
documented way to present errors of many kinds that all apps would use to
interoperate.


I think you're suggesting that you might want to return whatever
> is the return value from the message (as determined by the MType)
> but also have the ability to flag a Warning or some other non-OK
> status rather than assume that if a value is returned then the status must
> be OK.


    What I'm arguing is that we have no *consistent* way to transmit a
warning:
One app might set success=1 but since the Response is empty fill it with
the map containing an 'errortxt' anyway, another app might set success=0
to convey the warning but would have filled the request (in some way)
anyway,
and neither app has any reliable way to catch an error to see whether it can
be
recovered somehow.


However, I'd argue against it as providing an unnecesary feature.
> Procedure calls in most modern programming languages get by with
> call semantics in which either the thing succeeds (and you can look at the
> return value to find out the result) or it fails (and throws and exception
> which you can examine to find out what
> went wrong); no fuzzy third way is provided for.  This is the model I have
> in mind for the synch and asynch call/response patterns, and I don't think
> that we need anything with more
> flexibility than that.


     We're not designing a language, we're designing a system that has to
provide
the same exception handling as we would expect from a modern language.  A
simple
free-form 'errortxt' is not acceptable, a separate vocabulary for a <status>
key
is unnecessary, and I can easily think of reasons why we'd need more
flexibility
beyond the simple PLASTIC usage model in later versions of SAMP.

    The litmus test for features should be whether our final design provides
all of
the PLASTIC functionality required in v1.0, not whether a feature is deemed
unnecessary
in the PLASTIC usage model.  I'm sorry for casting your thoughts in such a
simple
manner, I know that's not the case or your intent, but I'm feeling like
generalizations
that do no  apparent harm to the spec have been met with resistance simply
because
there seems to be no immediate use for it.
    If you really think about it:  Does a Response being a Message and
having an MType
do any harm to what you need?  Does it open possibilities for things you
haven't considered,
even if those things are too fanciful to ever be implemented?



Cheers,
-Mike

------=_Part_13004_10514635.1209701888780
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Mark,<br><br><div class="gmail_quote"><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">In the Nomenclature section (2.1) it says<br>
<br>
 &nbsp; &quot;In the terminology of this document, a Response is not itself a<br>
 &nbsp; &nbsp;Message.&quot;<div class="Ih2E3d"></div></blockquote><div><br>&nbsp;&nbsp; Well, that certainly looks like an easy-enough sentence to change. 8-)<br><br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

I&#39;m not necessarily against supplying a status in message responses;<br>
a &quot;status&quot; (or &quot;error.status&quot; or &quot;samp.error.status&quot; or whatever)<br>
key could be added to those suggested above and could take values<br>
such as &quot;error&quot;, &quot;warning&quot; and others from a well-known vocabulary<br>
which we supply, possibly allowing users to extend it for their own purposes.</blockquote><div><br>&nbsp;&nbsp;&nbsp; The problem here is that we&#39;re then defining a separate vocabulary for a Response<br>than we are for Message MTypes.&nbsp; I&#39;m already worried that we&#39;re confusing things<br>
to have a &#39;samp.hub.method&#39; in the XML-RPC profile, a &#39;samp.secret&#39; in the lockfile<br>metadata, a &#39;file.load&#39; as a MType and now a &#39;status.warning&#39; in a Response status<br>keyword.&nbsp; The &#39;word.word&#39; syntax is too overloaded with meaning.<br>
&nbsp;&nbsp;&nbsp; If we require that the Response &#39;status&#39; element have the same meaning as the<br>&#39;status&#39; MType, why not just the make it an MType?<br>&nbsp;<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

However, I think it would be unhelpful to label this status as an MType,<br>
since such statuses only make sense as something returned from a Message<br>
rather than sent unprovoked. &nbsp;Also, if the status in the reply to a Message is an MType, it suggests that any MType is allowed in that slot. &nbsp;Does this mean you can only receive a response from a message if you happen to be subscribed to the MType that it has when it is returned? &nbsp;Given that an MType is documented to require some returned<br>

value, does it mean that you have to reply to the response?<br>
What are you supposed to do if you get a &quot;spectrum.load&quot; MType in the response to a message with a &quot;get.param&quot; MType? If you say that the only MTypes which can be allowed in those slots<br>
are &quot;status.*&quot; ones, I don&#39;t see the advantage of these being MTypes<br>
rather than just some separate controlled vocabulary.</blockquote><div><br><br>&nbsp;&nbsp;&nbsp; Applications that engage in free-association as you describe deserve what they <br>get.&nbsp;&nbsp; The receiveResponse() method could simply ignore anything other than a status.*<br>
mtype if it wants, I&#39;m only suggest a Response can share the Message format, not that<br>clients handle it in the same way.<br>&nbsp;&nbsp;&nbsp; A more realistic example would be:<br><br>&nbsp;&nbsp;&nbsp; - Client A has a FITS MEF file with an image and its catalog<br>
&nbsp;&nbsp;&nbsp; - Client B subscribes to &#39;image.display&#39; but not &#39;image.display.extnum&#39; that would let<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A specify which extension had the image<br>&nbsp;&nbsp;&nbsp; - Client C subscribes to &#39;table.load&#39; but not &#39;table.load.extnum&#39; that would let<br>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A specify which extension had the table<br>&nbsp;&nbsp;&nbsp; - Both subscribe to &#39;file.load&#39; indicating they would do something reasonable with a file<br>&nbsp;&nbsp;&nbsp; - A sends both a &#39;file.load&#39; and the MEF filename; B replies with an OK success and <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and MType of &#39;image.event.load&#39; to indicate it found and displayed the image extn, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and replies with &#39;table.event.load&#39; to say it found the catalog extension.<br><br>There are better ways to do this using the Notify as a separate event, but since we allow<br>
apps to make up their own MTypes some clever developers may agree on a pattern that<br>could make realistic use of MTypes in both the call/response.<br>
<br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">as I said above, by all means propose some key for a non-free-form, parsable value, and values it can take, to go along with the others proposed for the error response map.<div class="Ih2E3d">
</div></blockquote><div class="Ih2E3d"><br>&nbsp;&nbsp;&nbsp; As i say above, any such key would be a separate vocabulary and further overload<br>the &#39;word.word&#39; syntax we use for MTypes, metadata namespaces, method names, .....<br>
Having a Response be a Message means we can use the Mtype for the status, and <br>the map would depend on the mtype for whether errortxt or some other key was <br>expected.&nbsp; Things like a &#39;codetxt&#39; key could be optional, but regardless we&#39;d have a<br>
documented way to present errors of many kinds that all apps would use to interoperate.<br>&nbsp;<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

I think you&#39;re suggesting that you might want to return whatever<br>
is the return value from the message (as determined by the MType)<br>
but also have the ability to flag a Warning or some other non-OK<br>
status rather than assume that if a value is returned then the status must be OK.</blockquote><div><br>&nbsp;&nbsp;&nbsp; What I&#39;m arguing is that we have no *consistent* way to transmit a warning:<br>One app might set success=1 but since the Response is empty fill it with<br>
the map containing an &#39;errortxt&#39; anyway, another app might set success=0<br>to convey the warning but would have filled the request (in some way) anyway,<br>and neither app has any reliable way to catch an error to see whether it can be<br>
recovered somehow.<br>&nbsp;<br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
However, I&#39;d argue against it as providing an unnecesary feature.<br>
Procedure calls in most modern programming languages get by with<br>
call semantics in which either the thing succeeds (and you can look at the return value to find out the result) or it fails (and throws and exception which you can examine to find out what<br>
went wrong); no fuzzy third way is provided for. &nbsp;This is the model I have in mind for the synch and asynch call/response patterns, and I don&#39;t think that we need anything with more<br>
flexibility than that.</blockquote><div><br>&nbsp; &nbsp;&nbsp; We&#39;re not designing a language, we&#39;re designing a system that has to provide<br>the same exception handling as we would expect from a modern language.&nbsp; A simple<br>
free-form &#39;errortxt&#39; is not acceptable, a separate vocabulary for a &lt;status&gt; key<br>is unnecessary, and I can easily think of reasons why we&#39;d need more flexibility<br>beyond the simple PLASTIC usage model in later versions of SAMP.<br>
<br>&nbsp;&nbsp;&nbsp; The litmus test for features should be whether our final design provides all of<br>the PLASTIC functionality required in v1.0, not whether a feature is deemed unnecessary<br>in the PLASTIC usage model.&nbsp; I&#39;m sorry for casting your thoughts in such a simple<br>
manner, I know that&#39;s not the case or your intent, but I&#39;m feeling like generalizations <br>that do no&nbsp; apparent harm to the spec have been met with resistance simply because <br>there seems to be no immediate use for it. <br>
&nbsp;&nbsp;&nbsp; If you really think about it:&nbsp; Does a Response being a Message and having an MType<br>do any harm to what you need?&nbsp; Does it open possibilities for things you haven&#39;t considered,<br>even if those things are too fanciful to ever be implemented?<br>
</div></div><br><br><br>Cheers,<br>-Mike<br>

------=_Part_13004_10514635.1209701888780--

From owner-apps-samp@eso.org  Fri May  2 10:00:17 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id F3CE2624284
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 10:00:16 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4280FMe002810
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 10:00:15 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4280F9Q002809
	for apps-samp-outgoing; Fri, 2 May 2008 10:00:15 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4280F8X002805
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 10:00:15 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id CF7111E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 10:02:11 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,425,1204498800"; 
   d="scan'208";a="6981665"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 09:57:10 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrqBd-0001K6-7X
	for apps-samp@ivoa.net; Fri, 02 May 2008 09:00:09 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <E014B553-6A69-4180-A19A-DEC97E37A291@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: ISSUE: Naming of error object encoding
Date: Fri, 2 May 2008 09:00:06 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mike Fitzpatrick wrote:
> I'm sorry for casting your thoughts in such a simple manner, I know  
> that's not the case or your intent, but I'm feeling like  
> generalizations  that do no  apparent harm to the spec have been  
> met with resistance simply because  there seems to be no immediate  
> use for it.


The entire beauty of PLASTIC was that it was so simple it could be  
easily added to an existing application, if SAMP is made too  
complicated only the IVOA crowd will add SAMP support, there won't be  
wide spread adoption outside the VO-centric world, and we may as well  
all have stuck with PLASTIC (in fact we would have been better off  
doing that because PLASTIC adoption will be down as well because it's  
no longer seen as supported). If SAMP becomes overly complicated,  
then nobody except the VO will use it. The VO is not the big, wide,  
world.

I'm glad someone is fighting generalisations, generalisations usually  
mean complications. Complications means coding overhead, coding  
overhead means lower adoption.

In this specific case I think you're arguing over something that  
doesn't matter. The functionality the Hub/Client has will not be  
improved in any way by defining the synchronous return messages as  
having mtype. Arguing that synchronous responses to messages aren't  
defined as messages does not increase functionality. In fact I think  
it further nails down the spec in what I think are bad ways, less  
wiggle room beyond the basic framework necessary for the apps to talk  
to each other at all, is bad.

Al.

From owner-apps-samp@eso.org  Fri May  2 10:06:08 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 85C576240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 10:06:08 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4286B5T003368
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 10:06:11 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4286B8h003367
	for apps-samp-outgoing; Fri, 2 May 2008 10:06:11 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4286A4b003363
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 10:06:11 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id BDD151E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 10:08:07 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,425,1204498800"; 
   d="scan'208";a="6981763"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 10:03:06 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrqHS-0001Q1-8U
	for apps-samp@ivoa.net; Fri, 02 May 2008 09:06:10 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0804301118001.16355@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301118001.16355@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <2BE35066-AEEC-4330-9FB2-0B8F4F42EA3F@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft text
Date: Fri, 2 May 2008 09:06:07 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

Mark,

In section 5.2.10,

> \subsubsection{Coordinate Messages}
>
> These message types have the toplevel word ``{\tt coord}''.
> They are intended to provide a general
> method for using coordinates.  Specific behavior
> depends on the application.


there doesn't seem to be any coord.* messages listed? Is this an  
oversight, or has it not been gotten around to yet?

Cheers,
Al.

From owner-apps-samp@eso.org  Fri May  2 10:10:29 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0E7706240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 10:10:29 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m428AWvg003937
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 10:10:32 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m428AWI2003936
	for apps-samp-outgoing; Fri, 2 May 2008 10:10:32 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m428AVsM003932
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 10:10:31 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 791A31E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 10:12:28 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,425,1204498800"; 
   d="scan'208";a="6981876"
Received: from mailhost.u-strasbg.fr ([130.79.200.155])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 10:07:27 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m428AOI0053399
          ; Fri, 2 May 2008 10:10:24 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m428Bvg05045;
	Fri, 2 May 2008 10:11:57 +0200 (MET DST)
Message-ID: <481ACCCC.CB800837@newb6.u-strasbg.fr>
Date: Fri, 02 May 2008 10:11:56 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Alasdair Allan <aa@astro.ex.ac.uk>
CC: apps-samp@ivoa.net
Subject: Re: SAMP draft document introduction
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk> <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.155]); Fri, 02 May 2008 10:10:24 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr5.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr5.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Hi,

> Based on the specification I'll try and put together a demonstration
> Perl SAMP hub (and a couple of simple clients) in time for the May
> meeting. It'll be good to have a few prototypes kicking around.

On the topic of hub implementations, my plans are to develop a Python
SAMP hub, and to test it with an updated Aladin.
I am not sure this will be ready for Trieste.

Cheers,

Thomas

> 
> Cheers,
> Al.

From owner-apps-samp@eso.org  Fri May  2 10:23:01 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0FF796240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 10:23:01 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m428N4Bk005106
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 10:23:04 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m428N4qM005105
	for apps-samp-outgoing; Fri, 2 May 2008 10:23:04 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m428N3bm005092
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 10:23:03 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 4F6E71E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 10:25:00 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAAdsGkiJ3jon/2dsb2JhbACsNQ
X-IronPort-AV: E=Sophos;i="4.27,425,1204498800"; 
   d="scan'208";a="6982102"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 10:19:59 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrqXm-0002jQ-00
	for apps-samp@ivoa.net; Fri, 02 May 2008 09:23:02 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrqXm-0002AM-GZ
	for apps-samp@ivoa.net; Fri, 02 May 2008 09:23:02 +0100
Date: Fri, 2 May 2008 09:23:02 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: ISSUE: Message-id management
In-Reply-To: <8e768d0805011130x59092246r93be5f3ace33489b@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0805020854570.8064@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk> 
 <8e768d0804301357o7fb91ed1w10e4f0468df5adc7@mail.gmail.com> 
 <Pine.LNX.4.63.0805011536550.31759@andromeda.star.bris.ac.uk>
 <8e768d0805011130x59092246r93be5f3ace33489b@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 1 May 2008, Mike Fitzpatrick wrote:

>> The most obvious way to do it is for the hub to set its hub-msg-id along
>> the following lines:
>>
>>   <hub-msg-id> = <sender-id>-<sender-msg-id>
>>
>> then, as you describe, when the response comes back to the hub bearing the
>> <hub-msg-id>, the hub can unpack this to work out where and how it's
>> supposed to forward that response on to the original sender.
>
>    If this is the intent of having a separate hub-msg-id then  it should be
> spelled out
> more clearly in the text,

My footnote on page 16 is intended to outline this.  But I don't
think it is the place of the standard to say that hubs should use
any particular id format or algorithm to achieve the required
results - that's down to the implementation.

>> The benefit of allowing the sender-msg-id and hub-msg-id to be different
>> (though they don't have to be if the hub wants to arrange things
>> otherwise) is so that the sender and the hub can both decide how they
>> want to format their part of the ID.  As well as not wanting to dictate
>> implementation details where it's not necessary, there may
>> be practical benefits to this - for instance a particular hub
>> implementation might want to add a checksum for added security.
>> If it is obliged by the standard to use a msg-id of a particular form,
>> and generated by the sender, that would be outlawed.
>
>    You should have stopped at the 'not wanting to dicate' argument.  Unless

well you can stop reading there if you like.

> the receiving app knows it is getting a checksum in the id and does
> something
> with it a checksum value is no more secure than adding "-foo" since all
> we need is the reply to give us back the same msg-id.  If you want checksum
> security it should be in the original sender, but then we're back to
> dictating
> implementation details.

No, I was thinking of a checksum generated by the hub and re-examined
by the hub when the reply comes back so that it can tell that it is 
a hub-msg-id that it generated earlier rather than a faked one. 
Under your scheme, a client could 
maliciously call reply() with a made-up msg-id of 
<sender-id>-<made-up-id> and the hub would forward that response to 
the named sender, who never actually sent a message in the first place.
If the hub is allowed to insert some redundancy into the msg-id it
can have a chance of checking whether the ID it receives is one which
corresponds to a real message.  I'm not saying that we should spend
a lot of time worrying about that kind of security issue, but it's
the kind of implementation-dependent choice which hubs and clients
can make if they feel like it under my scheme (where hub and client
can choose any form they want for the IDs as long as the behaviour
is as prescribed) but blocked under your scheme (where the form of
the msg-id is prescribed).

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri May  2 11:22:09 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 26A466240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 11:22:09 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m429M7Rn011963
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 11:22:07 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m429M79l011962
	for apps-samp-outgoing; Fri, 2 May 2008 11:22:07 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m429M7rV011958
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 11:22:07 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 29A521E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 11:24:04 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6983107"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 11:19:02 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrrSw-0003Kb-9d
	for apps-samp@ivoa.net; Fri, 02 May 2008 10:22:07 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <481ACCCC.CB800837@newb6.u-strasbg.fr>
References: <Pine.LNX.4.63.0804301111570.16314@andromeda.star.bris.ac.uk> <484BA4AF-C189-4711-8247-F0D07A07F1DB@astro.ex.ac.uk> <481ACCCC.CB800837@newb6.u-strasbg.fr>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <83F8E5D2-8957-4788-81CF-3DA6EED61AAD@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft document introduction
Date: Fri, 2 May 2008 10:22:03 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Thomas Boch wrote:
> Alasdair Allan wrote:
>> Based on the specification I'll try and put together a  
>> demonstration Perl SAMP hub (and a couple of simple clients) in  
>> time for the May meeting. It'll be good to have a few prototypes  
>> kicking around.
>
> On the topic of hub implementations, my plans are to develop a  
> Python SAMP hub, and to test it with an updated Aladin.

That's good news, so we should have your Python, Mark's Java and my  
Perl implementations.

> I am not sure this will be ready for Trieste.

I'm not really sure I'm going to get time to finish the Perl Hub (and  
test clients) by Trieste either, but I'll have a go...

Cheers,
Al.

From owner-apps-samp@eso.org  Fri May  2 12:15:34 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 1CB226240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 12:15:34 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42AFbJU018535
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 12:15:37 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42AFbHW018534
	for apps-samp-outgoing; Fri, 2 May 2008 12:15:37 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42AFbU1018530
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 12:15:37 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 3EE6D1E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 12:17:34 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAPuGGkiJ3jon/2dsb2JhbACsEg
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6984037"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 12:12:32 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrsIi-0002zi-00
	for apps-samp@ivoa.net; Fri, 02 May 2008 11:15:36 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrsIi-0002Hz-2d
	for apps-samp@ivoa.net; Fri, 02 May 2008 11:15:36 +0100
Date: Fri, 2 May 2008 11:15:36 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Fwd: ISSUE: Naming of error object encoding
In-Reply-To: <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 1 May 2008, Mike Fitzpatrick wrote:

>> I'm not necessarily against supplying a status in message responses;
>> a "status" (or "error.status" or "samp.error.status" or whatever)
>> key could be added to those suggested above and could take values
>> such as "error", "warning" and others from a well-known vocabulary
>> which we supply, possibly allowing users to extend it for their own
>> purposes.
>
>    The problem here is that we're then defining a separate vocabulary for a
> Response
> than we are for Message MTypes.

to me, that doesn't sound like a problem, because they are doing 
different jobs.  I would say that separate namespaces for separate 
purposes is good design.

> I'm already worried that we're confusing
> things
> to have a 'samp.hub.method' in the XML-RPC profile, a 'samp.secret' in the
> lockfile
> metadata, a 'file.load' as a MType and now a 'status.warning' in a Response
> status
> keyword.  The 'word.word' syntax is too overloaded with meaning.
>
> ...
>
>> as I said above, by all means propose some key for a non-free-form,
>> parsable value, and values it can take, to go along with the others proposed
>> for the error response map.
>
>    As i say above, any such key would be a separate vocabulary and further
> overload
> the 'word.word' syntax we use for MTypes, metadata namespaces, method names,
> .....

Yes it would.  As long as the document clearly describes where each
separate vocabulary is to be used, I don't see any disadvantage in
having as many separate vocabularies as we need.  Indeed I think it's
much better than using the same vocabulary for several semantically
distinct purposes.  I don't have a computer science reference for that,
but it seems to me like an obvious principle of good design.  Do we
actually disagree about this?

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri May  2 13:10:41 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2DEC26240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 13:10:41 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42BAjLs024511
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 13:10:45 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42BAjOY024510
	for apps-samp-outgoing; Fri, 2 May 2008 13:10:45 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42BAi3E024506
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 13:10:44 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id AF2701E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 13:12:41 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6985098"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 13:07:40 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrtA4-0005ay-7K
	for apps-samp@ivoa.net; Fri, 02 May 2008 12:10:44 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Registration and private vs public keys
Date: Fri, 2 May 2008 12:10:40 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

When a client registers with a Hub it gets its private-key back from  
the Hub. Should it also get it's public-key (ie the client-id)? Is  
there any circumstances where a client will need to know its own  
client-id?

Al.

From owner-apps-samp@eso.org  Fri May  2 13:19:43 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6A5316240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 13:19:43 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42BJlG8025254
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 13:19:47 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42BJlk0025253
	for apps-samp-outgoing; Fri, 2 May 2008 13:19:47 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42BJlWX025249
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 13:19:47 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 168021E4029
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 13:21:44 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEADeWGkiJ3jon/2dsb2JhbACsBg
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6985332"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 13:16:42 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrtIo-00036w-00
	for apps-samp@ivoa.net; Fri, 02 May 2008 12:19:46 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrtIo-0002Mm-2Z
	for apps-samp@ivoa.net; Fri, 02 May 2008 12:19:46 +0100
Date: Fri, 2 May 2008 12:19:46 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Registration and private vs public keys
In-Reply-To: <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Fri, 2 May 2008, Alasdair Allan wrote:

> When a client registers with a Hub it gets its private-key back from the Hub. 
> Should it also get it's public-key (ie the client-id)? Is there any 
> circumstances where a client will need to know its own client-id?

Currently undecided: see first part of the ISSUE: getHubID/getSelfID thread.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri May  2 13:28:00 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2B7586240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 13:28:00 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42BS2bo025931
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 13:28:02 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42BS2IK025930
	for apps-samp-outgoing; Fri, 2 May 2008 13:28:02 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42BS190025926
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 13:28:01 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id C00391E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 13:29:58 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6985497"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 13:24:57 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrtQn-0005tW-8B; Fri, 02 May 2008 12:28:01 +0100
In-Reply-To: <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Registration and private vs public keys
Date: Fri, 2 May 2008 12:27:58 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> Alasdair Allan wrote:
>> When a client registers with a Hub it gets its private-key back  
>> from the Hub. Should it also get it's public-key (ie the client- 
>> id)? Is there any circumstances where a client will need to know  
>> its own client-id?
>
> Currently undecided: see first part of the ISSUE: getHubID/ 
> getSelfID thread.

Okay. Another issue... looks like we might get tool kit issues,

In response to the following registration post,

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>samp.hub.register</methodName>
<params>
<param><value><string>Nu3DwlDwMMbLVKqMNOVR</string></value></param>
</params>
</methodCall>

Which looks exactly like example method call from the specification.  
I get his back from the Perl XMLRPC server

<?xml version="1.0" encoding="UTF-8"?>

<methodResponse>
<params>
<param><value><string>registerResponse</string></value></param>
<param><value><string>pfFBQXMjYyns2</string></value></param>
</params>
</methodResponse>

rather than what you have in section 4.4 which doesn't have the

<param><value><string>registerResponse</string></value></param>

line included. Is what you have what is returned from a Java  
implementation? If so I think I've just run into our first toolkit  
issue... *sigh*

Al.

From owner-apps-samp@eso.org  Fri May  2 13:34:48 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 01A356240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 13:34:48 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42BYqLl026482
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 13:34:52 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42BYqBx026481
	for apps-samp-outgoing; Fri, 2 May 2008 13:34:52 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42BYqgi026477
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 13:34:52 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 079071E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 13:36:49 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAL+ZGkiJ3jon/2dsb2JhbACsCA
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6985662"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 13:31:47 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JrtXP-00038g-00
	for apps-samp@ivoa.net; Fri, 02 May 2008 12:34:51 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JrtXP-0002No-9l
	for apps-samp@ivoa.net; Fri, 02 May 2008 12:34:51 +0100
Date: Fri, 2 May 2008 12:34:51 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Fwd: ISSUE: Naming of error object encoding
In-Reply-To: <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0805021150290.8919@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 1 May 2008, Mike Fitzpatrick wrote:

>> However, I think it would be unhelpful to label this status as an MType,
>> since such statuses only make sense as something returned from a Message
>> rather than sent unprovoked.  Also, if the status in the reply to a
>> Message is an MType, it suggests that any MType is allowed in that slot.
>>  Does this mean you can only receive a response from a message if you happen
>> to be subscribed to the MType that it has when it is returned?  Given that
>> an MType is documented to require some returned
>> value, does it mean that you have to reply to the response?
>> What are you supposed to do if you get a "spectrum.load" MType in the
>> response to a message with a "get.param" MType? If you say that the only
>> MTypes which can be allowed in those slots
>> are "status.*" ones, I don't see the advantage of these being MTypes
>> rather than just some separate controlled vocabulary.
>
>    Applications that engage in free-association as you describe deserve
> what they get.

but wouldn't it be better to design a message system in which that
sort of misbehaviour is not permitted?

> get.   The receiveResponse() method could simply ignore anything other than
> a status.*
> mtype if it wants, I'm only suggest a Response can share the Message format,
> not that
> clients handle it in the same way.
>    A more realistic example would be:
>
>    - Client A has a FITS MEF file with an image and its catalog
>    - Client B subscribes to 'image.display' but not 'image.display.extnum'
> that would let
>      A specify which extension had the image
>    - Client C subscribes to 'table.load' but not 'table.load.extnum' that
> would let
>      A specify which extension had the table
>    - Both subscribe to 'file.load' indicating they would do something
> reasonable with a file
>    - A sends both a 'file.load' and the MEF filename; B replies with an OK
> success and
>      and MType of 'image.event.load' to indicate it found and displayed the
> image extn,
>      and replies with 'table.event.load' to say it found the catalog
> extension.

This story as told sounds like it makes sense.  My problem with it 
is that it allows too much freedom in the response.  While this 
may sound like a good thing (it gives you lots of message pattern 
possibilities), it becomes a problem when you want to write application
code which sends a message and deals with the response.

If the response to a file.load message is known just to be a 
success/failure flag (with additional information about the kind of
failure it is) I can write code like:

     send file.load message
     get the response
     if (response is success)
        inform the user of success
        perhaps do something with returned values in the reply object
     else
        get the error text, code etc from the reply object
        display the error text, code etc to the user

If the response is an MType, my code looks like

     send file.load message
     get the response
     switch (response.Mtype)
         case status.ok:
             inform the user of success
         case status.error:
             get the error text, code etc (message params) from the reply object
             display the error text, code etc to the user
         case file.event.load:
             inform the user that a file was successfully loaded
         case image.event.load:
             inform the user that an image was successfully loaded
         case table.event.load:
             inform the user that a table was successfully loaded
         default:
             tell the user that something happened, but I don't know what?

Yes when this works it allows more detailed information to get back
to the user.  On the downside it can be considerably more 
effort to write.  The real problem however is that the sender has
to second guess the intentions of the recipient in terms of what
MTypes they are likely to respond with.  That can work if
the developers of the two applications can get together and agree 
about it, but in a situation where you don't know the identity of
the recipient, it is effectively an artificial intelligence job to
make sense of a result which can have such a wide (and indeed open)
range of values.  The way that MType subscription works, normally 
you can be sure of only receiving messages with MTypes which you 
have explicitly said you know what to do with, so you don't need
to worry about unknown MTypes.  But if the MType arrives in a 
response, it might easily be one you are not subscribed 
to and maybe even have never heard of before.

As far as I can see the only way of making it feasible to write
application code in which the response is formally allowed to be any 
MType, is to document for each (send) MType what MTypes it is allowed,
or at least expected, to reply with.

If you're with me this far (and I'm not counting any chickens)
maybe the best thing would be to return to the MType vocabulary
and fill it out a bit.  If you can write up a few MType descriptions
in detail, including what MTypes they are permitted/expected to
reply with, I'd have a better idea of how you envisage this working
in practice.  I am still sceptical that this is a good idea, but
perhaps it's just because I haven't seen how it would work in detail.

>    The litmus test for features should be whether our final design provides
> all of
> the PLASTIC functionality required in v1.0, not whether a feature is deemed
> unnecessary
> in the PLASTIC usage model.  I'm sorry for casting your thoughts in such a
> simple
> manner, I know that's not the case or your intent, but I'm feeling like
> generalizations
> that do no  apparent harm to the spec have been met with resistance simply
> because
> there seems to be no immediate use for it.
>    If you really think about it:  Does a Response being a Message and
> having an MType
> do any harm to what you need?  Does it open possibilities for things you
> haven't considered,
> even if those things are too fanciful to ever be implemented?

Yes it does do harm to what I need: as I've tried to illustrate above 
it's much harder to write application code if the response can be anything 
from an open-ended vocabulary than if it is known to be either success
(plus additional information in a form dictated by the original message
MType) or failure (plus defined additional information common to all
errors).

To answer your broader point: I plead guilty to resisting generalizations 
which I can't see a use for, if they add significant complication to 
the protocol design or significantly increase the burden on client
developers.  I do want to leave the door open for things I haven't
thought of (though I think we make too many concessions to things
which are too fanciful to ever be implemented at our peril),
but I think in terms of the message and response payloads this is
done better by allowing the possibility of additional entries in
the response maps than by forcing the response to be an MType.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri May  2 14:17:24 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A0ABF6240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 14:17:24 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42CHMbT008683
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 14:17:22 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42CHMPP008681
	for apps-samp-outgoing; Fri, 2 May 2008 14:17:22 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42CHLAR008674
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 14:17:21 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id A9DA61E4031
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 14:19:18 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6986531"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 14:14:16 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JruCX-0006oc-7E
	for apps-samp@ivoa.net; Fri, 02 May 2008 13:17:21 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <435128AC-BA97-4D17-A84C-71B1B8988C74@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Registration and private vs public keys
Date: Fri, 2 May 2008 13:17:18 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Alasdair Allan wrote:
> If so I think I've just run into our first toolkit issue... *sigh*

Looking at the XMLRPC specification what you've got looks like the  
more (obviously) valid response.

The Perl toolkit is fixable, at least in the sense that I can  
override the serializer to get rid of the additional response lines,  
but that's going to get really icky. It also means I'm going to have  
to look carefully at all the back and forth on the wire in case it's  
adding anything else dumb in there.

Oh well, I'll submit a patch back to Randy after I'm done and  
hopefully I can get this fixed in the next SOAP::Lite release.

Don't you love web services?

Cheers,
Al.

From owner-apps-samp@eso.org  Fri May  2 14:41:09 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id EB157624308
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 14:41:00 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42Cf68P012368
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 14:41:06 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42Cf6nl012367
	for apps-samp-outgoing; Fri, 2 May 2008 14:41:06 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42Cf5m9012363
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 14:41:05 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 866C51E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 14:43:02 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAPaoGkiJ3jon/2dsb2JhbACsCQ
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6987013"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 14:38:00 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JruZU-0003G7-00
	for apps-samp@ivoa.net; Fri, 02 May 2008 13:41:04 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JruZU-0002SN-Kn
	for apps-samp@ivoa.net; Fri, 02 May 2008 13:41:04 +0100
Date: Fri, 2 May 2008 13:41:04 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Registration and private vs public keys
In-Reply-To: <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Fri, 2 May 2008, Alasdair Allan wrote:

> In response to the following registration post,
>
> <?xml version="1.0" encoding="UTF-8"?>
> <methodCall>
> <methodName>samp.hub.register</methodName>
> <params>
> <param><value><string>Nu3DwlDwMMbLVKqMNOVR</string></value></param>
> </params>
> </methodCall>
>
> Which looks exactly like example method call from the specification. I get 
> his back from the Perl XMLRPC server
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <methodResponse>
> <params>
> <param><value><string>registerResponse</string></value></param>
> <param><value><string>pfFBQXMjYyns2</string></value></param>
> </params>
> </methodResponse>
>
> rather than what you have in section 4.4 which doesn't have the
>
> <param><value><string>registerResponse</string></value></param>
>
> line included. Is what you have what is returned from a Java implementation?

the XML in the examples was written by me in vi with reference to 
the XML-RPC specification (which means they may contain mistakes -
please shout if you find one).

> If so I think I've just run into our first toolkit issue... *sigh*

this is a toolkit issue only in that it looks like your toolkit
is buggy; the XML-RPC spec says

    The body of the response is a single XML structure, a <methodResponse>,
    which can contain a single <params> which contains a single <param>
    which contains a single <value>.

The examples in sec 4.4 are not in any sense meant to be normative, 
they are just illustrations of combining the rules in the rest of the
document with the XML-RPC specification.

> but that's going to get really icky. It also means I'm going to have
> to look carefully at all the back and forth on the wire in case it's
> adding anything else dumb in there.

Once we get multiple hub implementations using different languages
and different toolkits this sort of thing will show up pretty quickly.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri May  2 14:51:37 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A5C026240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 14:51:37 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42Cpg9p013374
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 14:51:42 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42CpgP4013373
	for apps-samp-outgoing; Fri, 2 May 2008 14:51:42 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42Cpgp5013369
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 14:51:42 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 55E9C1E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 14:53:39 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AlMEAE+rGkhC+VLud2dsb2JhbACCNzSOeAEMBQIECQ8FlBKFXw
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6987196"
Received: from wx-out-0506.google.com ([66.249.82.238])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 14:48:37 +0200
Received: by wx-out-0506.google.com with SMTP id h30so1572067wxd.21
        for <apps-samp@ivoa.net>; Fri, 02 May 2008 05:51:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        bh=HczeXAW6lBb2TJKWw8W+KRU9K0rdj9zRJMYT9qV9/UU=;
        b=svaRyB+i5QzWLhZPmrsMRoT5cFkhUM57sEAk/J24KfBL+Bz4XOoAaFSFHtBgYUE5QHasJsWaujuuEeGkdJVcefagLr9FfULVk7aJDBq8fpdFH5S6j3hR+IrDyvTFTYbynjAhqixMZGCVkbBmPeDuX/c2RLpRC4fikGWUQHSjgdE=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth;
        b=Jan6Dj7VBB9Wn/PGz76fxVvYGfTTES+d8PEq0nJCYJz66C0TnYuEzFrscUuCdaC5s6NVCThbbcZPdJKzFAavJSmFSQWhU8nEx2tpASlQnnsnV5zDvKcG3Hh9dJ7L6Uz936Fq7WQMjn8nbNjhIRZVBzQvHQr3GbXgDPY/wGTgvzU=
Received: by 10.101.69.6 with SMTP id w6mr4503214ank.63.1209732694727;
        Fri, 02 May 2008 05:51:34 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Fri, 2 May 2008 05:51:34 -0700 (PDT)
Message-ID: <8e768d0805020551x32dce3bbyd27fcacf529768@mail.gmail.com>
Date: Fri, 2 May 2008 05:51:34 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Alasdair Allan" <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft text
Cc: apps-samp@ivoa.net
In-Reply-To: <2BE35066-AEEC-4330-9FB2-0B8F4F42EA3F@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_14349_28804621.1209732694709"
References: <Pine.LNX.4.63.0804301118001.16355@andromeda.star.bris.ac.uk>
	 <2BE35066-AEEC-4330-9FB2-0B8F4F42EA3F@astro.ex.ac.uk>
X-Google-Sender-Auth: d3ed4a72c76899c3
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

------=_Part_14349_28804621.1209732694709
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

there doesn't seem to be any coord.* messages listed? Is this an oversight,
> or has it not been gotten around yet



There was debate over whether these would be useful  things to have or
just a can of worms.  If you have suggestions, the entire list of mtypes is
up for discussion.

-Mike

------=_Part_14349_28804621.1209732694709
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
there doesn&#39;t seem to be any coord.* messages listed? Is this an oversight, or has it not been gotten around yet</blockquote><div><br><br>There was debate over whether these would be useful&nbsp; things to have or<br>just a can of worms.&nbsp; If you have suggestions, the entire list of mtypes is<br>
up for discussion.<br><br>-Mike <br></div></div>

------=_Part_14349_28804621.1209732694709--

From owner-apps-samp@eso.org  Fri May  2 14:54:59 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id D16836240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 14:54:59 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42Ct5H0013831
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 14:55:05 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42Ct5Md013830
	for apps-samp-outgoing; Fri, 2 May 2008 14:55:05 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42Ct4Gg013826
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 14:55:04 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id AD9BB1E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 14:57:01 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6987268"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 14:51:59 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1Jrun2-0007Rl-7E
	for apps-samp@ivoa.net; Fri, 02 May 2008 13:55:04 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <5A4383F2-802D-4537-85B2-A8EE0E1C8E87@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Registration and private vs public keys
Date: Fri, 2 May 2008 13:55:01 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> Alasdair Allan wrote:
>> If so I think I've just run into our first toolkit issue... *sigh*
>
> this is a toolkit issue only in that it looks like your toolkit is  
> buggy;

I think that's the case, which is actually rather puzzling. If I get  
time I'll dig through the SVN and find out if this is a new "feature"  
because I haven't stubbed my toes on it before.

> ...the XML-RPC spec says
>
>    The body of the response is a single XML structure, a  
> <methodResponse>,
>    which can contain a single <params> which contains a single <param>
>    which contains a single <value>.
>
> The examples in sec 4.4 are not in any sense meant to be normative,  
> they are just illustrations of combining the rules in the rest of  
> the document with the XML-RPC specification.

Yup.

>> but that's going to get really icky. It also means I'm going to have
>> to look carefully at all the back and forth on the wire in case it's
>> adding anything else dumb in there.
>
> Once we get multiple hub implementations using different languages
> and different toolkits this sort of thing will show up pretty quickly.

Yup. Looking forward to it... I wonder what crazyness we'll find?

I've now successfully managed to hack together and override class and  
made the relevant server methods to be slightly less stupid,  
hopefully that's the last toolkit I'll run into... ;)

Cheers,
Al.

From owner-apps-samp@eso.org  Fri May  2 14:58:29 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id C60D66240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 14:58:28 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42CwYPv014142
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 14:58:34 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42CwX6B014141
	for apps-samp-outgoing; Fri, 2 May 2008 14:58:33 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42CwX2Q014137
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 14:58:33 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 6F7C51E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 15:00:30 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6987329"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 14:55:28 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JruqP-0007VG-6y; Fri, 02 May 2008 13:58:33 +0100
In-Reply-To: <8e768d0805020551x32dce3bbyd27fcacf529768@mail.gmail.com>
References: <Pine.LNX.4.63.0804301118001.16355@andromeda.star.bris.ac.uk> <2BE35066-AEEC-4330-9FB2-0B8F4F42EA3F@astro.ex.ac.uk> <8e768d0805020551x32dce3bbyd27fcacf529768@mail.gmail.com>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <674E96D2-97F4-4020-A295-02A89D3401FF@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft text
Date: Fri, 2 May 2008 13:58:29 +0100
To: "Mike Fitzpatrick" <fitz@noao.edu>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mike Fitzpatrick wrote:
> Alasdair Allan wrote:
>> there doesn't seem to be any coord.* messages listed? Is this an  
>> oversight, or has it not been gotten around yet
>
> There was debate over whether these would be useful  things to have  
> or just a can of worms.

What!!!??? You're kidding, not useful!? pointAtCoords accounts for  
about 50% of the PLASTIC traffic between the various server-side  
eSTAR applications using it. Okay, I'm using PLASTIC a bit oddly in  
places, but...

> If you have suggestions, the entire list of mtypes is up for  
> discussion.

I'll have,

    coord.point

with args

     ra, dec

and

    coords.event.point

with args

    ra, dec

please!

Cheers,
Al.

From owner-apps-samp@eso.org  Fri May  2 15:12:52 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3EAAD6240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 15:12:52 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42DCvT3015964
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 15:12:57 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42DCvFd015963
	for apps-samp-outgoing; Fri, 2 May 2008 15:12:57 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42DCvd7015959
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 15:12:57 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id F08ED1E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 15:14:53 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6987658"
Received: from mailhost.u-strasbg.fr ([130.79.200.153])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 15:09:52 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m42DCmSF026911
          ; Fri, 2 May 2008 15:12:48 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m42DEKg28880;
	Fri, 2 May 2008 15:14:20 +0200 (MET DST)
Message-ID: <481B13AC.E2E33469@newb6.u-strasbg.fr>
Date: Fri, 02 May 2008 15:14:20 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Alasdair Allan <aa@astro.ex.ac.uk>
CC: Mike Fitzpatrick <fitz@noao.edu>, apps-samp@ivoa.net
Subject: Re: SAMP draft text
References: <Pine.LNX.4.63.0804301118001.16355@andromeda.star.bris.ac.uk> <2BE35066-AEEC-4330-9FB2-0B8F4F42EA3F@astro.ex.ac.uk> <8e768d0805020551x32dce3bbyd27fcacf529768@mail.gmail.com> <674E96D2-97F4-4020-A295-02A89D3401FF@astro.ex.ac.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.153]); Fri, 02 May 2008 15:12:48 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr3.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr3.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Hi,

> I'll have,
> 
>     coord.point
> 
> with args
> 
>      ra, dec
> 
> and
> 
>     coords.event.point
> 
> with args
> 
>     ra, dec
> 
> please!

Sounds like a reasonable request. May I suggest the names
'coord.pointAt' and 'coord.event.pointAt' ?
We'll also need to specify the format of ra and dec (I'd suggest decimal
degrees) as well as the coordinate system (ICRS J2000?).
Cheers,

Thomas

From owner-apps-samp@eso.org  Fri May  2 15:15:47 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id DA9226240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 15:15:47 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42DFrSp016309
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 15:15:53 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42DFr7N016308
	for apps-samp-outgoing; Fri, 2 May 2008 15:15:53 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42DFr8B016304
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 15:15:53 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id F1A4C1E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 15:17:49 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AtACAB6xGkjRVYT4c2dsb2JhbACCNzSOeAEMAwQECQ8FlBKFWQ
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6987702"
Received: from an-out-0708.google.com ([209.85.132.248])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 15:12:47 +0200
Received: by an-out-0708.google.com with SMTP id c36so305358ana.36
        for <apps-samp@ivoa.net>; Fri, 02 May 2008 06:15:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references;
        bh=KYBoDwGwRpIMkpNHdnpylZJsmvhRR1B5+JsBtdUZckw=;
        b=gPymN+IWZNNKBJYdDatLtMto14AJZ8DhyEt3lba8+lDhSMVYciPVFEFC4MNEFyz/ZBgOBaQC59jKlHgB/WT88+YJpS8rQzsZrh2f12e7jUbTnnilPxCcuJ98lTo5Nf+jx60LacSU7Al8ScMaGftSi+SEfTrdpkRcIr9RRvP2FYs=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references;
        b=epoU+sWatAz6Kv0qk6gbmPmo1tV0pfbBjS8HxEgPpuko/bpPW+ApEo85hCh75e5OzqpcRYEEQfygp+uetNF8SwQSgxFp3sKGnWn6sckX2moD3TnGPl1O1eFfBFO5nEBOrpWf/hoLxhrpHsUAied0q738O98zWlEvU0lgYCDGMAQ=
Received: by 10.101.71.16 with SMTP id y16mr4534483ank.68.1209734151437;
        Fri, 02 May 2008 06:15:51 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Fri, 2 May 2008 06:15:51 -0700 (PDT)
Message-ID: <8e768d0805020615s2bdf19d5qaf8feb1940a5d420@mail.gmail.com>
Date: Fri, 2 May 2008 06:15:51 -0700
From: "Mike Fitzpatrick" <mjfitzpatrick@gmail.com>
To: "Alasdair Allan" <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft text
Cc: apps-samp@ivoa.net
In-Reply-To: <674E96D2-97F4-4020-A295-02A89D3401FF@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_14419_31135181.1209734151431"
References: <Pine.LNX.4.63.0804301118001.16355@andromeda.star.bris.ac.uk>
	 <2BE35066-AEEC-4330-9FB2-0B8F4F42EA3F@astro.ex.ac.uk>
	 <8e768d0805020551x32dce3bbyd27fcacf529768@mail.gmail.com>
	 <674E96D2-97F4-4020-A295-02A89D3401FF@astro.ex.ac.uk>
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <mjfitzpatrick@gmail.com>

------=_Part_14419_31135181.1209734151431
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

>
>  If you have suggestions, the entire list of mtypes is up for discussion.
> >
>
> I'll have,
>
>   coord.point
>   coords.event.point
>


And these differ from the current image.highlight.sky and table.highlight
mtypes how?
Coord.point might be a generalization, (but then, shouldn't we all fight
against generalizations 8-))
but you're limiting it to sky coordinates.  Can't I point at an (x,y)
position in an image or
a cell in a table just as well?

-Mike

------=_Part_14419_31135181.1209734151431
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
If you have suggestions, the entire list of mtypes is up for discussion.<br>
</blockquote>
<br></div>
I&#39;ll have,<br>
<br>
 &nbsp; coord.point<br>
 &nbsp; coords.event.point<br></blockquote></div><br><br>And these differ from the current image.highlight.sky and table.highlight mtypes how?<br>Coord.point might be a generalization, (but then, shouldn&#39;t we all fight against generalizations 8-))<br>
but you&#39;re limiting it to sky coordinates.&nbsp; Can&#39;t I point at an (x,y) position in an image or <br>a cell in a table just as well?<br><br>-Mike<br><br><br>

------=_Part_14419_31135181.1209734151431--

From owner-apps-samp@eso.org  Fri May  2 15:36:37 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 63DFF6240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 15:36:37 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42DagRM019992
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 15:36:42 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42Dagt1019991
	for apps-samp-outgoing; Fri, 2 May 2008 15:36:42 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42Dagr7019987
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 15:36:42 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 709431E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 15:38:39 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6988722"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 15:33:37 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrvRJ-0008DY-9Z; Fri, 02 May 2008 14:36:41 +0100
In-Reply-To: <8e768d0805020615s2bdf19d5qaf8feb1940a5d420@mail.gmail.com>
References: <Pine.LNX.4.63.0804301118001.16355@andromeda.star.bris.ac.uk> <2BE35066-AEEC-4330-9FB2-0B8F4F42EA3F@astro.ex.ac.uk> <8e768d0805020551x32dce3bbyd27fcacf529768@mail.gmail.com> <674E96D2-97F4-4020-A295-02A89D3401FF@astro.ex.ac.uk> <8e768d0805020615s2bdf19d5qaf8feb1940a5d420@mail.gmail.com>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <E2C84806-E5C7-4409-9424-773BA351FF80@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft text
Date: Fri, 2 May 2008 14:36:39 +0100
To: "Mike Fitzpatrick" <mjfitzpatrick@gmail.com>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mike Fitzpatrick wrote:
> And these differ from the current image.highlight.sky and  
> table.highlight mtypes how?

Because I have neither an image nor a table? I have a a set of  
coordinates.

> Coord.point might be a generalization, (but then, shouldn't we all  
> fight against generalizations 8-))
> but you're limiting it to sky coordinates.

Then it's not a generalisation, is it?

But then we are astronomers after all, pointing at an ra, dec is  
something we want to do a lot... ;)

> Can't I point at an (x,y) position in an image or  a cell in a  
> table just as well?

Sure, and that's what the  image.highlight.pixel and the  
table.highlight.cell messages are for... but I have neither an image,  
nor a table... which is what coords.* is for surely?

Al.

From owner-apps-samp@eso.org  Fri May  2 15:38:03 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3B1F26240C1
	for <vomail@fiction.hq.eso.org>; Fri,  2 May 2008 15:38:03 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42Dc995020300
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 2 May 2008 15:38:09 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m42Dc9Mx020299
	for apps-samp-outgoing; Fri, 2 May 2008 15:38:09 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m42Dc8h7020295
	for <apps-samp@ivoa.net>; Fri, 2 May 2008 15:38:08 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 8E3FE1E401D
	for <apps-samp@ivoa.net>; Fri,  2 May 2008 15:40:05 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,426,1204498800"; 
   d="scan'208";a="6988829"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 02 May 2008 15:35:03 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JrvSi-0008F5-7G
	for apps-samp@ivoa.net; Fri, 02 May 2008 14:38:08 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <481B13AC.E2E33469@newb6.u-strasbg.fr>
References: <Pine.LNX.4.63.0804301118001.16355@andromeda.star.bris.ac.uk> <2BE35066-AEEC-4330-9FB2-0B8F4F42EA3F@astro.ex.ac.uk> <8e768d0805020551x32dce3bbyd27fcacf529768@mail.gmail.com> <674E96D2-97F4-4020-A295-02A89D3401FF@astro.ex.ac.uk> <481B13AC.E2E33469@newb6.u-strasbg.fr>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <3542FBC0-4AA7-4C91-8F07-23C739E9D044@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP draft text
Date: Fri, 2 May 2008 14:38:05 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Thomas Boch wrote:
> Sounds like a reasonable request. May I suggest the names  
> 'coord.pointAt' and 'coord.event.pointAt' ?


If you'd prefer that, I'm perfectly happy with it...

> We'll also need to specify the format of ra and dec (I'd suggest  
> decimal degrees) as well as the coordinate system (ICRS J2000?).

Done, and done.

Al.

From owner-apps-samp@eso.org  Mon May  5 23:41:42 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A9398624164
	for <vomail@fiction.hq.eso.org>; Mon,  5 May 2008 23:41:42 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m45Lforr020873
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 5 May 2008 23:41:50 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m45Lfo01020872
	for apps-samp-outgoing; Mon, 5 May 2008 23:41:50 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m45Lfn0l020868
	for <apps-samp@ivoa.net>; Mon, 5 May 2008 23:41:49 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 226391E401D
	for <apps-samp@ivoa.net>; Mon,  5 May 2008 23:43:49 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,439,1204498800"; 
   d="scan'208";a="7068660"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 05 May 2008 23:38:34 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.3])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1Jt8RQ-0004m7-9f; Mon, 05 May 2008 22:41:49 +0100
In-Reply-To: <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: setXmlrpcCallback( ) arguements?
Date: Mon, 5 May 2008 22:41:37 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

Looking through the current draft I can't find, but might just have  
missed, the arguments taken by the setXmlrpcCallback( ) method called  
by the client on the hub?

I'm guessing its the private key and a string containing the clients  
XMLRPC endpoint? Or does it take the private key and a map?

Al.

From owner-apps-samp@eso.org  Tue May  6 09:38:15 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 86774624284
	for <vomail@fiction.hq.eso.org>; Tue,  6 May 2008 09:38:14 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m467cCu8015030
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 6 May 2008 09:38:12 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m467cC4x015029
	for apps-samp-outgoing; Tue, 6 May 2008 09:38:12 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m467cCjw015025
	for <apps-samp@ivoa.net>; Tue, 6 May 2008 09:38:12 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 9E69F1E401D
	for <apps-samp@ivoa.net>; Tue,  6 May 2008 09:40:11 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,442,1204498800"; 
   d="scan'208";a="7076450"
Received: from mailhost.u-strasbg.fr ([130.79.200.152])
  by clavius.hq.eso.org with ESMTP; 06 May 2008 09:34:55 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m467bp52067508
          ; Tue, 6 May 2008 09:37:52 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m467dRK18169;
	Tue, 6 May 2008 09:39:27 +0200 (MET DST)
Message-ID: <48200B2E.4EC4CFA7@newb6.u-strasbg.fr>
Date: Tue, 06 May 2008 09:39:26 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Alasdair Allan <aa@astro.ex.ac.uk>
CC: Mark Taylor <m.b.taylor@bristol.ac.uk>, apps-samp@ivoa.net
Subject: Re: setXmlrpcCallback( ) arguements?
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.152]); Tue, 06 May 2008 09:37:52 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr2.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr2.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Hi Al,

> Looking through the current draft I can't find, but might just have
> missed, the arguments taken by the setXmlrpcCallback( ) method called
> by the client on the hub?

I can't find them either. Looking at previous versions of the draft, I
think the signature of this method should be :
setXmlrpcCallback(string private-key, string xmlrpc-url)

This should obviously be added in the document.

Thomas

From owner-apps-samp@eso.org  Tue May  6 10:49:54 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id E0964624164
	for <vomail@fiction.hq.eso.org>; Tue,  6 May 2008 10:49:53 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m468nqOP023486
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 6 May 2008 10:49:52 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m468nqmg023485
	for apps-samp-outgoing; Tue, 6 May 2008 10:49:52 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m468npbk023481
	for <apps-samp@ivoa.net>; Tue, 6 May 2008 10:49:51 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 4EEE41E401D
	for <apps-samp@ivoa.net>; Tue,  6 May 2008 10:51:51 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,442,1204498800"; 
   d="scan'208";a="7077934"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 06 May 2008 10:46:34 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JtIrp-0005b9-9E
	for apps-samp@ivoa.net; Tue, 06 May 2008 09:49:45 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Hub stopping
Date: Tue, 6 May 2008 09:49:34 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

Looking through the current specification it appears that every  
client is forced to call getHubId() right after it registers because  
at the moment there isn't any way for it to know that the  
app.event.stopping message it's recieved from the Hub is from the Hub  
or not... wouldn't it make sense to have a hub.event.* set of  
messages that all (callable) clients were required to be able  
interpret rather than having each client call getHubId() and then be  
forced to handle all app.event.stopping messages?

This makes more sense than just fixing the hub public id to 0 because...

Under the current system all callable clients have to subscribe to  
all app.event.stopping messages and scan them to see if the Hub is  
stopping. But there is a big subset of cases, where I'm a client that  
is callable, but only really sends (broadcast) notificatons, where I  
would still be interested in the hub stopping messages (but not the  
rest of the app.event.stopping messages) so that having a separate  
hub.event.* class of messages is much more convenient.

Or am I just missing something...?

Al.

From owner-apps-samp@eso.org  Tue May  6 11:30:36 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A496E624164
	for <vomail@fiction.hq.eso.org>; Tue,  6 May 2008 11:30:35 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m469UYlB028525
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 6 May 2008 11:30:34 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m469UYf3028524
	for apps-samp-outgoing; Tue, 6 May 2008 11:30:34 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m469UYfe028520
	for <apps-samp@ivoa.net>; Tue, 6 May 2008 11:30:34 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id E20A01E401D
	for <apps-samp@ivoa.net>; Tue,  6 May 2008 11:32:33 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvwCAG7CH0jRVYT2c2dsb2JhbACCNDePDgEMAwQECQ8FlDeFIA
X-IronPort-AV: E=Sophos;i="4.27,443,1204498800"; 
   d="scan'208";a="7078975"
Received: from an-out-0708.google.com ([209.85.132.246])
  by clavius.hq.eso.org with ESMTP; 06 May 2008 11:27:16 +0200
Received: by an-out-0708.google.com with SMTP id c36so628561ana.36
        for <apps-samp@ivoa.net>; Tue, 06 May 2008 02:30:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references;
        bh=tXscf6d+JWFOSqphZaPsbDKVasOheZ0QkZhARyfSxdM=;
        b=lxrinzDcBrTLxuD32913oC3uKp4JPUyzFY5U/WOBtzdVaoGkY0X77MFaap0Y5Ru5PavkNoE0xZu0/ixJa6SkLUK7aK71fqGo8YH/Iczaat7wMyqcL+hyWwNK7HyyL7379iq/u8V3EF54omvBUtEQulHc3Y/qdbrjBExdLx5RRso=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references;
        b=NWsDVici0UAYf+HV5p8XsK4pHKxa85ESKP0IcgfHyXcRAlaLLDGQH76RCTKU+W4vU/ZT7FiTR8FSE/8FK0Y/kp0Kr4a8FIjOil+ZSkn+SfIaxSleew6xXw+wjmdWqu5kBpghNwpJwYRxx6SnZd8ZWJJXdXi80R/ghFxNJwLkJ7Y=
Received: by 10.100.57.6 with SMTP id f6mr543890ana.30.1210066232311;
        Tue, 06 May 2008 02:30:32 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Tue, 6 May 2008 02:30:32 -0700 (PDT)
Message-ID: <8e768d0805060230j2fc2409cm457ce31e19be31f1@mail.gmail.com>
Date: Tue, 6 May 2008 02:30:32 -0700
From: "Mike Fitzpatrick" <mjfitzpatrick@gmail.com>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: ISSUE: Message-id management
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0805020854570.8064@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_14994_18187660.1210066232309"
References: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk>
	 <8e768d0804301357o7fb91ed1w10e4f0468df5adc7@mail.gmail.com>
	 <Pine.LNX.4.63.0805011536550.31759@andromeda.star.bris.ac.uk>
	 <8e768d0805011130x59092246r93be5f3ace33489b@mail.gmail.com>
	 <Pine.LNX.4.63.0805020854570.8064@andromeda.star.bris.ac.uk>
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <mjfitzpatrick@gmail.com>

------=_Part_14994_18187660.1210066232309
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Mark,

    Upon reflection, I'm willing to concede that a hub-msg-id is not
entirely
a bad idea, however I still think your checksum example is a bit on the
fanciful side of likely uses for it.
     The strongest argument for this is that it facilitates the Hub
implementation
in avoiding any state information, but this needs to be made clearer in the
spec; at the very least by clarifying the footnote as to its intent but I
would
prefer a more direct discussion of why there are separate ID strings for
those
developers that don't immediately see their use.  I agree we shouldn't
dictate
implementation details, neither should we make design elements too oblique
for them to be used by novice developers relying only on the spec for
guidance
in implementing SAMP in their apps.

Cheers,
-Mike

------=_Part_14994_18187660.1210066232309
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Mark,<br><br>&nbsp;&nbsp;&nbsp; Upon reflection, I&#39;m willing to concede that a hub-msg-id is not entirely<br>a bad idea, however I still think your checksum example is a bit on the<br>fanciful side of likely uses for it.<br>&nbsp;&nbsp;&nbsp;&nbsp; The strongest argument for this is that it facilitates the Hub implementation<br>
in avoiding any state information, but this needs to be made clearer in the <br>spec; at the very least by clarifying the footnote as to its intent but I would <br>prefer a more direct discussion of why there are separate ID strings for those <br>
developers that don&#39;t immediately see their use.&nbsp; I agree we shouldn&#39;t dictate<br>implementation details, neither should we make design elements too oblique<br>for them to be used by novice developers relying only on the spec for guidance<br>
in implementing SAMP in their apps.<br><br>Cheers,<br>-Mike<br>

------=_Part_14994_18187660.1210066232309--

From owner-apps-samp@eso.org  Tue May  6 19:01:32 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 12EF06242D5
	for <vomail@fiction.hq.eso.org>; Tue,  6 May 2008 19:01:18 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m46H1LpE025440
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 6 May 2008 19:01:21 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m46H1LeY025439
	for apps-samp-outgoing; Tue, 6 May 2008 19:01:21 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m46H1KEj025435
	for <apps-samp@ivoa.net>; Tue, 6 May 2008 19:01:20 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id B11AF1E401D
	for <apps-samp@ivoa.net>; Tue,  6 May 2008 19:03:20 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,444,1204498800"; 
   d="scan'208";a="7088861"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 06 May 2008 18:58:02 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JtQXY-0008KD-8B
	for apps-samp@ivoa.net; Tue, 06 May 2008 18:01:20 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: notify( ) vs call( )
Date: Tue, 6 May 2008 18:01:09 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

So, in a PLASTIC'y sort of way I have a client that wants to tell all  
the listening clients to image.display and then image.panTo.sky.

However it doesn't really care if they do it or not... does it really  
have to callAll( ) clients, or can it just notifyAll( ) clients  
instead...

...what are the rules the say this MType is a call( ) and this one is  
a notify( )? From reading the specification its implied, but not  
really explicitly stated, that *.event.* MTypes are notify()'able and  
others are call()'able.

Is that the intention... or is the more flexibility intended here?

Either way I think this needs to be made more explicit in the  
specification.

Al.

From owner-apps-samp@eso.org  Wed May  7 13:51:18 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id CD790624164
	for <vomail@fiction.hq.eso.org>; Wed,  7 May 2008 13:51:18 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47BpGnT022428
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 7 May 2008 13:51:16 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m47BpG63022427
	for apps-samp-outgoing; Wed, 7 May 2008 13:51:16 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47BpG0g022423
	for <apps-samp@ivoa.net>; Wed, 7 May 2008 13:51:16 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 9B8701E401D
	for <apps-samp@ivoa.net>; Wed,  7 May 2008 13:53:16 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,448,1204498800"; 
   d="scan'208";a="7107539"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 07 May 2008 13:47:55 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JtiAw-0007bA-7w
	for apps-samp@ivoa.net; Wed, 07 May 2008 12:51:10 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk> <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: notify( ) vs call( )
Date: Wed, 7 May 2008 12:50:56 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

Mark,

Just to double check before I push forward any further, does this  
look good (wrt nesting of params and the like in the document) to you  
as a call from the client to the Hub to notifyAll()...?

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
    <methodName>samp.hub.notifyAll</methodName>
    <params>
      <param><value><string>app-id:rWsef90jYn2ERtM8IMLl</string></ 
value></param>
      <param><value><struct>
         <member>
           <name>params</name>
           <value><struct>
             <member>
               <name>ra</name>
               <value><string>180.0</string></value>
             </member>
             <member>
               <name>dec</name>
               <value><string>-45.0</string></value>
             </member>
           </struct></value>
         </member>
         <member>
           <name>mtype</name>
           <value><string>coord.event.pointAt</string></value>
         </member>
      </struct></value></param>
    </params>
</methodCall>

Cheers,
Al.

From owner-apps-samp@eso.org  Wed May  7 15:40:40 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 85925624284
	for <vomail@fiction.hq.eso.org>; Wed,  7 May 2008 15:40:40 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47DejNv006882
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 7 May 2008 15:40:45 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m47DejbV006881
	for apps-samp-outgoing; Wed, 7 May 2008 15:40:45 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47DejeL006877
	for <apps-samp@ivoa.net>; Wed, 7 May 2008 15:40:45 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id BF1E51E401D
	for <apps-samp@ivoa.net>; Wed,  7 May 2008 15:42:45 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,448,1204498800"; 
   d="scan'208";a="7110898"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 07 May 2008 15:37:24 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1Jtjsy-00017u-8N
	for apps-samp@ivoa.net; Wed, 07 May 2008 14:40:44 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk> <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk> <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <88F45F26-B06C-4C32-BE0C-E44150F31054@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: call( ) and (incorrect?) argument order
Date: Wed, 7 May 2008 14:40:31 +0100
To: apps-samp@ivoa.net
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Just noticed that call( ) (see p19, section 3.10) is the odd method  
out, with a prototype of

   call(string rcepient-id, map message, string msg-id )

which is the other way round to all the other methods. Should this  
instead be,

   call(string rcepient-id,  string msg-id, map message)

like the rest? If not, is there a reason why its different?

Cheers,
Al.

From owner-apps-samp@eso.org  Wed May  7 16:16:48 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6FD9D624164
	for <vomail@fiction.hq.eso.org>; Wed,  7 May 2008 16:16:48 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47EGstp012193
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 7 May 2008 16:16:54 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m47EGsO7012192
	for apps-samp-outgoing; Wed, 7 May 2008 16:16:54 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47EGrsm012188
	for <apps-samp@ivoa.net>; Wed, 7 May 2008 16:16:53 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 4E3EE1E401D
	for <apps-samp@ivoa.net>; Wed,  7 May 2008 16:18:54 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,448,1204498800"; 
   d="scan'208";a="7111983"
Received: from mailhost.u-strasbg.fr ([130.79.200.157])
  by clavius.hq.eso.org with ESMTP; 07 May 2008 16:13:32 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m47EGo3P049335
          ; Wed, 7 May 2008 16:16:50 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m47EIRK18218;
	Wed, 7 May 2008 16:18:27 +0200 (MET DST)
Message-ID: <4821BA33.220E9603@newb6.u-strasbg.fr>
Date: Wed, 07 May 2008 16:18:27 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Alasdair Allan <aa@astro.ex.ac.uk>
CC: apps-samp@ivoa.net
Subject: Re: call( ) and (incorrect?) argument order
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk> <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk> <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk> <88F45F26-B06C-4C32-BE0C-E44150F31054@astro.ex.ac.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.157]); Wed, 07 May 2008 16:16:50 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr7.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr7.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Hi,

As the signature of receiveCall is receiveCall(string sender-id, string
msg-id, map message) , it makes sense indeed for consistency to change
the signature of call to :
call(string recipient-id, string msg-id, map message)

as you are suggesting.

Thomas

Alasdair Allan wrote:
> 
> Just noticed that call( ) (see p19, section 3.10) is the odd method
> out, with a prototype of
> 
>    call(string rcepient-id, map message, string msg-id )
> 
> which is the other way round to all the other methods. Should this
> instead be,
> 
>    call(string rcepient-id,  string msg-id, map message)
> 
> like the rest? If not, is there a reason why its different?
> 
> Cheers,
> Al.

From owner-apps-samp@eso.org  Wed May  7 16:35:26 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id EFA2A624164
	for <vomail@fiction.hq.eso.org>; Wed,  7 May 2008 16:35:25 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47EZSwJ015190
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 7 May 2008 16:35:28 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m47EZSDR015189
	for apps-samp-outgoing; Wed, 7 May 2008 16:35:28 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47EZRok015185
	for <apps-samp@ivoa.net>; Wed, 7 May 2008 16:35:27 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 25AFF1E401D
	for <apps-samp@ivoa.net>; Wed,  7 May 2008 16:37:28 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,448,1204498800"; 
   d="scan'208";a="7112735"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 07 May 2008 16:31:54 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1Jtkjj-0002Ca-75
	for apps-samp@ivoa.net; Wed, 07 May 2008 15:35:15 +0100
Mime-Version: 1.0 (Apple Message framework v753)
Content-Transfer-Encoding: 7bit
Message-Id: <CD791EBB-2558-4CB6-A0C5-E3DEF8359644@astro.ex.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
To: apps-samp@ivoa.net
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: callAndWait( ) implementation issues?
Date: Wed, 7 May 2008 15:35:01 +0100
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

I'm currently getting a bit worried by the implementation issues  
surrounding the callAndWait( ) method in the Hub. The current scheme  
is that a client can call this and expect a synchronous response from  
the Hub. However there seems to be no way to synchronously call a  
client.

Clients only have a recieveCall( ) method, and then asynchronously  
return a reply( ) call to the Hub in response. In theory the Hub  
takes this hopefully speedily returned reply( ) and uses it as a  
return value for the callAndWait( ) which has been hanging with an  
open socket all the time.

However this reply( ) call will almost certainly be handled by a  
separate thread (or forked process) or at least a different part of  
the Hub software than the (hanging open) callAndWait( ) method. I'm  
having real difficulty imagining how the information in the  
asynchronous reply( ) call is supposed to make its way over to the  
synchronous callAndWait( ) except by a complicated system of thread  
semaphores and shared variables.

I can certainly go off an implement this model, however this is going  
to severely limit the language choice for Hub implementation. For  
Perl at least, it means that the Perl binary will have to be compiled  
with ithreads enabled, and while mine is, most peoples aren't. Up  
till now I've been implementing the Hub using vanilla Perl, this  
implies that you won't be able to take the Perl implementation out of  
the box.

However the real problem is that I've got no real feel for how badly  
this might affect other languages outside the core three of Java,  
Python and Perl. In my opinion this issue massively complicates an  
otherwise fairly easily implemented specification.

So at this point I'd like to suggest we implement one of two fixes to  
remove this problem:

1) Add a recieveSynchronousCall( ) method in the client.

2) Remove callAndWait( ) from the hub.

Comments?

Al.

From owner-apps-samp@eso.org  Wed May  7 23:04:03 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id E503E624284
	for <vomail@fiction.hq.eso.org>; Wed,  7 May 2008 23:04:02 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47L49kF006365
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 7 May 2008 23:04:09 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m47L49tC006364
	for apps-samp-outgoing; Wed, 7 May 2008 23:04:09 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47L49b2006360;
	Wed, 7 May 2008 23:04:09 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 137901E401D;
	Wed,  7 May 2008 23:06:10 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,450,1204498800"; 
   d="scan'208";a="7121211"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 07 May 2008 23:00:47 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.3])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1Jtqo4-00086z-7v; Wed, 07 May 2008 22:04:08 +0100
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <876456CA-92FB-4F72-A130-A0B9714FBCE4@astro.ex.ac.uk>
Cc: Applications Working Group <apps@ivoa.net>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Initial Release of prototype SAMP Hub
Date: Wed, 7 May 2008 22:03:52 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

All,

Ahead of the Trieste meeting...

I've just completed a prototype SAMP Hub written in Perl, developed  
against the IVOA working draft of the specification dated 2008-04-30  
distributed on the apps-samp mailing lis, with additions such as the  
argument order for the call( ) and callAll( ) methods taken from the  
apps-samp mailing list over the last couple of days.

You can download it from

http://www.babilim.co.uk/software/SAMP_Hub.tar.gz

and testbed clients can be found at,

http://www.babilim.co.uk/software/SAMP_Clients.tar.gz

This is an initial first cut release of the SAMP Hub and as such  
comes with no guarantees except there will be horrendous bugs. Also  
since this is the first implementation of a Hub, it probably won't  
play well with others, clients or hubs, either because of toolkit  
issues or because my interpretation of the specification doesn't  
entirely match other peoples. The software has been tested under OSX  
Tiger and Ubuntu Linux 7.10.

You will need the following Perl modules installed to run the hub and  
testbed clients,

XMLRPC::Lite
XML::Simple
DateTime
File::Spec
Carp
Data::Dumper
Getopt::Long
Socket
Net::Domain
POSIX
Errno

depending on your version of Perl some (but not all) of these will  
ship with the core distribution. The rest can be obtained from CPAN  
(http://search.cpan.org/). I think I've caught all the dependancies,  
but if you notice any I haven't listed any let me know I've forgotten  
them.

There is no documentation. Many of the Perl modules have inline POD,  
however most of it didn't keep up with the pace of development so  
it's out of date. However, once you install the additional modules,  
open up a terminal window and start the Hub as follows,

% tar -zxvf SAMP_Hub.tar.gz
% cd SAMP_Hub/
% ./samp_hub.pl

you can put the Hub through its paces by opening up two more terminal  
windows and running the testbed clients. You should start the  
listener client in all cases,

% tar -zxvf SAMP_Clients.tar.gz
% cd SAMP_Clients/
% ./listener_client.pl

this is the test client that listens for notify( ) and call( )'s from  
the Hub.

In the second window you can either start the client that exercises  
the notify( ) method, or the other than exercises the call( ) method. So

% cd SAMP_Clients/
% ./callAll_test.pl

or

% cd SAMP_Clients/
% ./notifyAll_test.pl

These two clients have a heart beat which will dispatch a call or a  
notification periodically. The first heartbeat will happen 15 seconds  
(or so) after the client has completed its registering with the Hub.

It should be noted that the initial Hub implementation does NOT  
implement callAndWait( ) pending discussion of asynchronous vs  
synchronous messaging, either on the apps-samp mailing list or at the  
Tieste meeting itself.

I'm interested in hearing from other Hub implementors, or people  
putting together SAMP client support, whether what I've generated  
interoperates okay with your implementation. It won't, but it'd be  
nice to get close...

Cheers,
Al.

From owner-apps@eso.org  Wed May  7 23:04:20 2008
Return-Path: <owner-apps@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 230866242AC;
	Wed,  7 May 2008 23:04:20 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47L4AJh006370
	for <apps-outgoing@mercury.hq.eso.org>; Wed, 7 May 2008 23:04:10 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m47L4A9e006369
	for apps-outgoing; Wed, 7 May 2008 23:04:10 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m47L49b2006360;
	Wed, 7 May 2008 23:04:09 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 137901E401D;
	Wed,  7 May 2008 23:06:10 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,450,1204498800"; 
   d="scan'208";a="7121211"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 07 May 2008 23:00:47 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.3])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1Jtqo4-00086z-7v; Wed, 07 May 2008 22:04:08 +0100
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <876456CA-92FB-4F72-A130-A0B9714FBCE4@astro.ex.ac.uk>
Cc: Applications Working Group <apps@ivoa.net>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Initial Release of prototype SAMP Hub
Date: Wed, 7 May 2008 22:03:52 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

All,

Ahead of the Trieste meeting...

I've just completed a prototype SAMP Hub written in Perl, developed  
against the IVOA working draft of the specification dated 2008-04-30  
distributed on the apps-samp mailing lis, with additions such as the  
argument order for the call( ) and callAll( ) methods taken from the  
apps-samp mailing list over the last couple of days.

You can download it from

http://www.babilim.co.uk/software/SAMP_Hub.tar.gz

and testbed clients can be found at,

http://www.babilim.co.uk/software/SAMP_Clients.tar.gz

This is an initial first cut release of the SAMP Hub and as such  
comes with no guarantees except there will be horrendous bugs. Also  
since this is the first implementation of a Hub, it probably won't  
play well with others, clients or hubs, either because of toolkit  
issues or because my interpretation of the specification doesn't  
entirely match other peoples. The software has been tested under OSX  
Tiger and Ubuntu Linux 7.10.

You will need the following Perl modules installed to run the hub and  
testbed clients,

XMLRPC::Lite
XML::Simple
DateTime
File::Spec
Carp
Data::Dumper
Getopt::Long
Socket
Net::Domain
POSIX
Errno

depending on your version of Perl some (but not all) of these will  
ship with the core distribution. The rest can be obtained from CPAN  
(http://search.cpan.org/). I think I've caught all the dependancies,  
but if you notice any I haven't listed any let me know I've forgotten  
them.

There is no documentation. Many of the Perl modules have inline POD,  
however most of it didn't keep up with the pace of development so  
it's out of date. However, once you install the additional modules,  
open up a terminal window and start the Hub as follows,

% tar -zxvf SAMP_Hub.tar.gz
% cd SAMP_Hub/
% ./samp_hub.pl

you can put the Hub through its paces by opening up two more terminal  
windows and running the testbed clients. You should start the  
listener client in all cases,

% tar -zxvf SAMP_Clients.tar.gz
% cd SAMP_Clients/
% ./listener_client.pl

this is the test client that listens for notify( ) and call( )'s from  
the Hub.

In the second window you can either start the client that exercises  
the notify( ) method, or the other than exercises the call( ) method. So

% cd SAMP_Clients/
% ./callAll_test.pl

or

% cd SAMP_Clients/
% ./notifyAll_test.pl

These two clients have a heart beat which will dispatch a call or a  
notification periodically. The first heartbeat will happen 15 seconds  
(or so) after the client has completed its registering with the Hub.

It should be noted that the initial Hub implementation does NOT  
implement callAndWait( ) pending discussion of asynchronous vs  
synchronous messaging, either on the apps-samp mailing list or at the  
Tieste meeting itself.

I'm interested in hearing from other Hub implementors, or people  
putting together SAMP client support, whether what I've generated  
interoperates okay with your implementation. It won't, but it'd be  
nice to get close...

Cheers,
Al.

From owner-apps-samp@eso.org  Thu May  8 12:12:56 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A8034624284
	for <vomail@fiction.hq.eso.org>; Thu,  8 May 2008 12:12:56 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48ACt8W020542
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 8 May 2008 12:12:55 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m48ACtQ9020541
	for apps-samp-outgoing; Thu, 8 May 2008 12:12:55 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48ACtKl020536
	for <apps-samp@ivoa.net>; Thu, 8 May 2008 12:12:55 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 6FFA61E401D
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 12:14:56 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AmEDAApvIkib/RCVdGdsb2JhbACSAQGaFwE
X-IronPort-AV: E=Sophos;i="4.27,454,1204498800"; 
   d="scan'208";a="7132076"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
  by clavius.hq.eso.org with ESMTP; 08 May 2008 12:09:31 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it [155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id m48ACfmP011631
	for <apps-samp@ivoa.net>; Thu, 8 May 2008 12:12:46 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP id m48ACZsC015391
	for <apps-samp@ivoa.net>; Thu, 8 May 2008 12:12:38 +0200
Message-ID: <4822D213.2060003@lambrate.inaf.it>
Date: Thu, 08 May 2008 12:12:35 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: SAMP Working Group <apps-samp@ivoa.net>
Subject: SAMP on Windows
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Luigi Paioro <luigi@lambrate.inaf.it>

Hello!

I have been registered to this mailing list for only a few days and I 
have just read the SAMP protocol working draft 2008-04-30.

I have seen that the issue concerning the lock file and the hub 
discovery for the Standard Profile on Windows OS have to be discussed 
yet. I don't know whether you have already faced this topic and found a 
general agreement on what is feasible and what is not, but I suggest to 
think about the possibility to store the bootstrap information on the 
Windows Registry. For instance, the Hub could store this record 
(following the example on page 23):

Hive: HKEY_CURRENT_USER
Key:  Software\IVOA\SAMP\Hub

Value Name: samp.secret
Data Type:  REG_SZ
Value:      734144fdaab8400a1ec2

Value Name: samp.hub.xmlrpc.url
Data Type:  REG_SZ
Value:      http://andromeda.star.bris.ac.uk:8001/xmlrpc

Value Name: samp.profile.version
Data Type:  REG_SZ
Value:      1.0

Value Name: samp.yoyodyne.hubid
Data Type:  REG_SZ
Value:      c80995f1


Windows Registry entries can be easily handled with the majority of the 
programming languages used today (Perl, Python, Java, .NET, C, C++, ..., 
with FORTRAN I think it's tough job, but probably feasible with some 
tricks), and it's also possible to restrict the access permissions of 
the Hub key (read access to the current user only).

Certainly, the use of Windows Registry implies an additional effort for 
the developer when s/he implements a Hub or a library to access the Hub 
(client side), because a different behavior is requested depending on 
the operative system. But I think it is worth it. The use of a typically 
Windows strategy when dealing with Windows, and a typically UNIX-like OS 
strategy when dealing with UNIX-like OS is boring but smarter.

This is just my opinion and proposal (my two cents). Think about it.

Regards,

   Luigi


-- 

Luigi Paioro

INAF - IASF Milano
Via Bassini 15, I-20133 Milano, Italy

Phone  (+39) 02 23 699 470
Fax    (+39) 02 26 660 17
Site   http://www.iasf-milano.inaf.it/

From owner-apps-samp@eso.org  Thu May  8 14:30:09 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 7FB476242AC
	for <vomail@fiction.hq.eso.org>; Thu,  8 May 2008 14:30:09 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48CU8J7005737
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 8 May 2008 14:30:08 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m48CU8uL005736
	for apps-samp-outgoing; Thu, 8 May 2008 14:30:08 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48CU8bd005732
	for <apps-samp@ivoa.net>; Thu, 8 May 2008 14:30:08 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 7DE631E401D
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 14:32:09 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,454,1204498800"; 
   d="scan'208";a="7134954"
Received: from esa-sf2.esa.gmessaging.net ([194.51.201.68])
  by clavius.hq.eso.org with ESMTP; 08 May 2008 14:26:44 +0200
Received: from esa-sf2.esa.gmessaging.net (localhost [127.0.0.1])
	by localhost.esa.gmessaging.net (Postfix) with SMTP id 9019C3944B1
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 14:29:47 +0200 (CEST)
Received: from sciops-mailgw.vilspa.esa.int (sciops-mailgw.vilspa.esa.int [193.147.152.105])
	by esa-sf2.esa.gmessaging.net (Postfix) with ESMTP id 7AB44394499
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 14:29:47 +0200 (CEST)
Received: from sciops.esac.int (scimail.esac.esa.int [193.147.152.87])
	by sciops-mailgw.vilspa.esa.int (Postfix) with ESMTP
	id 45E4311F8ED; Thu,  8 May 2008 14:29:54 +0200 (CEST)
Received: from [10.67.182.72] (satl13.net4.lan [10.67.182.72])
	(authenticated bits=0)
	by sciops.esac.int (8.13.1/8.13.1) with ESMTP id m48CTsdR015898;
	Thu, 8 May 2008 14:29:54 +0200
Message-ID: <4822F242.7030005@sciops.esa.int>
Date: Thu, 08 May 2008 14:29:54 +0200
From: Isa Barbarisi <Isa.Barbarisi@sciops.esa.int>
User-Agent: Thunderbird 1.5.0.2 (X11/20060524)
MIME-Version: 1.0
To: apps-samp@ivoa.net
Cc: Isa Barbarisi <Isa.Barbarisi@sciops.esa.int>
Subject: MType Spectra vocabulary 
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Isa Barbarisi <Isa.Barbarisi@sciops.esa.int>

Dear all,
the first SAMP spec looks great! Congratulation!

I have a little comment on 5.2.7 about the name convention.
You use something like spectrum.load.table and spectrum.load.image. I 
just start to say that the word image doesn't look very good in this 
context but this could be just me, I was thinking more to the current 
situation of plastic, where I can use load spectrum from URL and load 
spectrum locally for example.
Could we think about something like spectrum.load.table, 
spectrum.load.file and spectrum.load.url? Or something like this, these 
are the first names I could think of, but my idea is to differentiate 
the sources (files and URLs).

Thanks in advance for your answer and see you in Trieste!

Cheers,
Isa


================================================================================================
This message and any attachments are intended for the use of the addressee or addressees only. The
unauthorised disclosure, use, dissemination or copying (either in whole or in part) of its content
is prohibited. If you received this message in error, please delete it from your system and notify
the sender. E-mails can be altered and their integrity cannot be guaranteed. ESA shall not be liable
for any e-mail if modified.
=================================================================================================

From owner-apps-samp@eso.org  Thu May  8 15:42:18 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2DFEE624164
	for <vomail@fiction.hq.eso.org>; Thu,  8 May 2008 15:42:18 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48DgNJ4015073
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 8 May 2008 15:42:23 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m48DgNHt015072
	for apps-samp-outgoing; Thu, 8 May 2008 15:42:23 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48DgNVj015067
	for <apps-samp@ivoa.net>; Thu, 8 May 2008 15:42:23 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 3BE6E1E401D
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 15:44:24 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,455,1204498800"; 
   d="scan'208";a="7136692"
Received: from esa-sf1.esa.gmessaging.net ([194.51.201.67])
  by clavius.hq.eso.org with ESMTP; 08 May 2008 15:38:59 +0200
Received: from esa-sf1.esa.gmessaging.net (localhost [127.0.0.1])
	by localhost.esa.gmessaging.net (Postfix) with SMTP id BFC275F8666
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 15:42:14 +0200 (CEST)
Received: from sciops-mailgw.vilspa.esa.int (sciops-mailgw.vilspa.esa.int [193.147.152.105])
	by esa-sf1.esa.gmessaging.net (Postfix) with ESMTP id A55AD5F8664
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 15:42:14 +0200 (CEST)
Received: from sciops.esac.int (scimail.esac.esa.int [193.147.152.87])
	by sciops-mailgw.vilspa.esa.int (Postfix) with ESMTP id B732F11F8ED
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 15:42:21 +0200 (CEST)
Received: from [10.67.182.72] (satl13.net4.lan [10.67.182.72])
	(authenticated bits=0)
	by sciops.esac.int (8.13.1/8.13.1) with ESMTP id m48DgLrr003129
	for <apps-samp@ivoa.net>; Thu, 8 May 2008 15:42:21 +0200
Message-ID: <4823033D.4020101@sciops.esa.int>
Date: Thu, 08 May 2008 15:42:21 +0200
From: Isa Barbarisi <Isa.Barbarisi@sciops.esa.int>
User-Agent: Thunderbird 1.5.0.2 (X11/20060524)
MIME-Version: 1.0
To: apps-samp@ivoa.net
Subject: Spectrum message self consistence
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Isa Barbarisi <Isa.Barbarisi@sciops.esa.int>

Just another little question, that may be related with my previous post.
Is file.load the same than spectrum.load.image? I mean, if an 
application wants to send to VOSpec a Fits file, can it send this 
spectra with both messages? Do I have to give support to both messages 
for one single event? The same with table.load and spectrum.load.table.
Of course better many than anything :-), but maybe I miss something.  
I'd rather to have the MType "spectrum" consistent, in the meaning that 
I don't have to see which messages can be used for one single event, but 
just go to spectrum and see what I have. So, as in the previous message, 
I would suggest to include in the "spectrum" MType more diversification.

Cheers,
Isa

 

================================================================================================
This message and any attachments are intended for the use of the addressee or addressees only. The
unauthorised disclosure, use, dissemination or copying (either in whole or in part) of its content
is prohibited. If you received this message in error, please delete it from your system and notify
the sender. E-mails can be altered and their integrity cannot be guaranteed. ESA shall not be liable
for any e-mail if modified.
=================================================================================================

From owner-apps-samp@eso.org  Thu May  8 19:46:38 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 32174624284
	for <vomail@fiction.hq.eso.org>; Thu,  8 May 2008 19:46:37 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48Hkcv2014565
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 8 May 2008 19:46:38 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m48HkcwZ014564
	for apps-samp-outgoing; Thu, 8 May 2008 19:46:38 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48HkcC2014558
	for <apps-samp@ivoa.net>; Thu, 8 May 2008 19:46:38 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 7497D1E401D
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 19:48:39 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AmUBAK7ZIkjRVYT7c2dsb2JhbACSAwEMAwQECQ8FlDGFfQ
X-IronPort-AV: E=Sophos;i="4.27,455,1204498800"; 
   d="scan'208";a="7142088"
Received: from an-out-0708.google.com ([209.85.132.251])
  by clavius.hq.eso.org with ESMTP; 08 May 2008 19:43:13 +0200
Received: by an-out-0708.google.com with SMTP id c36so185588ana.36
        for <apps-samp@ivoa.net>; Thu, 08 May 2008 10:46:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        bh=sKs9e3oaWoT3ds1euTpsZFXdyHRhwYJqDTcPsuQjcxk=;
        b=RguXb8eOaclY+8j/N4ijdIHddk0xKA0kiZAqBGiVKjddcQwI5P3/eJLE/fSfIKywKTOWzEmhaTYXDZHdZ4qFo2aGxFOCrwDlisvAK5/EJYPpJjIaEyMghh/T4pobVKREVvESs8jPUKalJ4PP7BOMQnWdEQaRWAZsHrJ/hpnYE9M=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        b=LGxBs177WkpHZsKAvjIjA0bm446kdTC5dWMnhZkS+lQB2vcTGGfyDQtjWpJDRiBlozQLdShq2ryFtFo8LQcuxDLSDnKdFPtY3cwVH07s2kl6YqKBT1/3cSbQBeM/TlRU/3ueT2bQfEUF0XQEK7TZqounVFaLN0/RZLuromkrLys=
Received: by 10.100.91.17 with SMTP id o17mr4663348anb.145.1210268777135;
        Thu, 08 May 2008 10:46:17 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Thu, 8 May 2008 10:46:17 -0700 (PDT)
Message-ID: <8e768d0805081046j32f90ff1q414196abfb400859@mail.gmail.com>
Date: Thu, 8 May 2008 10:46:17 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Isa Barbarisi" <Isa.Barbarisi@sciops.esa.int>
Subject: Re: MType Spectra vocabulary
Cc: apps-samp@ivoa.net
In-Reply-To: <4822F242.7030005@sciops.esa.int>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <4822F242.7030005@sciops.esa.int>
X-Google-Sender-Auth: 23223fccfa02b049
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

>  Could we think about something like spectrum.load.table, spectrum.load.file
> and spectrum.load.url? Or something like this, these are the first names I
> could think of, but my idea is to differentiate the sources (files and
> URLs).

    The MType vocabulary is far from complete at this stage, and
adding something
like spectrum.load.url (and spectrum.load.text) is easy to do at this point.

    Where I think we still need some discussion is in how we define 'table' or
'image'.  For example, does a spectrum in a table mean a VOTable or a
FITS table or an ASCII table?  Do we want to define this exactly or do we
need additional types such as spectrum.load.votable, spectrum.load.fitstable,
etc?  Or, do we leave it as just 'table' and let the apps decide whether they
can read the format and ignore it if they can't?

Cheers,
-Mike

From owner-apps-samp@eso.org  Thu May  8 20:00:12 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6EECB6242D6
	for <vomail@fiction.hq.eso.org>; Thu,  8 May 2008 20:00:12 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48I0KTX015825
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 8 May 2008 20:00:20 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m48I0KaK015824
	for apps-samp-outgoing; Thu, 8 May 2008 20:00:20 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48I0JLZ015817
	for <apps-samp@ivoa.net>; Thu, 8 May 2008 20:00:19 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 090901E401D
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 20:02:21 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AmUBAAbcIkjRVYT4c2dsb2JhbACSAwEMAwQECQ8FlEaFeg
X-IronPort-AV: E=Sophos;i="4.27,455,1204498800"; 
   d="scan'208";a="7142309"
Received: from an-out-0708.google.com ([209.85.132.248])
  by clavius.hq.eso.org with ESMTP; 08 May 2008 19:56:54 +0200
Received: by an-out-0708.google.com with SMTP id c36so186746ana.36
        for <apps-samp@ivoa.net>; Thu, 08 May 2008 11:00:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        bh=jM6/V2X8EkyAYne6xG45v6HuLMzsq8wBLUd3bqFxw3o=;
        b=L81ITanEHt0RDGV/040GYzrmoTE6wemFyLJn8wuQegevydlEXjyQjElzR8zV1QBT2zLprtakL4UJYxMNvvy3S0fDp/Y6HkFyYOjT+lOWncA17mBVV7CVRKBA0MXMYsaFqAjFUT7T272Pd9vfQ8ZrapqrRAb0J0ZYDz1UGb7BS/c=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        b=NJZtXBqIDQrsffdQ75qPDMBJnLtQ5rd5yWz2pEgfuGDf5A7wzIWoyeczEJBpOp9Pz747/lXAo0coRMHquZesdYBphNK2a6yiHOGWHI9XQR+ej/8Wksv2L9kPeOtzaqj1GS0cG8wp+2KZW2p4ZudIkb3meCarnyd551ZOO5OycFk=
Received: by 10.100.173.9 with SMTP id v9mr4675512ane.150.1210269610054;
        Thu, 08 May 2008 11:00:10 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Thu, 8 May 2008 11:00:09 -0700 (PDT)
Message-ID: <8e768d0805081100u6700ff74oad568a7c59b66652@mail.gmail.com>
Date: Thu, 8 May 2008 11:00:09 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Isa Barbarisi" <Isa.Barbarisi@sciops.esa.int>
Subject: Re: Spectrum message self consistence
Cc: apps-samp@ivoa.net
In-Reply-To: <4823033D.4020101@sciops.esa.int>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <4823033D.4020101@sciops.esa.int>
X-Google-Sender-Auth: 28b0ca41172f859a
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

On Thu, May 8, 2008 at 6:42 AM, Isa Barbarisi
<Isa.Barbarisi@sciops.esa.int> wrote:
> Just another little question, that may be related with my previous post.
>  Is file.load the same than spectrum.load.image? I mean, if an application
> wants to send to VOSpec a Fits file, can it send this spectra with both
> messages? Do I have to give support to both messages for one single event?
> The same with table.load and spectrum.load.table.
>  Of course better many than anything :-), but maybe I miss something.  I'd
> rather to have the MType "spectrum" consistent, in the meaning that I don't
> have to see which messages can be used for one single event, but just go to
> spectrum and see what I have. So, as in the previous message, I would
> suggest to include in the "spectrum" MType more diversification.

    The idea is that file.load is much more generic in meaning that
spectrum.load.image.
They may end up doing the same thing in the application and you might want to
subscribe to both mtypes, but where they differ is that with spectrum.load.image
you know the argument will be an image file containing a spectrum,
with file.load
you need to figure out whether this is an image or a table you can read.

    In my opinion, table.load.spectrum and spectrum.load.table would do the same
thing but I'm not entirely happy that we are allowing this kind of
aliasing and would
be open to suggestions about how/whether to avoid this.

    Note the spectrum MTypes are currently biased towards 1-D spectra, we might
also want to consider what to do for echelle or fiber spectra where we
might have
different arguments to specify the order (e.g.
spectrum.load.echelle.image).  Apps
are free to make up their own MTypes as needed, but if this will be a
common case
then it would be better to define the MTypes now so we all have a common
understanding of how to use them.

Cheers,
-Mike

From owner-apps-samp@eso.org  Thu May  8 21:52:19 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A4B366242AC
	for <vomail@fiction.hq.eso.org>; Thu,  8 May 2008 21:52:19 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48JqQD4001888
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 8 May 2008 21:52:26 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m48JqQcW001887
	for apps-samp-outgoing; Thu, 8 May 2008 21:52:26 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m48JqPoU001883
	for <apps-samp@ivoa.net>; Thu, 8 May 2008 21:52:25 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 3C32E1E401D
	for <apps-samp@ivoa.net>; Thu,  8 May 2008 21:54:27 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,456,1204498800"; 
   d="scan'208";a="7144070"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 08 May 2008 21:49:01 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.3])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JuCAD-0004Au-6Z
	for apps-samp@ivoa.net; Thu, 08 May 2008 20:52:25 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <8e768d0805081046j32f90ff1q414196abfb400859@mail.gmail.com>
References: <4822F242.7030005@sciops.esa.int> <8e768d0805081046j32f90ff1q414196abfb400859@mail.gmail.com>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <ABC9879E-C003-4292-8675-EC235CA9C214@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: MType Spectra vocabulary
Date: Thu, 8 May 2008 20:52:05 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mike Fitzpatrick wrote:
> Do we want to define this exactly or do we need additional types  
> such as spectrum.load.votable, spectrum.load.fitstable, etc?  Or,  
> do we leave it as just 'table' and let the apps decide whether they
> can read the format and ignore it if they can't?

My answer to this question will always be... "let the apps decide". I  
think it was one of the things that made SAMP's predecessor a  
success. It injects a lot of much needed flexibility into the system.

Al.

From owner-apps-samp@eso.org  Fri May  9 10:13:42 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B0756624284
	for <vomail@fiction.hq.eso.org>; Fri,  9 May 2008 10:13:42 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m498DfOJ010510
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 9 May 2008 10:13:41 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m498Dfx6010509
	for apps-samp-outgoing; Fri, 9 May 2008 10:13:41 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m498DeHm010505
	for <apps-samp@ivoa.net>; Fri, 9 May 2008 10:13:40 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 3A34D1E401D
	for <apps-samp@ivoa.net>; Fri,  9 May 2008 10:15:42 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,459,1204498800"; 
   d="scan'208";a="7152051"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 09 May 2008 10:10:14 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JuNjX-000574-91; Fri, 09 May 2008 09:13:39 +0100
In-Reply-To: <8e768d0805082205q4983ac71s2d05cd3e5d56a02c@mail.gmail.com>
References: <4822F242.7030005@sciops.esa.int> <8e768d0805081046j32f90ff1q414196abfb400859@mail.gmail.com> <ABC9879E-C003-4292-8675-EC235CA9C214@astro.ex.ac.uk> <8e768d0805082205q4983ac71s2d05cd3e5d56a02c@mail.gmail.com>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <B33759AD-F7FA-4691-AA4B-24EE251593A4@astro.ex.ac.uk>
Cc: "SAMP Working Group" <apps-samp@ivoa.net>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: MType Spectra vocabulary
Date: Fri, 9 May 2008 09:13:21 +0100
To: Mike Fitzpatrick <fitz@noao.edu>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mike Fitzpatrick wrote:
> For this to work, we'd need a concept in SAMP that an app  
> subscribing to
> table.load.votable would be willing to read a table.load message as  
> well, i.e.
> is the MType  a direct string match, do we allow wildcards like  
> table.load.*,
> or is there an implicit subscription to higher-level messages like  
> table.load
> if we explicitly post table.load.votable as an Mtype?

Totally disagree... ;)

If an application wants to subscribe to a table.load.votable and then  
arrange a bunch of flows on receipt of this message that's fine with  
me, I think defining an action that an application must take to go  
with a specific message is the wrong way to go. What happens at the  
application end on receipt of a specific message is, as far as I'm  
concerned, up to the application.

Specifying that something that's decided to accept a  
table.load.votable has to accept a table.load is a an anathema to  
this concept. If the sender wanted the app to do something (arrange a  
bunch of flowers) it should have sent it a message it was willing to  
accept.

Al.

From owner-apps-samp@eso.org  Fri May  9 11:07:16 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6E917624284
	for <vomail@fiction.hq.eso.org>; Fri,  9 May 2008 11:07:16 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4997JMb016795
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 9 May 2008 11:07:19 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4997J7K016794
	for apps-samp-outgoing; Fri, 9 May 2008 11:07:19 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4997JDk016790
	for <apps-samp@ivoa.net>; Fri, 9 May 2008 11:07:19 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id C01FA1E401D
	for <apps-samp@ivoa.net>; Fri,  9 May 2008 11:09:20 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,460,1204498800"; 
   d="scan'208";a="7153058"
Received: from esa-sf3.esa.gmessaging.net ([194.51.201.69])
  by clavius.hq.eso.org with ESMTP; 09 May 2008 11:03:52 +0200
Received: from esa-sf3.esa.gmessaging.net (localhost [127.0.0.1])
	by localhost.esa.gmessaging.net (Postfix) with SMTP id E6E3124888D;
	Fri,  9 May 2008 11:07:12 +0200 (CEST)
Received: from sciops-mailgw.vilspa.esa.int (sciops-mailgw.vilspa.esa.int [193.147.152.105])
	by esa-sf3.esa.gmessaging.net (Postfix) with ESMTP id C5B142488AE;
	Fri,  9 May 2008 11:07:12 +0200 (CEST)
Received: from sciops.esac.int (scimail.esac.esa.int [193.147.152.87])
	by sciops-mailgw.vilspa.esa.int (Postfix) with ESMTP
	id C155511F8ED; Fri,  9 May 2008 11:07:17 +0200 (CEST)
Received: from [10.67.182.72] (satl13.net4.lan [10.67.182.72])
	(authenticated bits=0)
	by sciops.esac.int (8.13.1/8.13.1) with ESMTP id m4997HVO014104;
	Fri, 9 May 2008 11:07:17 +0200
Message-ID: <48241445.7020509@sciops.esa.int>
Date: Fri, 09 May 2008 11:07:17 +0200
From: Isa Barbarisi <Isa.Barbarisi@sciops.esa.int>
User-Agent: Thunderbird 1.5.0.2 (X11/20060524)
MIME-Version: 1.0
To: Alasdair Allan <aa@astro.ex.ac.uk>
Cc: Mike Fitzpatrick <fitz@noao.edu>, SAMP Working Group <apps-samp@ivoa.net>
Subject: Re: MType Spectra vocabulary
References: <4822F242.7030005@sciops.esa.int> <8e768d0805081046j32f90ff1q414196abfb400859@mail.gmail.com> <ABC9879E-C003-4292-8675-EC235CA9C214@astro.ex.ac.uk> <8e768d0805082205q4983ac71s2d05cd3e5d56a02c@mail.gmail.com> <B33759AD-F7FA-4691-AA4B-24EE251593A4@astro.ex.ac.uk>
In-Reply-To: <B33759AD-F7FA-4691-AA4B-24EE251593A4@astro.ex.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Isa Barbarisi <Isa.Barbarisi@sciops.esa.int>

Alasdair Allan wrote:
>
> Mike Fitzpatrick wrote:
>> For this to work, we'd need a concept in SAMP that an app subscribing to
>> table.load.votable would be willing to read a table.load message as 
>> well, i.e.
>> is the MType  a direct string match, do we allow wildcards like 
>> table.load.*,
>> or is there an implicit subscription to higher-level messages like 
>> table.load
>> if we explicitly post table.load.votable as an Mtype?
>
> Totally disagree... ;)
>
> If an application wants to subscribe to a table.load.votable and then 
> arrange a bunch of flows on receipt of this message that's fine with 
> me, I think defining an action that an application must take to go 
> with a specific message is the wrong way to go. What happens at the 
> application end on receipt of a specific message is, as far as I'm 
> concerned, up to the application.
>
> Specifying that something that's decided to accept a 
> table.load.votable has to accept a table.load is a an anathema to this 
> concept. If the sender wanted the app to do something (arrange a bunch 
> of flowers) it should have sent it a message it was willing to accept.
>
> Al.

I understand your point of view but I would like to propose some 
scenarios where this could lead to some problem.
For example, if VOSpec has to subscribe to both file.load and 
spectrum.load.image, this means that if Aladin broadcasts fits images 
with file.load, VOSpec has to understand that they are not spectra.
Maybe there is a tricky way to manage all the possible formats and 
everything, but I think the protocol should avoid as much as possible 
such a messy thing. As a SAMP client, I would like to subscribe just to 
the spectrum MTypes in principle, because my application manages just 
spectra, but yes I see this has to be discussed because we don't want to 
make the protocol too much complicate.

Cheers,
Isa






 



================================================================================================
This message and any attachments are intended for the use of the addressee or addressees only. The
unauthorised disclosure, use, dissemination or copying (either in whole or in part) of its content
is prohibited. If you received this message in error, please delete it from your system and notify
the sender. E-mails can be altered and their integrity cannot be guaranteed. ESA shall not be liable
for any e-mail if modified.
=================================================================================================

From owner-apps-samp@eso.org  Fri May  9 11:07:38 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 47DC8624284
	for <vomail@fiction.hq.eso.org>; Fri,  9 May 2008 11:07:38 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4997fRS016855
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 9 May 2008 11:07:41 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4997fXf016854
	for apps-samp-outgoing; Fri, 9 May 2008 11:07:41 +0200 (MEST)
Message-Id: <200805090907.m4997fXf016854@mercury.hq.eso.org>
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Date: Thu, 8 May 2008 22:05:05 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Alasdair Allan" <aa@astro.ex.ac.uk>
Subject: Re: MType Spectra vocabulary
Cc: "SAMP Working Group" <apps-samp@ivoa.net>
In-Reply-To: <ABC9879E-C003-4292-8675-EC235CA9C214@astro.ex.ac.uk>
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

In the discussions before the SAMP draft went public the idea that an MType
like 'table.load' where the format of the table was left undefined
clashed mightily
with the idea that an MType should have a well-defined, unique, meaning.  I'm
actually with Alasdair that an app should be free to accept a table.load message
but reply with an error if it can't make sense of it, the idea being
that an app can
can subscribe to table.load and be expected to do something reasonable, even
if later versions would support table.load.votable.v2 as a more specific case.

For this to work, we'd need a concept in SAMP that an app subscribing to
table.load.votable would be willing to read a table.load message as well, i.e.
is the MType  a direct string match, do we allow wildcards like table.load.*,
or is there an implicit subscription to higher-level messages like table.load
if we explicitly post table.load.votable as an Mtype?

I personally advocate the wildcard or super-class approach since it means
we don't tie MTypes to a specific version of an app, we instead rely on an app
to reject a message rather than using the Sender to find a specific match.
This is more work for the Hub and an idea that didn't survive the draft writing,
but I do not think the <predecessor> model of simply documenting MTypes
in-use is viable in the long term and argues against the idea of flexibility.

-Mike



On Thu, May 8, 2008 at 12:52 PM, Alasdair Allan <aa@astro.ex.ac.uk> wrote:
>
>  Mike Fitzpatrick wrote:
>
> > Do we want to define this exactly or do we need additional types such as
> spectrum.load.votable, spectrum.load.fitstable, etc?  Or, do we leave it as
> just 'table' and let the apps decide whether they
> > can read the format and ignore it if they can't?
> >
>
>  My answer to this question will always be... "let the apps decide". I think
> it was one of the things that made SAMP's predecessor a success. It injects
> a lot of much needed flexibility into the system.
>
>  Al.
>

From owner-apps-samp@eso.org  Fri May  9 17:50:11 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A0CAA624284
	for <vomail@fiction.hq.eso.org>; Fri,  9 May 2008 17:50:11 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m49FoI1Z006205
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 9 May 2008 17:50:18 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m49FoIGg006204
	for apps-samp-outgoing; Fri, 9 May 2008 17:50:18 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m49FoFCH006199
	for <apps-samp@ivoa.net>; Fri, 9 May 2008 17:50:15 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 623E51E401D
	for <apps-samp@ivoa.net>; Fri,  9 May 2008 17:52:17 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AqACABAPJEhA6bjnd2dsb2JhbACSBgEMBQIECQ8FkxKFVA
X-IronPort-AV: E=Sophos;i="4.27,461,1204498800"; 
   d="scan'208";a="7161156"
Received: from wr-out-0506.google.com ([64.233.184.231])
  by clavius.hq.eso.org with ESMTP; 09 May 2008 17:46:47 +0200
Received: by wr-out-0506.google.com with SMTP id c55so596732wra.0
        for <apps-samp@ivoa.net>; Fri, 09 May 2008 08:50:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        bh=1lVKvigHRBRQLdsXOYURCrpi8mBAV7MTXdVWApqKeO4=;
        b=iix0vIg5b7BC8yOpeXEhIja9JO8TBLhQhxE9kWypvdrhgO5kKzoIJ9XkVxah8jodwST+qt20IqVRvwKVMs9r7YM5/I1DOyQSt5rGvAuCoe7x5+tc9357Mn2s/mhK2HvQNJYf/2axCMX2yQGVxJ2Wu/xvVEFjyfJ1OvKieHBR/5w=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        b=AeR/0wzwFYpkm2mx2OwPTYgoOvyYOlA1ADGKyrvRVm3vfapOvf8201PgmYuyOT0BdeQpnOMIwN2W1D57xKmpcy1hVcgQGew5ixTq//bzXrPCQJMEmZHcIr7UcrRsrqV3nqA7CUR8d8vWbNbfxSriztHM4YUWbKr1ukANfrswyrM=
Received: by 10.100.92.9 with SMTP id p9mr5909508anb.124.1210348208826;
        Fri, 09 May 2008 08:50:08 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Fri, 9 May 2008 08:50:08 -0700 (PDT)
Message-ID: <8e768d0805090850i7d1f8f3du2ea80be695cebf28@mail.gmail.com>
Date: Fri, 9 May 2008 08:50:08 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Alasdair Allan" <aa@astro.ex.ac.uk>
Subject: Re: MType Spectra vocabulary
Cc: "SAMP Working Group" <apps-samp@ivoa.net>
In-Reply-To: <B33759AD-F7FA-4691-AA4B-24EE251593A4@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <4822F242.7030005@sciops.esa.int>
	 <8e768d0805081046j32f90ff1q414196abfb400859@mail.gmail.com>
	 <ABC9879E-C003-4292-8675-EC235CA9C214@astro.ex.ac.uk>
	 <8e768d0805082205q4983ac71s2d05cd3e5d56a02c@mail.gmail.com>
	 <B33759AD-F7FA-4691-AA4B-24EE251593A4@astro.ex.ac.uk>
X-Google-Sender-Auth: 2fef002a7eca0726
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

On Fri, May 9, 2008 at 1:13 AM, Alasdair Allan <aa@astro.ex.ac.uk> wrote:
>
>  Mike Fitzpatrick wrote:
>
> > For this to work, we'd need a concept in SAMP that an app subscribing to
> > table.load.votable would be willing to read a table.load message as well,

    I think I mistyped:  What I meant was "an app subscribing to
table.load willing
to accept a table.load.votable"


>  Totally disagree... ;)

A sure sign of the apocalypse if it were any other way 8-)


>  If an application wants to subscribe to a table.load.votable and then
> arrange a bunch of flows on receipt of this message that's fine with me, I
> think defining an action that an application must take to go with a specific
> message is the wrong way to go. What happens at the application end on
> receipt of a specific message is, as far as I'm concerned, up to the
> application.

I agree.  However, an early draft describing mtypes as creating a "rough idea"
was rejected for the idea that mtypes have a well-defined meaning
(e.g. image.display
means a 2-D greyscale rendering in the app, not that it loads a
web-page to display
the image).


>  Specifying that something that's decided to accept a table.load.votable has
> to accept a table.load is a an anathema to this concept. If the sender
> wanted the app to do something (arrange a bunch of flowers) it should have
> sent it a message it was willing to accept.

Does the correction above satisfy your concerns?

Cheers,
-Mike

From owner-apps-samp@eso.org  Mon May 12 12:18:01 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A9436624166
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 12:18:01 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CAHwEf012036
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 12:17:58 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CAHwFG012035
	for apps-samp-outgoing; Mon, 12 May 2008 12:17:58 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CAHvlr012031
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 12:17:57 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 9BB481E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 12:20:01 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEADe2J0iJ3jon/2dsb2JhbACqEA
X-IronPort-AV: E=Sophos;i="4.27,473,1204498800"; 
   d="scan'208";a="7212685"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 12:14:21 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvV6O-0003dQ-00; Mon, 12 May 2008 11:17:52 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvV6N-0003bJ-I8; Mon, 12 May 2008 11:17:51 +0100
Date: Mon, 12 May 2008 11:17:51 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Alasdair Allan <aa@astro.ex.ac.uk>
cc: apps-samp@ivoa.net
Subject: Re: Hub stopping
In-Reply-To: <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805121114080.13792@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
 <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
 <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 6 May 2008, Alasdair Allan wrote:

> Looking through the current specification it appears that every client is 
> forced to call getHubId() right after it registers because at the moment 
> there isn't any way for it to know that the app.event.stopping message it's 
> recieved from the Hub is from the Hub or not... wouldn't it make sense to 
> have a hub.event.* set of messages that all (callable) clients were required 
> to be able interpret rather than having each client call getHubId() and then 
> be forced to handle all app.event.stopping messages?
>
> This makes more sense than just fixing the hub public id to 0 because...
>
> Under the current system all callable clients have to subscribe to all 
> app.event.stopping messages and scan them to see if the Hub is stopping. But 
> there is a big subset of cases, where I'm a client that is callable, but only 
> really sends (broadcast) notificatons, where I would still be interested in 
> the hub stopping messages (but not the rest of the app.event.stopping 
> messages) so that having a separate hub.event.* class of messages is much 
> more convenient.

Alasdair,

I almost completely agree with this, for the reasons that you cover -
hub.event.stopping (and possibly other hub.event.*) messages should
exist separate from app.event.* ones. 
The only thing I disagree with is:

> have a hub.event.* set of messages that all (callable) clients were required 
> to be able interpret rather than having each client call getHubId() and then

there is no *requirement* for callable clients to interpret such 
an MType - they can ignore it (at their peril) if they want.

Mark 
(catching up with messages following a week's holiday)

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon May 12 12:19:32 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 1A710624166
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 12:19:32 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CAJXuH012210
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 12:19:33 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CAJXDJ012209
	for apps-samp-outgoing; Mon, 12 May 2008 12:19:33 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CAJXIa012200
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 12:19:33 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id DF82F1E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 12:21:36 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEADe2J0iJ3jon/2dsb2JhbACqEA
X-IronPort-AV: E=Sophos;i="4.27,473,1204498800"; 
   d="scan'208";a="7212728"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 12:15:56 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvV80-0003di-00
	for apps-samp@ivoa.net; Mon, 12 May 2008 11:19:32 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvV80-0003bU-Gh
	for apps-samp@ivoa.net; Mon, 12 May 2008 11:19:32 +0100
Date: Mon, 12 May 2008 11:19:32 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: setXmlrpcCallback( ) arguements?
In-Reply-To: <48200B2E.4EC4CFA7@newb6.u-strasbg.fr>
Message-ID: <Pine.LNX.4.63.0805121118260.13792@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
 <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> <48200B2E.4EC4CFA7@newb6.u-strasbg.fr>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 6 May 2008, Thomas Boch wrote:

> I can't find them either. Looking at previous versions of the draft, I
> think the signature of this method should be :
> setXmlrpcCallback(string private-key, string xmlrpc-url)
>
> This should obviously be added in the document.

agreed.  This method signature fell out of the current draft due to
my sloppy editing.  Will reinstate it in my copy.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon May 12 12:24:46 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0EFF2624166
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 12:24:46 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CAOjj2012758
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 12:24:45 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CAOj9P012757
	for apps-samp-outgoing; Mon, 12 May 2008 12:24:45 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CAOjJr012753
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 12:24:45 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 00D281E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 12:26:49 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAGS3J0iJ3jon/2dsb2JhbACqFg
X-IronPort-AV: E=Sophos;i="4.27,473,1204498800"; 
   d="scan'208";a="7212798"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 12:21:08 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvVD2-0003eq-00
	for apps-samp@ivoa.net; Mon, 12 May 2008 11:24:44 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvVD2-0003bu-C3
	for apps-samp@ivoa.net; Mon, 12 May 2008 11:24:44 +0100
Date: Mon, 12 May 2008 11:24:44 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: ISSUE: Message-id management
In-Reply-To: <8e768d0805060230j2fc2409cm457ce31e19be31f1@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0805121120330.13792@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk> 
 <8e768d0804301357o7fb91ed1w10e4f0468df5adc7@mail.gmail.com> 
 <Pine.LNX.4.63.0805011536550.31759@andromeda.star.bris.ac.uk> 
 <8e768d0805011130x59092246r93be5f3ace33489b@mail.gmail.com> 
 <Pine.LNX.4.63.0805020854570.8064@andromeda.star.bris.ac.uk>
 <8e768d0805060230j2fc2409cm457ce31e19be31f1@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Mike,

On Tue, 6 May 2008, Mike Fitzpatrick wrote:

>    Upon reflection, I'm willing to concede that a hub-msg-id is not
> entirely a bad idea,

good, thanks.

> however I still think your checksum example is a bit on the
> fanciful side of likely uses for it.

probably fanciful yes, I was just trying to indicate the kind of 
non-obvious possibilities that people might think up.

>     The strongest argument for this is that it facilitates the Hub
> implementation
> in avoiding any state information, but this needs to be made clearer in the
> spec; at the very least by clarifying the footnote as to its intent but I
> would
> prefer a more direct discussion of why there are separate ID strings for
> those
> developers that don't immediately see their use.  I agree we shouldn't
> dictate
> implementation details, neither should we make design elements too oblique
> for them to be used by novice developers relying only on the spec for
> guidance
> in implementing SAMP in their apps.

I will try to clarify that footnote as you suggest.  Note however that
the people who need to worry about this point are hub implementors
rather than client implementors, so probably not too novice.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon May 12 12:53:25 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id AABE26242AC
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 12:53:25 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CArTS3015259
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 12:53:29 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CArTVK015258
	for apps-samp-outgoing; Mon, 12 May 2008 12:53:29 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CArTal015254
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 12:53:29 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id E92B81E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 12:55:32 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAGy+J0iJ3jon/2dsb2JhbACqFQ
X-IronPort-AV: E=Sophos;i="4.27,473,1204498800"; 
   d="scan'208";a="7213326"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 12:49:52 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvVep-0003hX-00
	for apps-samp@ivoa.net; Mon, 12 May 2008 11:53:27 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvVep-0003f8-MP
	for apps-samp@ivoa.net; Mon, 12 May 2008 11:53:27 +0100
Date: Mon, 12 May 2008 11:53:27 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: call( ) and (incorrect?) argument order
In-Reply-To: <4821BA33.220E9603@newb6.u-strasbg.fr>
Message-ID: <Pine.LNX.4.63.0805121134140.13792@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
 <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
 <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
 <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>
 <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk>
 <88F45F26-B06C-4C32-BE0C-E44150F31054@astro.ex.ac.uk> <4821BA33.220E9603@newb6.u-strasbg.fr>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Al,

not sure which "all the other methods" you're thinking of, but agreed
as Thomas says the order mismatch between call() and receiveCall() 
is not helpful.

Currently we have

    notify              (recipient-id, message)
    notifyAll           (message)
    call                (recipient-id, message, msg-id)
    callAll             (message, msg-id)
    callAndWait         (recipient-id, message)

    receiveNotification (sender-id, message)
    receiveCall         (sender-id, msg-id, message)

Maybe we should rationalise it a bit more and have

    notify              (message, recipient-id)
    notifyAll           (message)
    call                (message, recipient-id, msg-id)
    callAll             (message, msg-id)
    callAndWait         (message, recipient-id)

    receiveNotification (message, sender-id)
    receiveCall         (message, sender-id, msg-id)

which looks a bit tidier and less haphazard.

Any opinions?  If people are not particularly keen I'm happy to go with
Al's original suggestion of just switching msg-id and message in call(),
though we should do the same thing in callAll() at the same time
(or alternatively just flip them in receiveCall() instead).

Mark

On Wed, 7 May 2008, Thomas Boch wrote:

> Hi,
>
> As the signature of receiveCall is receiveCall(string sender-id, string
> msg-id, map message) , it makes sense indeed for consistency to change
> the signature of call to :
> call(string recipient-id, string msg-id, map message)
>
> as you are suggesting.
>
> Thomas
>
> Alasdair Allan wrote:
>>
>> Just noticed that call( ) (see p19, section 3.10) is the odd method
>> out, with a prototype of
>>
>>    call(string rcepient-id, map message, string msg-id )
>>
>> which is the other way round to all the other methods. Should this
>> instead be,
>>
>>    call(string rcepient-id,  string msg-id, map message)
>>
>> like the rest? If not, is there a reason why its different?
>>
>> Cheers,
>> Al.
>

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon May 12 13:05:38 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 11632624166
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 13:05:38 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CB5ghM016599
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 13:05:42 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CB5g5D016598
	for apps-samp-outgoing; Mon, 12 May 2008 13:05:42 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CB5fFo016594
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 13:05:41 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 886561E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 13:07:45 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAIfAJ0iJ3jon/2dsb2JhbACqCg
X-IronPort-AV: E=Sophos;i="4.27,473,1204498800"; 
   d="scan'208";a="7213515"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 13:02:05 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvVqe-0003iW-00
	for apps-samp@ivoa.net; Mon, 12 May 2008 12:05:40 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvVqe-0003g6-Ts
	for apps-samp@ivoa.net; Mon, 12 May 2008 12:05:40 +0100
Date: Mon, 12 May 2008 12:05:40 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: notify( ) vs call( )
In-Reply-To: <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805121204050.13792@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
 <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
 <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
 <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>
 <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 7 May 2008, Alasdair Allan wrote:

> Mark,
>
> Just to double check before I push forward any further, does this look good 
> (wrt nesting of params and the like in the document) to you as a call from 
> the client to the Hub to notifyAll()...?

... yes, checking by eye that looks exactly right.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon May 12 15:03:42 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 1D4B8624166
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 15:03:41 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CD3gwK026493
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 15:03:42 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CD3gtG026492
	for apps-samp-outgoing; Mon, 12 May 2008 15:03:42 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CD3gP5026488
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 15:03:42 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 4C3B51E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 15:05:46 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,473,1204498800"; 
   d="scan'208";a="7215413"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 15:00:05 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JvXgm-00055u-8X
	for apps-samp@ivoa.net; Mon, 12 May 2008 14:03:36 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805121114080.13792@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk> <Pine.LNX.4.63.0805121114080.13792@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <A3FDE90B-A92E-4C72-B227-7183DA32ABD6@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Hub stopping
Date: Mon, 12 May 2008 14:03:11 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> Alasdair Allan wrote:
>> ...wouldn't it make sense to have a hub.event.* set of messages
>
> I almost completely agree with this, for the reasons that you cover -
> hub.event.stopping (and possibly other hub.event.*) messages should
> exist separate from app.event.* ones.

Good!

> The only thing I disagree with is:
>
>> have a hub.event.* set of messages that all (callable) clients  
>> were required to be able interpret rather than having each client  
>> call getHubId() and then
>
> there is no *requirement* for callable clients to interpret such an  
> MType - they can ignore it (at their peril) if they want.

Ouch. Okay, that is fair enough on consideration, especially if we  
introduce a hub.event.* set of messages...

Cheers,
Al.

From owner-apps-samp@eso.org  Mon May 12 15:07:05 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id AB73D6242AC
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 15:07:05 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CD7BXc026848
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 15:07:11 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CD7BmP026847
	for apps-samp-outgoing; Mon, 12 May 2008 15:07:11 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CD7A0R026843
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 15:07:10 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id A337C1E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 15:09:14 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,473,1204498800"; 
   d="scan'208";a="7215508"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 15:03:34 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JvXkE-0005Oj-7Y
	for apps-samp@ivoa.net; Mon, 12 May 2008 14:07:10 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805121134140.13792@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk> <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk> <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk> <88F45F26-B06C-4C32-BE0C-E44150F31054@astro.ex.ac.uk> <4821BA33.220E9603@newb6.u-strasbg.fr> <Pine.LNX.4.63.0805121134140.13792@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <92D41936-F7BD-4AF8-BDAC-C8A454FB9055@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: call( ) and (incorrect?) argument order
Date: Mon, 12 May 2008 14:06:45 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> Currently we have
>
>    notify              (recipient-id, message)
>    notifyAll           (message)
>    call                (recipient-id, message, msg-id)
>    callAll             (message, msg-id)
>    callAndWait         (recipient-id, message)
>
>    receiveNotification (sender-id, message)
>    receiveCall         (sender-id, msg-id, message)
>
> Maybe we should rationalise it a bit more and have
>
>    notify              (message, recipient-id)
>    notifyAll           (message)
>    call                (message, recipient-id, msg-id)
>    callAll             (message, msg-id)
>    callAndWait         (message, recipient-id)
>
>    receiveNotification (message, sender-id)
>    receiveCall         (message, sender-id, msg-id)
>
> which looks a bit tidier and less haphazard.

That seems back to front to me, having the message last seems  
reasonable. But maybe I'm mapping too much onto paper letters...  
where you have the recipient-id (the address) first... ;)

> Any opinions?  If people are not particularly keen I'm happy to go  
> with
> Al's original suggestion of just switching msg-id and message in  
> call(),
> though we should do the same thing in callAll() at the same time
> (or alternatively just flip them in receiveCall() instead).

For information, in the pre-alpha hub I shipped last week I flipped  
the msg-id and message in call( ) and callAll( ). I'm happy either  
way though...

Al.

From owner-apps-samp@eso.org  Mon May 12 15:07:51 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 25264624166
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 15:07:51 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CD7uPL026892
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 15:07:56 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CD7uIO026891
	for apps-samp-outgoing; Mon, 12 May 2008 15:07:56 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CD7udv026887
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 15:07:56 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 3030C1E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 15:10:00 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,473,1204498800"; 
   d="scan'208";a="7215529"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 15:04:19 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JvXkx-0005PT-9L
	for apps-samp@ivoa.net; Mon, 12 May 2008 14:07:55 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805121204050.13792@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk> <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk> <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk> <Pine.LNX.4.63.0805121204050.13792@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <4366AAAF-11F3-4189-AB9F-F6B7AF79EFEE@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: notify( ) vs call( )
Date: Mon, 12 May 2008 14:07:31 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> Alasdair Allan wrote:
>> Just to double check before I push forward any further, does this  
>> look good (wrt nesting of params and the like in the document) to  
>> you as a call from the client to the Hub to notifyAll()...?
>
> ... yes, checking by eye that looks exactly right.

Good. That probably means the rest of the XML is okay at that point  
as the nested structs is about as complicated as it gets...

Al.

From owner-apps-samp@eso.org  Mon May 12 16:43:06 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 7BC136242AC
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 16:43:06 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CEh85D007216
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 16:43:08 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CEh8nc007215
	for apps-samp-outgoing; Mon, 12 May 2008 16:43:08 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CEh848007211
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 16:43:08 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 079D01E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 16:45:12 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAF/0J0iJ3jon/2dsb2JhbACqZA
X-IronPort-AV: E=Sophos;i="4.27,473,1204498800"; 
   d="scan'208";a="7217589"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 16:39:31 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvZF5-0004AH-00
	for apps-samp@ivoa.net; Mon, 12 May 2008 15:43:07 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvZF5-0004At-18
	for apps-samp@ivoa.net; Mon, 12 May 2008 15:43:07 +0100
Date: Mon, 12 May 2008 15:43:07 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: callAndWait( ) implementation issues?
In-Reply-To: <CD791EBB-2558-4CB6-A0C5-E3DEF8359644@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805121542230.15256@andromeda.star.bris.ac.uk>
References: <CD791EBB-2558-4CB6-A0C5-E3DEF8359644@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 7 May 2008, Alasdair Allan wrote:

> I'm currently getting a bit worried by the implementation issues surrounding 
> the callAndWait( ) method in the Hub. The current scheme is that a client can 
> call this and expect a synchronous response from the Hub. However there seems 
> to be no way to synchronously call a client.
>
> Clients only have a recieveCall( ) method, and then asynchronously return a 
> reply( ) call to the Hub in response. In theory the Hub takes this hopefully 
> speedily returned reply( ) and uses it as a return value for the callAndWait( 
> ) which has been hanging with an open socket all the time.
>
> However this reply( ) call will almost certainly be handled by a separate 
> thread (or forked process) or at least a different part of the Hub software 
> than the (hanging open) callAndWait( ) method. I'm having real difficulty 
> imagining how the information in the asynchronous reply( ) call is supposed 
> to make its way over to the synchronous callAndWait( ) except by a 
> complicated system of thread semaphores and shared variables.

Hi Al,

interesting point.  You are correct that in order to implement 
callAndWait() the hub will need to be multithreaded/multiprocess and 
will require some degree of non-trivial IPC (i.e. more than just 
wait()/kill()).  Clearly this makes hub implementations in strictly
single-threaded languages a non-starter, but I will admit that since 
the threading features of the language make this sort of thing 
relatively straightforward in Java, I had not thought about this as 
a serious burden on implementators in other languages which offer 
multi-threading or at least access to fork().

> I can certainly go off an implement this model, however this is going to 
> severely limit the language choice for Hub implementation. For Perl at least, 
> it means that the Perl binary will have to be compiled with ithreads enabled, 
> and while mine is, most peoples aren't. Up till now I've been implementing 
> the Hub using vanilla Perl, this implies that you won't be able to take the 
> Perl implementation out of the box.

Although I haven't written serious Perl for quite some while
(so don't really know what I'm talking about), I am
a bit surprised that this sort of thing would be sufficiently
difficult to require a Perl compiled with non-standard options.
My sketchy research suggests that it ought not to be too much of
a stretch to implement this functionality using SysV style IPC,
if available (i.e. if Perl shmget() is implemented), via a module 
like IPC::Shareable or IPC::ShareLite.  These modules work on the Perl 
which comes with my Linux machine without having to recompile it or 
anything.  Linux and Mac have SysV IPC.  It looks to me like
MS Windows is sufficiently POSIXy to have it too, but I haven't 
tested this.

> However the real problem is that I've got no real feel for how badly this 
> might affect other languages outside the core three of Java, Python and Perl. 
> In my opinion this issue massively complicates an otherwise fairly easily 
> implemented specification.

I'll admit that it does complicate hub implementation, and possibly
limits the languages in which hubs can be implemented.  The benefit
is that it's easier to write clients.  Either of your suggestions
makes it easier to write a hub at the expense of making it harder to
write clients:

> 1) Add a recieveSynchronousCall( ) method in the client.

this would effectively require that clients need to provide two ways
of doing the same thing - fiddly rather than difficult.
I must say I don't like the idea of clients having to work harder to
make life easier for the hub, but it is a possibility.

> 2) Remove callAndWait( ) from the hub.

this would mean that only callable clients could receive return values
from messages.  That would be a shame (writing a callable client is in
general going to be a lot harder than writing a non-callable one, and
will be effectively impossible in single-threaded languages).

> Comments?

My feeling about this is that the burden on hub developers for implementing
callAndWait() is acceptable.  Although we have deliberately moved away
from the PLASTIC model which (pretty much) required hubs to be written
in java because of the Java RMI requirement, in my opinion this does
not mean that we need to bend over backwards to make hub implementation
as easy as possible, or to remove barriers to writing hubs in the widest
possible variety of languages.  Above all I feel that the primary goal
is lowering the burden on client developers, and if this makes hub
developers' lives harder, or restricts the languages in which they can
work, so be it.  It is important that SAMP does not mandate a
particular language or implementation for hubs, and it's great for
robustness to have two or three implementations available, but I don't
believe that there is any need to have a large number of different
hub implementations in all kinds of languages.

So in my opinion we should stick with the existing synchronous facade
built on asynchronous calls model.

Other opinions?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon May 12 19:03:53 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 38B19624166
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 19:03:53 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CH40SY022586
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 19:04:00 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CH40gC022569
	for apps-samp-outgoing; Mon, 12 May 2008 19:04:00 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CH3xMi022547
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 19:03:59 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id CF3AE1E401D
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 19:06:03 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEACMVKEiJ3jon/2dsb2JhbACrTQ
X-IronPort-AV: E=Sophos;i="4.27,474,1204498800"; 
   d="scan'208";a="7220625"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 19:00:22 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvbRO-0004NO-00
	for apps-samp@ivoa.net; Mon, 12 May 2008 18:03:58 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvbRO-0004Kk-J1
	for apps-samp@ivoa.net; Mon, 12 May 2008 18:03:58 +0100
Date: Mon, 12 May 2008 18:03:58 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: notify( ) vs call( )
In-Reply-To: <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805121649500.15256@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
 <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
 <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
 <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 6 May 2008, Alasdair Allan wrote:

> So, in a PLASTIC'y sort of way I have a client that wants to tell all the 
> listening clients to image.display and then image.panTo.sky.
>
> However it doesn't really care if they do it or not... does it really have to 
> callAll( ) clients, or can it just notifyAll( ) clients instead...
>
> ...what are the rules the say this MType is a call( ) and this one is a 
> notify( )? From reading the specification its implied, but not really 
> explicitly stated, that *.event.* MTypes are notify()'able and others are 
> call()'able.
>
> Is that the intention... or is the more flexibility intended here?

No it is not the intention - at least it's not mine, and although we had
considerable debate and some confusion around this issue in the last 
few weeks I believe it's not the intention of the other authors.
Mike - [I'm sure you will] shout if you disagree with my clarifications 
below.

Any MType may be delivered either using call*() or using notify*() methods.
The delivery method (call or notify, which just determines whether
a response is required and returned) is a completely separate question 
to the message semantics (which are defined by the MType).
It is true that in practice some MTypes will more usefully be delivered
using notify and others will more usefully be delivered using call,
but there is no compulsion - it is entirely up to the sending application 
whether it wants to wait for and see the responses from the recipients
or whether it doesn't care.

So in your example above, you can just call notifyAll() and forget
about it.

> Either way I think this needs to be made more explicit in the specification.

Evidently it does.  I propose revising section 2.5 as follows:

    \subsection{Sending and Receiving messages}
    \label{sect:delivery-outline}

    Messages can be sent according to three patterns, differing in
    how and whether a response is returned to the sender:
    \begin{enumerate}
            \item Notification
            \item Asynchronous Call/Response
            \item Synchronous Call/Response
    \end{enumerate}
    The Notification pattern is strictly one-way while in the Call/Response
    patterns the recipient returns a response to the sender.

    If the sender expects to receive some useful data as a result of the
    receiver's processing, and/or if it wishes to find out whether and
    when the processing is completed, it should use one of the Call/Response
    variants.  If on the other hand the sender has no interest in what
    the recipient does with the message once it has been sent, it
    may use the Notification pattern.  Notification, since it involves
    no communication back from the recipient to the sender, uses
    fewer resources.
    Although typically ``event''-type messages will be sent using Notify
    and ``request-for-information''-type messages will be sent using
    Call/Response, the choice of which delivery pattern to use is
    entirely distinct from the content of the message, and is up to
    the sender; any message (MType) may be sent using any of the above
    patterns.
    Apart from the fact of returning or not returning a response,
    the recipient should process messages in exactly the same way
    regardless of which pattern is used.

    From the receiver's point of view there are only two cases,
    Notification and Asynchronous Call/Response.
    However the hub provides a convenience
    method which simulates a synchronous call from the sender's point of view.
    The purpose of this is to simplify the use of the protocol
    in such situations as scripting environments which cannot easily handle
    asynchronicity.  However, it is recommended to use the asynchronous pattern
    where possible due to its greater robustness.

and also adding the following to the end of section 3.9:

    Note that the two different cases from the receiver's point of view,
    Notification and Call/Response, differ only in whether a response is
    returned to the hub.  In other respects the receiver should treat
    the message in exactly the same way for both patterns.

Al - would that have made it clearer (or did the confusion arise from
text elsewhere)?  Thomas and Mike - any objections?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon May 12 22:31:11 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3F816624166
	for <vomail@fiction.hq.eso.org>; Mon, 12 May 2008 22:31:11 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CKVG1q017134
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 12 May 2008 22:31:16 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CKVGV6017133
	for apps-samp-outgoing; Mon, 12 May 2008 22:31:16 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CKVFZL017126
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 22:31:15 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id CD6661E4023
	for <apps-samp@ivoa.net>; Mon, 12 May 2008 22:33:19 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,475,1204498800"; 
   d="scan'208";a="7223734"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 12 May 2008 22:27:38 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.3])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1Jveft-0006mS-7n
	for apps-samp@ivoa.net; Mon, 12 May 2008 21:31:09 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805121542230.15256@andromeda.star.bris.ac.uk>
References: <CD791EBB-2558-4CB6-A0C5-E3DEF8359644@astro.ex.ac.uk> <Pine.LNX.4.63.0805121542230.15256@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <93B55F84-3345-4A5D-9FC1-C88A06F66B3E@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: callAndWait( ) implementation issues?
Date: Mon, 12 May 2008 21:30:40 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> Alasdair Allan wrote:
>> I'm currently getting a bit worried by the implementation issues  
>> surrounding the callAndWait( ) method in the Hub. The current  
>> scheme is that a client can call this and expect a synchronous  
>> response from the Hub. However there seems to be no way to  
>> synchronously call a client.
>
> interesting point.  You are correct that in order to implement  
> callAndWait() the hub will need to be multithreaded/multiprocess  
> and will require some degree of non-trivial IPC (i.e. more than  
> just wait()/kill()).  Clearly this makes hub implementations in  
> strictly single-threaded languages a non-starter, but I will admit  
> that since the threading features of the language make this sort of  
> thing relatively straightforward in Java, I had not thought about  
> this as a serious burden on implementators in other languages which  
> offer multi-threading or at least access to fork().
>
>> I can certainly go off an implement this model, however this is  
>> going to severely limit the language choice for Hub  
>> implementation. For Perl at least, it means that the Perl binary  
>> will have to be compiled with ithreads enabled, and while mine is,  
>> most peoples aren't. Up till now I've been implementing the Hub  
>> using vanilla Perl, this implies that you won't be able to take  
>> the Perl implementation out of the box.
>
> Although I haven't written serious Perl for quite some while (so  
> don't really know what I'm talking about), I am a bit surprised  
> that this sort of thing would be sufficiently difficult to require  
> a Perl compiled with non-standard options.

Not exactly difficult, just a lot easier using threads than otherwise...

> My sketchy research suggests that it ought not to be too much of a  
> stretch to implement this functionality using SysV style IPC, if  
> available (i.e. if Perl shmget() is implemented), via a module like  
> IPC::Shareable or IPC::ShareLite.

IPC::Sharable is certainly one way of doing it, although I don't  
think it ships with the Perl core I'm already using libraries that  
aren't in the Perl core so that's not a big deal. There are a couple  
of other ways to do it as well, however the easiest way of going  
about things is just (of course) to use threads. Since virtually all  
of my Perl code is threaded I was half way through implementing it  
that way when I realised that the default Perl doesn't come threaded.  
Ooops...

>> However the real problem is that I've got no real feel for how  
>> badly this might affect other languages outside the core three of  
>> Java, Python and Perl.
>
> I'll admit that it does complicate hub implementation, and possibly  
> limits the languages in which hubs can be implemented.  The benefit  
> is that it's easier to write clients.  Either of your suggestions  
> makes it easier to write a hub at the expense of making it harder  
> to write clients:

Agreed, it does indeed. Although having put together a couple of  
clients now, I think that while writing a SAMP client is (a little  
bit) harder than writing the equivalent Plastic client, it's not an  
order of magnitude worse.

>> Comments?
>
> My feeling about this is that the burden on hub developers for  
> implementing callAndWait() is acceptable.  Although we have  
> deliberately moved away from the PLASTIC model which (pretty much)  
> required hubs to be written in java because of the Java RMI  
> requirement, in my opinion this does not mean that we need to bend  
> over backwards to make hub implementation as easy as possible, or  
> to remove barriers to writing hubs in the widest possible variety  
> of languages.

That's fine.

> So in my opinion we should stick with the existing synchronous  
> facade built on asynchronous calls model. Other opinions?

I'm happy enough. It just occured to me that it probably hadn't been  
thought about, so should get mentioned.

Cheers,
Al.

From owner-apps-samp@eso.org  Tue May 13 00:35:23 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 88193624166
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 00:35:22 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CMZUEr004353
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 00:35:30 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4CMZUEN004352
	for apps-samp-outgoing; Tue, 13 May 2008 00:35:30 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4CMZU5S004348
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 00:35:30 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 6E8E51E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 00:37:34 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAHtiKEiJ3jon/2dsb2JhbACsOg
X-IronPort-AV: E=Sophos;i="4.27,475,1204498800"; 
   d="scan'208";a="7225901"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 00:31:52 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvgcD-0004mi-00
	for apps-samp@ivoa.net; Mon, 12 May 2008 23:35:29 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvgcD-0004mX-7C
	for apps-samp@ivoa.net; Mon, 12 May 2008 23:35:29 +0100
Date: Mon, 12 May 2008 23:35:29 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: callAndWait( ) implementation issues?
In-Reply-To: <Pine.LNX.4.63.0805121542230.15256@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.63.0805122331100.18362@andromeda.star.bris.ac.uk>
References: <CD791EBB-2558-4CB6-A0C5-E3DEF8359644@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805121542230.15256@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Mon, 12 May 2008, Mark Taylor wrote:

> My sketchy research suggests that it ought not to be too much of
> a stretch to implement this functionality using SysV style IPC,
> if available (i.e. if Perl shmget() is implemented), via a module like 
> IPC::Shareable or IPC::ShareLite.  These modules work on the Perl which comes 
> with my Linux machine without having to recompile it or anything.  Linux and 
> Mac have SysV IPC.  It looks to me like
> MS Windows is sufficiently POSIXy to have it too, but I haven't tested this.

actually - having tested it, it appears that MS Windows lacks SysV IPC
(at least, ActivePerl 5.8.8.822 on Windows XP does), so a Perl hub
implementation which wanted to be able to run on Windows would need
to use some other, perhaps more fiddly, way of doing the IPC.
It's surely possible though.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Tue May 13 09:51:50 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id E58D96242E0
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 09:51:49 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D7pSrW020494
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 09:51:28 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4D7pSal020493
	for apps-samp-outgoing; Tue, 13 May 2008 09:51:28 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D7pRvC020489
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 09:51:27 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 246641E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 09:53:32 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,478,1204498800"; 
   d="scan'208";a="7232301"
Received: from mailhost.u-strasbg.fr ([130.79.200.158])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 09:47:48 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m4D7pF7T032238
          ; Tue, 13 May 2008 09:51:15 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m4D7qtg21850;
	Tue, 13 May 2008 09:52:55 +0200 (MET DST)
Message-ID: <482948D7.45611987@newb6.u-strasbg.fr>
Date: Tue, 13 May 2008 09:52:55 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
CC: apps-samp@ivoa.net
Subject: Re: notify( ) vs call( )
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
	 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
	 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
	 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
	 <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com>
	 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
	 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
	 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
	 <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
	 <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
	 <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk> <Pine.LNX.4.63.0805121649500.15256@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.158]); Tue, 13 May 2008 09:51:15 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr8.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr8.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Hi,

> > Either way I think this needs to be made more explicit in the specification.
> 
> Evidently it does.  I propose revising section 2.5 as follows:
> 
>     \subsection{Sending and Receiving messages}
>     \label{sect:delivery-outline}
>     (...)
>
> and also adding the following to the end of section 3.9:
> 
>     Note that the two different cases from the receiver's point of view,
>     (...)
>
> Al - would that have made it clearer (or did the confusion arise from
> text elsewhere)?  Thomas and Mike - any objections?

None. I am happy with the revised sections.

Thomas

From owner-apps-samp@eso.org  Tue May 13 09:59:22 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 326E56242C0
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 09:59:22 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D7xOOQ021491
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 09:59:24 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4D7xO1I021490
	for apps-samp-outgoing; Tue, 13 May 2008 09:59:24 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D7xOpR021486
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 09:59:24 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id D40401E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 10:01:28 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,478,1204498800"; 
   d="scan'208";a="7232472"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 09:55:45 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1JvpPq-0007Qa-8T
	for apps-samp@ivoa.net; Tue, 13 May 2008 08:59:18 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805121649500.15256@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com>  <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk>  <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com> <8e768d0805012152x6040b391o3a32cd21f08b5d38@mail.gmail.com> <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk> <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk> <Pine.LNX.4.63.0805121649500.15256@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; format=flowed
Message-Id: <12CF68FF-0A5F-40D5-82F9-5FF3C6B91437@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: notify( ) vs call( )
Date: Tue, 13 May 2008 08:58:52 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> Al - would that have made it clearer (or did the confusion arise from
> text elsewhere)?  Thomas and Mike - any objections?

Nope, that'd make it clearer...

Thanks,
Al.

From owner-apps-samp@eso.org  Tue May 13 10:18:12 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 8ED126242AC
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 10:18:12 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D8IDZL023456
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 10:18:13 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4D8IDhk023455
	for apps-samp-outgoing; Tue, 13 May 2008 10:18:13 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D8ICQG023451
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 10:18:12 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 3925E1E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 10:20:17 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AuQBAJbrKEjRVYT1d2dsb2JhbACSEQEMBQIECQ8FlFeFGg
X-IronPort-AV: E=Sophos;i="4.27,478,1204498800"; 
   d="scan'208";a="7232882"
Received: from an-out-0708.google.com ([209.85.132.245])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 10:14:33 +0200
Received: by an-out-0708.google.com with SMTP id c36so568460ana.36
        for <apps-samp@ivoa.net>; Tue, 13 May 2008 01:18:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        bh=ARJFFIF95GSA8iRjy3TGo8tIxIYDtE6Z/X552zkwCn8=;
        b=fV1BdFoWeBEm2Mh/ng6ie+O7RTVuOdEX2elpL4nqBv4Jj/tIWqFb/BrnkFHfWcMlpAnZspBxj+qm7mFRAFVQFE00VaRDKKgHlErM98wS3XMIO5svkmQynQlSmW7twK2aHnEu+8gm3RQP13A61YtCNlqX4yzkmx5xPU66JcJhuDY=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        b=OIqaTKAKZiysD1LAwrOgxIYMGaUYEGRiGfs3ryTSBNentHudj4q/DHSLL/8uqPj9eChy++h4TV9/X/Zsnu75R2WNvRWyABvnQPsX7EUlhwblvPUbOTBN9nAGLwULyVGHi5gQwqthAWcYheDeM6pZKDmnwuHCncInyL1D+UbPC8o=
Received: by 10.100.194.17 with SMTP id r17mr9289160anf.127.1210666676647;
        Tue, 13 May 2008 01:17:56 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Tue, 13 May 2008 01:17:56 -0700 (PDT)
Message-ID: <8e768d0805130117o3c71cf79te36e20567ca95a51@mail.gmail.com>
Date: Tue, 13 May 2008 01:17:56 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: notify( ) vs call( )
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0805121649500.15256@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>
	 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
	 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
	 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
	 <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
	 <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
	 <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0805121649500.15256@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: 0161534b10c28574
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

On Mon, May 12, 2008 at 10:03 AM, Mark Taylor <m.b.taylor@bristol.ac.uk> wrote:

> No it is not the intention - at least it's not mine, and although we had
> considerable debate and some confusion around this issue in the last few
> weeks I believe it's not the intention of the other authors.
> Mike - [I'm sure you will] shout if you disagree with my clarifications
> below.

    Mark is well-aware, and I think agrees with the idea, that the
current method
names need some attention:  The doc discusses the concept of a Notification,
Request and Reply as distinct "message types"  that correspond to certain
message patterns.  As long as notify()/call() map easily to Notification/Request
message types things are fine, but when you use the
Notification/notify() to send
a Request message because you don't care about the reply, I think we're mixing
message types and message patterns, or at least the vocabulary used to describe
them.
    One way around this is to send() a message and move the idea of whether you
want a response elsewhere (e.g. in the method signature, or in the
envelope of the
message which started the issue of a msg Envelope/Body concept) so it
is less-tied
to the type of message being sent.  I think it is confusing to have a
file.event.load mtype
sent with a call() to require a reply or a file.load as a notify()
because you don't care about
the result:  One mtype is clearly an 'I did this" and the other is a
"I want you to do this",
the reply that may say only "I got the message" doesn't help and I
think we dilute the mtype
by allowing message patterns to corrupt the method names.
    We could delete the Notification/Request/Reply message type
concepts from the
doc to clear up the method name discussion, but I think these are
fundamental ideas
of messaging we need to preserve for later growth


-Mike

From owner-apps-samp@eso.org  Tue May 13 10:20:21 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id BB7C96242AC
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 10:20:21 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D8KOfJ023686
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 10:20:24 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4D8KOgu023685
	for apps-samp-outgoing; Tue, 13 May 2008 10:20:24 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D8KOIN023680
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 10:20:24 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 8DCDE1E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 10:22:28 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,478,1204498800"; 
   d="scan'208";a="7232920"
Received: from mailhost.u-strasbg.fr ([130.79.200.153])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 10:16:44 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m4D8KMvH084152
          ; Tue, 13 May 2008 10:20:22 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m4D8M2g27500;
	Tue, 13 May 2008 10:22:02 +0200 (MET DST)
Message-ID: <48294FAA.FCEB7692@newb6.u-strasbg.fr>
Date: Tue, 13 May 2008 10:22:02 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Luigi Paioro <luigi@lambrate.inaf.it>
CC: SAMP Working Group <apps-samp@ivoa.net>
Subject: Re: SAMP on Windows
References: <4822D213.2060003@lambrate.inaf.it>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.153]); Tue, 13 May 2008 10:20:22 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr3.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=1.5 required=5.0 tests=WEIRD_PORT autolearn=disabled
	version=3.2.4
X-Spam-Level: *
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr3.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Hi Luigi,

[disclaimer : I am not a windows expert, and am ready to be
contradicted]

Thank you for your suggestion.
Using the Windows registry to store SAMP-related items sounds like a
sensible idea. But, while it seems an acceptable additional burden for
the hub implementations to have to access Windows registry, it also
means that SAMP clients will also have to be able to access it. Sure,
there must be some solutions with additional libraries, but this implies
more complexity on the SAMP client side, which I dislike.

For this reason, I think we should stick with the lock file mechanism
even on Windows, and decide a non-ambiguous location where this lock
file will be written/read from. 

Any other opinions on this topic ?

Thomas

Luigi Paioro wrote:
> 
> Hello!
> 
> I have been registered to this mailing list for only a few days and I
> have just read the SAMP protocol working draft 2008-04-30.
> 
> I have seen that the issue concerning the lock file and the hub
> discovery for the Standard Profile on Windows OS have to be discussed
> yet. I don't know whether you have already faced this topic and found a
> general agreement on what is feasible and what is not, but I suggest to
> think about the possibility to store the bootstrap information on the
> Windows Registry. For instance, the Hub could store this record
> (following the example on page 23):
> 
> Hive: HKEY_CURRENT_USER
> Key:  Software\IVOA\SAMP\Hub
> 
> Value Name: samp.secret
> Data Type:  REG_SZ
> Value:      734144fdaab8400a1ec2
> 
> Value Name: samp.hub.xmlrpc.url
> Data Type:  REG_SZ
> Value:      http://andromeda.star.bris.ac.uk:8001/xmlrpc
> 
> Value Name: samp.profile.version
> Data Type:  REG_SZ
> Value:      1.0
> 
> Value Name: samp.yoyodyne.hubid
> Data Type:  REG_SZ
> Value:      c80995f1
> 
> Windows Registry entries can be easily handled with the majority of the
> programming languages used today (Perl, Python, Java, .NET, C, C++, ...,
> with FORTRAN I think it's tough job, but probably feasible with some
> tricks), and it's also possible to restrict the access permissions of
> the Hub key (read access to the current user only).
> 
> Certainly, the use of Windows Registry implies an additional effort for
> the developer when s/he implements a Hub or a library to access the Hub
> (client side), because a different behavior is requested depending on
> the operative system. But I think it is worth it. The use of a typically
> Windows strategy when dealing with Windows, and a typically UNIX-like OS
> strategy when dealing with UNIX-like OS is boring but smarter.
> 
> This is just my opinion and proposal (my two cents). Think about it.
> 
> Regards,
> 
>    Luigi
> 
> --
> 
> Luigi Paioro
> 
> INAF - IASF Milano
> Via Bassini 15, I-20133 Milano, Italy
> 
> Phone  (+39) 02 23 699 470
> Fax    (+39) 02 26 660 17
> Site   http://www.iasf-milano.inaf.it/

From owner-apps-samp@eso.org  Tue May 13 10:34:05 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 417FA6242D5
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 10:34:05 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D8Y8qg025168
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 10:34:08 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4D8Y8IX025167
	for apps-samp-outgoing; Tue, 13 May 2008 10:34:08 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D8Y7oP025163
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 10:34:07 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id F2A031E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 10:36:11 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AuQBACnvKEjRVYT0c2dsb2JhbACSEQEMAwQECQ8FlF2FGg
X-IronPort-AV: E=Sophos;i="4.27,478,1204498800"; 
   d="scan'208";a="7233168"
Received: from an-out-0708.google.com ([209.85.132.244])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 10:30:28 +0200
Received: by an-out-0708.google.com with SMTP id c36so569503ana.36
        for <apps-samp@ivoa.net>; Tue, 13 May 2008 01:34:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        bh=SAESlzLchzd26dcychIupunCYgmQL2CVTpIhooOxYsE=;
        b=bxVq2+MGGql6mQh26mo6Eb01rLGs5xh/YtCL/gCRJRxjK+s6o6lAE0f33AtboZvX9WHq5lHpa2d/r7VVmvjS6KZxZEWr2TmUb87R4NooHYJLTdgR1paSn2LgUkkWdUw4TQ2P7KK5r2QxtOwMviLj6fpzJYZmGYRb+ijhp2kuU6A=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        b=bmDz/gJuPGVmEw5xEKqHBLFxgVvAbZt9zi1xEgDWqFUJ7w8KAkqt9m4aBasMq/zmHX4gSl1zT545dKsZgsmY3/hxA3hC1cNFasw1mCcQQCBGTeGeuwo41UJBGuP87UJBEQhgl5cgUj1xoyi+wcrE1orrxaD6ssXtiRMVoQqhFw0=
Received: by 10.100.47.13 with SMTP id u13mr9356034anu.25.1210667641033;
        Tue, 13 May 2008 01:34:01 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Tue, 13 May 2008 01:34:00 -0700 (PDT)
Message-ID: <8e768d0805130134s272009f7q94f4a98503504fa1@mail.gmail.com>
Date: Tue, 13 May 2008 01:34:00 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Thomas Boch" <boch@newb6.u-strasbg.fr>
Subject: Re: SAMP on Windows
Cc: "Luigi Paioro" <luigi@lambrate.inaf.it>,
        "SAMP Working Group" <apps-samp@ivoa.net>
In-Reply-To: <48294FAA.FCEB7692@newb6.u-strasbg.fr>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <4822D213.2060003@lambrate.inaf.it>
	 <48294FAA.FCEB7692@newb6.u-strasbg.fr>
X-Google-Sender-Auth: ae18a50aa2960e0a
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

I'm also not a Wiindows user;  But, isn't "C:\" a ubiquitous path that could
be used?  If we assume Cygwin is installed, the "/tmp" should also be
available.  Does it need to be more complicated?

-Mike

From owner-apps-samp@eso.org  Tue May 13 11:39:12 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6F7EE6242AC
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 11:39:12 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D9dFNo004483
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 11:39:15 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4D9dF7q004482
	for apps-samp-outgoing; Tue, 13 May 2008 11:39:15 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4D9dDfh004478
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 11:39:13 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 8BBAF1E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 11:41:17 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AuQBAHH+KEjRVYT2c2dsb2JhbACSDwEMAwQECQ8FlFCFKg
X-IronPort-AV: E=Sophos;i="4.27,478,1204498800"; 
   d="scan'208";a="7235533"
Received: from an-out-0708.google.com ([209.85.132.246])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 11:35:33 +0200
Received: by an-out-0708.google.com with SMTP id c36so573748ana.36
        for <apps-samp@ivoa.net>; Tue, 13 May 2008 02:39:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        bh=rexPibFWhqez0r/B8pLQGeL+prOfJXVGJXcTEidhBX4=;
        b=jSLWUkd7iyxYTD7SvOU7kEEP/mk93uwkMu/eDSJcl/L0/6naIiqXSgGqkbxBe1PD+nPcMPLebclM9MdE/5cTS3B5FmVC5sglogc7kkukDmXWltdY+O62LsAp/1qY46tAFIabUpIdYqOzxeBJe6QrgdT+pr9Xchc4iq6jJ6TDXus=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        b=OYhEK5Cb0lEWR2FqBb4fsSf87PaoGDF96sE+9H3shuW882SMtm2NMZKsP7Twq7ejV1U+wJd7XEt6lKS5E3HFXmnr/mAquysQdasGiAKobsy/lTodiKoqp4Lm/Jfy84Vxfnlce68OHm3FUYlQSarrXxhKBVKXhDNT6YVzVN2/btM=
Received: by 10.100.13.5 with SMTP id 5mr9129512anm.86.1210671551418;
        Tue, 13 May 2008 02:39:11 -0700 (PDT)
Received: by 10.100.247.19 with HTTP; Tue, 13 May 2008 02:39:11 -0700 (PDT)
Message-ID: <8e768d0805130239l629943f5xb00ce9baa717a6db@mail.gmail.com>
Date: Tue, 13 May 2008 02:39:11 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: ISSUE: Message-id management
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0805121120330.13792@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk>
	 <8e768d0804301357o7fb91ed1w10e4f0468df5adc7@mail.gmail.com>
	 <Pine.LNX.4.63.0805011536550.31759@andromeda.star.bris.ac.uk>
	 <8e768d0805011130x59092246r93be5f3ace33489b@mail.gmail.com>
	 <Pine.LNX.4.63.0805020854570.8064@andromeda.star.bris.ac.uk>
	 <8e768d0805060230j2fc2409cm457ce31e19be31f1@mail.gmail.com>
	 <Pine.LNX.4.63.0805121120330.13792@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: 0fc36216a7180640
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

> I will try to clarify that footnote as you suggest.  Note however that
> the people who need to worry about this point are hub implementors
> rather than client implementors, so probably not too novice.

To my way of thinking, "implementing SAMP" includes Hubs and clients.
Novice or not, the current words don't do justice to what a separate
hub-msg-id offers without some more explanation.  My 'reflections'
included cases where the hub-msg-id had a timestamp to allow
msg expiration, or encoded-mtypes to deliver only most-recent
messages.   If you can claim checksums, give me at least this
(especially since I'm agreeing with you 8-)).

Cheers,
-Mike

From owner-apps-samp@eso.org  Tue May 13 13:06:45 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B1BF76242D9
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 13:06:45 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DB6jQS015000
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 13:06:45 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4DB6jsi014999
	for apps-samp-outgoing; Tue, 13 May 2008 13:06:45 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DB6iZm014992
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 13:06:44 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 5FD151E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 13:08:49 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAIMTKUiJ3jon/2dsb2JhbACsYQ
X-IronPort-AV: E=Sophos;i="4.27,479,1204498800"; 
   d="scan'208";a="7237693"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 13:03:05 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvsLD-0005nI-00
	for apps-samp@ivoa.net; Tue, 13 May 2008 12:06:43 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvsLD-0005no-AE
	for apps-samp@ivoa.net; Tue, 13 May 2008 12:06:43 +0100
Date: Tue, 13 May 2008 12:06:43 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: notify( ) vs call( )
In-Reply-To: <8e768d0805130117o3c71cf79te36e20567ca95a51@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0805130935220.21515@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk> 
 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk> 
 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk> 
 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk> 
 <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk> 
 <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk> 
 <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk> 
 <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk> 
 <Pine.LNX.4.63.0805121649500.15256@andromeda.star.bris.ac.uk>
 <8e768d0805130117o3c71cf79te36e20567ca95a51@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 13 May 2008, Mike Fitzpatrick wrote:

> On Mon, May 12, 2008 at 10:03 AM, Mark Taylor <m.b.taylor@bristol.ac.uk> wrote:
>
>> No it is not the intention - at least it's not mine, and although we had
>> considerable debate and some confusion around this issue in the last few
>> weeks I believe it's not the intention of the other authors.
>> Mike - [I'm sure you will] shout if you disagree with my clarifications
>> below.
>
>    Mark is well-aware, and I think agrees with the idea, that the
> current method
> names need some attention:  The doc discusses the concept of a Notification,
> Request and Reply as distinct "message types"  that correspond to certain

Although earlier (unpubliciised) versions of the document did do this, 
in the current version I don't think that's the case.  I've tried to 
separate the vocabularies:

    Call/Response  -  message delivery pattern indicating that a
                      response is required
    Notification   -  message delivery pattern indicating that no
                      response is required

    Event          -  message (MType) with semantics indicating
                      "something has happened"
    Request        -  message (MType) with semantics indicating
                      "I want you to do this"

Reply a.k.a. Response is not currently an MType semantic label, since a 
Message goes from the Sender to the Recipient and contains an MType, while
a Response goes in the other direction and does not have an MType of
its own (its semantics are defined by the fact that it is the response
to the MType of the initial Message).  I know that Mike has argued
against that, but as I've explained in an earlier message
(http://www.ivoa.net/forum/apps-samp/0805/0045.htm)
I believe that using an MType in both directions would make it 
much harder to write application code.  I would welcome other people's
opionions on that issue (responses to the message cited above).

> message patterns.  As long as notify()/call() map easily to Notification/Request
> message types things are fine, but when you use the
> Notification/notify() to send
> a Request message because you don't care about the reply, I think we're mixing
> message types and message patterns, or at least the vocabulary used to describe
> them.
>    One way around this is to send() a message and move the idea of whether you
> want a response elsewhere (e.g. in the method signature, or in the
> envelope of the
> message which started the issue of a msg Envelope/Body concept) so it

Distinguishing the two things by method signature is a promising idea,
but it does rely on the ability to overload method names, which 
is not such a good idea for an abstract interface since it may not
fit well with some implementations (e.g. toolkit libraries in 
languages which do not permit overloading).

Providing this information in a message 'envelope' is also a possibility.
At one extreme we could replace all the asynchronous call/notify hub 
methods with just

    send(map message-envelope-and-body)

where the argument encodes recipient ID, message ID, and delivery pattern
information (whether a response is required) as well as the MType and 
parameters and everything else.  This would work just as well as the
way it is currently specified, but my personal feeling is that having
the delivery information provided as separate explicit arguments in the
interface, and the message semantics in a separate argument of its
own (the "message" map) makes it clearer what's going on.

> is less-tied
> to the type of message being sent.  I think it is confusing to have a
> file.event.load mtype
> sent with a call() to require a reply or a file.load as a notify()
> because you don't care about
> the result:  One mtype is clearly an 'I did this" and the other is a
> "I want you to do this",
> the reply that may say only "I got the message" doesn't help and I

I think that by keeping the vocabularies separate (Call/Notify for
delivery patterns and Event/Request for MTypes) we can write text
and define method names which are clear and keep the concepts from
interfering with each other.  For instance I don't have a problem
in Java saying that I'm "calling" a method like 
ActionListener.actionPerformed(ActionEvent event), even though it's
just sending information that an event has happened; and I don't 
see what's wrong with "notifying" another application that I want
them to load a file.

However, since Al has already misunderstood what we've written, 
perhaps I'm being over-optimistic about the potential for confusion.
So, maybe we need method names (and associated terms for delivery
patterns) which are more clearly distinguished from message semantics.
Following your suggestion to use "send" throughout, but wanting
to use different method names for different purposes, how about
making the following method name replacements:

    hub:
       notify[All]()         ->  sendVoid[All]()
       call[All]()           ->  sendAsynch[All]()
       callAndWait()         ->  sendSynch()
    client:
       receiveNotification() -> receiveVoid()
       receiveCall()         -> receiveAsynch()

not particularly elegant, but the best I can think of (other suggestions
welcomed).

>    We could delete the Notification/Request/Reply message type
> concepts from the
> doc to clear up the method name discussion, but I think these are
> fundamental ideas
> of messaging we need to preserve for later growth

As far as the message passing machinery itself goes, none of it
needs to understand the difference between these message types,
so in that sense I believe that this part could be deleted for
simplicity.  However, the concept does throw light on the MType
vocabulary, and as you suggest it may be wise to reserve these
terms and concepts for later use.

So, I'd like to solicit opinions from others on which of the above
approaches is best.  To summarise:

    1. Leave notify()/call() methods as they are;
       Event and Request are terms only used in discussion of MTypes

    2. Leave notify()/call() methods as they are;
       Remove general discussion of distinct Event/Request MType semantics
       (though *.event.* MTypes still exist)

    3. Replace notify()/call() methods by overloaded send() method;
       Event, Request, Notify and Call may be used in discussion of MTypes

    4. Replace notify()/call() methods by single send() method with
       delivery information in message envelope;
       Event, Request, Notify and Call may be used in discussion of MTypes

    5. Replace notify()/call() methods by sendVoid()/sendAsynch();
       Event, Request, Notify and Call may be used in discussion of MTypes

    6. Your idea here.

I am not implacably opposed to any of these, but my favoured options
would be (in order) 1, 2, 5.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Tue May 13 13:29:57 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6F19A6242DB
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 13:29:57 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DBU23K017430
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 13:30:02 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4DBU2HD017429
	for apps-samp-outgoing; Tue, 13 May 2008 13:30:02 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DBU1kc017422
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 13:30:01 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1B3041E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 13:32:06 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,479,1204498800"; 
   d="scan'208";a="7238215"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 13:26:21 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1Jvshf-00033a-8i
	for apps-samp@ivoa.net; Tue, 13 May 2008 12:29:55 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0805130935220.21515@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr>  <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>  <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>  <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>  <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>  <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>  <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>  <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>  <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>  <Pine.LNX.4.63.0805121649500.15256@andromeda.star.bris.ac.uk> <8e768d0805130117o3c71cf79te36e20567ca95a51@mail.gmail.com> <Pine.LNX.4.63.0805130935220.21515@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <F923302C-1CB8-4CBD-82C1-574DC629E64D@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: notify( ) vs call( )
Date: Tue, 13 May 2008 12:29:29 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> However, since Al has already misunderstood what we've written,  
> perhaps I'm being over-optimistic about the potential for confusion.

Maybe we're just being over-optimistic about how smart I am...

> ... how about making the following method name replacements:
>
>    hub:
>       notify[All]()         ->  sendVoid[All]()
>       call[All]()           ->  sendAsynch[All]()
>       callAndWait()         ->  sendSynch()
>    client:
>       receiveNotification() -> receiveVoid()
>       receiveCall()         -> receiveAsynch()
>
> not particularly elegant, but the best I can think of (other  
> suggestions welcomed).

sendNotify[All]()
sendAsynch[All]()
sendSynch[All]()

recieveNotify[All]()
recieveAsynch[All]()

Maybe? Nothing wrong with the word "Notify" it conveys the right  
meaning.

> So, I'd like to solicit opinions from others on which of the above
> approaches is best.  To summarise:
>
>    1. Leave notify()/call() methods as they are;
>       Event and Request are terms only used in discussion of MTypes

I'd be happy with this...

>    2. Leave notify()/call() methods as they are;
>       Remove general discussion of distinct Event/Request MType  
> semantics
>       (though *.event.* MTypes still exist)

I'd be happy with trhis...

>    3. Replace notify()/call() methods by overloaded send() method;
>       Event, Request, Notify and Call may be used in discussion of  
> MTypes

Yuck! I'd argue against this (if I have to)...

>    4. Replace notify()/call() methods by single send() method with
>       delivery information in message envelope;
>       Event, Request, Notify and Call may be used in discussion of  
> MTypes

Yuck! I'd argue (heavily) against this (if I have to)...

>    5. Replace notify()/call() methods by sendVoid()/sendAsynch();
>       Event, Request, Notify and Call may be used in discussion of  
> MTypes

Happy enough with this...

> I am not implacably opposed to any of these, but my favoured options
> would be (in order) 1, 2, 5.

Probably the same order here (although I really don't like 3 and 4).  
I don't think there is anything wrong with the current scheme, I just  
think it needs more explanatory text. The linking between the  
different calls and the MType vocabulary in the draft is too weak.  
Just need a few sentences (under an obviously titled section heading)  
to explain whats going on. A fundamental rethink of the way the calls  
work, don't think so...

Cheers,
Al.

From owner-apps-samp@eso.org  Tue May 13 13:31:19 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A3D2F6242AC
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 13:31:19 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DBVOui017550
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 13:31:24 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4DBVOUu017549
	for apps-samp-outgoing; Tue, 13 May 2008 13:31:24 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DBVNcn017543
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 13:31:23 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 833351E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 13:33:28 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAEsZKUiJ3jon/2dsb2JhbACscg
X-IronPort-AV: E=Sophos;i="4.27,479,1204498800"; 
   d="scan'208";a="7238239"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 13:27:44 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jvsj5-0005tr-00
	for apps-samp@ivoa.net; Tue, 13 May 2008 12:31:23 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jvsj5-0005pc-5e
	for apps-samp@ivoa.net; Tue, 13 May 2008 12:31:23 +0100
Date: Tue, 13 May 2008 12:31:23 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: SAMP on Windows
In-Reply-To: <48294FAA.FCEB7692@newb6.u-strasbg.fr>
Message-ID: <Pine.LNX.4.63.0805131214050.21515@andromeda.star.bris.ac.uk>
References: <4822D213.2060003@lambrate.inaf.it> <48294FAA.FCEB7692@newb6.u-strasbg.fr>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 13 May 2008, Thomas Boch wrote:

> Hi Luigi,
>
> [disclaimer : I am not a windows expert, and am ready to be
> contradicted]
>
> Thank you for your suggestion.
> Using the Windows registry to store SAMP-related items sounds like a
> sensible idea. But, while it seems an acceptable additional burden for
> the hub implementations to have to access Windows registry, it also
> means that SAMP clients will also have to be able to access it. Sure,
> there must be some solutions with additional libraries, but this implies
> more complexity on the SAMP client side, which I dislike.
>
> For this reason, I think we should stick with the lock file mechanism
> even on Windows, and decide a non-ambiguous location where this lock
> file will be written/read from.
>
> Any other opinions on this topic ?

I can see Luigi's suggestion does make sense from a Windows perspective,
but like Thomas I think the additional effort of implementation makes
this quite problematic.  Since registry read/write libraries presumably
only exist for MS Windows, it means that developers would need to
develop and build applications on Windows in order for them to be able
to perform SAMP messaging on Windows.  In the case of Java I think
that registry access would require using a native library (anyone 
know different?) which could constitute a serious obstacle to 
development and deployment.

So I would much rather stick with a lock file if it can be made to work - 
the problem is finding a non-ambiguous location, that is, one which 
can be identified from any language.

Mike Fitzpatrick wrote:

> I'm also not a Wiindows user; But, isn't "C:\" a ubiquitous path that 
> could be used? If we assume Cygwin is installed, the "/tmp" should
> also be available. Does it need to be more complicated?

I don't think we should assume Cygwin, but I like the idea of using C:\.
Probably this should be qualified by a user name so that hubs of multiple
users do not interfere with each other (or is multiple simultaneous
users on the same machine effectively impossible on Windows?).
Can any Windows experts comment on whether this might be problematic,
e.g. is C:\ always present and writable?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Tue May 13 15:22:38 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 521DC6242C0
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 15:22:38 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DDMfo6000943
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 15:22:41 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4DDMfIr000942
	for apps-samp-outgoing; Tue, 13 May 2008 15:22:41 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DDMeju000938
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 15:22:41 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 921F51E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 15:24:45 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEABQzKUiJ3jon/2dsb2JhbACtBQ
X-IronPort-AV: E=Sophos;i="4.27,478,1204498800"; 
   d="scan'208";a="7240757"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 15:19:00 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvuSl-00064b-00
	for apps-samp@ivoa.net; Tue, 13 May 2008 14:22:39 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvuSl-0005xA-RF
	for apps-samp@ivoa.net; Tue, 13 May 2008 14:22:39 +0100
Date: Tue, 13 May 2008 14:22:39 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: MType Spectra vocabulary
In-Reply-To: <200805090907.m4997fXf016854@mercury.hq.eso.org>
Message-ID: <Pine.LNX.4.63.0805131244120.22427@andromeda.star.bris.ac.uk>
References: <200805090907.m4997fXf016854@mercury.hq.eso.org>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 8 May 2008, Mike Fitzpatrick wrote:

> In the discussions before the SAMP draft went public the idea that an MType
> like 'table.load' where the format of the table was left undefined
> clashed mightily
> with the idea that an MType should have a well-defined, unique, meaning.  I'm
> actually with Alasdair that an app should be free to accept a table.load message
> but reply with an error if it can't make sense of it, the idea being
> that an app can
> can subscribe to table.load and be expected to do something reasonable, even
> if later versions would support table.load.votable.v2 as a more specific case.
>
> For this to work, we'd need a concept in SAMP that an app subscribing to
> table.load.votable would be willing to read a table.load message as well, i.e.
> is the MType  a direct string match, do we allow wildcards like table.load.*,
> or is there an implicit subscription to higher-level messages like table.load
> if we explicitly post table.load.votable as an Mtype?
>
> I personally advocate the wildcard or super-class approach since it means
> we don't tie MTypes to a specific version of an app, we instead rely on an app
> to reject a message rather than using the Sender to find a specific match.
> This is more work for the Hub and an idea that didn't survive the draft writing,
> but I do not think the <predecessor> model of simply documenting MTypes
> in-use is viable in the long term and argues against the idea of flexibility.

More work for the hub is not a problem - wildcard matching would not be
all that difficult, and ease of hub implementation is not a high
priority in any case.

However, wildcarding MTypes is problematic for the following reason.

Presumably the point of subscribing to a wildcarded MType is so that
you can receive messages which you didn't know existed.  The trouble
with that is, if you receive a message which you've never heard of
before, you can't have looked at the documentation, so you don't know 
what the message is supposed to mean, or what the supplied parameters 
are supposed to be for, or what kind of return value you should supply.
How are you supposed to process such a message?
It is probably obvious to a human how to guess the syntax 
and semantics for a new message "spectrum.load.fitstable" if they already 
know about "spectrum.load.votable", but it is a mistake to suppose that 
you can do that sort of thing programmatically.

I can only see this working if ancestor (less specific) MTypes are 
required to specify the syntax (parameters and return value) 
and semantics of any possible descendent (more specific) ones.
While that might be workable for a parent like "table.load.*" 
(though can you come up with something which covers both 
"spectrum.load.votable" and "spectrum.load.echelle"?) it would 
be pretty hopeless for "spectrum.*" and completely hopeless for 
the top level "*".

Succinctly: the syntactic and semantic implications of extending an
MType by appending ".something" are not implicit, and it's difficult 
to know how to make them explicit.

Given this consideration, really the only kind of application that can
sensibly subscribe to wildcarded MTypes would be a logging or monitor
application, which makes no attempt at interpretation of message
semantics but just writes them to a log or displays activity in a GUI 
or something.  Even that is somewhat problematic, since it will not 
in general know what form of reply is required (though it could respond 
to all messages which require replies by signalling an error).

Incidentally there was a mechanism to subscribe to all messages in
early versions of PLASTIC, but it was effectively removed for these kinds
of reasons.

I think a much better approach to this sort of thing is to define 
named parameters for given MTypes.  So instead of:

    MType: spectrum.load
    params: url (string) - URL of the spectrum (any format) to load

    MType: spectrum.load.votable
    params: url (string) - URL of the VOTable to load as spectrum

    MType: spectrum.load.fitstable
    params: url (string) - URL of the FITS table (HDU#1) to load as a spectrum

    MType: spectrum.load.fitstable.extnum
    params: url (string) - URL of the FITS table to load as a spectrum
            extnum (SAMP int) - index of HDU in fits file containing table

we have

    MType: spectrum.load
    params: url (string) - URL of the spectrum to load
            format (string) [optional] - format of the resource at url;
                            current known values are "votable" or "fitstable"
            fitsextnum (SAMP int) [optional] - if format="fitstable",
                            the index of the HDU containing the spectrum
                            to load

Labelling and documenting different parameters in this way gives you a
much better chance of being able to work out what's meant by a message,
even if the MType has undergone extension since you read the documentation;
for instance if you come across a value of format="ascii"
you may be able fo figure out what's going on.  With the rule that
you should ignore parameters which you don't know about, it also becomes
possible to extend such MTypes in the future, for instance by adding
something like

           userlabel (string) [optional] - text string used to identify the
                           loaded spectrum to the user

though such extensions will only work if the message can be understood 
to a basic extent when the newer parameter is ignored.

This model also to some extent sidesteps uninteresting but fiddly 
questions like, should we define the MType "spectrum.load.votable.echelle" 
or "spectrum.load.echelle.votable"?

There is a downside to this, which is that if too much of the detail
is put into the parameters rather than the MType then it may not be
possible to subscribe to messages in a sufficiently fine-grained way.
I can think of some possible approaches to that, but I'll leave 
that for now.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Tue May 13 15:56:21 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 9914A6242C0
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 15:56:21 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DDuRSW005676
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 15:56:27 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4DDuRwr005674
	for apps-samp-outgoing; Tue, 13 May 2008 15:56:27 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DDuQBN005669
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 15:56:26 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 957A41E401D
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 15:58:31 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAFY7KUiJ3jon/2dsb2JhbACtAw
X-IronPort-AV: E=Sophos;i="4.27,479,1204498800"; 
   d="scan'208";a="7241704"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 15:52:46 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JvuzR-00068i-00
	for apps-samp@ivoa.net; Tue, 13 May 2008 14:56:25 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JvuzR-00061L-QZ
	for apps-samp@ivoa.net; Tue, 13 May 2008 14:56:25 +0100
Date: Tue, 13 May 2008 14:56:25 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: call( ) and (incorrect?) argument order
In-Reply-To: <92D41936-F7BD-4AF8-BDAC-C8A454FB9055@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0805131454180.23006@andromeda.star.bris.ac.uk>
References: <48186CBF.9705DD77@newb6.u-strasbg.fr> 
 <8e768d0804301115i59818d47s3f0e719a4c157961@mail.gmail.com> 
 <Pine.LNX.4.63.0805011410170.31153@andromeda.star.bris.ac.uk> 
 <8e768d0805012118q2be0b1d8pc80aa390e1f7de74@mail.gmail.com>
 <Pine.LNX.4.63.0805020939460.8064@andromeda.star.bris.ac.uk>
 <8BE28B4D-D93E-4F0E-8941-E0EC06CC41B9@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021213100.9070@andromeda.star.bris.ac.uk>
 <AA9117BE-5C4F-4FAC-AFAA-E58F03BB62D4@astro.ex.ac.uk>
 <Pine.LNX.4.63.0805021333080.9392@andromeda.star.bris.ac.uk>
 <2CC0CE94-9CE4-4193-B35E-12A6D8A5045C@astro.ex.ac.uk>
 <EFC7EF4C-A1C6-43CF-891D-90545E940BDA@astro.ex.ac.uk>
 <075F6630-522C-4DFA-816D-99559FBDFE78@astro.ex.ac.uk>
 <79AC644D-C7EC-45AC-AE9D-7842EE659AA3@astro.ex.ac.uk>
 <88F45F26-B06C-4C32-BE0C-E44150F31054@astro.ex.ac.uk> <4821BA33.220E9603@newb6.u-strasbg.fr>
 <Pine.LNX.4.63.0805121134140.13792@andromeda.star.bris.ac.uk>
 <92D41936-F7BD-4AF8-BDAC-C8A454FB9055@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Mon, 12 May 2008, Alasdair Allan wrote:

> For information, in the pre-alpha hub I shipped last week I flipped the 
> msg-id and message in call( ) and callAll( ). I'm happy either way though...

OK, since nobody else seems to have strong opinions and you've gone 
ahead and done it, I'll modify the ordering in the document to match
your implementation:

    call(string recipient-id, string msg-id, map message)
    callAll(string msg-id, map message)

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Tue May 13 17:50:11 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 262426242C0
	for <vomail@fiction.hq.eso.org>; Tue, 13 May 2008 17:50:11 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DFoHOY021310
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 13 May 2008 17:50:17 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4DFoHLN021309
	for apps-samp-outgoing; Tue, 13 May 2008 17:50:17 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4DFoHDH021303
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 17:50:17 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 306251E402A
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 17:52:22 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAA5VKUib/RCV/2dsb2JhbACtIA
X-IronPort-AV: E=Sophos;i="4.27,480,1204498800"; 
   d="scan'208";a="7244305"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
  by clavius.hq.eso.org with ESMTP; 13 May 2008 17:46:37 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it [155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id m4DFo4HM005768
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 17:50:09 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP id m4DFnwf8028655
	for <apps-samp@ivoa.net>; Tue, 13 May 2008 17:50:00 +0200
Message-ID: <4829B8A6.4040407@lambrate.inaf.it>
Date: Tue, 13 May 2008 17:49:58 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: SAMP Working Group <apps-samp@ivoa.net>
Subject: Re: SAMP on Windows
References: <4822D213.2060003@lambrate.inaf.it> <48294FAA.FCEB7692@newb6.u-strasbg.fr> <Pine.LNX.4.63.0805131214050.21515@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0805131214050.21515@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Luigi Paioro <luigi@lambrate.inaf.it>

> I don't think we should assume Cygwin, but I like the idea of using C:\.
> Probably this should be qualified by a user name so that hubs of multiple
> users do not interfere with each other (or is multiple simultaneous
> users on the same machine effectively impossible on Windows?).
> Can any Windows experts comment on whether this might be problematic,
> e.g. is C:\ always present and writable?


No, it isn't. Usually the System Drive is C: but it could be different 
(although very rarely). Then, instead of using the Windows Registry, I 
would put the lock file in the Windows counterpart of UNIX $HOME, that 
is the %USERPROFILE% environment variable. %USERPROFILE%  should be 
available since Windows NT4 and 2000 and points to

{System Drive}:\windows\Profile under Windows NT4 and 2000
{System Drive}\Documents and Settings\{username} under Window XP
{System Drive}\Users\{username} under Windows Vista

(I verified only Windows XP).

So the developer has only to test the existence of the environment 
variable HOME and/or USERPROFILE, and then s/he can handle the lock file 
exactly in the same way, using the suitable path.

This is just another possibility.


Cheers,

   Luigi

From owner-apps-samp@eso.org  Wed May 14 10:48:48 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id CD8AE6242C0
	for <vomail@fiction.hq.eso.org>; Wed, 14 May 2008 10:48:48 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4E8mggV008291
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 14 May 2008 10:48:42 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4E8mg78008290
	for apps-samp-outgoing; Wed, 14 May 2008 10:48:42 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4E8mg73008286
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 10:48:42 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id AC5CB1E401D
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 10:50:47 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAB9EKkiJ3jon/2dsb2JhbACtcQ
X-IronPort-AV: E=Sophos;i="4.27,485,1204498800"; 
   d="scan'208";a="7264979"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 14 May 2008 10:45:00 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JwCfB-0007W2-00
	for apps-samp@ivoa.net; Wed, 14 May 2008 09:48:41 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JwCfB-0007XK-A0
	for apps-samp@ivoa.net; Wed, 14 May 2008 09:48:41 +0100
Date: Wed, 14 May 2008 09:48:41 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: SAMP on Windows
In-Reply-To: <4829B8A6.4040407@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0805140943510.28820@andromeda.star.bris.ac.uk>
References: <4822D213.2060003@lambrate.inaf.it> <48294FAA.FCEB7692@newb6.u-strasbg.fr>
 <Pine.LNX.4.63.0805131214050.21515@andromeda.star.bris.ac.uk>
 <4829B8A6.4040407@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 13 May 2008, Luigi Paioro wrote:

> No, it isn't. Usually the System Drive is C: but it could be different 
> (although very rarely). Then, instead of using the Windows Registry, I would 
> put the lock file in the Windows counterpart of UNIX $HOME, that is the 
> %USERPROFILE% environment variable. %USERPROFILE%  should be available since 
> Windows NT4 and 2000 and points to
>
> {System Drive}:\windows\Profile under Windows NT4 and 2000
> {System Drive}\Documents and Settings\{username} under Window XP
> {System Drive}\Users\{username} under Windows Vista
>
> (I verified only Windows XP).
>
> So the developer has only to test the existence of the environment variable 
> HOME and/or USERPROFILE, and then s/he can handle the lock file exactly in 
> the same way, using the suitable path.

Luigi,

excellent - USERPROFILE sounds like exactly what we need then. 
It should be easy to implement like that, without requiring too
much system-dependent code, in any sensible language.
Unless anyone disagrees I will amend the text accordingly.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed May 14 11:11:33 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B86F66242AC
	for <vomail@fiction.hq.eso.org>; Wed, 14 May 2008 11:11:33 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4E9Banj011069
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 14 May 2008 11:11:36 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4E9BaTa011068
	for apps-samp-outgoing; Wed, 14 May 2008 11:11:36 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4E9BaB9011064
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 11:11:36 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 8FA831E401D
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 11:13:41 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAPpJKkiJ3jon/2dsb2JhbACtfQ
X-IronPort-AV: E=Sophos;i="4.27,485,1204498800"; 
   d="scan'208";a="7265529"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 14 May 2008 11:07:53 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JwD1L-0007ZS-00
	for apps-samp@ivoa.net; Wed, 14 May 2008 10:11:35 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JwD1L-0007a5-7i
	for apps-samp@ivoa.net; Wed, 14 May 2008 10:11:35 +0100
Date: Wed, 14 May 2008 10:11:35 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: SAMP on Windows
In-Reply-To: <Pine.LNX.4.63.0805140943510.28820@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.63.0805140955110.28820@andromeda.star.bris.ac.uk>
References: <4822D213.2060003@lambrate.inaf.it> <48294FAA.FCEB7692@newb6.u-strasbg.fr>
 <Pine.LNX.4.63.0805131214050.21515@andromeda.star.bris.ac.uk>
 <4829B8A6.4040407@lambrate.inaf.it> <Pine.LNX.4.63.0805140943510.28820@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 14 May 2008, Mark Taylor wrote:

> excellent - USERPROFILE sounds like exactly what we need then. It should be 
> easy to implement like that, without requiring too
> much system-dependent code, in any sensible language.

Having said that: I note for reference here that there is an issue 
with implementing this in java.  This is related to java bug 4787931:

    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4787931

Although you'd expect that the user.home system property in java would
point to USERPROFILE under Windows, it does not (at least up till
java 1.6).  So you have to use the (deprecated) System.getenv() method
instead and retrieve USERPROFILE directly.  Unfortunately, at java 1.4
getenv is not only deprecated but also unimplemented (it throws a
java.lang.Error).  For later versions (1.5 and 1.6), happily, getenv
works again.  This means that it is basically impossible to obtain
the value of USERPROFILE if you are running java 1.4 on Windows.
In this case probably the best thing you can do is to use the
value of user.home, which may or may not give you the right answer.

I don't think there's much that we can do about this - the only 
alternative really would be to define the home directory to be
the value of Java's user.home system property, but that would be
a java-centric solution to a java bug, and I'm certainly not 
advocating it.

Is it worth noting this issue (and perhaps providing a snippet of 
java boilerplate for how to locate the home directory) in the 
Standard Profile section of the document, or would that be cluttering
it too much with language-dependent details?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed May 14 11:28:00 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2714B6242C0;
	Wed, 14 May 2008 11:27:58 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4E9S1YJ013183
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 14 May 2008 11:28:01 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4E9S1Qx013182
	for apps-samp-outgoing; Wed, 14 May 2008 11:28:01 +0200 (MEST)
Message-Id: <200805140928.m4E9S1Qx013182@mercury.hq.eso.org>
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Date: Fri, 9 May 2008 09:05:42 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Isa Barbarisi" <Isa.Barbarisi@sciops.esa.int>
Subject: Re: MType Spectra vocabulary
Cc: "Alasdair Allan" <aa@astro.ex.ac.uk>,
        "SAMP Working Group" <apps-samp@ivoa.net>
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

>  I understand your point of view but I would like to propose some scenarios
> where this could lead to some problem.
>  For example, if VOSpec has to subscribe to both file.load and
> spectrum.load.image, this means that if Aladin broadcasts fits images with
> file.load, VOSpec has to understand that they are not spectra.

Right, but this may legitimately happen anyway.  For example, your intent may
be that file.load is used to load an ascii  spectral line list and
spectrum.load.image
to load data.  In a configuration where another app broadcasts a
file.load you'll still
see the message and will have to check that it isn't the linelist you
can handle and
reject the message (or reply with an error).  Most likely another app would send
you a directed message for the linelist file.load, but you'd still
need to handle the
broadcast case.

The alternative is that we decompose file.load to all possible uses, e.g. a
spectrum.load.linelist, a image.load.filenameList, a
file.photometry.transformations,.....

>  Maybe there is a tricky way to manage all the possible formats and
> everything, but I think the protocol should avoid as much as possible such a
> messy thing. As a SAMP client, I would like to subscribe just to the
> spectrum MTypes in principle, because my application manages just spectra,
> but yes I see this has to be discussed because we don't want to make the
> protocol too much complicate.

Specifying the mtypes to the lowest level of detail is too burdensome
and doesn't
allow much flexibility.  For example, I might want to subscribe to
table.load with the
idea I'd see table.load.votable (see earlier where it isn't decided
this is how things would
work).  Maybe my app doesn't directly understand VOTable, but there's
a service that
does table.convert I can call to get back a FITS file I can understand
and so still
satisfy the table.load.votable message in my own way.   If the service
weren't online,
I might just ignore the message.

-Mike

From owner-apps-samp@eso.org  Wed May 14 11:53:03 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id D1C246242D9;
	Wed, 14 May 2008 11:53:03 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4E9r7MI016394
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 14 May 2008 11:53:07 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4E9r7lv016393
	for apps-samp-outgoing; Wed, 14 May 2008 11:53:07 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4E9r6WQ016389
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 11:53:06 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1BCD01E401D
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 11:55:12 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,485,1204498800"; 
   d="scan'208";a="7266749"
Received: from mailhost.u-strasbg.fr ([130.79.200.152])
  by clavius.hq.eso.org with ESMTP; 14 May 2008 11:49:24 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m4E9qwcU082273
          ; Wed, 14 May 2008 11:52:58 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m4E9sdg29311;
	Wed, 14 May 2008 11:54:39 +0200 (MET DST)
Message-ID: <482AB6DF.F5722468@newb6.u-strasbg.fr>
Date: Wed, 14 May 2008 11:54:39 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
CC: apps-samp@ivoa.net
Subject: Re: SAMP on Windows
References: <4822D213.2060003@lambrate.inaf.it> <48294FAA.FCEB7692@newb6.u-strasbg.fr>
	 <Pine.LNX.4.63.0805131214050.21515@andromeda.star.bris.ac.uk>
	 <4829B8A6.4040407@lambrate.inaf.it> <Pine.LNX.4.63.0805140943510.28820@andromeda.star.bris.ac.uk> <Pine.LNX.4.63.0805140955110.28820@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.152]); Wed, 14 May 2008 11:52:58 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr2.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr2.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Hi,

> Although you'd expect that the user.home system property in java would
> point to USERPROFILE under Windows, it does not (at least up till
> java 1.6).  So you have to use the (deprecated) System.getenv() method
> instead and retrieve USERPROFILE directly.  Unfortunately, at java 1.4
> getenv is not only deprecated but also unimplemented (it throws a
> java.lang.Error).  For later versions (1.5 and 1.6), happily, getenv
> works again.  This means that it is basically impossible to obtain
> the value of USERPROFILE if you are running java 1.4 on Windows.
> In this case probably the best thing you can do is to use the
> value of user.home, which may or may not give you the right answer.

Another (ugly) solution would be to do a system call to retrieve this
value :
String[] cmd = {"cmd", "/c", "echo", "%USERPROFILE%"};
Process p = Runtime.getRuntime().exec(cmd, null);
...


> I don't think there's much that we can do about this - the only
> alternative really would be to define the home directory to be
> the value of Java's user.home system property, but that would be
> a java-centric solution to a java bug, and I'm certainly not
> advocating it.
> 
> Is it worth noting this issue (and perhaps providing a snippet of
> java boilerplate for how to locate the home directory) in the
> Standard Profile section of the document, or would that be cluttering
> it too much with language-dependent details?

Maybe we could briefly note the issue and give a link to a detailed
explanation and possible remedy ?

Cheers,

Thomas

From owner-apps-samp@eso.org  Wed May 14 13:11:37 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id D1F336242C0;
	Wed, 14 May 2008 13:11:37 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4EBBfbU025718
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 14 May 2008 13:11:41 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4EBBfqX025717
	for apps-samp-outgoing; Wed, 14 May 2008 13:11:41 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4EBBeJF025713
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 13:11:40 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id D1DA61E401D
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 13:13:45 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEABpmKkiJ3jon/2dsb2JhbACteA
X-IronPort-AV: E=Sophos;i="4.27,486,1204498800"; 
   d="scan'208";a="7268968"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 14 May 2008 13:07:57 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JwEtX-0007mi-00
	for apps-samp@ivoa.net; Wed, 14 May 2008 12:11:39 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JwEtX-0007o8-AT
	for apps-samp@ivoa.net; Wed, 14 May 2008 12:11:39 +0100
Date: Wed, 14 May 2008 12:11:39 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: ISSUE: Message-id management
In-Reply-To: <8e768d0805130239l629943f5xb00ce9baa717a6db@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0805141207090.29515@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301152090.16612@andromeda.star.bris.ac.uk> 
 <8e768d0804301357o7fb91ed1w10e4f0468df5adc7@mail.gmail.com> 
 <Pine.LNX.4.63.0805011536550.31759@andromeda.star.bris.ac.uk> 
 <8e768d0805011130x59092246r93be5f3ace33489b@mail.gmail.com> 
 <Pine.LNX.4.63.0805020854570.8064@andromeda.star.bris.ac.uk> 
 <8e768d0805060230j2fc2409cm457ce31e19be31f1@mail.gmail.com> 
 <Pine.LNX.4.63.0805121120330.13792@andromeda.star.bris.ac.uk>
 <8e768d0805130239l629943f5xb00ce9baa717a6db@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 13 May 2008, Mike Fitzpatrick wrote:

>> I will try to clarify that footnote as you suggest.  Note however that
>> the people who need to worry about this point are hub implementors
>> rather than client implementors, so probably not too novice.
>
> To my way of thinking, "implementing SAMP" includes Hubs and clients.
> Novice or not, the current words don't do justice to what a separate
> hub-msg-id offers without some more explanation.  My 'reflections'
> included cases where the hub-msg-id had a timestamp to allow
> msg expiration, or encoded-mtypes to deliver only most-recent
> messages.   If you can claim checksums, give me at least this
> (especially since I'm agreeing with you 8-)).

Mike,

I've amended the text as follows:

    There is no requirement on the form of the {\em hub-msg-id\/}
    (it is not intended to be parsed by the recipient), but it must be
    sufficient for the hub to pair messages with their responses reliably,
    and to pass the correct {\em sender-msg-id\/} back with the response
    to the sender\footnote{
       One way a hub might implement this is to generate {\em hub-msg-id\/}
       by concatenating the sender's client id and the {\em sender-msg-id}.
       When any response is received the hub can then unpack the accompanying
       {\em hub-msg-id\/} to find out who the original sender was and what
       {\em sender-msg-id\/} it used.  In this way the hub can determine
       how to pass each response back to its correct sender without
       needing to maintain internal state concerning messages in progress.
       Hub and client implementations may wish to exploit this freedom
       in assigning message IDs for other purposes as well,
       for instance to incorporate timestamps or checksums.
    }.

Hope that looks OK to you.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed May 14 13:49:48 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 454C46242AC;
	Wed, 14 May 2008 13:49:48 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4EBnpk9029626
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 14 May 2008 13:49:51 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4EBnpn7029625
	for apps-samp-outgoing; Wed, 14 May 2008 13:49:51 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4EBnnFS029621
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 13:49:49 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 554B51E401D
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 13:51:54 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAE9uKkiJ3jon/2dsb2JhbACtfA
X-IronPort-AV: E=Sophos;i="4.27,486,1204498800"; 
   d="scan'208";a="7269888"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 14 May 2008 13:46:06 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JwFQm-00003c-00; Wed, 14 May 2008 12:46:00 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JwFQm-0007qa-Ok; Wed, 14 May 2008 12:46:00 +0100
Date: Wed, 14 May 2008 12:46:00 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Mike Fitzpatrick <fitz@noao.edu>, apps-samp@ivoa.net
Subject: MType/mtype
Message-ID: <Pine.LNX.4.63.0805141242340.30153@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Mike

ages ago you pointed out that capitalization needs rationalising
in the document, in particular "MType" or "mtype" or whatever.
Apologies I haven't got round to this before, but I'll do it now.
Since you invented the term, I guess you get to decide what is 
the official capitalisation: MType?  mtype?  mType?  MtYpE?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed May 14 15:51:13 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id ABDBC6242AC;
	Wed, 14 May 2008 15:51:13 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4EDpAas015681
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 14 May 2008 15:51:10 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4EDpAVo015680
	for apps-samp-outgoing; Wed, 14 May 2008 15:51:10 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4EDpATQ015676
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 15:51:10 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 6ECE41E401D
	for <apps-samp@ivoa.net>; Wed, 14 May 2008 15:53:15 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAF+LKkiJ3jon/2dsb2JhbACtcg
X-IronPort-AV: E=Sophos;i="4.27,486,1204498800"; 
   d="scan'208";a="7273316"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 14 May 2008 15:50:40 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JwHNt-0000Jx-00
	for apps-samp@ivoa.net; Wed, 14 May 2008 14:51:09 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JwHNt-000847-7T
	for apps-samp@ivoa.net; Wed, 14 May 2008 14:51:09 +0100
Date: Wed, 14 May 2008 14:51:09 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: ISSUE: getHubID/getSelfID
In-Reply-To: <48186252.A48C69C3@newb6.u-strasbg.fr>
Message-ID: <Pine.LNX.4.63.0805141429440.30764@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0804301154190.16702@andromeda.star.bris.ac.uk>
 <48186252.A48C69C3@newb6.u-strasbg.fr>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 30 Apr 2008, Thomas Boch wrote:

>> Currently there is no easy way for a client to find its own ID.
>> Should there be a getSelfID() method?  Or should this value be
>> returned by the register method (note the Standard Profile register()
>> method currently returns a private key specific to the application,
>> but this is not in general the same as the public id).
>
> I think we can have both. The register method could return a map with
> keys 'private-key' and 'public-id' along with the corresponding values.

On reflection, I think that's a good idea.  If register() returns a map,
it also makes it easier to return additional information to the registering
client if we find in the future that there's something else we haven't
thought of (by just defining a new map key).  In fact it would also possible
to use this to return the hub ID, instead of having a separate getHubId()
method (it's a separate question whether that's an improvement or not).

So we could have in the abstract API (sec 3.10):

     map reg-info = register()

        where reg-info must contain the entries:
           clientid: a string giving the newly registered client's client ID
           hubid:    a string giving the hub's client ID

this being modified in the Standard Profile (sec 4.2):

     map reg-info = register(string samp-secret)

        where reg-info must contain, as well as clientid and hubid, the
        additional entry:
           privatekey: a string giving the client's key for hub communication

similar comments apply to this as about the "ISSUE: Naming of error object
encoding" point - i.e. it might be better to call the keys "samp.clientid"
etc.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May 15 11:43:55 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 22D0E6242C0;
	Thu, 15 May 2008 11:43:55 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4F9hrpS023479
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 15 May 2008 11:43:53 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4F9hr46023478
	for apps-samp-outgoing; Thu, 15 May 2008 11:43:53 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4F9hr1M023474
	for <apps-samp@ivoa.net>; Thu, 15 May 2008 11:43:53 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 247B31E401D
	for <apps-samp@ivoa.net>; Thu, 15 May 2008 11:45:59 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAFGiK0iJ3jon/2dsb2JhbACtbQ
X-IronPort-AV: E=Sophos;i="4.27,490,1204498800"; 
   d="scan'208";a="7295321"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 15 May 2008 11:43:21 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1Jwa08-0001pp-00
	for apps-samp@ivoa.net; Thu, 15 May 2008 10:43:52 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1Jwa08-0001vI-1A
	for apps-samp@ivoa.net; Thu, 15 May 2008 10:43:52 +0100
Date: Thu, 15 May 2008 10:43:52 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Trieste meeting schedules
Message-ID: <Pine.LNX.4.63.0805141318490.30310@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Morning SAMPers,

I've asked Mark Allen to make a slight adjustment to the scheduling of
the Apps WG sessions at Trieste: instead of the two SAMP sessions
occurring on Monday p.m. and Tuesday a.m. with the non-SAMP 
apps sessions later in the week, the second SAMP one will now be
on Wednesday a.m. (i.e. SAMP2 and Applications2 have been switched).
The purpose of this is to allow a bit of breathing space between
SAMP1 and SAMP2 in case it is needed for off-line discussions or
preparing material for the second session in the light of the 
first one.  I hope that this is OK with everyone.

The revised schedule can be seen at

    http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/InterOpMay2008#Program

or

    http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/InterOpMay2008Applications

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May 15 12:03:27 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id BA9716242AC;
	Thu, 15 May 2008 12:03:27 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4FA3VxS026078
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 15 May 2008 12:03:31 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4FA3VLY026076
	for apps-samp-outgoing; Thu, 15 May 2008 12:03:31 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4FA3U4b026072
	for <apps-samp@ivoa.net>; Thu, 15 May 2008 12:03:30 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id AFE351E401D
	for <apps-samp@ivoa.net>; Thu, 15 May 2008 12:05:36 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAAqnK0iJ3jon/2dsb2JhbACtXw
X-IronPort-AV: E=Sophos;i="4.27,491,1204498800"; 
   d="scan'208";a="7295788"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 15 May 2008 12:02:58 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JwaJ7-0001sy-00; Thu, 15 May 2008 11:03:29 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JwaJ5-0001zP-IU; Thu, 15 May 2008 11:03:27 +0100
Date: Thu, 15 May 2008 11:03:27 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Thomas Boch <boch@newb6.u-strasbg.fr>
cc: apps-samp@ivoa.net
Subject: Re: SAMP on Windows
In-Reply-To: <482AB6DF.F5722468@newb6.u-strasbg.fr>
Message-ID: <Pine.LNX.4.63.0805151058530.7595@andromeda.star.bris.ac.uk>
References: <4822D213.2060003@lambrate.inaf.it> <48294FAA.FCEB7692@newb6.u-strasbg.fr>
  <Pine.LNX.4.63.0805131214050.21515@andromeda.star.bris.ac.uk> 
 <4829B8A6.4040407@lambrate.inaf.it> <Pine.LNX.4.63.0805140943510.28820@andromeda.star.bris.ac.uk>
 <Pine.LNX.4.63.0805140955110.28820@andromeda.star.bris.ac.uk>
 <482AB6DF.F5722468@newb6.u-strasbg.fr>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 14 May 2008, Thomas Boch wrote:

>> Is it worth noting this issue (and perhaps providing a snippet of
>> java boilerplate for how to locate the home directory) in the
>> Standard Profile section of the document, or would that be cluttering
>> it too much with language-dependent details?
>
> Maybe we could briefly note the issue and give a link to a detailed
> explanation and possible remedy ?

Yes, that's probably the right approach.  For now I've written the
following:

    Hub discovery is performed by examining a lockfile in a well-known location.
    This has the consequence that in normal operation each user may run
    only one hub, and users do not share hubs.  The name of the lockfile
    is ``{\tt .samp}'' in the user's home directory.
    A ``home directory'' is a somewhat system-dependent concept:
    we define it as the value of the {\tt \$HOME} environment variable on
    Unix-like systems and as the value of the {\tt \%USERPROFILE\%} environment
    variable on Microsoft Windows\footnote{
       Note to Java developers: contrary to what you might expect,
       the {\tt user.home} system property on Windows does {\em not} give you the
       value of {\tt USERPROFILE}.
       See http://bugs.sun.com/bugdatabase/view\_bug.do?bug\_id=4787931.
    }.

Maybe once there is a java reference implementation we can point at that
for boilerplate code to find the home directory.

> Another (ugly) solution would be to do a system call to retrieve this
> value :
> String[] cmd = {"cmd", "/c", "echo", "%USERPROFILE%"};
> Process p = Runtime.getRuntime().exec(cmd, null);
> ...

I hadn't thought of that.  If this works it might be worth adding it
to the Sun bug report referenced above - sounds like it could sort 
out some people's non-SAMP-related woes as well.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu May 15 18:27:36 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id CC47C6242C0;
	Thu, 15 May 2008 18:27:36 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4FGRcc6015879
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 15 May 2008 18:27:38 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4FGRcW5015878
	for apps-samp-outgoing; Thu, 15 May 2008 18:27:38 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4FGRc8l015874
	for <apps-samp@ivoa.net>; Thu, 15 May 2008 18:27:38 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 167691E401D
	for <apps-samp@ivoa.net>; Thu, 15 May 2008 18:29:44 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,492,1204498800"; 
   d="tex'?pdf'?scan'208";a="7305302"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 15 May 2008 18:27:04 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JwgIp-0002XA-00
	for apps-samp@ivoa.net; Thu, 15 May 2008 17:27:35 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JwgIp-0003L4-De
	for apps-samp@ivoa.net; Thu, 15 May 2008 17:27:35 +0100
Date: Thu, 15 May 2008 17:27:35 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: SAMP document current version
Message-ID: <Pine.LNX.4.63.0805151720120.12719@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-561407174-2033512628-1210868855=:12719"
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---561407174-2033512628-1210868855=:12719
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

I attach the current version of the SAMP document.

This has not changed dramatically since the version posted to this list 
on 30 April, but I have applied a few uncontested alterations following
discussions on this list in the last couple of weeks.  If you want to 
know the details, you can use diff to compare the two samp.tex files.

This version is the one which we shall be working from in the discussions
in Trieste.

Note that this does not yet have IVOA Working Draft status, it is 
currently just "inWG".  We expect to issue a WD shortly after the
Interop.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
---561407174-2033512628-1210868855=:12719
Content-Type: APPLICATION/x-tex; name=samp.tex
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.63.0805151727350.12719@andromeda.star.bris.ac.uk>
Content-Description: inWG draft of SAMP doc, RCS revision number 1.17
Content-Disposition: attachment; filename=samp.tex

DQolJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUl
JSUlJQ0KJSAgRm9yIGFuIGNvbnZlcnNpb24gdmlhIGNnaXByaW50IChIVFgp
Og0KJSAgU2VlIGh0dHA6Ly92aXppZXIudS1zdHJhc2JnLmZyL2xvY2FsL21h
bi9jZ2lwcmludC5odHgNClxkZWZcaWZodHh7XGlmZmFsc2V9CSUgTGluZXMg
dXNlZCBvbmx5IGZvciB0aGUgSFRNTCB2ZXJzaW9uDQpcaWZodHgNCiUgLiAu
IC4NCiUgLiAuIC4gRGVmaW5pdGlvbnMgaW4gSFRYIGNvbnRleHQNCiUgLiAu
IC4NClxlbHNlDQpcZG9jdW1lbnRjbGFzc1sxMnB0LG5vdGl0bGVwYWdlLG9u
ZWNvbHVtbl17aXZvYX0NCiUgLiAuIC4NCiUgLiAuIC4gRGVmaW5pdGlvbnMg
aW4gTGFUZVggY29udGV4dA0KJSAuIC4gLg0KXGZpDQolJSUlJSUlJSUlJSUl
JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQ0KDQolJSBDb21t
ZW50L3VuY29tbWVudCBsaW5lcyBiZWxvdyB0byBmb2xsb3cgeW91ciBMYXRl
WCBkaXN0cmlidXRpb24uLi4NCg0KJSUNCiUlIElmIGRvY3VtZW50IGlzIHBy
b2Nlc3NlZCB3aXRoIGxhdGV4LCBkdmlwcyBhbmQgcHMycGRmDQolJQ0KXGlm
eFxwZGZ0ZXh2ZXJzaW9uXHVuZGVmaW5lZCANCiAgXHVzZXBhY2thZ2VbZHZp
cHNde2dyYXBoaWN4fQ0KICBcRGVjbGFyZUdyYXBoaWNzRXh0ZW5zaW9uc3su
ZXBzLC5wc30NCiUlIFVuY29tbWVudCBmb2xsb3dpbmcgbGluZSBpZiB5b3Ug
d2FudCBQREYgdGh1bWJuYWlscw0KJSAgXHVzZXBhY2thZ2VbcHMycGRmXXt0
aHVtYnBkZn0NCiUgZm9yIG9sZCBoeXBlcnJlZiwgdXNlOg0KICBcdXNlcGFj
a2FnZVtwczJwZGZde2h5cGVycmVmfQ0KJSUgZm9yIHJlY2VudCBoeXBlcnJl
ZiwgdXNlOg0KJSAgXHVzZXBhY2thZ2VbcHMycGRmLGJvb2ttYXJrcz10cnVl
LGJvb2ttYXJrc251bWJlcmVkPXRydWUsaHlwZXJ0ZXhuYW1lcz1mYWxzZSxi
cmVha2xpbmtzPXRydWUsJQ0KJSAgY29sb3JsaW5rcyxsaW5rY29sb3I9Ymx1
ZSx1cmxjb2xvcj1ibHVlXXtoeXBlcnJlZn0NCg0KDQoNCiUlDQolJSBlbHNl
IGlmIGRvY3VtZW50IGlzIHByb2Nlc3NlZCB3aXRoIHBkZmxhdGV4DQolJQ0K
XGVsc2UgICAgICAgICAgICAgICAgICAgICAgICANCiAgXHVzZXBhY2thZ2Vb
cGRmdGV4XXtncmFwaGljeH0gJSUgZ3JhcGhpY3MgZm9yIHBkZnRleCAoc3Vw
cG9ydHMgLnBkZiAuanBnIC5wbmcpDQogIFx1c2VwYWNrYWdle2Vwc3RvcGRm
fSAgICAgICAgICUlIHJlcXVpcmVzIGVwc3RvcGRmDQolJSB0aGlzIGlzIHRv
IHN1cHBvcnQgLnBzIGZpbGVzIDoNCiAgXG1ha2VhdGxldHRlcg0KICBcZ0Bh
ZGR0b0BtYWNyb1xHaW5AZXh0ZW5zaW9uc3ssLnBzfQ0KICBcQG5hbWVkZWZ7
R2luQHJ1bGVALnBzfSMxe3twZGZ9ey5wZGZ9e2BwczJwZGYgIzF9fQ0KICBc
bWFrZWF0b3RoZXINCiUlIGNvbW1lbnQgYWJvdmUgbGluZXMgaWYgeW91IGhh
dmUgaW5jbHVkZWQgcHMgZmlsZXMNCiVcRGVjbGFyZUdyYXBoaWNzRXh0ZW5z
aW9uc3sucGRmLC5qcGcsLnBuZ30NCiUlIFVuY29tbWVudCBmb2xsb3dpbmcg
bGluZSBpZiB5b3Ugd2FudCBQREYgdGh1bWJuYWlscw0KJSAgXHVzZXBhY2th
Z2VbcGRmdGV4XXt0aHVtYnBkZn0gICAgDQolJSBmb3Igb2xkIGh5cGVycmVm
LCB1c2U6DQogIFx1c2VwYWNrYWdlW3BzMnBkZl17aHlwZXJyZWZ9DQolIGZv
ciByZWNlbnQgaHlwZXJyZWYsIHVzZToNCiUgIFx1c2VwYWNrYWdlW3BkZnRl
eCxib29rbWFya3M9dHJ1ZSxib29rbWFya3NudW1iZXJlZD10cnVlLGh5cGVy
dGV4bmFtZXM9ZmFsc2UsYnJlYWtsaW5rcz10cnVlLCUNCiUgIGNvbG9ybGlu
a3MsbGlua2NvbG9yPWJsdWUsdXJsY29sb3I9Ymx1ZV17aHlwZXJyZWZ9DQog
IFxwZGZhZGp1c3RzcGFjaW5nPTENClxmaQ0KDQolJSUlJSUlJSUlJSUlJSUl
JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQ0KJSBGb3IgZHJhd2lu
ZyBjb2xvcmVkIHRleHQgYmFja2dyb3VuZHMNClx1c2VwYWNrYWdle2NvbG9y
fQ0KDQolIFJldmlzaW9uIGhpc3RvcnkNCiUgLS0tLS0tLS0tLS0tLS0tLQ0K
JQ0KJSAxNiBhcHJpbCAyMDA4IDogaW5jbHVzaW9uIG9mIE1pa2UgRml0enBh
dHJpY2sncyBzZWN0aW9uIG9uIE1UeXBlcyAoZW1haWwgVHVlLCAxNSBBcHIg
MjAwOCAxNjoxMzo1MSkNCiUgMTEgYXByaWwgMjAwOCA6IGluY2x1c2lvbiBv
ZiBNYXJrIFRheWxvcidzIGNvbW1lbnRzIChlbWFpbCBGcmksIDExIEFwciAy
MDA4IDEyOjE3OjQ2ICswMTAwIChCU1QpKQ0KJSAyOCBhcHJpbCAyMDA4IDog
b3ZlcmhhdWwgYnkgTWFyayBUYXlsb3IgaW5jb3Jwb3JhdGluZyBlbWFpbCBk
aXNjdXNzaW9ucyB0byBkYXRlDQolIDI5IGFwcmlsIDIwMDggOiBhZGRpdGlv
bnMgYW5kIGVkaXRzIGJ5IE1pa2UgRml0enBhdHJpY2sNCiUgMTUgbWF5IDIw
MDggOiBjaGFuZ2VzIG1hZGUgZm9sbG93aW5nIGRpc2N1c3Npb24gb24gYXBw
cy1zYW1wIGxpc3QNCg0KJSUNCiUlICBIZWFkZXIgb2YgdGhlIGRvY3VtZW50
Li4uDQolJQ0KJSBQcm92aWRlIGEgdGl0bGUgZm9yIHlvdXIgZG9jdW1lbnQN
Clx0aXRsZXtTQU1QLCBTaW1wbGUgQXBwbGljYXRpb24gTWVzc2FnaW5nIFBy
b3RvY29sfQ0KJSBHaXZlIGRhdGUgYW5kIHZlcnNpb24gbnVtYmVyDQpcZGF0
ZXsyMDA4LTA1LTE1fQ0KDQolIENob29zZSBvbmUgZG9jdW1lbnQgdHlwZSBm
cm9tIGJlbG93DQolXGl2b2F0eXBle0lWT0EgTm90ZX0NClxpdm9hdHlwZXtJ
Vk9BIFdvcmtpbmcgRHJhZnR9DQolXGl2b2F0eXBle0lWT0EgUHJvcG9zZWQg
UmVjb21tZW5kYXRpb259DQolXGl2b2F0eXBle0lWT0EgUmVjb21tZW5kYXRp
b259DQoNClx2ZXJzaW9uezEuMDB9DQolIEdpdmUgYXV0aG9yIGxpc3Q6IHNl
cGFyYXRlIGRpZmZlcmVudCBhdXRob3JzIHdpdGggXFwNCiUgWW91IGNhbiBh
ZGQgZW1haWwgYWRkcmVzc2VzIHdpdGggbGlua3MgXHVybHttYWlsdG86eW91
cm5hbWVAaXZvYS5uZXR9DQpcYXV0aG9ye1QuIEJvY2ggLSBib2NoQGFzdHJv
LnUtc3RyYXNiZy5mclxcDQogICAgICAgIE0uIEZpdHpwYXRyaWNrIC0gZml0
ekBub2FvLmVkdVxcDQogICAgICAgIE0uIFRheWxvciAtIG0uYi50YXlsb3JA
YnJpcy5hYy51a1xcDQogICAgICAgIC4uLiBcXH0NCg0KXHVybHRoaXN2ZXJz
aW9ue1x1cmx7aHR0cDovL3d3dy5pdm9hLm5ldC8uLi59fQ0KXHVybGxhc3R2
ZXJzaW9ue1x1cmx7aHR0cDovL3d3dy5pdm9hLm5ldC8uLi59fQ0KXHByZXZp
b3VzdmVyc2lvbns/P30NCg0KDQolJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUl
JSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUl
JSUlJSUlJSUlJQ0KXGJlZ2lue2RvY3VtZW50fQ0KDQpcbWFrZXRpdGxlICUg
cHJpbnQgaGVhZGVyIGluIHN0YW5kYXJkIGZvcm0NCg0Ke1xzbWFsbA0KXGJl
Z2lue3ZlcmJhdGltfQ0KRHJhZnQgdmVyc2lvbjogJFJldmlzaW9uOiAxLjE4
ICQgJERhdGU6IDIwMDgvMDUvMTUgMTY6MTc6MjggJA0KXGVuZHt2ZXJiYXRp
bX0NCn0NCg0KXGJlZ2lue2Fic3RyYWN0fQ0KU0FNUCBpcyBhIG1lc3NhZ2lu
ZyBwcm90b2NvbCB0aGF0IGVuYWJsZXMgYXN0cm9ub215IHNvZnR3YXJlIHRv
b2xzIHRvIA0KaW50ZXJvcGVyYXRlIGFuZCBjb21tdW5pY2F0ZS4NCg0KSVZP
QSBtZW1iZXJzIGhhdmUgcmVjb2duaXNlZCB0aGF0IGJ1aWxkaW5nIGEgbW9u
b2xpdGhpYyB0b29sIHRoYXQgYXR0ZW1wdHMgdG8gZnVsZmlsIGFsbCANCnRo
ZSByZXF1aXJlbWVudHMgb2YgYWxsIHVzZXJzIGlzIGltcHJhY3RpY2FsLCBh
bmQgaXQgaXMgYSBiZXR0ZXIgdXNlIG9mIG91ciANCmxpbWl0ZWQgcmVzb3Vy
Y2VzIHRvIGVuYWJsZSBpbmRpdmlkdWFsIHRvb2xzIHRvIHdvcmsgdG9nZXRo
ZXIgYmV0dGVyLiANCk9uZSBlbGVtZW50IG9mIHRoaXMgaXMgZGVmaW5pbmcg
Y29tbW9uIGZpbGUgZm9ybWF0cyBmb3IgdGhlIGV4Y2hhbmdlIG9mIGRhdGEg
DQpiZXR3ZWVuIGRpZmZlcmVudCBhcHBsaWNhdGlvbnMuIEFub3RoZXIgaW1w
b3J0YW50IGNvbXBvbmVudCBpcyBhIG1lc3NhZ2luZyANCnN5c3RlbSB0aGF0
IGVuYWJsZXMgdGhlIGFwcGxpY2F0aW9ucyB0byBzaGFyZSBkYXRhIGFuZCB0
YWtlIGFkdmFudGFnZSBvZiBlYWNoIA0Kb3RoZXIncyBmdW5jdGlvbmFsaXR5
LiBTQU1QIGlzIGludGVuZGVkIHRvIGJ1aWxkIG9uIHRoZSBzdWNjZXNzIG9m
IGEgcHJpb3IgDQptZXNzYWdpbmcgcHJvdG9jb2wsIFBMQVNUSUMsIHdoaWNo
IGhhcyBiZWVuIGluIHVzZSBpbiANCm92ZXIgYSBkb3plbiBhc3Ryb25vbXkg
YXBwbGljYXRpb25zIGZvciB0d28geWVhcnMgYW5kIGhhcyBwcm92ZW4gcG9w
dWxhciB3aXRoIA0KdXNlcnMgYW5kIGRldmVsb3BlcnMuIFNBTVAgaXMgYW4g
SVZPQS1lbmRvcnNlZCBzdGFuZGFyZCB0aGF0IGJ1aWxkcyBvbiB0aGlzIA0K
c3VjY2Vzcy4gSXQgaXMgYWxzbyBpbnRlbmRlZCB0byBmb3JtIGEgZnJhbWV3
b3JrIGZvciBtb3JlIGdlbmVyYWwgbWVzc2FnaW5nIA0KcmVxdWlyZW1lbnRz
Lg0KXGVuZHthYnN0cmFjdH0NCiAgDQpcdGFibGVvZmNvbnRlbnRzDQoNClxz
ZWN0aW9ue0ludHJvZHVjdGlvbn0NCg0KXHN1YnNlY3Rpb257SGlzdG9yeX0N
ClNBTVAgaXMgYSBkaXJlY3QgZGVzY2VuZGVudCBvZiB0aGUgUExBU1RJQyBw
cm90b2NvbCwgd2hpY2ggaW4gdHVybiBncmV3IA0KXHRleHRlbWRhc2ggaW4g
dGhlIFZPVGVjaCBcY2l0ZXt2b3RlY2h9IGZyYW1ld29yayBcdGV4dGVtZGFz
aA0KZnJvbSB0aGUgaW50ZXJvcGVyYWJpbGl0eSB3b3JrIG9mIHRoZSBBbGFk
aW4gXGNpdGV7MjAwMEEmQVMuLjE0My4uLjMzQn0gYW5kIA0KVmlzSVZPIFxj
aXRlezIwMDdIaUEuLi4uMTQuLjYyMkJ9IHRlYW1zLiBXZSBhbHNvIG5vdGUg
dGhlIA0KY29udHJpYnV0aW9uIG9mIHRoZSB0ZWFtIGJlaGluZCB0aGUgZWFy
bGllciBYUEEgcHJvdG9jb2wgXGNpdGV7eHBhfS4gRm9yIG1vcmUgaW5mb3Jt
YXRpb24gDQpvbiBQTEFTVElDJ3MgaGlzdG9yeSBhbmQgcHVycG9zZSBzZWUg
dGhlIElWT0Egbm90ZSB7XGVtIFBMQVNUSUMgLS0tIGEgcHJvdG9jb2wgZm9y
IA0KZGVza3RvcCBhcHBsaWNhdGlvbiBpbnRlcm9wZXJhYmlsaXR5fSBcY2l0
ZXtwbGFzdGljfS4NCg0KU0FNUCBoYXMgc2ltaWxhciBhaW1zIHRvIFBMQVNU
SUMsIGJ1dCANCmluY29ycG9yYXRlcyBsZXNzb25zIGxlYXJudCBmcm9tIHR3
byB5ZWFycyBvZiBwcmFjdGljYWwgZXhwZXJpZW5jZSBhbmQgaWRlYXMgDQpm
cm9tIHBhcnRuZXJzIHdobyB3ZXJlIG5vdCBpbnZvbHZlZCBpbiBQTEFTVElD
J3MgaW5pdGlhbCBkZXNpZ24uIA0KDQpCcm9hZGx5IHNwZWFraW5nLCBTQU1Q
IGlzIGFuIGFic3RyYWN0IGZyYW1ld29yayBmb3INCmxvb3NlbHkgY291cGxl
ZCBhc3luY2hyb25vdXMgUlBDLWxpa2UgYW5kL29yIGV2ZW50LWJhc2VkIGNv
bW11bmljYXRpb24gDQp3aXRoIGV4dGVuc2libGUgbWVzc2FnZSBzZW1hbnRp
Y3MNCnVzaW5nIHN0cnVjdHVyZWQgYnV0IHdlYWtseS10eXBlZCBkYXRhIGFu
ZCBiYXNlZCBvbiBhIGNlbnRyYWwgc2VydmljZSANCnByb3ZpZGluZyBtdWx0
aS1kaXJlY3Rpb25hbCBwdWJsaXNoL3N1YnNjcmliZSBtZXNzYWdlIGJyb2tl
cmluZy4NClRoZXNlIGNvbmNlcHRzIGFyZSBleHBhbmRlZCBvbiBiZWxvdy4N
Ckl0IGF0dGVtcHRzIHRvIG1ha2UgYXMgZmV3IGFzc3VtcHRpb25zIGFzIHBv
c3NpYmxlIGFib3V0IHRoZSB0cmFuc3BvcnQNCmxheWVyIG9yIHByb2dyYW1t
aW5nIGxhbmd1YWdlIHdpdGggd2hpY2ggaXQgaXMgdXNlZC4NCkl0IGFsc28g
ZGVmaW5lcyBhIGBgU3RhbmRhcmQgUHJvZmlsZScnIHdoaWNoIHNwZWNpZmll
cyBob3cgdG8gDQppbXBsZW1lbnQgdGhpcyBmcmFtZXdvcmsgdXNpbmcgWE1M
LVJQQyBhcyB0aGUgdHJhbnNwb3J0IGxheWVyLg0KVGhlIHJlc3VsdCBvZiBj
b21iaW5pbmcgdGhpcyBTdGFuZGFyZCBQcm9maWxlIHdpdGggdGhlIHJlc3Qg
b2YgdGhlIFNBTVANCnN0YW5kYXJkIGlzIGRlbGliZXJhdGVseSBzaW1pbGFy
IGluIGRlc2lnbiB0byBQTEFTVElDLCBhbmQgdGhlIGludGVudGlvbiBpcw0K
dGhhdCBleGlzdGluZyBQTEFTVElDIGFwcGxpY2F0aW9ucyBjYW4gYmUgbW9k
aWZpZWQgdG8gc3BlYWsgU0FNUCANCmluc3RlYWQgd2l0aG91dCBncmVhdCBl
ZmZvcnQuDQoNClxzdWJzZWN0aW9ue1JlcXVpcmVtZW50cyBhbmQgU2NvcGV9
DQpTQU1QIGFpbXMgdG8gYmUgYSBzaW1wbGUgYW5kIGV4dGVuc2libGUgcHJv
dG9jb2wgdGhhdCBpcyBwbGF0Zm9ybSBhbmQgbGFuZ3VhZ2UgDQpuZXV0cmFs
LiANClRoZSBlbXBoYXNpcyBpcyBvbiBhIA0Kc2ltcGxlIHByb3RvY29sIHdp
dGggYSB2ZXJ5IHNoYWxsb3cgbGVhcm5pbmcgY3VydmUgaW4gb3JkZXIgdG8g
ZW5jb3VyYWdlDQphcyBtYW55IGFwcGxpY2F0aW9uIGF1dGhvcnMgYXMgcG9z
c2libGUgdG8gYWRvcHQgaXQuDQpJbiBvdGhlciB3b3JkcyBTQU1QIGlzIGlu
dGVuZGVkIHRvIGRvIHdoYXQgeW91IG5lZWQgbW9zdCBvZiB0aGUgdGltZS4g
VGhlIFNBTVAgYXV0aG9ycyANCmJlbGlldmUgdGhhdCB0aGlzIGlzIHRoZSBi
ZXN0IHdheSB0byBmb3N0ZXIgaW5ub3ZhdGlvbiBhbmQgY29sbGFib3JhdGlv
biBpbg0KYXN0cm9ub215IGFwcGxpY2F0aW9ucy4NCg0KSXQgaXMgaW1wb3J0
YW50IHRvIG5vdGUgdGhlcmVmb3JlIHRoYXQgU0FNUCdzIHNjb3BlIGlzIHJl
YXNvbmFibHkgbW9kZXN0OyBpdCBpcyANCm5vdCBpbnRlbmRlZCB0byBiZSB0
aGUgcGVyZmVjdCBtZXNzYWdpbmcgc29sdXRpb24gZm9yIGFsbCBzaXR1YXRp
b25zLg0KSW4gcGFydGljdWxhciBTQU1QIGl0c2VsZiBoYXMgDQpubyBzdXBw
b3J0IGZvciB0cmFuc2FjdGlvbnMsIGd1YXJhbnRlZWQgbWVzc2FnZSBkZWxp
dmVyeSwgbWVzc2FnZSBpbnRlZ3JpdHkgb3INCm1lc3NhZ2luZyBiZXlvbmQg
YSBzaW5nbGUgbWFjaGluZS4NCkhvd2V2ZXIsIGJ5IGxheWVyaW5nIHRoZSBT
QU1QIGFyY2hpdGVjdHVyZSBvbiB0b3Agb2Ygc3VpdGFibGUNCm1lc3NhZ2lu
ZyBpbmZyYXN0cnVjdHVyZXMgc3VjaCBjYXBhYmlsaXRpZXMgY291bGQgYmUg
cHJvdmlkZWQuDQpUaGVzZSBwb3NzaWJpbGl0aWVzIGFyZSBub3QgZGlzY3Vz
c2VkIGZ1cnRoZXIgaW4gdGhpcyBkb2N1bWVudCwNCmJ1dCB0aGUgaW50ZW50
aW9uIGlzIHRvIHByb3ZpZGUgYW4gYXJjaGl0ZWN0dXJlIHdoaWNoIGlzIHN1
ZmZpY2llbnRseQ0Kb3BlbiB0byBhbGxvdyBmb3Igc3VjaCB0aGluZ3MgaW4g
dGhlIGZ1dHVyZSB3aXRoIGxpdHRsZSBjaGFuZ2UgdG8gdGhlDQpiYXNpY3Mu
DQoNClxzdWJzZWN0aW9ue1R5cGVzIG9mIE1lc3NhZ2luZ30NClxsYWJlbHtz
ZWN0OnR5cGVPZk1zZ2luZ30NCg0KICAgICAgICBTQU1QIGlzIGN1cnJlbnRs
eSBsaW1pdGVkIHRvIGludGVyLWFwcGxpY2F0aW9uIGRlc2t0b3AgbWVzc2Fn
aW5nDQp3aXRoIHRoZSBpZGVhIHRoYXQgdGhlIGJhc2ljIGZyYW1ld29yayBw
cmVzZW50ZWQgaGVyZSBpcyBleHRlbnNpYmxlIHRvIG1lZXQNCmZ1dHVyZSBu
ZWVkcywgYW5kIHNvIGl0IGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBk
b2N1bWVudCB0byBvdXRsaW5lIHRoZQ0KbWFueSB0eXBlcyBvZiBtZXNzYWdp
bmcgc3lzdGVtcyBpbiB1c2UgdG9kYXkgKHRoZXNlIGFyZSBjb3ZlcmVkIGlu
IGRldGFpbA0KaW4gbWFueSBvdGhlciBkb2N1bWVudHMpLiAgV2hpbGUgYmFz
ZWQgb24gZXN0YWJsaXNoZWQgbWVzc2FnaW5nIG1vZGVscywNClNBTVAgaXMg
aW4gbWFueSB3YXlzIGEgaHlicmlkIG9mIHNldmVyYWwgYmFzaWMgbWVzc2Fn
aW5nIGNvbmNlcHRzOyB0aGUNCnByb3RvY29sIGlzIGhvd2V2ZXIgZmxleGli
bGUgZW5vdWdoIHRoYXQgbGF0ZXIgdmVyc2lvbnMgc2hvdWxkIGJlIGFibGUg
dG8NCmludGVyYWN0IGZhaXJseSBlYXNpbHkgd2l0aCBvdGhlciBtZXNzYWdp
bmcgc3lzdGVtcyBiZWNhdXNlIG9mIHRoZSBzaGFyZWQNCm1lc3NhZ2luZyBt
b2RlbHMuDQoNClRoZSBtZXNzYWdpbmcgY29uY2VwdHMgdXNlZCB3aXRoaW4g
U0FNUCBpbmNsdWRlOg0KDQpcYmVnaW57ZGVzY3JpcHRpb259DQpcaXRlbVtQ
dWJsaXNoL1N1YnNjcmliZSBNZXNzYWdpbmc6XQ0KICAgIEEgcHVibGlzaC9z
dWJzY3JpYmUgKHB1Yi9zdWIpIG1lc3NhZ2luZyBzeXN0ZW0gc3VwcG9ydHMg
YW4gZXZlbnQgZHJpdmVuDQogICAgbW9kZWwgd2hlcmUgaW5mb3JtYXRpb24g
Y29uc3VtZXJzIGFuZCBwcm9kdWNlcnMgcGFydGljaXBhdGUgaW4gbWVzc2Fn
ZQ0KICAgIHBhc3NpbmcuICBTQU1QIGFwcGxpY2F0aW9ucyBgYHB1Ymxpc2gn
JyBhIG1lc3NhZ2UsIHdoaWxlIGNvbnN1bWVyDQogICAgYXBwbGljYXRpb25z
IGBgc3Vic2NyaWJlJycgdG8gbWVzc2FnZXMgb2YgaW50ZXJlc3QgYW5kIGNv
bnN1bWUgZXZlbnRzLg0KICAgIFNlbmRpbmcgYXBwbGljYXRpb25zIGFzc29j
aWF0ZSBtZXNzYWdlcyB3aXRoIGEgc3BlY2lmaWMgbWVhbmluZywgYW5kDQog
ICAgdGhlIHVuZGVybHlpbmcgbWVzc2FnaW5nIHN5c3RlbSByb3V0ZXMgbWVz
c2FnZXMgdG8gY29uc3VtZXJzIGJhc2VkIG9uDQogICAgdGhlIG1lc3NhZ2Ug
dHlwZXMgaW4gd2hpY2ggYW4gYXBwbGljYXRpb25zIGhhcyByZWdpc3RlcmVk
IGFuIGludGVyZXN0Lg0KXGl0ZW1bUG9pbnQtdG8tUG9pbnQgTWVzc2FnaW5n
Ol0NCiAgICBJbiBwb2ludCB0byBwb2ludCBtZXNzYWdpbmcgc3lzdGVtcywg
bWVzc2FnZXMgYXJlIHJvdXRlZCB0byBhbg0KICAgIGluZGl2aWR1YWwgY29u
c3VtZXIgd2hpY2ggbWFpbnRhaW5zIGEgcXVldWUgb2YgYGBpbmNvbWluZycn
IG1lc3NhZ2VzLiAgSW4NCiAgICBhIHRyYWRpdGlvbmFsIG1lc3NhZ2UgcXVl
dWUsIGFwcGxpY2F0aW9ucyBzZW5kIG1lc3NhZ2VzIHRvIGEgc3BlY2lmaWVk
DQogICAgcXVldWUgYW5kIGNsaWVudHMgcmV0cmlldmUgdGhlbS4gIEluIFNB
TVAsIHRoZSBtZXNzYWdlIHN5c3RlbSBtYW5hZ2VzDQogICAgdGhlIGRlbGl2
ZXJ5IGFuZCByb3V0aW5nIG9mIG1lc3NhZ2VzLCBidXQgYWxzbyBwZXJtaXRz
IHRoZSBjb25jZXB0IG9mIGENCiAgICBkaXJlY3RlZCBtZXNzYWdlIG1lYW50
IGZvciBkZWxpdmVyeSB0byBhIHNwZWNpZmljIGFwcGxpY2F0aW9uLiAgU0FN
UA0KICAgIGRvZXMgbm90LCBob3dldmVyLCBndWFyYW50ZWUgdGhlIG9yZGVy
IG9mIG1lc3NhZ2UgZGVsaXZlcnkgYXMgd2l0aCBhDQogICAgdHJhZGl0aW9u
YWwgbWVzc2FnZSBxdWV1ZS4NClxpdGVtW0V2ZW50LWJhc2VkIE1lc3NhZ2lu
ZzpdDQogICAgRXZlbnQtYmFzZWQgc3lzdGVtcyBhcmUgc3lzdGVtcyBpbiB3
aGljaCBwcm9kdWNlcnMgZGVsaXZlciBldmVudHMsIGFuZCBpbg0KICAgIHdo
aWNoIG1lc3NhZ2luZyBtaWRkbGV3YXJlIGRlbGl2ZXJzIGV2ZW50cyB0byBj
b25zdW1lcnMgYmFzZWQgdXBvbiBhDQogICAgcHJldmlvdXNseSBzcGVjaWZp
ZWQgaW50ZXJlc3QuICBPbmUgdHlwaWNhbCB1c2FnZSBwYXR0ZXJuIG9mIHRo
ZXNlIHN5c3RlbXMNCiAgICBpcyB0aGUgcHVibGlzaC1zdWJzY3JpYmUgcGFy
YWRpZ20sIGhvd2V2ZXIgdGhlc2Ugc3lzdGVtcyBhcmUgYWxzbyB3aWRlbHkN
CiAgICB1c2VkIGZvciBpbnRlZ3JhdGluZyBsb29zZWx5IGNvdXBsZWQgYXBw
bGljYXRpb24gY29tcG9uZW50cy4gIFNBTVAgYWxsb3dzDQogICAgZm9yIHRo
ZSBjb25jZXB0IHRoYXQgYW4gYGBldmVudCcnIG9jY3VycmVkIGluIHRoZSBz
eXN0ZW0gYW5kIHRoYXQgdGhlc2UNCiAgICBtZXNzYWdlIHR5cGVzIG1heSBo
YXZlIHJlcXVpcmVtZW50cyBkaWZmZXJlbnQgZnJvbSBtZXNzYWdlcyB3aGVy
ZSB0aGUNCiAgICBzZW5kZXIgaXMgdHJ5aW5nIHRvIGludm9rZSBzb21lIGFj
dGlvbiBpbiB0aGUgbmV0d29yayBvZiBhcHBsaWNhdGlvbnMuDQpcaXRlbVtT
eW5jaHJvbm91cyB2cy4gQXN5bmNocm9ub3VzIE1lc3NhZ2luZzpdDQogICAg
QXMgdGhlIHRlcm0gaXMgdXNlZCBpbiB0aGlzIGRvY3VtZW50LCBhIGBgc3lu
Y2hyb25vdXMnJyBtZXNzYWdlIGlzIG9uZQ0KICAgIHdoaWNoIGJsb2NrcyB0
aGUgc2VuZGluZyBhcHBsaWNhdGlvbiBmcm9tIGZ1cnRoZXIgcHJvY2Vzc2lu
ZyB1bnRpbCBhDQogICAgcmVwbHkgaXMgcmVjZWl2ZWQuICBIb3dldmVyLCBT
QU1QIG1lc3NhZ2luZyBpcyBiYXNlZCBvbiBgYGFzeW5jaHJvbm91cycnDQog
ICAgbWVzc2FnZSBhbmQgcmVzcG9uc2UgaW4gdGhhdCB0aGUgZGVsaXZlcnkg
b2YgYSBtZXNzYWdlIGFuZCBpdHMNCiAgICBzdWJzZXF1ZW50IHJlc3BvbnNl
IGFyZSBoYW5kbGVkIGFzIHNlcGFyYXRlIGFjdGl2aXRpZXMgYnkgdGhlDQog
ICAgdW5kZXJseWluZyBzeXN0ZW0uICBXaXRoIHRoZSBleGNlcHRpb24gb2Yg
dGhlIHN5bmNocm9ub3VzIG1lc3NhZ2UNCiAgICBwYXR0ZXJuIHN1cHBvcnRl
ZCBieSB0aGUgc3lzdGVtLCBzZW5kaW5nIG9yIHJlcGx5aW5nIHRvIGEgbWVz
c2FnZSB1c2luZw0KICAgIFNBTVAgYWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRv
IHJldHVybiB0byBvdGhlciBwcm9jZXNzaW5nIHdoaWxlIHRoZQ0KICAgIGRl
dGFpbHMgb2YgdGhlIGRlbGl2ZXJ5IGFyZSBoYW5kbGVkIHNlcGFyYXRlbHku
DQpcZW5ke2Rlc2NyaXB0aW9ufQ0KDQoNClxzdWJzZWN0aW9ue0Fib3V0IHRo
aXMgZG9jdW1lbnR9DQpUaGlzIGRvY3VtZW50IGNvbnRhaW5zIHRoZSBmb2xs
b3dpbmcgbWFpbiBzZWN0aW9ucyBkZXNjcmliaW5nIHRoZSBTQU1QIHByb3Rv
Y29sDQphbmQgaG93IHRvIHVzZSBpdC4NClNlY3Rpb24gXHJlZntzZWN0OmFy
Y2hpdGVjdHVyZX0NCmNvdmVycyB0aGUgcmVxdWlyZW1lbnRzLCBiYXNpYyBj
b25jZXB0cyBhbmQgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgb2YgU0FNUC4NClNl
Y3Rpb24gXHJlZntzZWN0OmFwaXN9IGRlZmluZXMgYWJzdHJhY3QgKGkuZS5c
IGluZGVwZW5kZW50IG9mIGxhbmd1YWdlLA0KcGxhdGZvcm0gYW5kIHRyYW5z
cG9ydCBwcm90b2NvbCkgaW50ZXJmYWNlcyB3aGljaCBjbGllbnRzIGFuZCBo
dWJzIA0KbXVzdCBvZmZlciB0byBwYXJ0aWNpcGF0ZSBpbiBTQU1QIG1lc3Nh
Z2luZywgYWxvbmcgd2l0aCBkYXRhIHR5cGVzDQphbmQgZW5jb2RpbmcgcnVs
ZXMgcmVxdWlyZWQgdG8gdXNlIHRoZW0sIGluY2x1ZGluZyBhbiBhYnN0cmFj
dCBBUEkuDQpTZWN0aW9uIFxyZWZ7c2VjdDpwcm9maWxlfQ0KZXhwbGFpbnMg
aG93IHRoZSBhYnN0cmFjdCBBUEkgY2FuIGJlIG1hcHBlZCB0byBzcGVjaWZp
YyBuZXR3b3JrIG9wZXJhdGlvbnMNCnRvIGZvcm0gYW4gaW50ZXJvcGVyYWJs
ZSBtZXNzYWdpbmcgc3lzdGVtLCBhbmQgZGVmaW5lcyB0aGUgYGBTdGFuZGFy
ZCBQcm9maWxlJycsDQpiYXNlZCBvbiBYTUwtUlBDLCB3aGljaCBnaXZlcyBh
IHBhcnRpY3VsYXIgc2V0IG9mIHN1Y2ggbWFwcGluZ3MuDQpTZWN0aW9uIFxy
ZWZ7c2VjdDptdHlwZXN9DQpkZXNjcmliZXMgdGhlIHVzZSBvZiB0aGUgTVR5
cGUga2V5cyB1c2VkIHRvIGRlbm90ZSBtZXNzYWdlIHNlbWFudGljcywNCmFu
ZCBvdXRsaW5lcyBhbiBNVHlwZSB2b2NhYnVsYXJ5Lg0KDQpUaGUga2V5IHdv
cmRzIGBgTVVTVCcnLCBgYE1VU1QgTk9UJycsIGBgUkVRVUlSRUQnJywgYGBT
SEFMTCcnLCBgYFNIQUxMIE5PVCcnLCANCmBgU0hPVUxEJycsIGBgU0hPVUxE
IE5PVCcnLCBgYFJFQ09NTUVOREVEJycsICBgYE1BWScnLCBhbmQgYGBPUFRJ
T05BTCcnIA0KaW4gdGhpcyBkb2N1bWVudCBhcmUgdG8gYmUgaW50ZXJwcmV0
ZWQgYXMgZGVzY3JpYmVkIGluIFJGQyAyMTE5Lg0KDQpcc2VjdGlvbntBcmNo
aXRlY3R1cmFsIE92ZXJ2aWV3fQ0KXGxhYmVse3NlY3Q6YXJjaGl0ZWN0dXJl
fQ0KVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGEgaGlnaCBsZXZlbCB2aWV3IG9m
IHRoZSBTQU1QIHByb3RvY29sLg0KDQpcc3Vic2VjdGlvbntOb21lbmNsYXR1
cmV9DQpJbiB0aGUgdGV4dCB0aGF0IGZvbGxvd3MgdGhlc2UgdGVybXMgYXJl
IHVzZWQ6IA0KDQpcYmVnaW57ZGVzY3JpcHRpb259DQpcaXRlbVtDbGllbnQ6
XQ0KICAgIEFuIGFwcGxpY2F0aW9uIHRoYXQgdW5kZXJzdGFuZHMgU0FNUC4g
Q291bGQgYmUgYQ0KICAgIFNlbmRlciwgUmVjaXBpZW50LCBvciBib3RoLg0K
XGl0ZW1bSHViOl0NCiAgICBBIGJyb2tlciBzZXJ2aWNlIGZvciByb3V0aW5n
IFNBTVAgTWVzc2FnZXMuDQpcaXRlbVtTZW5kZXI6XQ0KICAgIEEgQ2xpZW50
IHRoYXQgY2FuIHNlbmQgU0FNUCBNZXNzYWdlcyB0bw0KICAgIFJlY2lwaWVu
dHMgdmlhIHRoZSBIdWIuDQpcaXRlbVtSZWNpcGllbnQ6XQ0KICAgIEEgQ2xp
ZW50IHRoYXQgY2FuIHJlY2VpdmUgU0FNUCBNZXNzYWdlcyBmcm9tDQogICAg
dGhlIGh1Yi4gVGhlc2UgbWF5IGhhdmUgb3JpZ2luYXRlZCBmcm9tIG90aGVy
IENsaWVudHMgb3IgYmUgZnJvbSB0aGUNCiAgICBodWIgaXRzZWxmLg0KXGl0
ZW1bTWVzc2FnZTpdDQogICAgQSBjb21tdW5pY2F0aW9uIHNlbnQgZnJvbSBh
IFNlbmRlciB0byBhIFJlY2lwaWVudA0KICAgIHZpYSBhIFNBTVAgSHViLiBN
YXkgb3IgbWF5IG5vdCBwcm92b2tlIGEgUmVzcG9uc2UuDQpcaXRlbVtSZXNw
b25zZTpdDQogICAgQSBjb21tdW5pY2F0aW9uIHdoaWNoIG1heSBiZSByZXR1
cm5lZCBmcm9tIGEgUmVjaXBpZW50IHRvIGEgU2VuZGVyDQogICAgaW4gcmVw
bHkgdG8gYSBwcmV2aW91cyBNZXNzYWdlLiAgQSBSZXNwb25zZSBtYXkgYmUg
ZWl0aGVyIGEgcmV0dXJuIHZhbHVlDQogICAgb3IgYW4gZXJyb3Igb2JqZWN0
LiAgSW4gdGhlIHRlcm1pbm9sb2d5IG9mIHRoaXMgZG9jdW1lbnQsDQogICAg
YSBSZXNwb25zZSBpcyBub3QgaXRzZWxmIGEgTWVzc2FnZS4gIEEgUmVzcG9u
c2UgaXMgYWxzbyBrbm93biBhcyBhDQogICAge1xlbSByZXBseX0gaW4gdGhp
cyBkb2N1bWVudC4NClxpdGVtW01UeXBlOl0NCiAgICBBIGtleSBkZWZpbmlu
ZyB0aGUgc2VtYW50aWNzIG9mIGEgTWVzc2FnZSBhbmQgb2YgaXRzIGFyZ3Vt
ZW50cyBhbmQNCiAgICByZXR1cm4gdmFsdWVzIChpZiBhbnkpLiAgRXZlcnkg
TWVzc2FnZSBjb250YWlucyBleGFjdGx5IG9uZSBNVHlwZSwNCiAgICBhbmQg
YSBNZXNzYWdlIGlzIG9ubHkgZGVsaXZlcmVkIHRvIENsaWVudHMgc3Vic2Ny
aWJlZCB0byB0aGF0IE1UeXBlLg0KXGl0ZW1bU3Vic2NyaWJlZCBDbGllbnQ6
XQ0KICAgIEEgQ2xpZW50IGlzIHNhaWQgdG8gYmUgc3Vic2NyaWJlZCB0byBh
IGdpdmVuIE1UeXBlIGlmIGl0IGhhcw0KICAgIGRlY2xhcmVkIHRvIHRoZSBI
dWIgdGhhdCBpdCBpcyBwcmVwYXJlZCB0byByZWNlaXZlIE1lc3NhZ2VzDQog
ICAgd2l0aCB0aGF0IE1UeXBlLg0KXGl0ZW1bQ2FsbGFibGUgQ2xpZW50Ol0N
CiAgICBBIENsaWVudCB0byB3aGljaCB0aGUgSHViIGlzIGNhcGFibGUgb2Yg
cGVyZm9ybWluZyBjYWxsYmFja3MuDQogICAgQ2xpZW50cyBhcmUgbm90IG9i
bGlnZWQgdG8gYmUgQ2FsbGFibGUgaWYgdGhleSB3aXNoIG9ubHkgdG8gc2Vu
ZA0KICAgIG1lc3NhZ2VzLCBhbmQgbm90IHRvIHJlY2VpdmUgbWVzc2FnZXMg
b3IgYXN5bmNocm9ub3VzIHJlcGxpZXMuDQpcaXRlbVtCcm9hZGNhc3Q6XQ0K
ICAgIFRvIHNlbmQgYSBTQU1QIE1lc3NhZ2UgdG8gYWxsIHN1YnNjcmliZWQg
Y2xpZW50cy4NClxpdGVtW1Byb2ZpbGU6XQ0KICAgIEEgc2V0IG9mIHJ1bGVz
IHdoaWNoIG1hcCB0aGUgYWJzdHJhY3QgQVBJIGRlZmluZWQgYnkgU0FNUCB0
byBhIHNldCBvZg0KICAgIG5ldHdvcmsgb3BlcmF0aW9ucyB3aGljaCBtYXkg
YmUgdXNlZCBieSBDbGllbnRzIHRvIHNlbmQgYW5kIHJlY2VpdmUNCiAgICBh
Y3R1YWwgTWVzc2FnZXMuDQpcZW5ke2Rlc2NyaXB0aW9ufQ0KDQoNClxzdWJz
ZWN0aW9ue01lc3NhZ2luZyBUb3BvbG9neX0NClNBTVAgaGFzIGEgaHViLWJh
c2VkIGFyY2hpdGVjdHVyZSAoc2VlIEZpZ3VyZX5ccmVme2ZpZzpzYW1wLWFy
Y2hpfSkuIFRoZSBodWIgaXMgYSBzaW5nbGUgc2VydmljZSB1c2VkIHRvIHJv
dXRlIGFsbCANCm1lc3NhZ2VzIGJldHdlZW4gY2xpZW50cy4gVGhpcyBtYWtl
cyBhcHBsaWNhdGlvbiBkaXNjb3ZlcnkgbW9yZSANCnN0cmFpZ2h0Zm9yd2Fy
ZCBpbiB0aGF0IGVhY2ggY2xpZW50IG9ubHkgbmVlZHMgdG8gbG9jYXRlIHRo
ZSBodWIsIGFuZCB0aGUgc2VydmljZXMNCnByb3ZpZGVkIGJ5IHRoZSBodWIg
YXJlIGludGVuZGVkIHRvIHNpbXBsaWZ5IHRoZSBhY3Rpb25zIG9mIHRoZSBj
bGllbnQuIEEgZGlzYWR2YW50YWdlIG9mIHRoaXMgDQphcmNoaXRlY3R1cmUg
aXMgdGhhdCB0aGUgaHViIG1heSBiZSBhIG1lc3NhZ2UgYm90dGxlbmVjayBh
bmQgdGhlIGh1YiBtYXkgYmUgdGhlIHNpbmdsZSBwb2ludCBvZiBmYWlsdXJl
LiANCkhvd2V2ZXIsIGl0IGlzIG5vdCBhbnRpY2lwYXRlZCB0aGF0IG1lc3Nh
Z2UgdHJhZmZpYyB3aWxsIGJlIHN1Y2ggdGhhdCB0aGUgDQpmb3JtZXIgaXMg
YW4gaXNzdWUsDQphbmQgdGhlIGxhdHRlciBtYXkgYmUgbWl0aWdhdGVkIGJ5
IGFuIGFwcHJvcHJpYXRlIHN0cmF0ZWd5IGZvciBodWIgcmVzdGFydA0KaWYg
ZmFpbHVyZSBpcyBsaWtlbHkuDQpcYmVnaW57ZmlndXJlfQ0KXGJlZ2lue2Nl
bnRlcn0NClxpbmNsdWRlZ3JhcGhpY3Nbc2NhbGU9MC41XXtzYW1wLWFyY2hp
fQ0KXGNhcHRpb257VGhlIFNBTVAgaHViIGFyY2hpdGVjdHVyZX0NClxsYWJl
bHtmaWc6c2FtcC1hcmNoaX0NClxlbmR7Y2VudGVyfQ0KXGVuZHtmaWd1cmV9
DQoNCk5vdGUgdGhhdCB0aGUgaHViIGlzIGRlZmluZWQgYXMgYSBzZXJ2aWNl
IGludGVyZmFjZSB3aGljaCBtYXkgaGF2ZSBhbnkgb2YNCmEgbnVtYmVyIG9m
IGltcGxlbWVudGF0aW9ucy4gIEl0IG1heSBiZSBhbiBpbmRlcGVuZGVudCBh
cHBsaWNhdGlvbiBydW5uaW5nIGFzDQphIGRhZW1vbiwgYW4gYWRhcHRlciBp
bnRlcmZhY2UgbGF5ZXJlZCBvbiB0b3Agb2YgYW4gZXhpc3RpbmcgbWVzc2Fn
aW5nDQppbmZyYXN0cnVjdHVyZSwgb3IgYSBzZXJ2aWNlIHByb3ZpZGVkIGJ5
IGFuIGFwcGxpY2F0aW9uIHdoaWNoIGlzIGl0c2VsZg0Kb25lIG9mIHRoZSBo
dWIncyBjbGllbnRzLiAgVGhlIG9ubHkgcmVxdWlyZW1lbnQgaXMgdGhhdCBl
eGFjdGx5IG9uZSBodWINCm11c3QgYmUgcnVubmluZyAocGVyIHVzZXItaWQp
IGF0IGEgdGltZSBmb3IgbWVzc2FnaW5nIHRvIHRha2UgcGxhY2UuDQoNCg0K
XHN1YnNlY3Rpb257VGhlIExpZmUgY3ljbGUgb2YgYSBDbGllbnR9DQoNCkEg
U0FNUCBjbGllbnQgZ29lcyB0aHJvdWdoIHRoZSBmb2xsb3dpbmcgcGhhc2Vz
OiANCg0KXGJlZ2lue2VudW1lcmF0ZX0NCglcaXRlbSBEZXRlcm1pbmUgd2hl
dGhlciBhIGh1YiBpcyBydW5uaW5nIGJ5IHVzaW5nIHRoZSBhcHByb3ByaWF0
ZSBodWIgZGlzY292ZXJ5IA0KCW1lY2hhbmlzbQ0KCVxpdGVtIElmIHNvLCB1
c2UgaHViIGRpc2NvdmVyeSBtZWNoYW5pc20gdG8gd29yayBvdXQgaG93IHRv
IGNvbW11bmljYXRlDQogICAgICAgIHdpdGggdGhlIGh1Yi4NCglcaXRlbSBS
ZWdpc3RlciB3aXRoIHRoZSBodWIuDQoJXGl0ZW0gU3RvcmUgbWV0YWRhdGEg
c3VjaCBhcyBjbGllbnQgbmFtZSwgZGVzY3JpcHRpb24gYW5kIGljb24gaW4g
dGhlIA0KCWh1Yi4NCglcaXRlbSBTdWJzY3JpYmUgdG8gYSBsaXN0IG9mIE1U
eXBlcyB0byBkZWZpbmUgbWVzc2FnZXMgd2hpY2ggbWF5IGJlIA0KCXJlY2Vp
dmVkLg0KCVxpdGVtIEludGVycm9nYXRlIHRoZSBodWIgZm9yIG1ldGFkYXRh
IG9mIG90aGVyIGNsaWVudHMuDQoJXGl0ZW0gU2VuZCBhbmQvb3IgcmVjZWl2
ZSBtZXNzYWdlcyB0by9mcm9tIG90aGVyIGNsaWVudHMgdmlhIHRoZSBodWIu
DQoJXGl0ZW0gVW5yZWdpc3RlciB3aXRoIHRoZSBodWIuDQpcZW5ke2VudW1l
cmF0ZX0NCg0KUGhhc2VzIDQtLTcgYXJlIGFsbCBvcHRpb25hbCBhbmQgbWF5
IGJlIHJlcGVhdGVkIGluIGFueSBvcmRlci4gDQoNClxzdWJzZWN0aW9ue1Ro
ZSBMaWZlIGN5Y2xlIG9mIGEgSHVifQ0KQSBTQU1QIGh1YiBnb2VzIHRocm91
Z2ggdGhlIGZvbGxvd2luZyBwaGFzZXM6IA0KDQpcYmVnaW57ZW51bWVyYXRl
fQ0KCVxpdGVtIExvY2F0ZSBhbnkgZXhpc3RpbmcgaHViIGJ5IHVzaW5nIHRo
ZSBhcHByb3ByaWF0ZSBodWIgZGlzY292ZXJ5IG1lY2hhbmlzbS4NCglcYmVn
aW57ZW51bWVyYXRlfQ0KCQlcaXRlbSBDaGVjayB3aGV0aGVyIHRoZSBleGlz
dGluZyBodWIgaXMgYWxpdmUuDQoJCVxpdGVtIElmIHNvLCBleGl0Lg0KCVxl
bmR7ZW51bWVyYXRlfQ0KCVxpdGVtIElmIG5vIGh1YiBpcyBydW5uaW5nLCBv
ciBhIGh1YiBpcyBmb3VuZCBidXQgaXMgbm90IA0KCWZ1bmN0aW9uaW5nLCB3
cml0ZS9vdmVyd3JpdGUgdGhlIGh1YiBkaXNjb3ZlcnkgcmVjb3JkIGFuZCBz
dGFydCB1cC4NCglcaXRlbSBBd2FpdCBjbGllbnQgcmVnaXN0cmF0aW9ucy4g
V2hlbiBhIGNsaWVudCBtYWtlcyBhIGxlZ2FsIA0KCXJlZ2lzdHJhdGlvbiwg
YXNzaWduIGl0IGEgcHVibGljIGlkLA0KICAgIGFuZCBhZGQgdGhlIGFwcGxp
Y2F0aW9uIHRvIHRoZSB0YWJsZSBvZiByZWdpc3RlcmVkIA0KCWNsaWVudHMg
dW5kZXIgdGhlIHB1YmxpYyBpZC4gQnJvYWRjYXN0IGEgbWVzc2FnZSBbcmVm
IHRvIG1lc3NhZ2VzIA0KCXNlY3Rpb24gaGVyZV0gdG8gYWxsIHN1YnNjcmli
ZWQgY2xpZW50cyBhbm5vdW5jaW5nIHRoZSByZWdpc3RyYXRpb24gb2YgYSAN
CgluZXcgY2xpZW50Lg0KCVxpdGVtIFdoZW4gYSBjbGllbnQgc3RvcmVzIG1l
dGFkYXRhIGluIHRoZSBodWIsIGJyb2FkY2FzdCBhIG1lc3NhZ2UgDQoJWy4u
Ll0gdG8gYWxsIGNhbmRpZGF0ZSBjbGllbnRzIGFuZCBtYWtlIHRoZSBtZXRh
ZGF0YSBhdmFpbGFibGUuDQoJXGl0ZW0gV2hlbiBhIGNsaWVudCB1cGRhdGVz
IGl0cyBsaXN0IG9mIHN1YnNjcmliZWQgTVR5cGVzLCBicm9hZGNhc3QgYSAN
CgltZXNzYWdlWy4uLl0gdG8gYWxsIHN1YnNjcmliZWQgY2xpZW50cy4NCglc
aXRlbSBXaGVuIHRoZSBodWIgcmVjZWl2ZXMgYSBtZXNzYWdlIGZvciByZWxh
eWluZywgcGFzcyBpdCBvbiB0byANCglhcHByb3ByaWF0ZSByZWNpcGllbnRz
IHdoaWNoIGFyZSBzdWJzY3JpYmVkIHRvIHRoZSBtZXNzYWdlJ3MgTVR5cGUu
DQoJQnJvYWRjYXN0IG1lc3NhZ2VzIGFyZSBzZW50IHRvIGFsbCANCglzdWJz
Y3JpYmVkIGNsaWVudHMgZXhjZXB0IHRoZSBzZW5kZXIsIG1lc3NhZ2VzIHdp
dGggYSBzcGVjaWZpZWQgcmVjaXBpZW50DQogICAgYXJlIHNlbnQgdG8gdGhh
dCByZWNpcGllbnQgaWYgaXQgaXMgc3Vic2NyaWJlZC4NCglcaXRlbSBBd2Fp
dCBjbGllbnQgdW5yZWdpc3RyYXRpb25zLiBXaGVuIGEgY2xpZW50IHVucmVn
aXN0ZXJzLCBicm9hZGNhc3QgDQoJYSBtZXNzYWdlIFsuLi5dIHRvIGFsbCBz
dWJzY3JpYmVkIGNsaWVudHMgYW5ub3VuY2luZyB0aGUgdW5yZWdpc3RyYXRp
b24gDQoJYW5kIHJlbW92ZSB0aGUgY2xpZW50IGZyb20gdGhlIHRhYmxlIG9m
IHJlZ2lzdGVyZWQgY2xpZW50cy4gDQoJXGl0ZW0gSWYgdGhlIGh1YiBpcyB1
bmFibGUgdG8gY29tbXVuaWNhdGUgd2l0aCBhIGNsaWVudCwgaXQgbWF5IA0K
CXVucmVnaXN0ZXIgaXQgYXMgZGVzY3JpYmVkIGluIHBoYXNlIDcuDQoJXGl0
ZW0gV2hlbiB0aGUgaHViIGlzIGFib3V0IHRvIHNodXRkb3duLCBicm9hZGNh
c3QgYSBtZXNzYWdlWy4uLl0gdG8gDQoJYWxsIHN1YnNjcmliZWQgY2xpZW50
cy4NCglcaXRlbSBEZWxldGUgdGhlIGh1YiBkaXNjb3ZlcnkgcmVjb3JkLg0K
XGVuZHtlbnVtZXJhdGV9DQpQaGFzZXMgMy0tOCBhcmUgcmVzcG9uc2VzIHRv
IGV2ZW50cyB3aGljaCBtYXkgb2NjdXIgDQptdWx0aXBsZSB0aW1lcyBhbmQg
aW4gYW55IG9yZGVyLg0KDQpSZWFkZXJzIHNob3VsZCBub3RlIHRoYXQsIGdp
dmVuIHRoaXMgc2NoZW1lLCByYWNlIGNvbmRpdGlvbnMgbWF5IG9jY3VyLiBX
ZSBjb3VsZA0KaGF2ZSBmb3IgaW5zdGFuY2UgYSBjbGllbnQgdHJ5aW5nIHRv
IHJlZ2lzdGVyIHdpdGggYSBodWIgd2hpY2ggaGFzIGp1c3Qgc2h1dCBkb3du
LA0Kb3IgYW4gYXR0ZW1wdCB0byBzZW5kIHRvIGEgcmVjaXBpZW50IHdoaWNo
IGhhcyBhbHJlYWR5IHVucmVnaXN0ZXJlZC4NClNwZWNpZmljIHByb2ZpbGVz
IE1BWSBkZWZpbmUgYmVzdC1wcmFjdGljZSBydWxlcyBpbiBvcmRlciB0byBt
YW5hZ2UgYXQgYmVzdCB0aGVzZQ0KY29uZGl0aW9ucywNCmJ1dCBpbiBnZW5l
cmFsIGNsaWVudHMgc2hvdWxkIGJlIGF3YXJlIHRoYXQgaW4gdGhlIGFic2Vu
Y2Ugb2YgZ3VhcmFudGVlZA0KbWVzc2FnZSBkZWxpdmVyeSBhbmQgdGltaW5n
LCB1bmV4cGVjdGVkIGNvbmRpdGlvbnMgYXJlIHBvc3NpYmxlLg0KDQpcc3Vi
c2VjdGlvbntNZXNzYWdlIERlbGl2ZXJ5IFBhdHRlcm5zfQ0KXGxhYmVse3Nl
Y3Q6ZGVsaXZlcnktb3V0bGluZX0NCg0KTWVzc2FnZXMgY2FuIGJlIHNlbnQg
YWNjb3JkaW5nIHRvIHRocmVlIHBhdHRlcm5zLCBkaWZmZXJpbmcgaW4gDQpo
b3cgYW5kIHdoZXRoZXIgYSByZXNwb25zZSBpcyByZXR1cm5lZCB0byB0aGUg
c2VuZGVyOg0KXGJlZ2lue2VudW1lcmF0ZX0NCglcaXRlbSBOb3RpZmljYXRp
b24NCglcaXRlbSBBc3luY2hyb25vdXMgQ2FsbC9SZXNwb25zZQ0KCVxpdGVt
IFN5bmNocm9ub3VzIENhbGwvUmVzcG9uc2UNClxlbmR7ZW51bWVyYXRlfQ0K
VGhlIE5vdGlmaWNhdGlvbiBwYXR0ZXJuIGlzIHN0cmljdGx5IG9uZS13YXkg
d2hpbGUgaW4gdGhlIENhbGwvUmVzcG9uc2UNCnBhdHRlcm5zIHRoZSByZWNp
cGllbnQgcmV0dXJucyBhIHJlc3BvbnNlIHRvIHRoZSBzZW5kZXIuDQoNCklm
IHRoZSBzZW5kZXIgZXhwZWN0cyB0byByZWNlaXZlIHNvbWUgdXNlZnVsIGRh
dGEgYXMgYSByZXN1bHQgb2YgdGhlDQpyZWNlaXZlcidzIHByb2Nlc3Npbmcs
IGFuZC9vciBpZiBpdCB3aXNoZXMgdG8gZmluZCBvdXQgd2hldGhlciBhbmQN
CndoZW4gdGhlIHByb2Nlc3NpbmcgaXMgY29tcGxldGVkLCBpdCBzaG91bGQg
dXNlIG9uZSBvZiB0aGUgQ2FsbC9SZXNwb25zZQ0KdmFyaWFudHMuICBJZiBv
biB0aGUgb3RoZXIgaGFuZCB0aGUgc2VuZGVyIGhhcyBubyBpbnRlcmVzdCBp
biB3aGF0DQp0aGUgcmVjaXBpZW50IGRvZXMgd2l0aCB0aGUgbWVzc2FnZSBv
bmNlIGl0IGhhcyBiZWVuIHNlbnQsIGl0DQptYXkgdXNlIHRoZSBOb3RpZmlj
YXRpb24gcGF0dGVybi4gIE5vdGlmaWNhdGlvbiwgc2luY2UgaXQgaW52b2x2
ZXMNCm5vIGNvbW11bmljYXRpb24gYmFjayBmcm9tIHRoZSByZWNpcGllbnQg
dG8gdGhlIHNlbmRlciwgdXNlcw0KZmV3ZXIgcmVzb3VyY2VzLg0KQWx0aG91
Z2ggdHlwaWNhbGx5IGBgZXZlbnQnJy10eXBlIG1lc3NhZ2VzIHdpbGwgYmUg
c2VudCB1c2luZyBOb3RpZnkNCmFuZCBgYHJlcXVlc3QtZm9yLWluZm9ybWF0
aW9uJyctdHlwZSBtZXNzYWdlcyB3aWxsIGJlIHNlbnQgdXNpbmcNCkNhbGwv
UmVzcG9uc2UsIHRoZSBjaG9pY2Ugb2Ygd2hpY2ggZGVsaXZlcnkgcGF0dGVy
biB0byB1c2UgaXMNCmVudGlyZWx5IGRpc3RpbmN0IGZyb20gdGhlIGNvbnRl
bnQgb2YgdGhlIG1lc3NhZ2UsIGFuZCBpcyB1cCB0bw0KdGhlIHNlbmRlcjsg
YW55IG1lc3NhZ2UgKE1UeXBlKSBtYXkgYmUgc2VudCB1c2luZyBhbnkgb2Yg
dGhlIGFib3ZlDQpwYXR0ZXJucy4NCkFwYXJ0IGZyb20gdGhlIGZhY3Qgb2Yg
cmV0dXJuaW5nIG9yIG5vdCByZXR1cm5pbmcgYSByZXNwb25zZSwNCnRoZSBy
ZWNpcGllbnQgc2hvdWxkIHByb2Nlc3MgbWVzc2FnZXMgaW4gZXhhY3RseSB0
aGUgc2FtZSB3YXkgDQpyZWdhcmRsZXNzIG9mIHdoaWNoIHBhdHRlcm4gaXMg
dXNlZC4NCg0KRnJvbSB0aGUgcmVjZWl2ZXIncyBwb2ludCBvZiB2aWV3IHRo
ZXJlIGFyZSBvbmx5IHR3byBjYXNlcywNCk5vdGlmaWNhdGlvbiBhbmQgQXN5
bmNocm9ub3VzIENhbGwvUmVzcG9uc2UuDQpIb3dldmVyIHRoZSBodWIgcHJv
dmlkZXMgYSBjb252ZW5pZW5jZQ0KbWV0aG9kIHdoaWNoIHNpbXVsYXRlcyBh
IHN5bmNocm9ub3VzIGNhbGwgZnJvbSB0aGUgc2VuZGVyJ3MgcG9pbnQgb2Yg
dmlldy4NClRoZSBwdXJwb3NlIG9mIHRoaXMgaXMgdG8gc2ltcGxpZnkgdGhl
IHVzZSBvZiB0aGUgcHJvdG9jb2wNCmluIHN1Y2ggc2l0dWF0aW9ucyBhcyBz
Y3JpcHRpbmcgZW52aXJvbm1lbnRzIHdoaWNoIGNhbm5vdCBlYXNpbHkgaGFu
ZGxlDQphc3luY2hyb25pY2l0eS4gIEhvd2V2ZXIsIGl0IGlzIHJlY29tbWVu
ZGVkIHRvIHVzZSB0aGUgYXN5bmNocm9ub3VzIHBhdHRlcm4NCndoZXJlIHBv
c3NpYmxlIGR1ZSB0byBpdHMgZ3JlYXRlciByb2J1c3RuZXNzLg0KDQpcc3Vi
c2VjdGlvbntVc2Ugb2YgUHJvZmlsZXN9DQpcbGFiZWx7c2VjdDpwcm9maWxl
c30NCg0KVGhlIGRlc2lnbiBvZiBTQU1QIGlzIGJhc2VkIG9uIHRoZSBhYnN0
cmFjdCBpbnRlcmZhY2VzDQpkZWZpbmVkIGluIFNlY3Rpb25+XHJlZntzZWN0
OmFwaXN9LiAgT24gaXRzIG93biBob3dldmVyLCB0aGlzIGRvZXMNCm5vdCBp
bmNsdWRlIHRoZSBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgcmVxdWlyZWQgYnkg
YXBwbGljYXRpb24gZGV2ZWxvcGVycw0KdG8gYWNoaWV2ZSBpbnRlcm9wZXJh
YmlsaXR5LiAgVG8gYWNoaWV2ZSB0aGF0LCBhcHBsaWNhdGlvbiBkZXZlbG9w
ZXJzDQptdXN0IGtub3cgaG93IHRvIG1hcCB0aGUgb3BlcmF0aW9ucyBpbiB0
aGUgYWJzdHJhY3QgU0FNUCBpbnRlcmZhY2VzIA0KdG8gc3BlY2lmaWMgSS9P
DQooaW4gbW9zdCBjYXNlcywgbmV0d29yaykgb3BlcmF0aW9ucy4gIEl0IGlz
IHRoZXNlIEkvTyBvcGVyYXRpb25zDQp3aGljaCBhY3R1YWxseSBmb3JtIHRo
ZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gYXBwbGljYXRpb25zLg0KVGhlIHJ1
bGVzIGRlZmluaW5nIHRoaXMgbWFwcGluZyBmcm9tIGludGVyZmFjZSB0byBJ
L08gb3BlcmF0aW9ucw0KYXJlIHdoYXQgY29uc3RpdHV0ZSBhIFNBTVAgYGBQ
cm9maWxlJycNCih0aGUgdGVybSBgYEltcGxlbWVudGF0aW9uJycgd2FzIGNv
bnNpZGVyZWQgZm9yIHRoaXMgcHVycG9zZSwgYnV0IHJlamVjdGVkDQpiZWNh
dXNlIGl0IGhhcyB0b28gbWFueSBvdmVybGFwcGluZyBtZWFuaW5ncyBpbiB0
aGlzIGNvbnRleHQpLg0KDQpUaGVyZSBhcmUgdHdvIHdheXMgaW4gd2hpY2gg
c3VjaCBhIFByb2ZpbGUgY2FuIGJlIHNwZWNpZmllZCBhcyBmYXIgYXMNCmNs
aWVudCBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIGFyZSBjb25jZXJuZWQ6DQpc
YmVnaW57ZW51bWVyYXRlfQ0KXGl0ZW0gQnkgZGVzY3JpYmluZyBleGFjdGx5
IHdoYXQgYnl0ZXMgYXJlIHRvIGJlIHNlbnQgdXNpbmcgd2hhdCB3aXJlDQog
ICAgICBwcm90b2NvbHMgZm9yIGVhY2ggU0FNUCBpbnRlcmZhY2Ugb3BlcmF0
aW9uDQpcaXRlbSBCeSBwcm92aWRpbmcgb25lIG9yIG1vcmUgbGFuZ3VhZ2Ut
c3BlY2lmaWMgbGlicmFyaWVzIHdpdGggY2FsbHMgDQogICAgICB3aGljaCBl
cXVhdGUgdG8gdGhvc2Ugb2YgdGhlIFNBTVAgaW50ZXJmYWNlDQpcZW5ke2Vu
dW1lcmF0ZX0NCkFsdGhvdWdoIGVpdGhlciBpcyBwb3NzaWJsZSwgU0FNUCBp
cyB3ZWxsLXN1aXRlZCBmb3IgYXBwcm9hY2ggKDEpIGFib3ZlDQpnaXZlbiBh
IHN1aXRhYmxlIGxvdy1sZXZlbCB0cmFuc3BvcnQgbGlicmFyeS4NClRoaXMg
aXMgdGhlIGNhc2Ugc2luY2UgdGhlIG9wZXJhdGlvbnMgYXJlIHF1aXRlIGxv
dy1sZXZlbCwgDQpzbyBjbGllbnQgYXBwbGljYXRpb25zIGNhbiBlYXNpbHkN
CnBlcmZvcm0gdGhlbSB3aXRob3V0IHJlcXVpcmluZyBhbiBpbmRlcGVuZGVu
dGx5IGRldmVsb3BlZCBTQU1QIGxpYnJhcnkuDQpUaGlzIGhhcyB0aGUgYWRk
aXRpb25hbCBhZHZhbnRhZ2VzIHRoYXQgY2VudHJhbCBlZmZvcnQgZG9lcyBu
b3QgaGF2ZSB0bw0KYmUgZXhwZW5kZWQgaW4gcHJvZHVjaW5nIGxhbmd1YWdl
LXNwZWNpZmljIGxpYnJhcmllcywgYW5kIHRoYXQgdGhlcmUNCmFyZSBubyBw
cm9ibGVtcyBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcGVycyB1c2luZyBgYHVu
c3VwcG9ydGVkJycgbGFuZ3VhZ2VzLg0KDQpTZWN0aW9uflxyZWZ7c2VjdDpw
cm9maWxlfSBkZXNjcmliZXMgYSBQcm9maWxlIGFsb25nIHRoZSBsaW5lcyBv
ZiAoMSkgYWJvdmUsDQpiYXNlZCBvbiBYTUwtUlBDLCANCndoaWNoIGNhbiBi
ZSB1c2VkIGRpcmVjdGx5IGJ5IGNsaWVudCBhbmQgaHViIGRldmVsb3BlcnMs
IA0KaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgYWJzdHJhY3QgaW50ZXJmYWNl
IGRlc2NyaXB0aW9uDQppbiBTZWN0aW9uflxyZWZ7c2VjdDphcGlzfSB0byB3
cml0ZSBpbnRlcm9wZXJhYmxlIGFwcGxpY2F0aW9ucy4NClRoaXMgaXMgYXQg
cHJlc2VudCB0aGUgb25seSBTQU1QIFByb2ZpbGUgd2hpY2ggaGFzIGJlZW4g
ZGVmaW5lZC4NCg0KQWx0aG91Z2ggc3BsaXR0aW5nIHRoZSBhYnN0cmFjdCBp
bnRlcmZhY2UgYW5kIFByb2ZpbGUgZGVzY3JpcHRpb25zIA0KaW4gdGhpcyB3
YXkgY29tcGxpY2F0ZXMgdGhlIGRvY3VtZW50DQphIGxpdHRsZSwgaXQgc2Vw
YXJhdGVzIHRoZSBiYXNpYyBkZXNpZ24gcHJpbmNpcGxlcyBmcm9tIHRoZSBk
ZXRhaWxzDQpvZiBob3cgdG8gYXBwbHkgdGhlbSwgYW5kIGl0IG9wZW5zIHRo
ZSBkb29yIGZvciBvdGhlciBQcm9maWxlcw0Kc2VydmluZyBvdGhlciB1c2Ug
Y2FzZXMgaW4gdGhlIGZ1dHVyZS4gDQoNCg0KXHNlY3Rpb257QWJzdHJhY3Qg
QVBJcyBhbmQgRGF0YSBUeXBlc30NClxsYWJlbHtzZWN0OmFwaXN9DQoNClxz
dWJzZWN0aW9ue0h1YiBEaXNjb3ZlcnkgTWVjaGFuaXNtfQ0KXGxhYmVse3Nl
Y3Q6aHViLWRpc2NvdmVyeX0NCg0KSW4gb3JkZXIgdG8ga2VlcCB0cmFjayBv
ZiB3aGljaCBodWIgaXMgcnVubmluZywgYSBodWIgZGlzY292ZXJ5IG1lY2hh
bmlzbSwgY2FwYWJsZSANCm9mIHN0b3JpbmcgaW5mb3JtYXRpb24gYWJvdXQg
aG93IHRvIGRldGVybWluZSB0aGUgZXhpc3RlbmNlIG9mIGFuZCBjb21tdW5p
Y2F0ZSB3aXRoIA0KYSBydW5uaW5nIGh1YiwgaXMgbmVlZGVkLiBUaGlzIGlz
IGEgUHJvZmlsZS1zcGVjaWZpYyBtYXR0ZXIgYW5kDQphIHNwZWNpZmljIHBy
ZXNjcmlwdGlvbiB3aWxsIGJlIGRlc2NyaWJlZCBpbiBccmVme3NlY3Q6bG9j
a2ZpbGV9Lg0KDQpcc3Vic2VjdGlvbntDb21tdW5pY2F0aW5nIHdpdGggdGhl
IGh1Yn0NClRoZSBkZXRhaWxzIG9mIGhvdyBhIGNsaWVudCBjb21tdW5pY2F0
ZXMgd2l0aCB0aGUgaHViIGFyZSBQcm9maWxlLXNwZWNpZmljDQphbmQgd2ls
bCBiZSBjb3ZlcmVkIGluIHNlY3Rpb24gXHJlZntzZWN0OnByb2ZpbGV9Lg0K
DQpcc3Vic2VjdGlvbntSZWdpc3RlcmluZyB3aXRoIHRoZSBodWJ9DQoNCkEg
Y2xpZW50IHJlZ2lzdGVycyB3aXRoIHRoZSBodWIgdG86DQpcYmVnaW57ZW51
bWVyYXRlfSANCiAgICBcaXRlbSBlc3RhYmxpc2ggY29tbXVuaWNhdGlvbiB3
aXRoIHRoZSBodWINCiAgICBcaXRlbSBhZHZlcnRpc2UgaXRzIHByZXNlbmNl
IHRvIHRoZSBodWIgYW5kIHRvIG90aGVyIGNsaWVudHMNClxlbmR7ZW51bWVy
YXRlfQ0KSW1tZWRpYXRlbHkgZm9sbG93aW5nIHJlZ2lzdHJhdGlvbiwgdGhl
IGNsaWVudCB3aWxsIHR5cGljYWxseQ0KcGVyZm9ybSBzb21lIG9yIGFsbCBv
ZiB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIG9wZXJhdGlvbnM6DQpcYmVnaW57
ZW51bWVyYXRlfVxzZXRjb3VudGVye2VudW1pfXsyfQ0KICAgIFxpdGVtIHN1
cHBseSB0aGUgaHViIHdpdGggbWV0YWRhdGEgYWJvdXQgaXRzZWxmLCB1c2lu
ZyB0aGUNCiAgICB7XHR0IHNldE1ldGFkYXRhKCl9IGNhbGwNCiAgICBcaXRl
bSB0ZWxsIHRoZSBodWIgaG93IGl0IHdpc2hlcyB0aGUgaHViIHRvIGNvbW11
bmljYXRlIHdpdGggaXQsDQogICAgaWYgYXQgYWxsICh0aGUgbWVjaGFuaXNt
IGZvciB0aGlzIGlzIHByb2ZpbGUtZGVwZW5kZW50LCBhbmQgaXQgbWF5DQog
ICAgYmUgaW1wbGljaXQgaW4gcmVnaXN0cmF0aW9uKQ0KICAgIFxpdGVtIGlu
Zm9ybSB0aGUgaHViIHdoaWNoIE1UeXBlcyBpdCB3aXNoZXMgdG8gcmVjZWl2
ZSwgdXNpbmcgdGhlDQogICAge1x0dCBzZXRNdHlwZXMoKX0gY2FsbA0KXGVu
ZHtlbnVtZXJhdGV9DQoNCg0KXHN1YnNlY3Rpb257U0FNUCBEYXRhIFR5cGVz
fQ0KXGxhYmVse3NlY3Q6c2FtcC1kYXRhLXR5cGVzfQ0KDQpGb3IgYWxsIGh1
Yi9jbGllbnQgY29tbXVuaWNhdGlvbiwgaW5jbHVkaW5nIHRoZSBhY3R1YWwg
Y29udGVudCBvZiBtZXNzYWdlcywNClNBTVAgdXNlcyB0aHJlZSBjb25jZXB0
dWFsIGRhdGEgdHlwZXM6DQpcYmVnaW57ZW51bWVyYXRlfQ0KXGl0ZW0ge1x0
dCBzdHJpbmd9IC0tLSBhIHNjYWxhciB2YWx1ZSBjb25zaXN0aW5nIG9mIGEg
c2VxdWVuY2Ugb2YgY2hhcmFjdGVyczsNCiAgICAgICBlYWNoIGNoYXJhY3Rl
ciBtYXkgYmUgaW4gdGhlIHJhbmdlIDB4MDEtLTB4N2YNClxpdGVtIHtcdHQg
bGlzdH0gLS0tIGFuIG9yZGVyZWQgYXJyYXkgb2YgZGF0YSBpdGVtcw0KXGl0
ZW0ge1x0dCBtYXB9IC0tLSBhbiB1bm9yZGVyZWQgYXNzb2NpYXRpdmUgYXJy
YXkgb2Ygc3RyaW5nLWRhdGEgaXRlbQ0KICAgICAgIGtleS12YWx1ZSBwYWly
cw0KXGVuZHtlbnVtZXJhdGV9DQpUaGVzZSB0eXBlcyBjYW4gaW4gcHJpbmNp
cGxlIGJlIG5lc3RlZCB0byBhbnkgbGV2ZWwsIHNvIHRoYXQgdGhlIGVsZW1l
bnRzDQpvZiBhIGxpc3Qgb3IgdGhlIHZhbHVlcyBvZiBhIG1hcCBtYXkgdGhl
bXNlbHZlcyBiZSBzdHJpbmdzLCBsaXN0cyBvciBtYXBzLg0KDQpUaGVyZSBp
cyBubyByZXNlcnZlZCByZXByZXNlbnRhdGlvbiBmb3IgYSBudWxsIHZhbHVl
LCBhbmQgaXQgaXMgDQppbGxlZ2FsIHRvIHNlbmQgYSBudWxsIHZhbHVlIGlu
IGEgU0FNUCBjb250ZXh0IGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcNCnRyYW5z
cG9ydCBwcm90b2NvbCBwZXJtaXRzIHRoaXMuICBIb3dldmVyIGEgemVyby1s
ZW5ndGgNCnN0cmluZyBvciBhbiBlbXB0eSBsaXN0IG9yIG1hcCBtYXkgd2hl
cmUgYXBwcm9wcmlhdGUgYmUgdXNlZCB0byBtZWFuIG51bGwuDQoNCkFsdGhv
dWdoIFNBTVAgaW1wb3NlcyBubyBtYXhpbXVtIG9uIHRoZSBsZW5ndGggb2Yg
YSBzdHJpbmcsDQpwYXJ0aWN1bGFyIHRyYW5zcG9ydCBwcm90b2NvbHMgb3Ig
aW1wbGVtZW50YXRpb24gY29uc2lkZXJhdGlvbnMgDQptYXkgZWZmZWN0aXZl
bHkgZG8gc287IGluIGdlbmVyYWwgaHViIGFuZCBjbGllbnQgaW1wbGVtZW50
YXRpb25zIA0KYXJlIG5vdCBleHBlY3RlZCB0byBkZWFsIHdpdGggZGF0YSBp
dGVtcyBvZiB1bmxpbWl0ZWQgc2l6ZS4NCkdlbmVyYWwgcHVycG9zZSBNVHlw
ZXMgc2hvdWxkIHRoZXJlZm9yZSBiZSBzcGVjaWZpZWQgc28gdGhhdA0KYnVs
ayBkYXRhIGlzIG5vdCBzZW50IHdpdGhpbiB0aGUgbWVzc2FnZSAtLS0gaW4g
Z2VuZXJhbCBpdCBpcw0KcHJlZmVycmVkIHRvIGRlZmluZSBhIG1lc3NhZ2Ug
cGFyYW1ldGVyIGFzIHRoZSBVUkwgKG9yIGZpbGVuYW1lKQ0Kb2YgYSBwb3Rl
bnRpYWxseQ0KbGFyZ2UgZmlsZSByYXRoZXIgdGhhbiBhcyB0aGUgaW5saW5l
IHRleHQgb2YgdGhlIGZpbGUgaXRzZWxmLg0KDQpBdCB0aGUgcHJvdG9jb2wg
bGV2ZWwgdGhlcmUgaXMgbm8gcHJvdmlzaW9uIGZvciB0eXBpbmcgb2Ygc2Nh
bGFyczsNCnVubGlrZSBtYW55IFJQQyBwcm90b2NvbHMgU0FNUCBkb2VzIG5v
dCBkaXN0aW5ndWlzaCBzeW50YWN0aWNhbGx5DQpiZXR3ZWVuIHN0cmluZ3Ms
IGludGVnZXJzLCBmbG9hdGluZyBwb2ludCB2YWx1ZXMsIGJvb2xlYW5zIGV0
Yy4NClRoaXMgbWluaW1pemVzIHRoZSByZXN0cmljdGlvbnMgb24gd2hhdCB1
bmRlcmx5aW5nIHRyYW5zcG9ydA0KcHJvdG9jb2xzIG1heSBiZSB1c2VkLCBh
bmQgYXZvaWRzIGEgbnVtYmVyIG9mIHByb2JsZW1zIGFzc29jaWF0ZWQgd2l0
aA0KdXNpbmcgdHlwZWQgdmFsdWVzIGZyb20gdW50eXBlZCBsYW5ndWFnZXMg
c3VjaCBhcyANClB5dGhvbiBhbmQgUGVybC4NCg0KU29tZSBNVHlwZXMgd2ls
bCBob3dldmVyIHdpc2ggdG8gZGVmaW5lIHBhcmFtZXRlcnMgb3IgcmV0dXJu
DQp2YWx1ZXMgd2hpY2ggaGF2ZSBub24tc3RyaW5nIHNlbWFudGljcywNCmFu
ZCBjb252ZW50aW9ucyBmb3IgZW5jb2RpbmcgdGhlc2UgYXMge1x0dCBzdHJp
bmd9cw0KYXJlIHRoZXJlZm9yZSBpbiBwcmFjdGljZSByZXF1aXJlZC4gDQpT
dWNoIGNvbnZlbnRpb25zIG9ubHkgbmVlZCB0byBiZSB1bmRlcnN0b29kIGJ5
IHRoZSBzZW5kZXIgYW5kIA0KcmVjaXBpZW50IG9mIGEgZ2l2ZW4gbWVzc2Fn
ZSBhbmQgc28gY2FuIGJlIGVzdGFibGlzaGVkIG9uIGEgcGVyLU1UeXBlIGJh
c2lzLCANCmJ1dCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBkdXBsaWNhdGlvbiBv
ZiBlZmZvcnQgc29tZSBjb21tb25seS11c2VkDQp0eXBlIGVuY29kaW5nIGNv
bnZlbnRpb25zIGFyZSBkZWZpbmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlv
bi4NCg0KDQpcc3Vic2VjdGlvbntTY2FsYXIgdHlwZSBlbmNvZGluZyBjb252
ZW50aW9uc30NClxsYWJlbHtzZWN0OnNjYWxhci10eXBlc30NCg0KVGhlIGZv
bGxvd2luZyBCTkYgcHJvZHVjdGlvbnMgYXJlIHVzZWQgaW4gdGhlIHR5cGUg
ZW5jb2RpbmcgY29udmVudGlvbnMNCmJlbG93Og0KXGJlZ2lue3ZlcmJhdGlt
fQ0KPGRpZ2l0PiAgICAgICAgICA6Oj0gIjAiIHwgIjEiIHwgIjIiIHwgIjMi
IHwgIjQiIHwgIjUiIHwgIjYiIHwgDQogICAgICAgICAgICAgICAgICAgICAi
NyIgfCAiOCIgfCAiOSINCjxkaWdpdHM+ICAgICAgICAgOjo9IDxkaWdpdD4g
fCA8ZGlnaXRzPiA8ZGlnaXQ+DQo8ZGVjaW1hbF9kaWdpdHM+IDo6PSA8ZGln
aXRzPiB8IDxkaWdpdHM+ICIuIiB8ICIuIiA8ZGlnaXRzPg0KICAgICAgICAg
ICAgICAgICAgIHwgPGRpZ2l0cz4gIi4iIDxkaWdpdHM+DQo8c2lnbj4gICAg
ICAgICAgIDo6PSAiKyIgfCAiLSINClxlbmR7dmVyYmF0aW19DQoNClxiZWdp
bntpdGVtaXplfQ0KXGl0ZW0gXHZlcmIsPFNBTVAgaW50PiA6Oj0gWyA8c2ln
bj4gXSA8ZGlnaXRzPixcXA0KICAgQW4gaW50ZWdlciB2YWx1ZSBpcyBlbmNv
ZGVkIHVzaW5nIGl0cyBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIHdpdGgNCiAg
IGFuIG9wdGlvbmFsIHByZWNlZGluZyBzaWduIGFuZCB3aXRoIG5vDQogICBs
ZWFkaW5nLCB0cmFpbGluZyBvciBlbWJlZGRlZCB3aGl0ZXNwYWNlLg0KICAg
VGhlcmUgaXMgbm8gZ3VhcmFudGVlIGFib3V0IHRoZSBsYXJnZXN0IG9yIHNt
YWxsZXN0IHZhbHVlcyB3aGljaCBjYW4NCiAgIGJlIHJlcHJlc2VudGVkLCBz
aW5jZSB0aGlzIHdpbGwgZGVwZW5kIG9uIHRoZSBwcm9jZXNzaW5nIGVudmly
b25tZW50DQogICBhdCBkZWNvZGUgdGltZS4NCiUNClxpdGVtIFx2ZXJiLDxT
QU1QIGZsb2F0PiA6Oj0gWyA8c2lnbj4gXSA8ZGVjaW1hbF9kaWdpdHM+LFxc
DQogICAgICBcdmVyYiwgICAgICAgICAgICAgICAgIFsgImUiIHwgIkUiIFsg
PHNpZ24+IF0gPGRpZ2l0cz4gXSxcXA0KICAgQSBmbG9hdGluZyBwb2ludCB2
YWx1ZSBpcyBlbmNvZGVkIGFzIGEgbWFudGlzc2Egd2l0aCBhbiBvcHRpb25h
bA0KICAgcHJlY2VkaW5nIHNpZ24gZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwg
ZXhwb25lbnQgcGFydA0KICAgaW50cm9kdWNlZCB3aXRoIHRoZSBjaGFyYWN0
ZXIgYGB7XHR0IGV9Jycgb3IgJyd7XHR0IEV9JycuDQogICBUaGVyZSBpcyBu
byBndWFyYW50ZWUgYWJvdXQgdGhlIGxhcmdlc3Qgb3Igc21hbGxlc3QgdmFs
dWVzIHdoaWNoIGNhbg0KICAgYmUgcmVwcmVzZW50ZWQgb3IgYWJvdXQgdGhl
IG51bWJlciBvZiBkaWdpdHMgb2YgcHJlY2lzaW9uIHdoaWNoIGFyZQ0KICAg
c2lnbmlmaWNhbnQsIHNpbmNlIHRoZXNlIHdpbGwgZGVwZW5kIG9uIHRoZSBw
cm9jZXNzaW5nIGVudmlyb25tZW50DQogICBhdCBkZWNvZGUgdGltZS4NCiUN
ClxpdGVtIFx2ZXJiLDxTQU1QIGJvb2xlYW4+IDo6PSAiMCIgfCAiMSIsXFwN
CiAgIEEgYm9vbGVhbiB2YWx1ZSBpcyByZXByZXNlbnRlZCBhcyBhbiBpbnRl
Z2VyOiB6ZXJvIHJlcHJlc2VudHMgZmFsc2UsDQogICBhbmQgYW55IG90aGVy
IHZhbHVlIHJlcHJlc2VudHMgdHJ1ZS4NCiAgIDEgaXMgdGhlIHJlY29tbWVu
ZGVkIHZhbHVlIHRvIHJlcHJlc2VudCB0cnVlLg0KXGVuZHtpdGVtaXplfQ0K
DQpUaGUgbnVtZXJpYyB0eXBlcyBhcmUgYmFzZWQgb24gdGhlIHN5bnRheCBv
ZiB0aGUgQyBwcm9ncmFtbWluZyBsYW5ndWFnZSwNCnNpbmNlIHRoaXMgc3lu
dGF4IGZvcm1zIHRoZSBiYXNpcyBmb3IgdHlwZWQgZGF0YSBzeW50YXggaW4g
bWFueSBvdGhlcg0KbGFuZ3VhZ2VzLg0KVGhpcyBsaXN0IG1heSBiZSBleHRl
bmRlZCBpbiB0aGUgZnV0dXJlIGlmIHJlcXVpcmVkLg0KDQpQYXJ0aWN1bGFy
IE1UeXBlIGRlZmluaXRpb25zIG1heSB1c2UgdGhlc2UgY29udmVudGlvbnMg
b3IgZGV2aXNlDQp0aGVpciBvd24gYXMgcmVxdWlyZWQuICBXaGVyZSB0aGUg
Y29udmVudGlvbnMgaW4gdGhpcyBsaXN0IGFyZSB1c2VkLCANCm1lc3NhZ2Ug
ZG9jdW1lbnRhdGlvbiBzaG91bGQgbWFrZSBpdCBjbGVhciB1c2luZyBhIGZv
cm0gb2YNCndvcmRzIGFsb25nIHRoZSBsaW5lcyBgYHRoaXMgcGFyYW1ldGVy
IGNvbnRhaW5zIGEge1xlbSBTQU1QIGludFwvfScnLg0KDQoNClxzdWJzZWN0
aW9ue0FwcGxpY2F0aW9uIE1ldGFkYXRhfQ0KXGxhYmVse3NlY3Q6YXBwLW1l
dGFkYXRhfQ0KDQpBIGNsaWVudCBtYXkgc3RvcmUgbWV0YWRhdGEgaW4gdGhl
IGZvcm0gb2YgYSB7XHR0IG1hcH0gb2Yga2V5LXZhbHVlIHBhaXJzIGluIHRo
ZSBodWIgDQpmb3IgcmV0cmlldmFsIGJ5IG90aGVyIGNsaWVudHMuIFR5cGlj
YWwgbWV0YWRhdGEgd2lsbCBiZSB0aGUgaHVtYW4tcmVhZGFibGUgDQpuYW1l
IG9mIHRoZSBhcHBsaWNhdGlvbiwgYSBkZXNjcmlwdGlvbiBhbmQgYSBVUkwg
dG8gaXRzIGljb24sIGJ1dCBvdGhlciB2YWx1ZXMgDQphcmUgcGVybWl0dGVk
LiBUaGUgZm9sbG93aW5nIGtleXMgYXJlIGRlZmluZWQgZm9yIHdlbGwta25v
d24gbWV0YWRhdGEgaXRlbXM6DQpcYmVnaW57ZGVzY3JpcHRpb259DQoJXGl0
ZW1be1x0dCBzYW1wLm5hbWV9XSAtIEEgb25lIHdvcmQgdGl0bGUgZm9yIHRo
ZSBhcHBsaWNhdGlvbi4NCglcaXRlbVt7XHR0IHNhbXAuZGVzY3JpcHRpb24u
dGV4dH1dIC0gQSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0aGUgDQoJYXBwbGlj
YXRpb24sIGluIHBsYWluIHRleHQuDQoJXGl0ZW1be1x0dCBzYW1wLmRlc2Ny
aXB0aW9uLmh0bWx9XSAtIEEgZGVzY3JpcHRpb24gb2YgdGhlIGFwcGxpY2F0
aW9uLCANCglpbiBIVE1MLg0KCVxpdGVtW3tcdHQgc2FtcC5pY29uLnVybH1d
IC0gVGhlIFVSTCBvZiBhbiBpY29uIGluIHBuZywgZ2lmIG9yIGpwZWcgZm9y
bWF0LiANCglcaXRlbVt7XHR0IHNhbXAuZG9jdW1lbnRhdGlvbi51cmx9XSAt
IFRoZSBVUkwgb2YgYSBkb2N1bWVudGF0aW9uIHdlYiBwYWdlLg0KXGVuZHtk
ZXNjcmlwdGlvbn0NCkFsbCBvZiB0aGUgYWJvdmUgYXJlIE9QVElPTkFMLCBi
dXQge1x0dCBzYW1wLm5hbWV9IGlzIHN0cm9uZ2x5IFJFQ09NTUVOREVELg0K
XFwNClx0ZXh0Y29sb3J7bWFnZW50YX17Wz8/IHNob3VsZCBvdGhlcnMgYmUg
UkVDT01NRU5ERUQgPz9dfQ0KXFwNCkFwcGxpY2F0aW9ucyBtYXkgc3RvcmUg
bWV0YWRhdGEgdW5kZXIgYW55IGtleXMsIGV4Y2VwdCB0aGF0IGtleXMgYmVn
aW5uaW5nDQpge1x0dCBzYW1wLn0nJyBtYXkgb25seSBiZSB1c2VkIGFzIGRl
c2NyaWJlZCBoZXJlLg0KDQpcc3Vic2VjdGlvbntXaGF0IGlzIGEgbWVzc2Fn
ZT99DQpcbGFiZWx7c2VjdDptc2dkZWZ9DQoNCkEgbWVzc2FnZSBpcyBhbiBh
YnN0cmFjdCBjb250YWluZXIgZm9yIHRoZSBpbmZvcm1hdGlvbiB3ZSB3aXNo
IHRvIHNlbmQNCnRvIGFub3RoZXIgYXBwbGljYXRpb24uICBUaGUgbWVzc2Fn
ZSBpdHNlbGYgaXMgdGhhdCBkYXRhIHdoaWNoIHNob3VsZA0KYXJyaXZlIGF0
IHRoZSByZWNlaXZpbmcgYXBwbGljYXRpb24uICBJdCBtYXkgYmUgdHJhbnNt
aXR0ZWQgYWxvbmcNCndpdGggc29tZSBleHRlcm5hbCBpdGVtcyAoZS5nLlwg
c2VuZGVyL3JlY2lwaWVudC9tZXNzYWdlIGlkZW50aWZpZXJzKQ0KcmVxdWly
ZWQgdG8gZW5zdXJlIHByb3BlciBkZWxpdmVyeSBvciBoYW5kbGluZy4NCg0K
QSBtZXNzYWdlIGNvbnRhaW5zIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcgcGFy
dHM6DQpcYmVnaW57ZGVzY3JpcHRpb259DQpcaXRlbVtBbiBNVHlwZTpdIGEg
c3RyaW5nIHdoaWNoIGRlZmluZXMgdGhlIG1lYW5pbmcgb2YgdGhlIG1lc3Nh
Z2UsDQogICBmb3IgaW5zdGFuY2UgdGhlIGluc3RydWN0aW9uIHRvIGxvYWQg
YSB0YWJsZS4NCiAgIEl0IGFsc28sIHZpYSBleHRlcm5hbCBkb2N1bWVudGF0
aW9uLCBkZWZpbmVzIHRoZSBuYW1lcywgdHlwZXMgYW5kDQogICBtZWFuaW5n
cyBvZiBhbnkgcGFyYW1ldGVycyBhcyB3ZWxsIGFzIHRoZSB0eXBlIGFuZCBt
ZWFuaW5nIG9mIHRoZQ0KICAgcmV0dXJuIHZhbHVlLiAgTVR5cGVzIGFyZSBk
aXNjdXNzZWQgaW4gbW9yZSBkZXRhaWwgaW4gDQogICBTZWN0aW9uflxyZWZ7
c2VjdDptdHlwZXN9Lg0KXGl0ZW1bUGFyYW1ldGVyczpdIHplcm8gb3IgbW9y
ZSBuYW1lZCB2YWx1ZXMgZ2l2aW5nIHRoZSBkYXRhIHJlcXVpcmVkDQogICBm
b3IgdGhlIHJlY2VpdmVyIHRvIGFjdCBvbiB0aGUgbWVzc2FnZSwgZm9yIGlu
c3RhbmNlIHRoZSBVUkwgb2YgYSANCiAgIHBhcnRpY3VsYXIgdGFibGUuICBU
aGUgbmFtZXMgYW5kIHNlbWFudGljcyBvZiB0aGVzZSBwYXJhbWV0ZXJzIGFy
ZQ0KICAgZGV0ZXJtaW5lZCBieSB0aGUgTVR5cGUuDQpcZW5ke2Rlc2NyaXB0
aW9ufQ0KSXQgbWF5IGFsc28gY29udGFpbiBvdGhlciBpdGVtcywgZm9yIGlu
c3RhbmNlIGEgdGltZXN0YW1wLCBidXQgc3VjaCBpdGVtcw0KYXJlIG5vdCBj
dXJyZW50bHkgZGVzY3JpYmVkIGJ5IHRoaXMgc3RhbmRhcmQuDQoNClx0ZXh0
Y29sb3J7bWFnZW50YX17Wz8/IHJlZi1pZCA/P119DQolICBcaXRlbSBcdmVy
YnxyZWYtaWR8IC0gQW4gSUQgYXNzaWduZWQgYnkgYW4gYXBwbGljYXRpb24g
dGhhdCBjYW4gYmUgdXNlZA0KJSAgdG8gcmVmZXJlbmNlIHNvbWUgc3BlY2lm
aWMgZGF0YSBvYmplY3Qga25vd24gb25seSB0byB0aGUgcmVjZWl2aW5nDQol
ICBhcHBsaWNhdGlvbiAoZS5nLlwgYSB0YWJsZSBzdWJzZXQgY3JlYXRlZCBi
eSBhbiBlYXJsaWVyIG1lc3NhZ2UpLg0KJSAgVGhlIFx2ZXJifHJlZi1pZHwg
TUFZIGJlIGFuIGF0dHJpYnV0ZSBvZiBhIFJlc3BvbnNlIG1lc3NhZ2UgaWYg
dGhlDQolICBhcHBsaWNhdGlvbiBjYW4gYWNjZXB0IHN1YnNlcXVlbnQgUmVx
dWVzdCBtZXNzYWdlcyByZXF1aXJpbmcgYSANCiUgIHNwZWNpZmljIHJlZmVy
ZW5jZSB0byBiZSB1bmFtYmlndW91cy4gIFdoZW4gc3VwcGxpZWQgaW4gYSBS
ZXF1ZXN0DQolICBtZXNzYWdlLCB0aGUgbWVzc2FnZSBpcyBhc3N1bWVkIHRv
IGFwcGx5IG9ubHkgdG8gdGhlIG9iamVjdA0KJSAgcmVmZXJlbmNlZCBieSB0
aGUgXHZlcmJ8cmVmLWlkfCAoZS5nLlwgcGxvdCB0aGUgY29sdW1ucyBvZiB0
aGUgdGFibGUNCiUgIHN1YnNldCBhbmQgbm90IHRoZSBwYXJlbnQgdGFibGUp
Lg0KJQ0KJSAgXHRleHRjb2xvcnttYWdlbnRhfXtbPz8/PyBUaGlzIHdhcyBz
b21ld2hhdCBjb250cm92ZXJzaWFsIGluIGVhcmxpZXINCiUgIGRpc2N1c3Np
b25zIGFuZCBhZG1pdHRlZGx5IHBhcnQgb2YgdGhlIGdlbmVyYWxpemVkIG1l
c3NhZ2luZyBjb25jZXB0Lg0KJSAgSXQgbWF5IG5vdCBiZSB1c2VkIGluIFBM
QVNUSUMtbGlrZSBhcHBsaWNhdGlvbnMsIGJ1dCBJIHdvdWxkIGxpa2UNCiUg
IHRvIGtlZXAgaXQgaW4gdGhlIGluaXRpYWwgc3BlYyBmb3IgbGF0ZXIgdXNl
LiBdfQ0KDQpJdCBpcyBsZWdhbCB0byBpbmNsdWRlIHBhcmFtZXRlcnMgaW4g
dGhlIHBhcmFtZXRlciBvYmplY3Qgd2hpY2ggYXJlDQpub3QgZG9jdW1lbnRl
ZCBieSB0aGUgTVR5cGUuICBBbnkgcGFyYW1ldGVycyB3aG9zZSBuYW1lIGEg
cmVjZWl2ZXINCmRvZXMgbm90IHJlY29nbmlzZSBpbiB0aGUgY29udGV4dCBv
ZiB0aGUgZ2l2ZW4gTVR5cGUgc2hvdWxkIGJlIGlnbm9yZWQuDQpUaGUgaW50
ZW50aW9uIGlzIHRoYXQgTVR5cGVzIGNhbiBldm9sdmUgYnkgaGF2aW5nIG5l
dyBwYXJhbWV0ZXJzIGFkZGVkIA0Kd2hpY2ggcHJvdmlkZSBhZGRpdGlvbmFs
IGZ1bmN0aW9uYWxpdHkgaWYgdGhlIG5lZWQgaXMgaWRlbnRpZmllZCBkdXJp
bmcNCnVzZS4gIEFsdGhvdWdoIGluIHNvbWUgY2FzZXMgc3VjaCByZWZpbmVt
ZW50IHdpbGwgcmVxdWlyZSBhIHJlZGVzaWduDQp3aXRoIGNvbXBsZXRlbHkg
ZGlmZmVyZW50IHBhcmFtZXRlcnMgKGFuZCBhIG5ldyBNVHlwZSksIA0KaXQg
aXMgb2Z0ZW4gdGhlIGNhc2UgdGhhdA0KTVR5cGVzIGNhbiBiZSBpbXByb3Zl
ZCBieSBhZGRpbmcgbmV3IG9wdGlvbmFsIHBhcmFtZXRlcnMgd2hpY2ggY2Fu
DQpiZSBoYXJtbGVzc2x5IGlnbm9yZWQgYnkgY2xpZW50cyBvbmx5IGZhbWls
aWFyIHdpdGggdGhlIG9sZGVyIHZlcnNpb24uDQoNClNvbWUgY29tbW9uIE1U
eXBlcyBhbmQgdGhlaXIgcGFyYW1ldGVyIG9iamVjdHMgYXJlIGRlc2NyaWJl
ZCBpbiBzZWN0aW9uDQpccmVme3NlY3Q6bXR5cGVzfS4gDQoNClxzdWJzZWN0
aW9ue01lc3NhZ2UgYW5kIFJlc3BvbnNlIEVuY29kaW5nfQ0KXGxhYmVse3Nl
Y3Q6bXNnLWVuY29kaW5nfQ0KDQpBIG1lc3NhZ2UgYXMgZGVzY3JpYmVkIGlu
IFNlY3Rpb25+XHJlZntzZWN0Om1zZ2RlZn0gDQptYXkgYmUgZW5jb2RlZCBp
biB0aGUgdGVybXMgb2YgdGhlIGRhdGF0eXBlcyBkZXNjcmliZWQgaW4gDQpT
ZWN0aW9uflxyZWZ7c2VjdDpzYW1wLWRhdGEtdHlwZXN9IGFzIGEge1x0dCBt
YXB9Lg0KVGhlIGRlZmluZWQga2V5cyBhbmQgdGhlaXIgYXNzb2NpYXRlZCB2
YWx1ZXMgYXJlIGFzIGZvbGxvd3M6DQpcYmVnaW57ZGVzY3JpcHRpb259DQpc
aXRlbVt7XHR0IG10eXBlfV0NCiAgICBUaGUgdmFsdWUgaXMgYSB7XHR0IHN0
cmluZ30gZ2l2aW5nIHRoZSBNVHlwZSBmb3IgdGhlIG1lc3NhZ2UuDQpcaXRl
bVt7XHR0IHBhcmFtc31dDQogICAgVGhlIHZhbHVlIGlzIGEge1x0dCBtYXB9
IGdpdmluZyB0aGUgcGFyYW1ldGVyIHZhbHVlcyBmb3IgdGhlIG1lc3NhZ2Uu
DQogICAgRWFjaCBwYXJhbWV0ZXIgaXMgcmVwcmVzZW50ZWQgYnkgYSBrZXkt
dmFsdWUgcGFpciBpbiB3aGljaCB0aGUgDQogICAga2V5IGlzIHRoZSBkb2N1
bWVudGVkIG5hbWUgb2YgdGhlIHBhcmFtZXRlciwgYW5kIHRoZSB2YWx1ZSBp
cw0KICAgIGl0cyB2YWx1ZSwgd2l0aCB0aGUgdHlwZSBhcyBkb2N1bWVudGVk
IGJ5IHRoZSBNVHlwZS4NClxlbmR7ZGVzY3JpcHRpb259DQpObyBvdGhlciBr
ZXlzIGFyZSBjdXJyZW50bHkgZGVmaW5lZC4NCktleXMgd2hpY2ggYXJlIG5v
dCBkZWZpbmVkIGhlcmUgYXJlIG5vdCBpbGxlZ2FsLCANCmJ1dCBpZiBhbiBh
cHBsaWNhdGlvbiBlbmNvdW50ZXJzIGtleXMgd2hpY2ggaXQgZG9lcyBub3Qg
dW5kZXJzdGFuZCwNCml0IHNob3VsZCBnZW5lcmFsbHkgaWdub3JlIHRoZW0u
DQoNClRoZSByZXNwb25zZSB0byBhIG1lc3NhZ2UsIGlmIG9uZSBpcyBleHBl
Y3RlZCwgaXMgYSB7XHR0IG1hcH0gYW5kDQptYXkgYmUgb25lIG9mIHR3byB0
aGluZ3M6DQpcYmVnaW57ZW51bWVyYXRlfQ0KXGl0ZW0gYSByZXR1cm4gdmFs
dWUgKHN1Y2Nlc3NmdWwgY29tcGxldGlvbikNClxpdGVtIGFuIGVycm9yIG9i
amVjdCAoZmFpbHVyZSkNClxlbmR7ZW51bWVyYXRlfQ0KQSBmbGFnIGlzIHBh
c3NlZCB3aXRoIHRoZSByZXNwb25zZSBvYmplY3QgdG8gaW5kaWNhdGUgd2hp
Y2ggb2YgdGhlc2UgaXQgaXM7DQpjbGllbnRzIGRvIG5vdCBoYXZlIHRvIGV4
YW1pbmUgdGhlIG9iamVjdCB0byBmaW5kIG91dCB3aGV0aGVyIGl0IHJlcHJl
c2VudHMNCmEgcmV0dXJuIHZhbHVlIG9yIGFuIGVycm9yLg0KDQpJbiB0aGUg
Y2FzZSBvZiBhIHJldHVybiB2YWx1ZSwgdGhlIHR5cGUgYW5kIG1lYW5pbmcg
b2YgYW55IGRhdGEgY29udGFpbmVkDQppbiBpdCBhcyBrZXktdmFsdWUgcGFp
cnMgU0hPVUxEIGJlIGRvY3VtZW50ZWQgYnkgdGhlIE1UeXBlLg0KDQpJbiB0
aGUgY2FzZSBvZiBhbiBlcnJvciByZXNwb25zZSwgdGhlIG1hcCBtYXkgY29u
dGFpbiANCmVudHJpZXMgd2l0aCB0aGUgZm9sbG93aW5nIGtleXM6DQpcYmVn
aW57ZGVzY3JpcHRpb259DQpcaXRlbVt7XHR0IGVycm9ydHh0fV0gKFJFUVVJ
UkVEKSAtLS0NCiAgIEEgc2hvcnQgc3RyaW5nIGRlc2NyaWJpbmcgd2hhdCB3
ZW50IHdyb25nLg0KICAgVGhpcyB3aWxsIHR5cGljYWxseSBiZSBkZWxpdmVy
ZWQgdG8gdGhlIHVzZXIgb2YgdGhlIHNlbmRlciBhcHBsaWNhdGlvbi4NClxp
dGVtW3tcdHQgdXNlcnR4dH1dIChPUFRJT05BTCkgLS0tDQogICBBIGZyZWUt
Zm9ybSBzdHJpbmcgY29udGFpbmluZyBhbnkgYWRkaXRpb25hbCB0ZXh0IGFu
IGFwcGxpY2F0aW9uIHdpc2hlcw0KICAgdG8gcmV0dXJuLiAgVGhpcyBtYXkg
YmUgYSBtb3JlIHZlcmJvc2UgZXJyb3IgZGVzY3JpcHRpb24gbWVhbnQgdG8g
YmUgIA0KICAgYXBwZW5kZWQgdG8gdGhlIGVycm9ydHh0IHN0cmluZywgaG93
ZXZlciBpdCBpcyB1bmRlZmluZWQgaG93IHRoaXMgc3RyaW5nDQogICBzaG91
bGQgYmUgaGFuZGxlZCB3aGVuIHJlY2VpdmVkLg0KXGl0ZW1be1x0dCBkZWJ1
Z3R4dH1dIChPUFRJT05BTCkgLS0tDQogICBBIGxvbmdlciBzdHJpbmcgd2hp
Y2ggbWF5IGNvbnRhaW4gbW9yZSBkZXRhaWwgb24gd2hhdCB3ZW50IHdyb25n
Lg0KICAgVGhpcyBpcyB0eXBpY2FsbHkgaW50ZW5kZWQgZm9yIGRlYnVnZ2lu
ZyBwdXJwb3NlcywgYW5kIG1heSBmb3IgaW5zdGFuY2UNCiAgIGJlIGEgc3Rh
Y2sgdHJhY2UuDQpcaXRlbVt7XHR0IGNvZGV9XSAoT1BUSU9OQUwpIC0tLQ0K
ICAgQSBzdHJpbmcgY29udGFpbmluZyBhIG51bWVyaWMgb3IgdGV4dHVhbCBj
b2RlIGlkZW50aWZ5aW5nIHRoZSBlcnJvci4NClxlbmR7ZGVzY3JpcHRpb259
DQpObyBvdGhlciBrZXlzIGFyZSBjdXJyZW50bHkgZGVmaW5lZC4NCktleXMg
d2hpY2ggYXJlIG5vdCBkZWZpbmVkIGhlcmUgYXJlIG5vdCBpbGxlZ2FsLA0K
YnV0IGlmIGFuIGFwcGxpY2F0aW9uIGVuY291bnRlcnMga2V5cyB3aGljaCBp
dCBkb2VzIG5vdCB1bmRlcnN0YW5kLA0KaXQgc2hvdWxkIGdlbmVyYWxseSBp
Z25vcmUgdGhlbS4NCg0KXHRleHRjb2xvcnttYWdlbnRhfXtbPz8gc2hvdWxk
IHRoZXNlIGtleXMgYmUge1x0dCBzYW1wLm10eXBlfSBldGMsIHdpdGggDQp7
XHR0IHNhbXAuKn0gYSByZXNlcnZlZCBwYXJ0IG9mIHRoZSBuYW1lc3BhY2Ug
YW5kIG90aGVycyBhdmFpbGFibGUgZm9yDQpwdWJsaWMgdXNlID8/XX0NCg0K
XHN1YnNlY3Rpb257U2VuZGluZyBhbmQgUmVjZWl2aW5nIE1lc3NhZ2VzfQ0K
XGxhYmVse3NlY3Q6ZGVsaXZlcnl9DQoNCkFzIG91dGxpbmVkIGluIFNlY3Rp
b25+XHJlZntzZWN0OmRlbGl2ZXJ5LW91dGxpbmV9LCANCnRocmVlIG1lc3Nh
Z2luZyBwYXR0ZXJucyBhcmUgc3VwcG9ydGVkLCBkaWZmZXJpbmcNCmFjY29y
ZGluZyB0byB3aGV0aGVyIGFuZCBob3cgdGhlIHJlc3BvbnNlIGlzIHJldHVy
bmVkIHRvIHRoZSBzZW5kZXIuIA0KRm9yIGEgZ2l2ZW4gTVR5cGUgDQp0aGVy
ZSBtYXkgYmUgYSBtZXNzYWdpbmcgcGF0dGVybiB0aGF0IGlzIG1vc3QgdHlw
aWNhbGx5IHVzZWQsIGJ1dCB0aGVyZSBpcyANCm5vdGhpbmcgaW4gdGhlIHBy
b3RvY29sIHRoYXQgdGllcyBhIHBhcnRpY3VsYXIgTVR5cGUgdG8gYSBwYXJ0
aWN1bGFyIG1lc3NhZ2luZyANCnBhdHRlcm4uDQoNCkZyb20gdGhlIHBvaW50
IG9mIHZpZXcgb2YgdGhlIHNlbmRlciwgdGhlcmUgYXJlIHRocmVlIHdheXMg
aW4gd2hpY2ggYSBtZXNzYWdlDQptYXkgYmUgc2VudCwNCmFuZCBmcm9tIHRo
ZSBwb2ludCBvZiB2aWV3IG9mIHRoZSByZWNpcGllbnQgdGhlcmUgYXJlIHR3
byB3YXlzIGluIHdoaWNoDQpvbmUgbWF5IGJlIHJlY2VpdmVkLiAgVGhlc2Ug
YXJlIGRlc2NyaWJlZCBhcyBmb2xsb3dzLg0KXGJlZ2lue2Rlc2NyaXB0aW9u
fQ0KXGl0ZW1bTm90aWZpY2F0aW9uOl0gIEluIHRoZSBub3RpZmljYXRpb24g
cGF0dGVybiwgY29tbXVuaWNhdGlvbiBpcyBvbmx5DQppbiBvbmUgZGlyZWN0
aW9uOg0KXGJlZ2lue2VudW1lcmF0ZX0NClxpdGVtIFRoZSBzZW5kZXIgc2Vu
ZHMgYSBtZXNzYWdlIHRvIHRoZSBodWIgZm9yIGRlbGl2ZXJ5IHRvIG9uZSBv
ciBtb3JlDQogICByZWNpcGllbnRzLg0KXGl0ZW0gVGhlIGh1YiBmb3J3YXJk
cyB0aGVtIHRvIHRob3NlIHJlcXVlc3RlZCByZWNpcGllbnRzIHdoaWNoIGFy
ZSBzdWJzY3JpYmVkDQpcaXRlbSBObyByZXBseSBmcm9tIHRoZSByZWNpcGll
bnRzIGlzIGV4cGVjdGVkIG9yIHBvc3NpYmxlDQpcZW5ke2VudW1lcmF0ZX0N
Ck5vdGlmaWNhdGlvbnMgY2FuIGJlIHNlbnQgdG8gYSBnaXZlbiByZWNpcGll
bnQgb3IgYnJvYWRjYXN0IHRvIGFsbCANCnJlY2lwaWVudHMuICBUaGUgbm90
aWZpY2F0aW9uIHBhdHRlcm4gZm9yIGEgc2luZ2xlIHJlY2lwaWVudCBpcyBp
bGx1c3RyYXRlZCBpbiANCkZpZ3VyZX5ccmVme2ZpZzpub3RpZmljYXRpb259
Lg0KXGJlZ2lue2ZpZ3VyZX1bIWhdDQpcYmVnaW57Y2VudGVyfQ0KXGluY2x1
ZGVncmFwaGljc1tzY2FsZT0wLjVde3NhbXAtbm90aWZpY2F0aW9ufQ0KXGNh
cHRpb257Tm90aWZpY2F0aW9uIHBhdHRlcm59DQpcbGFiZWx7ZmlnOm5vdGlm
aWNhdGlvbn0NClxlbmR7Y2VudGVyfQ0KXGVuZHtmaWd1cmV9DQolDQpcaXRl
bVtBc3luY2hyb25vdXMgQ2FsbC9SZXNwb25zZTpdDQpJbiB0aGUgYXN5bmNo
cm9ub3VzIGNhbGwgcGF0dGVybiwge1xlbSBtZXNzYWdlIElEc30gYXJlIHVz
ZWQgDQp0byB0aWUgdG9nZXRoZXIgbWVzc2FnZXMgYW5kIHRoZWlyIHJlcGxp
ZXM6DQpcYmVnaW57ZW51bWVyYXRlfQ0KXGl0ZW0gVGhlIHNlbmRlciBzZW5k
cyBhIG1lc3NhZ2UgdG8gdGhlIGh1YiBmb3IgZGVsaXZlcnkgdG8gb25lIG9y
IG1vcmUNCiAgICByZWNpcGllbnRzLCBzdXBwbHlpbmcgYWxvbmcgd2l0aCB0
aGUgbWVzc2FnZSBhbiBJRCBzdHJpbmcsDQogICAge1xlbSBzZW5kZXItbXNn
LWlkfS4NClxpdGVtIFRoZSBodWIgZm9yd2FyZHMgdGhlIG1lc3NhZ2UgdG8g
dGhlIGFwcHJvcHJpYXRlIHJlY2lwaWVudHMsDQogICAgc3VwcGx5aW5nIGFs
b25nIHdpdGggdGhlIG1lc3NhZ2UgYW4gSUQgc3RyaW5nLCB7XGVtIGh1Yi1t
c2ctaWR9Lg0KXGl0ZW0gRWFjaCByZWNpcGllbnQgcHJvY2Vzc2VzIHRoZSBt
ZXNzYWdlLCBhbmQgc2VuZHMgaXRzIHJlc3BvbnNlDQogICAgYmFjayB0byB0
aGUgaHViIGFsb25nIHdpdGggdGhlIElEIHN0cmluZyB7XGVtIGh1Yi1tc2ct
aWR9Lg0KXGl0ZW0gVXNpbmcgYSBjYWxsYmFjaywgdGhlIGh1YiBwYXNzZXMg
dGhlIHJlc3BvbnNlIGJhY2sgdG8gdGhlIA0KICAgIG9yaWdpbmFsIHNlbmRl
ciBhbG9uZyB3aXRoIHRoZSBJRCBzdHJpbmcge1xlbSBzZW5kZXItbXNnLWlk
fS4NClxlbmR7ZW51bWVyYXRlfQ0KVGhlIHNlbmRlciBpcyBmcmVlIHRvIHVz
ZSBhbnkgdmFsdWUgZm9yIHRoZSB7XGVtIHNlbmRlci1tc2ctaWR9Lg0KVGhl
cmUgaXMgbm8gcmVxdWlyZW1lbnQgb24gdGhlIGZvcm0gb2YgdGhlIHtcZW0g
aHViLW1zZy1pZFwvfQ0KKGl0IGlzIG5vdCBpbnRlbmRlZCB0byBiZSBwYXJz
ZWQgYnkgdGhlIHJlY2lwaWVudCksIGJ1dCBpdCBtdXN0IGJlDQpzdWZmaWNp
ZW50IGZvciB0aGUgaHViIHRvIHBhaXIgbWVzc2FnZXMgd2l0aCB0aGVpciBy
ZXNwb25zZXMgcmVsaWFibHksDQphbmQgdG8gcGFzcyB0aGUgY29ycmVjdCB7
XGVtIHNlbmRlci1tc2ctaWRcL30gYmFjayB3aXRoIHRoZSByZXNwb25zZSAN
CnRvIHRoZSBzZW5kZXJcZm9vdG5vdGV7DQogICBPbmUgd2F5IGEgaHViIG1p
Z2h0IGltcGxlbWVudCB0aGlzIGlzIHRvIGdlbmVyYXRlIHtcZW0gaHViLW1z
Zy1pZFwvfQ0KICAgYnkgY29uY2F0ZW5hdGluZyB0aGUgc2VuZGVyJ3MgY2xp
ZW50IGlkIGFuZCB0aGUge1xlbSBzZW5kZXItbXNnLWlkfS4NCiAgIFdoZW4g
YW55IHJlc3BvbnNlIGlzIHJlY2VpdmVkIHRoZSBodWIgY2FuIHRoZW4gdW5w
YWNrIHRoZSBhY2NvbXBhbnlpbmcNCiAgIHtcZW0gaHViLW1zZy1pZFwvfSB0
byBmaW5kIG91dCB3aG8gdGhlIG9yaWdpbmFsIHNlbmRlciB3YXMgYW5kIHdo
YXQNCiAgIHtcZW0gc2VuZGVyLW1zZy1pZFwvfSBpdCB1c2VkLiAgSW4gdGhp
cyB3YXkgdGhlIGh1YiBjYW4gZGV0ZXJtaW5lDQogICBob3cgdG8gcGFzcyBl
YWNoIHJlc3BvbnNlIGJhY2sgdG8gaXRzIGNvcnJlY3Qgc2VuZGVyIHdpdGhv
dXQgbmVlZGluZw0KICAgdG8gbWFpbnRhaW4gaW50ZXJuYWwgc3RhdGUgY29u
Y2VybmluZyBtZXNzYWdlcyBpbiBwcm9ncmVzcy4NCiAgIEh1YiBhbmQgY2xp
ZW50IGltcGxlbWVudGF0aW9ucyBtYXkgd2lzaCB0byBleHBsb2l0IHRoaXMg
ZnJlZWRvbSANCiAgIGluIGFzc2lnbmluZyBtZXNzYWdlIElEcyBmb3Igb3Ro
ZXIgcHVycG9zZXMgYXMgd2VsbCwgDQogICBmb3IgaW5zdGFuY2UgdG8gaW5j
b3Jwb3JhdGUgdGltZXN0YW1wcyBvciBjaGVja3N1bXMuDQp9Lg0KQXN5bmNo
cm9ub3VzIGNhbGxzIG1heSBiZSBzZW50IHRvIGEgZ2l2ZW4gcmVjaXBpZW50
IG9yIGJyb2FkY2FzdCB0byBhbGwNCnJlY2lwaWVudHMuICBJbiB0aGUgbGF0
dGVyIGNhc2UsIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHByZXBhcmVkIHRvIGRl
YWwNCndpdGggbXVsdGlwbGUgcmVzcG9uc2VzIHRvIHRoZSBzYW1lIGNhbGwu
DQpUaGUgYXN5bmNocm9ub3VzIHBhdHRlcm4gaXMgaWxsdXN0cmF0ZWQgaW4g
RmlndXJlflxyZWZ7ZmlnOmFzeW5jfS4NClxiZWdpbntmaWd1cmV9WyFoXQ0K
XGJlZ2lue2NlbnRlcn0NClxpbmNsdWRlZ3JhcGhpY3Nbc2NhbGU9MC40NV17
c2FtcC1hc3luY2hyb25vdXN9DQpcY2FwdGlvbntBc3luY2hyb25vdXMgcGF0
dGVybn0NClxsYWJlbHtmaWc6YXN5bmN9DQpcZW5ke2NlbnRlcn0NClxlbmR7
ZmlndXJlfQ0KJQ0KXGl0ZW1bU3luY2hyb25vdXMgQ2FsbC9SZXNwb25zZV0N
CkEgc3luY2hyb25vdXMgdXRpbGl0eSBtZXRob2QgaXMgcHJvdmlkZWQgYnkg
dGhlIGh1YiwgbWFpbmx5IGZvciBzY3JpcHQNCmVudmlyb25tZW50cyB3aGVy
ZSBkZWFsaW5nIHdpdGggYXN5bmNocm9uaWNpdHkgbWlnaHQgYmUgYSBwcm9i
bGVtLg0KVGhlIGh1YiB3aWxsIHByb3ZpZGUgc3luY2hyb25vdXMgYmVoYXZp
b3VyIHRvIHRoZSBzZW5kZXIsDQppbnRlcmFjdGluZyB3aXRoIHRoZSByZWNl
aXZlciBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyBmb3IgdGhlDQphc3lu
Y2hyb25vdXMgY2FzZSBhYm92ZS4NClxiZWdpbntlbnVtZXJhdGV9DQpcaXRl
bSBUaGUgc2VuZGVyIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUgaHViIGZvciBk
ZWxpdmVyeSB0byBhIGdpdmVuIHJlY2lwaWVudC4NCiAgICAgIFRoaXMgY2Fs
bCBibG9ja3MgdW50aWwgdGhlIHJlc3BvbnNlIGlzIGF2YWlsYWJsZS4NClxp
dGVtIFRoZSBodWIgZm9yd2FyZHMgdGhlIG1lc3NhZ2UgdG8gdGhlIHJlY2lw
aWVudCwNCiAgICBzdXBwbHlpbmcgYWxvbmcgd2l0aCB0aGUgbWVzc2FnZSBh
biBJRCBzdHJpbmcsIHtcZW0gaHViLW1zZy1pZH0uDQpcaXRlbSBUaGUgcmVj
aXBpZW50IHByb2Nlc3NlcyB0aGUgbWVzc2FnZSwgYW5kIHNlbmRzIGl0cyBy
ZXNwb25zZQ0KICAgIGJhY2sgdG8gdGhlIGh1YiBhbG9uZyB3aXRoIHRoZSBJ
RCBzdHJpbmcge1xlbSBodWItbXNnLWlkfS4NClxpdGVtIFRoZSBodWIgc2Vu
ZHMgdGhlIHJlc3BvbnNlIGFzIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUg
b3JpZ2luYWwNCiAgICBibG9ja2luZyBjYWxsIG1hZGUgYnkgdGhlIHNlbmRl
ci4NClxlbmR7ZW51bWVyYXRlfQ0KVGhlcmUgaXMgbm8gYnJvYWRjYXN0IGNv
dW50ZXJwYXJ0IGZvciB0aGUgc3luY2hyb25vdXMgY2FsbC4NClRoaXMgcGF0
dGVybiBpcyBpbGx1c3RyYXRlZCBpbiBGaWd1cmV+XHJlZntmaWc6c3luY30u
DQpcYmVnaW57ZmlndXJlfVshaF0NClxiZWdpbntjZW50ZXJ9DQpcaW5jbHVk
ZWdyYXBoaWNzW3NjYWxlPTAuNDVde3NhbXAtc3luY2hyb25vdXN9DQpcY2Fw
dGlvbntTeW5jaHJvbm91cyBwYXR0ZXJufQ0KXGxhYmVse2ZpZzpzeW5jfQ0K
XGVuZHtjZW50ZXJ9DQpcZW5ke2ZpZ3VyZX0NCiUNClxlbmR7ZGVzY3JpcHRp
b259DQoNCk5vdGUgdGhhdCB0aGUgdHdvIGRpZmZlcmVudCBjYXNlcyBmcm9t
IHRoZSByZWNlaXZlcidzIHBvaW50IG9mIHZpZXcsDQp7XGVtIE5vdGlmaWNh
dGlvblwvfSBhbmQge1xlbSBDYWxsL1Jlc3BvbnNlXC99LCANCmRpZmZlciBv
bmx5IGluIHdoZXRoZXIgYSByZXNwb25zZSBpcyByZXR1cm5lZCB0byB0aGUg
aHViLg0KSW4gb3RoZXIgcmVzcGVjdHMgdGhlIHJlY2VpdmVyIHNob3VsZCBw
cm9jZXNzIHRoZSBtZXNzYWdlIGluIA0KZXhhY3RseSB0aGUgc2FtZSB3YXkg
Zm9yIGJvdGggcGF0dGVybnMuDQoNCg0KXHN1YnNlY3Rpb257T3BlcmF0aW9u
cyBhIGh1YiBtdXN0IHN1cHBvcnR9DQpcbGFiZWx7c2VjdDpodWJPcHN9DQpU
aGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgYSBo
dWIgbXVzdCBzdXBwb3J0IGFuZCB0aGUgYXNzb2NpYXRlZCANCmRhdGEgdGhh
dCBtdXN0IGJlIHNlbnQgYW5kIHJlY2VpdmVkLg0KTWVzc2FnZSBhbmQgcmVz
cG9uc2UgYXJndW1lbnRzIGFyZSBlbmNvZGVkIGFzIHtcdHQgbWFwfSBvYmpl
Y3RzIGFzDQpkZXNjcmliZWQgaW4gU2VjdGlvbn5ccmVme3NlY3Q6bXNnLWVu
Y29kaW5nfS4NClRoZSBwcmVjaXNlIGRldGFpbHMgb2YgaG93IHRoZXNlIG9w
ZXJhdGlvbnMgDQptYXAgb250byBtZXRob2QgbmFtZXMgYW5kIHNpZ25hdHVy
ZXMgaXMgUHJvZmlsZS1kZXBlbmRlbnQuDQpUaGUgbWFwcGluZyBmb3IgdGhl
IFN0YW5kYXJkIFByb2ZpbGUgaXMgZ2l2ZW4gaW4gc2VjdGlvbiBccmVme3Nl
Y3Q6bWFwcGluZ1hNTFJQQ30uDQpcYmVnaW57aXRlbWl6ZX0NCglcaXRlbSBc
dmVyYnxyZWdpc3RlcigpfFxcDQogICAgTWV0aG9kIGNhbGxlZCBieSBhIGNs
aWVudCB3aXNoaW5nIHRvIHJlZ2lzdGVyIA0KCXdpdGggdGhlIGh1Yi4gDQoJ
Tm90ZSB0aGF0IHRoZSBmb3JtIG9mIHRoaXMgY2FsbCBtYXkgdmFyeSBhY2Nv
cmRpbmcgdG8gdGhlIHJlcXVpcmVtZW50cyANCglvZiB0aGUgcGFydGljdWxh
ciBQcm9maWxlIGluIHVzZS4gRm9yIGluc3RhbmNlIGF1dGhlbnRpY2F0aW9u
IHRva2Vucw0KICAgIG1heSBiZSBwYXNzZWQgaW4gb25lIG9yIGJvdGggZGly
ZWN0aW9ucyB0byBjb21wbGV0ZSByZWdpc3RyYXRpb24uDQogICAgXFwNCglc
aXRlbSBcdmVyYnx1bnJlZ2lzdGVyKCl8XFwNCiAgICBNZXRob2QgY2FsbGVk
IGJ5IGEgY2xpZW50IHdpc2hpbmcgdG8gdW5yZWdpc3RlciBmcm9tIHRoZSBo
dWINCiAgICBcXA0KCVxpdGVtIFx2ZXJifHNldE1ldGFkYXRhKG1hcCBtZXRh
ZGF0YSl8XFwNCiAgICBNZXRob2QgY2FsbGVkIA0KCWJ5IGEgY2xpZW50IHRv
IGRlY2xhcmUgaXRzIG1ldGFkYXRhIChuYW1lLCBpY29uLCBkZXNjcmlwdGlv
biwgZXRjIC0tLSBzZWUgDQoJc2VjdGlvbn5ccmVme3NlY3Q6YXBwLW1ldGFk
YXRhfSBmb3IgZGV0YWlscykuDQoJTWF5IGJlIGNhbGxlZCB6ZXJvIG9yIG1v
cmUgdGltZXMgdG8gdXBkYXRlIGh1YiBzdGF0ZTsgdGhlIG1vc3QgcmVjZW50
IA0KCWNhbGwgaXMgdGhlIG9uZSB3aGljaCBkZWZpbmVzIHRoZSBjbGllbnQn
cyBjdXJyZW50bHkgZGVjbGFyZWQgbWV0YWRhdGEuDQogICAgXFwNCglcaXRl
bSBcdmVyYnxtYXAgbWV0YWRhdGEgPSBnZXRNZXRhZGF0YShzdHJpbmcgY2xp
ZW50LWlkKXxcXA0KICAgIFJldHVybnMgdGhlIG1ldGFkYXRhDQoJaW5mb3Jt
YXRpb24gZm9yIHRoZSBjbGllbnQgd2hvc2UgcHVibGljIGlkIGlzIHtcdHQg
Y2xpZW50LWlkfS4NCiAgICBcXA0KCVxpdGVtIFx2ZXJifHNldE1UeXBlcyhs
aXN0IG10eXBlcyl8XFwgDQogICAgTWV0aG9kIGNhbGxlZCBieQ0KCWEgY2Fs
bGFibGUgY2xpZW50IHRvIGRlY2xhcmUgdGhlIE1UeXBlcyBpdCB3aXNoZXMg
dG8gc3Vic2NyaWJlIHRvLg0KCU1heSBiZSBjYWxsZWQgemVybyBvciBtb3Jl
IHRpbWVzIHRvIHVwZGF0ZSBodWIgc3RhdGU7IHRoZSBtb3N0IHJlY2VudCAN
CgljYWxsIGlzIHRoZSBvbmUgd2hpY2ggZGVmaW5lcyB0aGUgY2xpZW50J3Mg
Y3VycmVudGx5IHN1YnNjcmliZWQgTVR5cGVzLg0KICAgIFxcIFx0ZXh0Y29s
b3J7bWFnZW50YX17Wz8/IHBvc3NpYmx5IHdpbGRjYXJkaW5nIGFsbG93ZWQg
aGVyZSA/P119DQogICAgXFwNCglcaXRlbSBcdmVyYnxsaXN0IG10eXBlcyA9
IGdldE1UeXBlcyhzdHJpbmcgY2xpZW50LWlkKXxcXA0KICAgIFJldHVybnMg
dGhlIGFycmF5IG9mDQoJc3Vic2NyaWJlZCBNVHlwZXMgZm9yIHRoZSBjbGll
bnQgd2hvc2UgcHVibGljIGlkIGlzIHtcdHQgY2xpZW50LWlkfS4NCiAgICBc
XA0KCVxpdGVtIFx2ZXJifGxpc3QgY2xpZW50LWlkcyA9IGdldFJlZ2lzdGVy
ZWRDbGllbnRzKCl8XFwNCiAgICBSZXR1cm5zIHRoZSBsaXN0IG9mIHB1Ymxp
YyBpZHMgb2Ygb3RoZXIgcmVnaXN0ZXJlZCBjbGllbnRzLg0KICAgIFRoZSBj
YWxsZXIncyBpZCBpcyBub3QgaW5jbHVkZWQuDQogICAgXFwNCiAgICBcaXRl
bSBcdmVyYnxsaXN0IGNsaWVudC1pZHMgPSBnZXRTdWJzY3JpYmVkQ2xpZW50
cyhzdHJpbmcgbXR5cGUpfFxcDQogICAgUmV0dXJucyB0aGUgbGlzdCBvZiBw
dWJsaWMgaWRzIG9mIGFsbCBvdGhlciByZWdpc3RlcmVkIGNsaWVudHMgd2hv
IGFyZSANCiAgICBzdWJzY3JpYmVkIHRvIHRoZSBNVHlwZSB7XHR0IG10eXBl
fS4NCiAgICBUaGUgY2FsbGVyJ3MgaWQgaXMgbm90IGluY2x1ZGVkLCBldmVu
IGlmIGl0IGlzIHN1YnNjcmliZWQuDQogICAgXFwNCglcaXRlbSBcdmVyYnxz
dHJpbmcgY2xpZW50LWlkID0gZ2V0SHViSWQoKXxcXA0KICAgIFJldHVybnMg
dGhlIGNsaWVudC1pZCB3aGljaCANCglpZGVudGlmaWVzIHRoZSBodWIgaXRz
ZWxmIGFzIGEgY2xpZW50LiAgVGhpcyBpcyB0aGUgaWQgd2hpY2ggdGhlIGh1
YiANCgl1c2VzIGZvciBpbnN0YW5jZSB0byBzZW5kIGFkbWluaXN0cmF0aW9u
IG1lc3NhZ2VzIHRvIG90aGVyIGNhbmRpZGF0ZQ0KCWNsaWVudHMuDQogICAg
XFwNCglcaXRlbSBcdmVyYnxub3RpZnkoc3RyaW5nIHJlY2lwaWVudC1pZCwg
bWFwIG1lc3NhZ2UpfFxcDQogICAgTWV0aG9kIGNhbGxlZA0KCWJ5IGEgY2xp
ZW50IHdpc2hpbmcgdG8gc2VuZCBhIG5vdGlmaWNhdGlvbiB0byBhIGdpdmVu
IHJlY2lwaWVudC4NCiAgICBcXA0KCVxpdGVtIFx2ZXJifG5vdGlmeUFsbCht
YXAgbWVzc2FnZSl8XFwgDQogICAgTWV0aG9kIGNhbGxlZCBieSBhIGNsaWVu
dA0KCXdpc2hpbmcgdG8gYnJvYWRjYXN0IGEgbm90aWZpY2F0aW9uIHRvIGFs
bCByZWNpcGllbnRzLg0KICAgIFxcDQoJXGl0ZW0gXHZlcmJ8Y2FsbChzdHJp
bmcgcmVjaXBpZW50LWlkLCBzdHJpbmcgbXNnLWlkLCBtYXAgbWVzc2FnZSl8
XFwNCglNZXRob2QgY2FsbGVkIGJ5IGEgY2FsbGFibGUgY2xpZW50IHdpc2hp
bmcgdG8gc2VuZCBhbiBhc3luY2hyb25vdXMgY2FsbCB0byANCglhIGdpdmVu
IHJlY2lwaWVudC4NCiAgICBcXA0KCVxpdGVtIFx2ZXJifGNhbGxBbGwoc3Ry
aW5nIG1zZy1pZCwgbWFwIG1lc3NhZ2UpfFxcDQoJTWV0aG9kIGNhbGxlZCBi
eSBhIGNhbGxhYmxlIGNsaWVudCB3aXNoaW5nIHRvIGJyb2FkY2FzdCBhbiBh
c3luY2hyb25vdXMgDQoJY2FsbCB0byBhbGwgcmVjaXBpZW50cy4NCiAgICBc
XA0KCVxpdGVtIFx2ZXJifG1hcCByZXNwb25zZSA9IGNhbGxBbmRXYWl0KHN0
cmluZyByZWNpcGllbnQtaWQsIG1hcCBtZXNzYWdlKXxcXA0KICAgIE1ldGhv
ZA0KCWNhbGxlZCBieSBhIGNsaWVudCB3aXNoaW5nIHRvIG1ha2UgYSBzeW5j
aHJvbm91cyBjYWxsIHRvIGEgZ2l2ZW4NCglyZWNpcGllbnQuDQogICAgXFwN
CglcaXRlbSBcdmVyYnxyZXBseShzdHJpbmcgbXNnLWlkLCBzdHJpbmcgc3Vj
Y2VzcywgbWFwIHJlc3BvbnNlKXxcXA0KICAgIE1ldGhvZA0KCWNhbGxlZCBi
eSBhIGNsaWVudCB0byBzZW5kIGl0cyByZXNwb25zZSB0byBhIGdpdmVuIG1l
c3NhZ2UuDQogICAge1x0dCBzdWNjZXNzfSBpcyBhIFNBTVAgYm9vbGVhbiAo
YGB7XHR0IDF9JycgZm9yIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiANCiAgICBv
ciBgYHtcdHQgMH0nJyBmb3IgYW4gZXJyb3IpLiAgSW4gdGhlIGNhc2Ugb2Yg
c3VjY2Vzcywge1x0dCByZXNwb25zZX0gaXMgdGhlDQogICAgcmV0dXJuIHZh
bHVlIGFzIGRvY3VtZW50ZWQgZm9yIHRoZSBNVHlwZSBvZiB0aGUgbWVzc2Fn
ZS4NCiAgICBJbiB0aGUgY2FzZSBvZiBmYWlsdXJlLCB7XHR0IHJlc3BvbnNl
fSBpcyBhbiBlcnJvciBvYmplY3QgYXMgDQogICAgZGVzY3JpYmVkIGluIFxy
ZWZ7c2VjdDptc2ctZW5jb2Rpbmd9Lg0KXGVuZHtpdGVtaXplfQ0KDQpBbGwg
dGhlc2Ugb3BlcmF0aW9ucyB3aXRoIHRoZSBleGNlcHRpb24gb2Yge1x0dCBj
YWxsQW5kV2FpdCgpfSBzaG91bGQgY29tcGxldGUsIGFuZCB3aGVyZSANCmFw
cHJvcHJpYXRlIHJldHVybiBhIHJlc3VsdCwgcXVpY2tseS4NCg0KXHN1YnNl
Y3Rpb257T3BlcmF0aW9ucyBhIGh1YiBtYXkgY2FsbCBvbiBhIGNsaWVudH0N
ClxsYWJlbHtzZWN0OmNsaWVudE9wc30NCldlIGxpc3QgaW4gdGhpcyBzZWN0
aW9uIHRoZSBvcGVyYXRpb25zIHdoaWNoIG1heSBiZSBjYWxsZWQgb24gYSBj
YWxsYWJsZSBjbGllbnQuDQpOb3RlIHRoYXQgbm90IGFsbCBjbGllbnRzIG1h
eSBiZSBjYWxsYWJsZTsgc3BlY2lhbCAoUHJvZmlsZS1kZXBlbmRlbnQpIHN0
ZXBzDQptYXkgYmUgcmVxdWlyZWQgZm9yIGEgY2xpZW50IHRvIGluZm9ybSB0
aGUgaHViIGhvdyBpdCBtYXkgYmUgY29udGFjdGVkLA0KYW5kIHRodXMgYmVj
b21lIGNhbGxhYmxlLiAgQ2xpZW50cyB3aGljaCBhcmUgbm90IGNhbGxhYmxl
IGFyZSB1bmFibGUgdG8NCnJlY2VpdmUgbWVzc2FnZXMgb3IgdXNlIHRoZSBh
c3luY2hyb25vdXMgY2FsbC9yZXNwb25zZSBwYXR0ZXJuLg0KDQpNZXNzYWdl
IGFuZCByZXNwb25zZSBhcmd1bWVudHMgYXJlIGVuY29kZWQgYXMge1x0dCBt
YXB9IG9iamVjdHMgYXMNCmRlc2NyaWJlZCBpbiBTZWN0aW9uflxyZWZ7c2Vj
dDptc2ctZW5jb2Rpbmd9Lg0KVGhlIHByZWNpc2UgZGV0YWlscyBvZiBob3cg
dGhlc2Ugb3BlcmF0aW9ucyANCm1hcCBvbnRvIG1ldGhvZCBuYW1lcyBhbmQg
c2lnbmF0dXJlcyBpcyBQcm9maWxlLWRlcGVuZGVudC4NClRoZSBtYXBwaW5n
IGZvciB0aGUgU3RhbmRhcmQgUHJvZmlsZSBpcyBnaXZlbiBpbiBzZWN0aW9u
IFxyZWZ7c2VjdDptYXBwaW5nWE1MUlBDfS4NClxiZWdpbntpdGVtaXplfQ0K
CVxpdGVtIFx2ZXJifHJlY2VpdmVOb3RpZmljYXRpb24oc3RyaW5nIHNlbmRl
ci1pZCwgbWFwIG1lc3NhZ2UpfFxcDQoJTWV0aG9kIGNhbGxlZCBieSB0aGUg
aHViIHdoZW4gZGlzcGF0Y2hpbmcgYSBub3RpZmljYXRpb24gdG8gaXRzDQoJ
cmVjaXBpZW50Lg0KICAgIFxcDQoJXGl0ZW0gXHZlcmJ8cmVjZWl2ZUNhbGwo
c3RyaW5nIHNlbmRlci1pZCwgc3RyaW5nIG1zZy1pZCwgbWFwIG1lc3NhZ2Up
fFxcDQoJTWV0aG9kIGNhbGxlZCBieSB0aGUgaHViIHdoZW4gZGlzcGF0Y2hp
bmcgYSBjYWxsIHRvIGl0cyByZWNpcGllbnQuIFRoZSBjbGllbnQNCglNVVNU
IGF0IHNvbWUgbGF0ZXIgdGltZSBtYWtlIGEgbWF0Y2hpbmcgY2FsbCB0byB7
XHR0IHJlcGx5KCl9IG9uIHRoZSBodWIuDQogICAgXFwNCglcaXRlbSBcdmVy
YnxyZWNlaXZlUmVzcG9uc2Uoc3RyaW5nIHJlc3BvbmRlci1pZCwgc3RyaW5n
IG1zZy1pZCx8XFwNCiAgICAgICAgICBcdmVyYnwgICAgICAgICAgICAgICAg
c3RyaW5nIHN1Y2Nlc3MsIG1hcCByZXNwb25zZSl8XFwNCglNZXRob2QgdXNl
ZCBieSB0aGUgaHViIHRvIGRpc3BhdGNoIHRvIHRoZSBzZW5kZXIgdGhlIHJl
c3BvbnNlIG9mIGFuDQoJZWFybGllciBhc3luY2hyb25vdXMgY2FsbC4NCiAg
ICB7XHR0IHN1Y2Nlc3N9IGlzIGEgU0FNUCBib29sZWFuIChgYHtcdHQgMX0n
JyBmb3Igc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIA0KICAgIG9yIGBge1x0dCAw
fScnIGZvciBhbiBlcnJvcikuICBJbiB0aGUgY2FzZSBvZiBzdWNjZXNzLCB7
XHR0IHJlc3BvbnNlfSBpcyB0aGUNCiAgICByZXN1bHQgdmFsdWUgYXMgZG9j
dW1lbnRlZCBmb3IgdGhlIE1UeXBlIG9mIHRoZSBvcmlnaW5hbCBtZXNzYWdl
Lg0KICAgIEluIHRoZSBjYXNlIG9mIGZhaWx1cmUsIHtcdHQgcmVzcG9uc2V9
IGlzIGFuIGVycm9yIG9iamVjdCBhcyANCiAgICBkZXNjcmliZWQgaW4gXHJl
ZntzZWN0Om1zZy1lbmNvZGluZ30uDQpcZW5ke2l0ZW1pemV9DQoNCkFsbCB0
aGVzZSBvcGVyYXRpb25zIHNob3VsZCBjb21wbGV0ZSBxdWlja2x5Lg0KDQpc
c3Vic2VjdGlvbntHZW5lcmFsIGVycm9yIHByb2Nlc3Npbmd9DQpcbGFiZWx7
c2VjdDpmYXVsdHN9DQoNCkh1YnMgYW5kIGNsaWVudHMgc2hvdWxkIHVzZSB0
aGUgdXN1YWwgZXJyb3IgcmVwb3J0aW5nIG1lY2hhbmlzbXMgDQpvZiB0aGUg
dHJhbnNwb3J0IHByb3RvY29sIGluIHVzZSBpbiB0aGUgY2FzZSBvZiBiYWQg
Y2FsbHMgb2YgDQp0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGluIFNlY3Rpb25z
IFxyZWZ7c2VjdDpodWJPcHN9IGFuZCBccmVme3NlY3Q6Y2xpZW50T3BzfSwN
CmZvciBpbnN0YW5jZSANCnVzZSBvZiBzeW50YWN0aWNhbGx5IGludmFsaWQg
cGFyYW1ldGVyIHR5cGVzLg0KDQpFcnJvcnMgcHJvZHVjZWQgYnkgY2xpZW50
cyB3aGVuIHByb2Nlc3NpbmcgY2FsbC10eXBlIFNBTVAgbWVzc2FnZXMgDQp0
aGVtc2VsdmVzIChpbiByZXNwb25zZSB0byBhIHN5bnRhY3RpY2FsbHkgbGVn
YWwge1x0dCByZWNlaXZlQ2FsbCgpfQ0Kb3BlcmF0aW9uKSBzaG91bGQgYmUg
c2lnbmFsbGVkIGluIHRoZSB3YXkgdGhlIG1hdGNoaW5nIHtcdHQgcmVwbHko
KX0gDQpjYWxsIGlzIG1hZGUuICBJbiBjYXNlIG9mIGFuIGVycm9yLCB0aGUg
e1x0dCBzdWNjZXNzfSBmbGFnIHNob3VsZCBiZQ0Kc2V0IHRvIGBge1x0dCAw
fScnIGFuZCB0aGUge1x0dCByZXNwb25zZX0gb2JqZWN0IHNob3VsZCBiZSBm
aWxsZWQgaW4NCndpdGggZXJyb3IgaW5mb3JtYXRpb24gYXMgZGVzY3JpYmVk
IGluIFNlY3Rpb25+XHJlZntzZWN0Om1zZy1lbmNvZGluZ30uDQoNCiUlIE1h
cmsgVGF5bG9yJ3MgcGFydCAlJQ0KXHNlY3Rpb257U3RhbmRhcmQgUHJvZmls
ZX0NClxsYWJlbHtzZWN0OnByb2ZpbGV9DQoNCg0KU2VjdGlvbiBccmVme3Nl
Y3Q6YXJjaGl0ZWN0dXJlfSBkZWZpbmVzIHRoZSBjb25jZXB0cyBhbmQgb3Bl
cmF0aW9ucw0KdXNlZCBpbiBTQU1QIG1lc3NhZ2luZy4gIEFzIGV4cGxhaW5l
ZCBpbiBTZWN0aW9uflxyZWZ7c2VjdDpwcm9maWxlc30sIA0KaW4gb3JkZXIg
dG8gaW1wbGVtZW50IHRoaXMgYXJjaGl0ZWN0dXJlIHNvbWUgY29uY3JldGUg
Y2hvaWNlcyBhYm91dCANCmhvdyB0byBpbnN0YW50aWF0ZSB0aGVzZSBjb25j
ZXB0cyBhcmUgcmVxdWlyZWQuDQoNClRoaXMgc2VjdGlvbiBnaXZlcyB0aGUg
ZGV0YWlscyBvZiBhIFNBTVAgUHJvZmlsZSBiYXNlZCBvbiB0aGUgDQpYTUwt
UlBDIHNwZWNpZmljYXRpb24gXGNpdGV7eG1scnBjfS4gIA0KSHViIGRpc2Nv
dmVyeSBpcyB2aWEgYSBsb2NrZmlsZSBpbiB0aGUgdXNlcidzIGhvbWUgZGly
ZWN0b3J5Lg0KDQpYTUwtUlBDIGlzIGEgc2ltcGxlIGdlbmVyYWwgcHVycG9z
ZSBSZW1vdGUgUHJvY2VkdXJlIENhbGwNCnByb3RvY29sIGJhc2VkIG9uIHNl
bmRpbmcgWE1MIGRvY3VtZW50cyBvdmVyIEhUVFANCihpdCByZXNlbWJsZXMg
YSB2ZXJ5IGxpZ2h0d2VpZ2h0IHZlcnNpb24gb2YgU09BUCkuDQpTaW5jZSB0
aGUgbWFwcGluZ3MgZnJvbSBTQU1QIGNvbmNlcHRzDQpzdWNoIGFzIEFQSSBj
YWxscyBhbmQgZGF0YSB0eXBlcyB0byB0aGVpciBYTUwtUlBDIGVxdWl2YWxl
bnRzIGlzIHZlcnkgDQpzdHJhaWdodGZvcndhcmQsIGl0IGlzIGVhc3kgZm9y
IGFwcGxpY2F0aW9uIGF1dGhvcnMgdG8gd3JpdGUgDQpjb21wbGlhbnQgY29k
ZSB3aXRob3V0IHVzZSBvZiBhbnkgU0FNUC1zcGVjaWZpYyBsaWJyYXJ5IGNv
ZGUuDQpBbiBYTUwtUlBDIGxpYnJhcnksIHdoaWxlIG5vdCBlc3NlbnRpYWws
IHdpbGwgbWFrZSBjb2RpbmcgbXVjaCBlYXNpZXI7DQpzdWNoIGxpYnJhcmll
cyBhcmUgYXZhaWxhYmxlIGZvciBtYW55IGxhbmd1YWdlcy4NCg0KDQpcc3Vi
c2VjdGlvbntEYXRhIFR5cGUgTWFwcGluZ3N9DQoNClRoZSBTQU1QIGFyZ3Vt
ZW50IGFuZCByZXR1cm4gdmFsdWUgZGF0YSB0eXBlcyBkZXNjcmliZWQgaW4N
ClNlY3Rpb24gXHJlZntzZWN0OnNhbXAtZGF0YS10eXBlc30gbWFwIHN0cmFp
Z2h0Zm9yd2FyZGx5IG9udG8gWE1MLVJQQw0KZGF0YSB0eXBlcyBhcyBmb2xs
b3dzOg0KXGJlZ2lue2NlbnRlcn0NClxiZWdpbnt0YWJ1bGFyfXtsY2x9DQpT
QU1QIHR5cGUgICAgJiAgICAgICAgICAgICAgICAgICAgICAgJiBYTUwtUlBD
IGVsZW1lbnQgXFwNClxobGluZQ0Ke1x0dCBzdHJpbmd9ICYgJFxsb25nbGVm
dHJpZ2h0YXJyb3ckICYge1x0dCA8c3RyaW5nPn0gXFwNCntcdHQgbGlzdH0g
ICAmICRcbG9uZ2xlZnRyaWdodGFycm93JCAmIHtcdHQgPGFycmF5Pn0gXFwN
CntcdHQgbWFwfSAgICAmICRcbG9uZ2xlZnRyaWdodGFycm93JCAmIHtcdHQg
PHN0cnVjdD59IFxcDQpcZW5ke3RhYnVsYXJ9DQpcZW5ke2NlbnRlcn0NClRo
ZSB7XHR0IDx2YWx1ZT59IGNoaWxkcmVuIG9mIHtcdHQgPGFycmF5Pn0gYW5k
IHtcdHQgPHN0cnVjdD59IGVsZW1lbnRzDQp0aGVtc2VsdmVzIGNvbnRhaW4g
Y2hpbGRyZW4gb2YgdHlwZSB7XHR0IDxzdHJpbmc+fSwge1x0dCA8YXJyYXk+
fSBvcg0Ke1x0dCA8c3RydWN0Pn0uDQoNCg0KXHN1YnNlY3Rpb257QVBJIE1h
cHBpbmdzfQ0KXGxhYmVse3NlY3Q6bWFwcGluZ1hNTFJQQ30NCg0KVGhlIG9w
ZXJhdGlvbiBuYW1lcyBpbiB0aGUgU0FNUCBodWIgYW5kIGNsaWVudCBhYnN0
cmFjdCBBUElzDQooU2VjdGlvbnMgXHJlZntzZWN0Omh1Yk9wc30gYW5kIFxy
ZWZ7c2VjdDpjbGllbnRPcHN9KSB2ZXJ5IG5lYXJseSANCmhhdmUgYSBvbmUg
dG8gb25lIG1hcHBpbmcgd2l0aCB0aG9zZSBpbiB0aGUgU3RhbmRhcmQgUHJv
ZmlsZSBYTUwtUlBDIEFQSXMuDQpUaGUgZGlmZmVyZW5jZXMgYXJlIGFzIGZv
bGxvd3M6DQpcYmVnaW57ZW51bWVyYXRlfQ0KXGl0ZW0gVGhlIFhNTC1SUEMg
bWV0aG9kIG5hbWVzIChpLmUuXCB0aGUgY29udGVudHMgb2YgdGhlIFhNTC1S
UEMNCiAgICAgIHtcdHQgPG1ldGhvZE5hbWU+fSBlbGVtZW50cykgYXJlIGZv
cm1lZCBieSANCiAgICAgIHByZWZpeGluZyB0aGUgaHViIGFuZCBjbGllbnQg
YWJzdHJhY3QgQVBJIG9wZXJhdGlvbiBuYW1lcyB3aXRoDQogICAgICBgYHtc
dHQgc2FtcC5odWIufScnIG9yIGBge1x0dCBzYW1wLmNsaWVudC59JycgcmVz
cGVjdGl2ZWx5Lg0KXGl0ZW0gVGhlIHtcdHQgcmVnaXN0ZXIoKX0gb3BlcmF0
aW9uIHRha2VzIHRoZSB7XHR0IHNhbXAuc2VjcmV0fSB2YWx1ZQ0KICAgICAg
cmVhZCBmcm9tIHRoZSBsb2NrZmlsZSAoc2VlIFNlY3Rpb25+XHJlZntzZWN0
OmxvY2tmaWxlfSkgDQogICAgICBhcyBhbiBhcmd1bWVudCwgYW5kIHJldHVy
bnMgYSANCiAgICAgIG5ldyB7XHR0IHByaXZhdGUta2V5fSBzdHJpbmcgZ2Vu
ZXJhdGVkIGJ5IHRoZSBodWIuDQpcaXRlbSB7XGVtIEFsbFwvfSBvdGhlciBo
dWIgYW5kIGNsaWVudCBtZXRob2RzIHRha2UgdGhlIA0KICAgICAge1x0dCBw
cml2YXRlLWtleX0gYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuDQpcaXRlbSBB
IG5ldyBtZXRob2QsIHtcdHQgc2V0WG1scnBjQ2FsbGJhY2soKX0gaXMgYWRk
ZWQgdG8gdGhlIGh1YiBBUEkuDQogICAgICBcYmVnaW57aXRlbWl6ZX0NCiAg
ICAgIFxpdGVtIFx2ZXJifHNldFhtbHJwY0NhbGxiYWNrKHN0cmluZyBwcml2
YXRlLWtleSwgc3RyaW5nIHVybCl8DQogICAgICBcZW5ke2l0ZW1pemV9DQog
ICAgICBUaGlzIGluZm9ybXMgdGhlIGh1YiBvZiB0aGUgWE1MLVJQQyBlbmRw
b2ludCBvbiB3aGljaCB0aGUgY2xpZW50IA0KICAgICAgaXMgbGlzdGVuaW5n
IGZvciBjYWxscyBmcm9tIHRoZSBodWIuDQogICAgICBUaGUgY2xpZW50IGlz
IG5vdCBjb25zaWRlcmVkIENhbGxhYmxlIGludGlsIGl0IGhhcyBpbnZva2Vk
IHRoaXMgbWV0aG9kLg0KXGl0ZW0gQW5vdGhlciBuZXcgbWV0aG9kLCB7XHR0
IGlzQWxpdmUoKX0gaXMgYWRkZWQgdG8gdGhlIGh1YiBBUEkuDQogICAgICBU
aGlzIG1heSBiZSBjYWxsZWQgYnkgcmVnaXN0ZXJlZCBvciB1bnJlZ2lzdGVy
ZWQgYXBwbGljYXRpb25zDQogICAgICAoYXMgYSBzcGVjaWFsIGNhc2UgdGhl
IHtcdHQgcHJpdmF0ZS1rZXl9IGFyZ3VtZW50IG1heSBiZSBvbWl0dGVkKSwN
CiAgICAgIGFuZCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0
aGUgaHViIGlzIHJlc3BvbmRpbmcgdG8gcmVxdWVzdHMuDQogICAgICBBbnkg
bm9uLWVycm9yIHJldHVybiBpbmRpY2F0ZXMgdGhhdCB0aGUgaHViIGlzIHJ1
bm5pbmcuDQpcZW5ke2VudW1lcmF0ZX0NCg0KVGhlIHtcdHQgcHJpdmF0ZS1r
ZXl9IHN0cmluZyByZWZlcnJlZCB0byBhYm92ZSBzZXJ2ZXMgdHdvIHB1cnBv
c2VzLg0KRmlyc3QgaXQgaWRlbnRpZmllcyB0aGUgY2xpZW50IGluIGh1Yi9j
bGllbnQgY29tbXVuaWNhdGlvbnMuDQpTb21lIHN1Y2ggaWRlbnRpZmllciBp
cyByZXF1aXJlZCwgc2luY2UgWE1MLVJQQyBjYWxscyBoYXZlIG5vIG90aGVy
IHdheSBvZg0KaWRlbnRpZnlpbmcgdGhlIHNlbmRlcidzIGlkZW50aXR5Lg0K
U2Vjb25kLCBpdCBwcmV2ZW50cyBhcHBsaWNhdGlvbiBzcG9vZmluZywgc2lu
Y2UgdGhlIHByaXZhdGUga2V5IGlzDQpuZXZlciByZXZlYWxlZCB0byBvdGhl
ciBhcHBsaWNhdGlvbnMsIHNvIHRoYXQgb25lIGFwcGxpY2F0aW9uIGNhbm5v
dA0KcG9zZSBhcyBhbm90aGVyIGluIG1ha2luZyBjYWxscyB0byB0aGUgaHVi
Lg0KDQpUaGUgdXN1YWwgWE1MLVJQQyBmYXVsdCBtZWNoYW5pc20gaXMgdXNl
ZCB0byByZXNwb25kIHRvIGludmFsaWQNCmNhbGxzIGFzIGRlc2NyaWJlZCBp
biBccmVme3NlY3Q6ZmF1bHRzfS4NClRoZSBYTUwtUlBDIGZhdWx0J3Mge1x0
dCA8ZmF1bHRTdHJpbmc+fSBlbGVtZW50IHNob3VsZCBjb250YWluIGENCnVz
ZXItZGlyZWN0ZWQgbWVzc2FnZSBhcyBhcHByb3ByaWF0ZSBhbmQgdGhlIHtc
dHQgPGZhdWx0Q29kZT59IHZhbHVlDQpoYXMgbm8gcGFydGljdWxhciBzaWdu
aWZpY2FuY2UuDQoNCg0KXHN1YnNlY3Rpb257TG9ja2ZpbGUgYW5kIEh1YiBE
aXNjb3Zlcnl9DQpcbGFiZWx7c2VjdDpsb2NrZmlsZX0NCg0KSHViIGRpc2Nv
dmVyeSBpcyBwZXJmb3JtZWQgYnkgZXhhbWluaW5nIGEgbG9ja2ZpbGUgaW4g
YSB3ZWxsLWtub3duIGxvY2F0aW9uLg0KVGhpcyBoYXMgdGhlIGNvbnNlcXVl
bmNlIHRoYXQgaW4gbm9ybWFsIG9wZXJhdGlvbiBlYWNoIHVzZXIgbWF5IHJ1
bg0Kb25seSBvbmUgaHViLCBhbmQgdXNlcnMgZG8gbm90IHNoYXJlIGh1YnMu
ICBUaGUgbmFtZSBvZiB0aGUgbG9ja2ZpbGUNCmlzIGBge1x0dCAuc2FtcH0n
JyBpbiB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5Lg0KQSBgYGhvbWUgZGly
ZWN0b3J5JycgaXMgYSBzb21ld2hhdCBzeXN0ZW0tZGVwZW5kZW50IGNvbmNl
cHQ6DQp3ZSBkZWZpbmUgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZSB7XHR0IFwk
SE9NRX0gZW52aXJvbm1lbnQgdmFyaWFibGUgb24NClVuaXgtbGlrZSBzeXN0
ZW1zIGFuZCBhcyB0aGUgdmFsdWUgb2YgdGhlIHtcdHQgXCVVU0VSUFJPRklM
RVwlfSBlbnZpcm9ubWVudA0KdmFyaWFibGUgb24gTWljcm9zb2Z0IFdpbmRv
d3NcZm9vdG5vdGV7DQogICBOb3RlIHRvIEphdmEgZGV2ZWxvcGVyczogY29u
dHJhcnkgdG8gd2hhdCB5b3UgbWlnaHQgZXhwZWN0LA0KICAgdGhlIHtcdHQg
dXNlci5ob21lfSBzeXN0ZW0gcHJvcGVydHkgb24gV2luZG93cyBkb2VzIHtc
ZW0gbm90fSBnaXZlIHlvdSB0aGUNCiAgIHZhbHVlIG9mIHtcdHQgVVNFUlBS
T0ZJTEV9Lg0KICAgU2VlIGh0dHA6Ly9idWdzLnN1bi5jb20vYnVnZGF0YWJh
c2Uvdmlld1xfYnVnLmRvP2J1Z1xfaWQ9NDc4NzkzMS4NCn0uICANCg0KVGhl
IGZvcm1hdCBvZiB0aGUgZmlsZSBpcyBnaXZlbiBieSB0aGUgZm9sbG93aW5n
IEJORiBwcm9kdWN0aW9uczoNClxiZWdpbnt2ZXJiYXRpbX0NCiAgIDxmaWxl
PiAgICAgICAgICA6Oj0gICA8bGluZXM+DQogICA8bGluZXM+ICAgICAgICAg
Ojo9ICAgPGxpbmU+IHwgPGxpbmVzPiA8bGluZT4NCiAgIDxsaW5lPiAgICAg
ICAgICA6Oj0gICA8bGluZS1jb250ZW50PiA8RU9MPiB8IDxFT0w+DQogICA8
bGluZS1jb250ZW50PiAgOjo9ICAgPGNvbW1lbnQ+IHwgPGFzc2lnbm1lbnQ+
DQogICA8Y29tbWVudD4gICAgICAgOjo9ICAgIiMiIDxhbnktc3RyaW5nPg0K
ICAgPGFzc2lnbm1lbnQ+ICAgIDo6PSAgIDxuYW1lPiAiPSIgPGFueS1zdHJp
bmc+DQogICA8bmFtZT4gICAgICAgICAgOjo9ICAgPHRva2VuLXN0cmluZz4N
CiAgIDx0b2tlbi1zdHJpbmc+ICA6Oj0gICA8dG9rZW4tY2hhcj4gfCA8dG9r
ZW4tc3RyaW5nPiA8dG9rZW4tY2hhcj4NCiAgIDxhbnktc3RyaW5nPiAgICA6
Oj0gICA8YW55LWNoYXI+IHwgPGFueS1zdHJpbmc+IDxhbnktY2hhcj4NCiAg
IDxFT0w+ICAgICAgICAgICA6Oj0gICAiXHIiIHwgIlxuIiB8ICJcciIgIlxu
Ig0KICAgPHRva2VuLWNoYXI+ICAgIDo6PSAgIFthLXpBLVowLTktXy5dDQog
ICA8YW55LWNoYXI+ICAgICAgOjo9ICAgW1x4MjAtXHg3Zl0NClxlbmR7dmVy
YmF0aW19DQpcdGV4dGNvbG9ye21hZ2VudGF9e1s/PyBhcmUgcmVndWxhciBl
eHByZXNzaW9ucyBPSyBpbiBCTkY/ICBpcyB0aGVyZSBzb21lDQogICBvdGhl
ciByZWFzb25hYmx5IGNvbXBhY3Qgd2F5IG9mIGV4cHJlc3NpbmcgdGhpcz8/
XX0NCg0KVGhlIG9ubHkgcGFydHMgd2hpY2ggYXJlIHNpZ25pZmljYW50IHRv
IFNBTVAgY2xpZW50cy9odWJzIGFyZQ0KKGEpIGV4aXN0ZW5jZSBvZiB0aGUg
ZmlsZSBhbmQgKGIpIHtcdHQgPGFzc2lnbm1lbnQ+fSBsaW5lcy4NCg0KQSBs
ZWdhbCBsb2NrZmlsZSBtdXN0IHByb3ZpZGUgKGluIGFueSBvcmRlcikgdW5p
cXVlIGFzc2lnbm1lbnRzIGZvciB0aGUNCmZvbGxvd2luZyB0b2tlbnM6DQpc
YmVnaW57aXRlbWl6ZX0NClxpdGVtIHtcdHQgc2FtcC5zZWNyZXR9DQogICAg
ICBBbiBvcGFxdWUgdGV4dCBzdHJpbmcgd2hpY2ggbXVzdCBiZSBwYXNzZWQg
dG8gdGhlIGh1YiB0byBwZXJtaXQNCiAgICAgIHJlZ2lzdHJhdGlvbi4NClxp
dGVtIHtcdHQgc2FtcC5odWIueG1scnBjLnVybH0NCiAgICAgIFRoZSBYTUwt
UlBDIGVuZHBvaW50IGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGh1Yi4N
ClxpdGVtIHtcdHQgc2FtcC5wcm9maWxlLnZlcnNpb259DQogICAgICBUaGUg
dmVyc2lvbiBvZiB0aGUgU0FNUCBTdGFuZGFyZCBQcm9maWxlIGltcGxlbWVu
dGVkIGJ5IHRoZSBodWINCiAgICAgIChgYDEuMCcnIGZvciB0aGUgdmVyc2lv
biBkZXNjcmliZWQgYnkgdGhpcyBkb2N1bWVudCkuDQpcZW5ke2l0ZW1pemV9
DQppdCBtYXkgb3B0aW9uYWxseSBpbmNsdWRlIG90aGVyIGJsYW5rLCBjb21t
ZW50IG9yIGFzc2lnbm1lbnQgbGluZXMsDQpidXQgdG9rZW5zIGJlZ2lubmlu
ZyBgYHtcdHQgc2FtcC59JycgbWF5IG9ubHkgYmUgYXNzaWduZWQgYXMgZGVz
Y3JpYmVkIGhlcmUuDQoNClRoZSBsb2NrZmlsZSBzaG91bGQgbm9ybWFsbHkg
YmUgY3JlYXRlZCB3aXRoIHBlcm1pc3Npb25zIHdoaWNoIGFsbG93DQpvbmx5
IGl0cyBvd25lciB0byByZWFkIGl0LiAgVGhpcyBwcm92aWRlcyBhIG1lYXN1
cmUgb2Ygc2VjdXJpdHkgaW4NCnRoYXQgb25seSBwcm9jZXNzZXMgd2l0aCB0
aGUgc2FtZSBwZXJtaXNzaW9ucyBhcyB0aGUgaHViIHByb2Nlc3MNCihoZW5j
ZSBwcmVzdW1hYmx5IHJ1bm5pbmcgdW5kZXIgdGhlIHNhbWUgdXNlciBJRCkg
d2lsbCBiZSBhYmxlIHRvDQpyZWdpc3RlciB3aXRoIHRoZSBodWIsIHNpbmNl
IG9ubHkgdGhleSB3aWxsIGJlIGFibGUgdG8gcHJvdmlkZSB0aGUNCntcdHQg
c2FtcC5zZWNyZXR9IHJlcXVpcmVkIGZvciByZWdpc3RyYXRpb24uICBUaHVz
IHVuZGVyIG5vcm1hbA0KY2lyY3Vtc3RhbmNlcyBhbGwgcGFydGljaXBhbnRz
IGluIGEgU0FNUCBjb252ZXJzYXRpb24gY2FuIGJlDQpwcmVzdW1lZCBvd25l
ZCBieSB0aGUgc2FtZSB1c2VyLCBhbmQgdGhlcmVmb3JlIG5vdCBtYWxpY2lv
dXMuXGZvb3Rub3Rlew0KICAgT2YgY291cnNlIHRoZXkgbWF5IGJlIG93bmVk
IGJ5IHRoZSBzYW1lIHVzZXIgYW5kIHN0aWxsIGJlIG1hbGljaW91cywNCiAg
IGJ1dCBpbiB0aGlzIGNhc2UgU0FNUCByZXByZXNlbnRzIG5vIGFkZGl0aW9u
YWwgc2VjdXJpdHkgcmlzay4NCn0NCg0KQW4gZXhhbXBsZSBsb2NrZmlsZSBt
aWdodCB0aGVyZWZvcmUgbG9vayBsaWtlIHRoaXM6DQpcYmVnaW57dmVyYmF0
aW19DQogICAjIFNBTVAgbG9ja2ZpbGUgd3JpdHRlbiAyMDA4LTI5LTAyVDE3
OjQ1OjAxDQogICAjIFJlcXVpcmVkIGtleXM6DQogICBzYW1wLnNlY3JldD03
MzQxNDRmZGFhYjg0MDBhMWVjMg0KICAgc2FtcC5odWIueG1scnBjLnVybD1o
dHRwOi8vYW5kcm9tZWRhLnN0YXIuYnJpcy5hYy51azo4MDAxL3htbHJwYw0K
ICAgc2FtcC5wcm9maWxlLnZlcnNpb249MS4wDQogICAjIEluZm8gc3RvcmVk
IGJ5IGh1YiBmb3Igc29tZSBwcml2YXRlIHJlYXNvbjoNCiAgIGNvbS55b3lv
ZHluZS5odWJpZD1jODA5OTVmMQ0KXGVuZHt2ZXJiYXRpbX0NCg0KVGhlIGV4
aXN0ZW5jZSBvZiB0aGUgZmlsZSBNQVkgYmUgdGFrZW4gKGUuZy5cIGJ5IGEg
aHViIGRlY2lkaW5nIHdoZXRoZXINCnRvIHN0YXJ0IG9yIG5vdCkgdG8gaW5k
aWNhdGUgdGhhdCBhIGh1YiBpcyBydW5uaW5nLg0KSG93ZXZlciBpdCBpcyBS
RUNPTU1FTkRFRCB0byBhdHRlbXB0IHRvIGNvbnRhY3QgdGhlIGh1Yg0KYXQg
dGhlIGdpdmVuIFhNTC1SUEMgVVJMIChlLmcuXCBieSBjYWxsaW5nIHtcdHQg
aXNBbGl2ZSgpfSkNCnRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGFjdHVh
bGx5IGFsaXZlLg0KDQpUaGUgaHViIGRpc2NvdmVyeSBzZXF1ZW5jZXMgYXJl
IHRoZXJlZm9yZSBhcyBmb2xsb3dzOg0KDQpcYmVnaW57aXRlbWl6ZX0NClxp
dGVtIENsaWVudCBzdGFydHVwOg0KICAgXGJlZ2lue2l0ZW1pemV9DQogICBc
aXRlbSBEZXRlcm1pbmUgaHViIGV4aXN0ZW5jZSBhcyBhYm92ZQ0KICAgXGl0
ZW0gSWYgbm8gaHViLCBjbGllbnQgTUFZIHN0YXJ0IGl0cyBvd24gaHViDQog
ICBcaXRlbSBBY3F1aXJlIHtcdHQgc2FtcC5zZWNyZXR9IHZhbHVlIGZyb20g
bG9ja2ZpbGUNCiAgIFxpdGVtIElmIHByZS1leGlzdGluZyBvciBvd24gaHVi
IGlzIHJ1bm5pbmcsIGNhbGwge1x0dCByZWdpc3RlcigpfSBhbmQNCiAgICAg
ICAgIHplcm8gb3IgbW9yZSBvZiB7XHR0IHNldFhtbHJwY0NhbGxiYWNrKCl9
LCB7XHR0IHNldE1ldGFkYXRhKCl9LA0KICAgICAgICAge1x0dCBzZXRNVHlw
ZXMoKX0NCiAgIFxlbmR7aXRlbWl6ZX0NClxpdGVtIEh1YiBzdGFydHVwOg0K
ICAgXGJlZ2lue2l0ZW1pemV9DQogICBcaXRlbSBEZXRlcm1pbmUgaHViIGV4
aXN0ZW5jZSBhcyBhYm92ZQ0KICAgXGl0ZW0gSWYgaHViIGlzIHJ1bm5pbmcs
IGV4aXQNCiAgIFxpdGVtIE90aGVyd2lzZSwgc3RhcnQgdXAgWE1MLVJQQyBz
ZXJ2ZXINCiAgIFxpdGVtIFdyaXRlIGxvY2tmaWxlIHdpdGggbWFuZGF0b3J5
IGFzc2lnbm1lbnRzIGluY2x1ZGluZyBYTUwtUlBDIGVuZHBvaW50DQogICBc
ZW5ke2l0ZW1pemV9DQpcaXRlbSBIdWIgc2h1dGRvd246DQogICBcYmVnaW57
aXRlbWl6ZX0NCiAgIFxpdGVtIE5vdGlmeSBjYW5kaWRhdGUgY2xpZW50cyB0
aGF0IHNodXRkb3duIHdpbGwgb2NjdXINCiAgIFxpdGVtIFJlbW92ZSBsb2Nr
ZmlsZSAoaXQgaXMgUkVDT01NRU5ERUQgdG8gZmlyc3QgY2hlY2sgdGhhdCB0
aGlzDQogICAgICAgICBpcyB0aGUgbG9ja2ZpbGUgd3JpdHRlbiBieSBzZWxm
KQ0KICAgXGl0ZW0gU2h1dCBkb3duIHNlcnZpY2VzDQogICBcZW5ke2l0ZW1p
emV9DQpcZW5ke2l0ZW1pemV9DQoNCkh1YiBpbXBsZW1lbnRhdGlvbnMgU0hP
VUxEIG1ha2UgdGhlaXIgYmVzdCBlZmZvcnQgdG8gcGVyZm9ybSB0aGUNCnNo
dXRkb3duIHNlcXVlbmNlIGFib3ZlIGV2ZW4gaWYgdGhleSB0ZXJtaW5hdGUg
YXMgYSByZXN1bHQgb2Ygc29tZQ0KZXJyb3IgY29uZGl0aW9uLg0KDQpOb3Rl
IHRoYXQgbWFuaXB1bGF0aW9uIG9mIGEgZmlsZSBpcyBub3QgYXRvbWljLCBz
byB0aGF0IHJhY2UgY29uZGl0aW9ucw0KYXJlIHBvc3NpYmxlLiAgRm9yIGlu
c3RhbmNlIGEgY2xpZW50IG9yIGh1YiBleGFtaW5pbmcgdGhlIGxvY2tmaWxl
DQptYXkgcmVhZCBpdCBhZnRlciBpdCBoYXMgYmVlbiBjcmVhdGVkIGJ1dCBi
ZWZvcmUgaXQgaGFzIGJlZW4gcG9wdWxhdGVkDQp3aXRoIHRoZSBtYW5kYXRv
cnkgYXNzaWdubWVudHMsIG9yIHR3byBodWJzIG1heSBsb29rIGZvciBhIGxv
Y2tmaWxlDQpzaW11bHRhbmVvdXNseSwgbm90IGZpbmQgb25lLCBhbmQgYm90
aCBkZWNpZGUgdGhhdCB0aGV5IHNob3VsZA0KdGhlcmVmb3JlIHN0YXJ0IHVw
LCBvbmUgcHJlc3VtYWJseSBvdmVyd3JpdGluZyB0aGUgb3RoZXIncyBsb2Nr
ZmlsZS4NCkh1YiBhbmQgY2xpZW50IGltcGxlbWVudGF0aW9ucyBzaG91bGQg
YmUgYXdhcmUgb2Ygc3VjaCBwb3NzaWJpbGl0aWVzLA0KYnV0IG1heSBub3Qg
YmUgYWJsZSB0byBndWFyYW50ZWUgdG8gYXZvaWQgdGhlbSBvciB0aGVpciBj
b25zZXF1ZW5jZXMuDQpJbiBnZW5lcmFsIHRoaXMgaXMgdGhlIHNvcnQgb2Yg
cmlzayB0aGF0IFNBTVAgYW5kIGl0cw0KU3RhbmRhcmQgUHJvZmlsZSBhcmUg
cHJlcGFyZWQgdG8gdGFrZSAtLS0gYW4gZXZlbnR1YWxpdHkgd2hpY2ggd2ls
bCBvY2N1cg0Kc3VmZmljaWVudGx5IGluZnJlcXVlbnRseSB0aGF0IGl0IGlz
IG5vdCB3b3J0aCBzaWduaWZpY2FudA0KYWRkaXRpb25hbCBjb21wbGV4aXR5
IHRvIGF2b2lkLg0KSW4gdGhlIHdvcnN0IGNhc2UgYSBTQU1QIHNlc3Npb24g
bWF5IGZhaWwgaW4gc29tZSB3YXksIGFuZCB3aWxsIGhhdmUNCnRvIGJlIHJl
c3RhcnRlZC4NCg0KDQpcc3Vic2VjdGlvbntFeGFtcGxlc30NCg0KSGVyZSBp
cyBhbiBleGFtcGxlIGluIHBzZXVkby1jb2RlIG9mIGhvdyBhbiBhcHBsaWNh
dGlvbiBtaWdodCBsb2NhdGUgYW5kDQpyZWdpc3RlciB3aXRoIGEgaHViLCBh
bmQgc2VuZCBhIG1lc3NhZ2UgcmVxdWlyaW5nIG5vIHJlc3BvbnNlIHRvIG90
aGVyDQpyZWdpc3RlcmVkIGNsaWVudHMuDQpcYmVnaW57dmVyYmF0aW19DQog
ICAjIFJlYWQgaW5mb3JtYXRpb24gZnJvbSBsb2NrZmlsZSB0byBsb2NhdGUg
YW5kIHJlZ2lzdGVyIHdpdGggaHViLg0KICAgc3RyaW5nIGh1Yi11cmwgPSBy
ZWFkRnJvbUxvY2tmaWxlKCJzYW1wLmh1Yi54bWxwcmMudXJsIik7DQogICBz
dHJpbmcgc2FtcC1zZWNyZXQgPSByZWFkRnJvbUxvY2tmaWxlKCJzYW1wLnNl
Y3JldCIpOw0KDQogICAjIEVzdGFibGlzaCBYTUwtUlBDIGNvbm5lY3Rpb24g
d2l0aCBodWIgKHVzZXMgc29tZSBnZW5lcmljIFhNTC1SUEMgbGlicmFyeSkN
CiAgIHhtbHJwY1NlcnZlciBodWIgPSB4bWxycGNDb25uZWN0KGh1Yi11cmwp
Ow0KDQogICAjIFJlZ2lzdGVyIHdpdGggaHViLg0KICAgc3RyaW5nIHByaXZh
dGUta2V5ID0gaHViLnhtbHJwY0NhbGwoInNhbXAuaHViLnJlZ2lzdGVyIiwg
c2FtcC1zZWNyZXQpOw0KDQogICAjIFN0b3JlIG1ldGFkYXRhIGluIGh1YiBm
b3IgdXNlIGJ5IG90aGVyIGFwcGxpY2F0aW9ucy4NCiAgIG1hcCBtZXRhZGF0
YSA9ICgic2FtcC5uYW1lIiAtPiAiZHVtbXkiLA0KICAgICAgICAgICAgICAg
ICAgICJzYW1wLmRlc2NyaXB0aW9uIiAtPiAiVGVzdCBBcHBsaWNhdGlvbiIs
DQogICAgICAgICAgICAgICAgICAgImR1bW15LnZlcnNpb24iIC0+ICIwLjEt
MyIpOw0KICAgaHViLnhtbHJwY0NhbGwoInNhbXAuaHViLnNldE1ldGFkYXRh
IiwgcHJpdmF0ZS1rZXksIG1ldGFkYXRhKTsNCg0KICAgIyBTZW5kIGEgbWVz
c2FnZSByZXF1ZXN0aW5nIGZpbGUgbG9hZCB0byBhbGwgb3RoZXIgcmVnaXN0
ZXJlZCBjbGllbnRzLA0KICAgIyBub3Qgd2FudGluZyBhbnkgcmVzcG9uc2Uu
DQogICBtYXAgbG9hZFBhcmFtcyA9ICgiZmlsZW5hbWUiIC0+ICIvdG1wL2Zv
by5iYXIiKTsNCiAgIG1hcCBsb2FkTXNnID0gKCJtdHlwZSIgLT4gImZpbGUu
bG9hZCIsDQogICAgICAgICAgICAgICAgICAicGFyYW1zIiAtPiAibG9hZFBh
cmFtcyIpOw0KICAgaHViLnhtbHJwY0NhbGwoInNhbXAuaHViLm5vdGlmeUFs
bCIsIHByaXZhdGUta2V5LCBsb2FkTXNnKTsNCg0KICAgIyBVbnJlZ2lzdGVy
DQogICBodWIueG1scnBjQ2FsbCgic2FtcC5odWIudW5yZWdpc3RlciIsIHBy
aXZhdGUta2V5KTsNClxlbmR7dmVyYmF0aW19DQoNClRoZSBmaXJzdCBmZXcg
WE1MLVJQQyBkb2N1bWVudHMgc2VudCBvdmVyIHRoZSB3aXJlIGZvciB0aGlz
IGV4Y2hhbmdlIA0Kd291bGQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGUgZm9s
bG93aW5nLiAgDQpUaGUgcmVnaXN0cmF0aW9uIGNhbGwgZnJvbSB0aGUgY2xp
ZW50IHRvIHRoZSBodWI6DQpcYmVnaW57dmVyYmF0aW19DQogICBQT1NUIC94
bWxycGMgSFRUUC8xLjANCiAgIFVzZXItQWdlbnQ6IEphdmEvMS41LjBfMTAN
CiAgIENvbnRlbnQtVHlwZTogdGV4dC94bWwNCiAgIENvbnRlbnQtTGVuZ3Ro
OiAxODkNCg0KICAgPD94bWwgdmVyc2lvbj0iMS4wIj8+DQogICA8bWV0aG9k
Q2FsbD4NCiAgICAgPG1ldGhvZE5hbWU+c2FtcC5odWIucmVnaXN0ZXI8L21l
dGhvZE5hbWU+DQogICAgIDxwYXJhbXM+DQogICAgICAgPHBhcmFtPjx2YWx1
ZT48c3RyaW5nPjczNDE0NGZkYWFiODQwMGExZWMyPC9zdHJpbmc+PC92YWx1
ZT48L3BhcmFtPg0KICAgICA8L3BhcmFtcz4NCiAgIDwvbWV0aG9kQ2FsbD4N
ClxlbmR7dmVyYmF0aW19DQp3aGljaCBsZWFkcyB0byB0aGUgcmVzcG9uc2U6
DQpcYmVnaW57dmVyYmF0aW19DQogICBIVFRQLzEuMSAyMDAgT0sNCiAgIENv
bm5lY3Rpb246IGNsb3NlDQogICBDb250ZW50LVR5cGU6IHRleHQveG1sDQog
ICBDb250ZW50LUxlbmd0aDogMTQ4DQoNCiAgIDw/eG1sIHZlcnNpb249IjEu
MCI/Pg0KICAgPG1ldGhvZFJlc3BvbnNlPg0KICAgICA8cGFyYW1zPg0KICAg
ICAgIDxwYXJhbT48dmFsdWU+PHN0cmluZz5hcHAtaWQ6MWE1MmZkZi0yPC9z
dHJpbmc+PC92YWx1ZT48L3BhcmFtPg0KICAgICA8L3BhcmFtcz4NCiAgIDwv
bWV0aG9kUmVzcG9uc2U+DQpcZW5ke3ZlcmJhdGltfQ0KVGhlIGNsaWVudCBt
aWdodCB0aGVuIGRlY2xhcmUgaXRzIG1ldGFkYXRhOg0KdGhlIHJlc3BvbnNl
IHRvIHRoaXMgY2FsbCBoYXMgbm8gdXNlZnVsIGNvbnRlbnQgc28gY2FuIGJl
IGlnbm9yZWQgb3IgZGlzY2FyZGVkLg0KXGJlZ2lue3ZlcmJhdGltfQ0KICAg
UE9TVCAveG1scnBjIEhUVFAvMS4wDQogICBVc2VyLUFnZW50OiBKYXZhLzEu
NS4wXzEwDQogICBDb250ZW50LVR5cGU6IHRleHQveG1sDQogICBDb250ZW50
LUxlbmd0aDogNTk2DQoNCiAgIDw/eG1sIHZlcnNpb249IjEuMCI/Pg0KICAg
PG1ldGhvZENhbGw+DQogICAgIDxtZXRob2ROYW1lPnNhbXAuaHViLnNldE1l
dGFkYXRhPC9tZXRob2ROYW1lPg0KICAgICA8cGFyYW1zPg0KICAgICAgIDxw
YXJhbT48dmFsdWU+PHN0cmluZz5hcHAtaWQ6MWE1MmZkZi0yPC9zdHJpbmc+
PC92YWx1ZT48L3BhcmFtPg0KICAgICAgIDxwYXJhbT48dmFsdWU+PHN0cnVj
dD4NCiAgICAgICAgIDxtZW1iZXI+DQogICAgICAgICAgIDxuYW1lPnNhbXAu
bmFtZTwvbmFtZT4NCiAgICAgICAgICAgPHZhbHVlPjxzdHJpbmc+ZHVtbXk8
L3N0cmluZz48L3ZhbHVlPg0KICAgICAgICAgPC9tZW1iZXI+DQogICAgICAg
ICA8bWVtYmVyPg0KICAgICAgICAgICA8bmFtZT5zYW1wLmRlc2NyaXB0aW9u
PC9uYW1lPg0KICAgICAgICAgICA8dmFsdWU+PHN0cmluZz5UZXN0IGFwcGxp
Y2F0aW9uPC9zdHJpbmc+PC92YWx1ZT4NCiAgICAgICAgIDwvbWVtYmVyPg0K
ICAgICAgICAgPG1lbWJlcj4NCiAgICAgICAgICAgPG5hbWU+ZHVtbXkudmVy
c2lvbjwvbmFtZT4NCiAgICAgICAgICAgPHZhbHVlPjxzdHJpbmc+MC4xLTM8
L3N0cmluZz48L3ZhbHVlPg0KICAgICAgICAgPC9tZW1iZXI+DQogICAgICAg
PC9zdHJ1Y3Q+PC92YWx1ZT48L3BhcmFtPg0KICAgICA8L3BhcmFtcz4NCiAg
IDwvbWV0aG9kQ2FsbD4NClxlbmR7dmVyYmF0aW19DQoNCkNhbGxzIGZyb20g
dGhlIGh1YiB0byB0aGUgY2xpZW50IGFyZSBhbG9uZyBzaW1pbGFyIGxpbmVz
Lg0KDQoNCiUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUl
JSUlJSUlJSUlJSUlJSUlJSUlDQpcc2VjdGlvbntNVHlwZXM6IE1lc3NhZ2Ug
U2VtYW50aWNzIGFuZCBWb2NhYnVsYXJ5fQ0KXGxhYmVse3NlY3Q6bXR5cGVz
fQ0KDQogICAgICAgIEFzIHN0YXRlZCBlYXJsaWVyLCBhIG1lc3NhZ2UgY29u
dGFpbnMgYW4ge1xlbSBtdHlwZX0gc3RyaW5nIHRoYXQNCmRlZmluZXMgdGhl
IHNlbWFudGljIG1lYW5pbmcgb2YgdGhlIG1lc3NhZ2UsIGZvciBleGFtcGxl
IGEgcmVxdWVzdCBmb3INCmFub3RoZXIgYXBwbGljYXRpb24gdG8gbG9hZCBh
IHRhYmxlLiAgSXQgYWxzbyBoYXMgb3RoZXIgYXR0cmlidXRlcyBhbmQNCm9w
dGlvbmFsIHBhcmFtZXRlcnMgdG8gZm9ybSB0aGUgY29tcGxldGUgbWVzc2Fn
ZSB0aGF0IHdlIHdpbGwgb3V0bGluZQ0KYmVsb3cuICBUaGVzZSBtZXNzYWdl
cyBhbHNvIHBsYXkgYSBudW1iZXIgb2Ygcm9sZXMgaW4gYSBtZXNzYWdpbmcg
c3lzdGVtLA0KYWx0aG91Z2ggbm90IGV2ZXJ5IG1lc3NhZ2UgaXMgYXBwcm9w
cmlhdGUgZm9yIGV2ZXJ5IHJvbGUuICBCZWxvdyB3ZSB3aWxsDQpkaXNjdXNz
IHRoZSB0eXBlcyBvZiBtZXNzYWdlcyB1c2VkIGluIFNBTVAgYW5kIHNlZSBo
b3cgc3BlY2lmaWMge1xlbQ0KbXR5cGVzfSBhcmUgdXNlZC4NCg0KICAgICAg
ICBJbiB0aGlzIHNlY3Rpb24gd2Ugd2lsbCBhbHNvIGRpc2N1c3MgdGhlIGZv
cm0gYW5kIHJlcXVpcmVkIGVsZW1lbnRzDQpvZiBhIG1lc3NhZ2UsIGFuZCB0
aGUgdHlwZXMgb2YgbWVzc2FnZXMgbmVlZGVkIGJ5IG1hbnkgY29tbW9uIGRl
c2t0b3ANCmFwcGxpY2F0aW9ucy4gIFRoaXMgZGlzY3Vzc2lvbiBpcyBieSBu
byBtZWFucyBjb21wbGV0ZTsgIHdpdGhpbiB0aGUgcnVsZXMNCm9mIGhvdyBt
ZXNzYWdlcyBhcmUgZGVmaW5lZCBoZXJlIGFuZCB0aGUgZGVsaXZlcnkgbWVj
aGFuaXNtcyBkZXNjcmliZWQsDQpkZXZlbG9wZXJzIGFyZSBmcmVlIHRvIGNy
ZWF0ZSBtZXNzYWdlIHR5cGVzIGFuZCB1c2FnZSBwYXR0ZXJucyBub3QgZGV0
YWlsZWQNCmhlcmUuICBOZXcgbWVzc2FnZXMgYWZmZWN0aW5nIHRoZSBtZXNz
YWdpbmcgc3lzdGVtIGl0c2VsZiAoZS5nLlwgdGhvc2UgdXNlZA0KaW4gY29t
bXVuaWNhdGlvbnMgd2l0aCB0aGUgSHViIG9yIHRob3NlIG5lZWRlZCB0byBl
bnN1cmUgaW50ZXJvcGVyYWJpbGl0eQ0Kc3VjaCBhcyBhIHJldHVybiBzdGF0
dXMgY29kZSkgc2hvdWxkIGJlIGZvcm1hbGl6ZWQgZm9yIHdpZGVyIHVzZSBs
YXRlcg0KdXNpbmcgYSAoVEJEKSBwcm9jZWR1cmUgb3V0bGluZWQgYmVsb3cu
ICBBcHBsaWNhdGlvbiBtZXNzYWdlIHR5cGVzLCBlLmcuDQp0aG9zZSB0aGF0
IGV4cG9zZSBzb21lIGZ1bmN0aW9uYWxpdHkgb2YgYSBwYXJ0aWN1bGFyIGFw
cGxpY2F0aW9uLCBhcmUNCmVudGlyZWx5IG9wZW4tZW5kZWQgYW5kIHJlcXVp
cmUgbm8gZm9ybWFsIHByb2Nlc3MgdG8gYmUgYWRvcHRlZCBieQ0KZGV2ZWxv
cGVycy4NCg0KDQpcc3Vic2VjdGlvbntUaGUgTVR5cGUgb2YgYSBNZXNzYWdl
fQ0KXGxhYmVse3NlY3Q6bXR5cGVNc2d9DQoNCiAgICAgICBBIGtleSBjb25j
ZXB0IG9mIGEgbWVzc2FnZSBpcyB0aGUge1xlbSBNdHlwZX0gYXR0cmlidXRl
IHRoYXQNCmRlZmluZXMgdGhlIHNlbWFudGljIG1lYW5pbmcgb2YgdGhlIG1l
c3NhZ2UuICBUaGUgY29uY2VwdCBiZWhpbmQgdGhlIE10eXBlDQppcyBzaW1p
bGFyIHRvIHRoYXQgb2YgYSBVQ0QgaW4gdGhhdCBhIHNtYWxsIHZvY2FidWxh
cnkgaXMgc3VmZmljaWVudCB0bw0KZGVzY3JpYmUgdGhlIGV4cGVjdGVkIHJh
bmdlIG9mIGNvbmNlcHRzIHJlcXVpcmVkIGJ5IGEgbWVzc2FnaW5nIHN5c3Rl
bQ0Kd2l0aGluIHRoZSBjdXJyZW50IHNjb3BlIG9mIHRoZSBTQU1QIHByb3Rv
Y29sLiAgQXMgbm90ZWQgZWFybGllciwNCmRldmVsb3BlcnMgYXJlIGZyZWUg
dG8gaW50cm9kdWNlIG5ldyBNVHlwZXMgZm9yIHVzZSB3aXRoaW4gYXBwbGlj
YXRpb25zDQp3aXRob3V0IHJlc3RyaWN0aW9uOyBuZXcgTVR5cGVzIGludGVu
ZGVkIHRvIGJlIHVzZWQgZm9yIEh1YiBtZXNzYWdpbmcgb3INCm90aGVyIGFk
bWluaXN0cmF0aXZlIHB1cnBvc2VzIHdpdGhpbiB0aGUgbWVzc2FnaW5nIHN5
c3RlbSBzaG91bGQgYmUgZGlzY3Vzc2VkDQp3aXRoaW4gdGhlIElWT0EgZm9y
IGFwcHJvdmFsIGFzIHBhcnQgb2YgdGhlIFNBTVAgc3RhbmRhcmQuICBUaGUg
ZGV0YWlscyBhbmQNCnBvbGljeSBmb3IgYWRvcHRpbmcgbmV3IHN0YW5kYXJk
IE1UeXBlcyBhcmUgVEJELg0KDQpcc3Vic3Vic2VjdGlvbntUaGUgRm9ybSBv
ZiBhbiBNdHlwZX0NCg0KICAgICAgICBMaWtlIGEgVUNELCBhbiBNdHlwZSBp
cyBtYWRlIHVwIG9mIHtcZW0gYXRvbXN9Lg0KVGhlc2UgYXJlIG5vdCBvbmx5
IG1lYW5pbmdmdWwgdG8gdGhlIGRldmVsb3BlciwgYnV0IGZvcm0gdGhlIGNl
bnRyYWwNCmNvbmNlcHQgb2YgdGhlIG1lc3NhZ2UuICBCZWNhdXNlIHdlIHdp
c2ggdG8gbG9vc2VseSBjb3VwbGUgdGhlIGNhcGFiaWxpdGllcw0Kb25lIGFw
cGxpY2F0aW9uIGlzIHNlYXJjaGluZyBmb3IgZnJvbSB0aGUgZGV0YWlscyBv
ZiB3aGF0IGFub3RoZXIgbWF5DQpwcm92aWRlLCB3ZSBkb24ndCBjcmVhdGUg
YSByaWdvcm91cyBkZWZpbml0aW9uIG9mIHRoZSB7XGVtIGJlaGF2aW9yfSB0
aGF0DQphbiBNVHlwZSBtdXN0IHByb3Zva2UgaW4gYSByZWNlaXZlci4gIElu
c3RlYWQsIHRoZSBNdHlwZSBkZWZpbmVzIGEgc3BlY2lmaWMNCnNlbWFudGlj
IG1lc3NhZ2Ugc3VjaCBhcyBgYGRpc3BsYXkgYW4gaW1hZ2UnJywgaXQgaXMg
dXAgdG8gdGhlIHJlY2VpdmluZw0KYXBwbGljYXRpb24gdG8gZGV0ZXJtaW5l
IGhvdyBpdCBjaG9vc2VzIHRvIGRvIHRoZSBkaXNwbGF5IChlLmcuXCBhIHJl
bmRlcmVkDQpncmV5c2NhbGUgaW1hZ2Ugd2l0aGluIGFuIGFwcGxpY2F0aW9u
IG9yIGRpc3BsYXlpbmcgdGhlIGltYWdlIGluIGEgd2ViDQpicm93c2VyIG1p
Z2h0IGJvdGggYmUgdmFsaWQgZm9yIHRoZSByZWNpcGllbnQgYW5kIGZhaXRo
ZnVsIHRvIHRoZSBtZWFuaW5nDQpvZiB0aGUgbWVzc2FnZSkuDQoNCiAgICAg
ICAgVGhlIG9yZGVyaW5nIG9mIHRoZSB3b3JkcyBpbiBhbiBNdHlwZSBzaG91
bGQgbm9ybWFsbHkgdXNlIHRoZQ0Kb2JqZWN0IG9mIHRoZSBtZXNzYWdlIGZv
bGxvd2VkIGJ5IHRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkIChvciB0aGUN
CmluZm9ybWF0aW9uIGFib3V0IHRoYXQgb2JqZWN0KS4gIEZvciBleGFtcGxl
LCB0aGUgdXNlIG9mIGBgaW1hZ2UuZGlzcGxheScnDQppcyBwcmVmZXJyZWQg
dG8gYGBkaXNwbGF5LmltYWdlJycgaW4gb3JkZXIgdG8ga2VlcCB0aGUgbnVt
YmVyIG9mIHRvcGxldmVsDQp3b3JkcyAoYW5kIHRodXMgbWVzc2FnZSBjbGFz
c2VzKSBsaWtlIGBpbWFnZScgc21hbGwsIGJ1dCBzdGlsbCBhbGxvdyBmb3Ig
YQ0Kd2lkZSB2YXJpZXR5IG9mIG1lc3NhZ2VzIHRvIGJlIGNyZWF0ZWQgdGhh
dCBjYW4gcGVyZm9ybSBtYW55IHVzZWZ1bCBhY3Rpb25zDQpvbiBhbiBpbWFn
ZS4gIElmIG5vIGV4aXN0aW5nIE1UeXBlIGV4aXN0cyBmb3IgdGhlIHJlcXVp
cmVkIHB1cnBvc2UsDQpkZXZlbG9wZXJzIGNhbiBhZ3JlZSB0byB0aGUgdXNl
IG9mIGEgbmV3IE10eXBlIHN1Y2ggYXMNCmBpbWFnZS5kaXNwbGF5LmV4dG51
bScgaWYgZS5nLlwgdGhlIGFiaWxpdHkgdG8gZGlzcGxheSBhIHNwZWNpZmlj
IGltYWdlDQpleHRlbnNpb24gbnVtYmVyIHdhcnJhbnRzIGEgbmV3IE10eXBl
Lg0KDQoJVGhlIHN5bnRheCBvZiBhbiBNVHlwZSBpcyBnaXZlbiBieSB0aGUg
Zm9sbG93aW5nIEJORjoNClxiZWdpbnt2ZXJiYXRpbX0NCjxtY2hhcj4gIDo6
PSBbMC05YS16XSB8ICItIiB8ICJfIg0KPGF0b20+ICAgOjo9IDxtY2hhcj4g
fCA8YXRvbT4gPG1jaGFyPg0KPHBlcmlvZD4gOjo9ICIuIg0KPG10eXBlPiAg
Ojo9IDxhdG9tPiB8IDxhdG9tPiA8cGVyaW9kPiA8YXRvbT4NClxlbmR7dmVy
YmF0aW19DQoNCg0KXHN1YnN1YnNlY3Rpb257VGhlIERlc2NyaXB0aW9uIG9m
IGFuIE1UeXBlfQ0KDQpJbiBvcmRlciB0aGF0IHNlbmRlcnMgYW5kIHJlY2lw
aWVudHMgY2FuIGFncmVlIG9uIHdoYXQgaXMgbWVhbnQgYnkgDQphIGdpdmVu
IG1lc3NhZ2UsIHRoZSBtZWFuaW5nIG9mIGFuIE1UeXBlIG11c3QgYmUgY2xl
YXJseSBkb2N1bWVudGVkLg0KVGhpcyBtZWFucyB0aGF0IGZvciBhIGdpdmVu
IE1UeXBlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gbXVzdCBiZQ0KYXZh
aWxhYmxlOg0KXGJlZ2lue2l0ZW1pemV9DQpcaXRlbSBUaGUgTVR5cGUgc3Ry
aW5nIGl0c2VsZi4NClxpdGVtIEEgbGlzdCBvZiB6ZXJvIG9yIG1vcmUgcGFy
YW1ldGVycy4gIEZvciBlYWNoIG9uZToNCiAgIFxiZWdpbntpdGVtaXplfQ0K
ICAgXGl0ZW0gbmFtZQ0KICAgXGl0ZW0gZGF0YSB0eXBlICh7XHR0IG1hcH0s
IHtcdHQgbGlzdH0gb3Ige1x0dCBzdHJpbmd9DQogICAgICBhcyBkZXNjcmli
ZWQgaW4gXHJlZntzZWN0OnNhbXAtZGF0YS10eXBlc30pIGFuZCBpZiBhcHBy
b3ByaWF0ZQ0KICAgICAgc2NhbGFyIHN1Yi10eXBlIChzZWUgXHJlZntzZWN0
OnNjYWxhci10eXBlc30pIA0KICAgXGl0ZW0gbWVhbmluZw0KICAgXGl0ZW0g
d2hldGhlciBpdCBpcyBSRVFVSVJFRCBvciBPUFRJT05BTA0KICAgXGl0ZW0g
T1BUSU9OQUwgcGFyYW1ldGVycyBNQVkgc3BlY2lmeSB3aGF0IGRlZmF1bHQg
d2lsbCBiZSB1c2VkDQogICAgICAgICBpZiB0aGUgdmFsdWUgaXMgbm90IHN1
cHBsaWVkDQogICBcZW5ke2l0ZW1pemV9DQpcaXRlbSBBIGxpc3Qgb2YgemVy
byBvciBtb3JlIHJldHVybmVkIHZhbHVlcy4gIEZvciBlYWNoIG9uZToNCiAg
IFxiZWdpbntpdGVtaXplfQ0KICAgXGl0ZW0gbmFtZQ0KICAgXGl0ZW0gZGF0
YSB0eXBlICh7XHR0IG1hcH0sIHtcdHQgbGlzdH0gb3Ige1x0dCBzdHJpbmd9
DQogICAgICBhcyBkZXNjcmliZWQgaW4gXHJlZntzZWN0OnNhbXAtZGF0YS10
eXBlc30pIGFuZCBpZiBhcHByb3ByaWF0ZQ0KICAgICAgc2NhbGFyIHN1Yi10
eXBlIChzZWUgXHJlZntzZWN0OnNjYWxhci10eXBlc30pIA0KICAgXGl0ZW0g
bWVhbmluZw0KICAgXGl0ZW0gd2hldGhlciBpdCBpcyBSRVFVSVJFRCBvciBP
UFRJT05BTA0KICAgXGl0ZW0gT1BUSU9OQUwgcmV0dXJuIHZhbHVlcyBNQVkg
c3BlY2lmeSB3aGF0IGRlZmF1bHQgaXMgaW50ZW5kZWQNCiAgICAgICAgIGlm
IHRoZSB2YWx1ZSBpcyBub3Qgc3VwcGxpZWQNCiAgIFxlbmR7aXRlbWl6ZX0N
ClxpdGVtIEEgZGVzY3JpcHRpb24gb2YgdGhlIG1lYW5pbmcgb2YgdGhlIG1l
c3NhZ2UuDQogICAgICBUaGlzIHNob3VsZCBjb252ZXkgdGhlIHNlbWFudGlj
IG1lYW5pbmcgb2YgdGhlIG1lc3NhZ2UsIGUuZy5cIHRoYXQNCiAgICAgIGFu
IGV2ZW50IG9mIHNvbWUgdHlwZSBoYXMgb2NjdXJyZWQsIG9yIHRoYXQgYSBz
cGVjaWZpYyByZXF1ZXN0IGlzDQogICAgICBpcyBiZWluZyBtYWRlLg0KXGVu
ZHtpdGVtaXplfQ0KVGhpcyBpcyBqdXN0IHRoZSBzYW1lIGluZm9ybWF0aW9u
IGFzIG9uZSBvdWdodCB0byBzdXBwbHkgZm9yDQpkb2N1bWVudGF0aW9uIG9m
IHB1YmxpYyBpbnRlcmZhY2UgbWV0aG9kIGluIGEgd2Vha2x5LXR5cGVkIHBy
b2dyYW1taW5nDQpsYW5ndWFnZS4NCg0KTm90ZSB0aGF0IGl0IGlzIHBvc3Np
YmxlIGZvciB0aGUgTVR5cGUgdG8gaGF2ZSBubyByZXR1cm5lZCB2YWx1ZXMu
DQpUaGlzIGlzIGFjdHVhbGx5IHF1aXRlIGNvbW1vbiBpZiB0aGUgTVR5cGUg
ZG9lcyBub3QgcmVwcmVzZW50IGENCnJlcXVlc3QgZm9yIGRhdGEuICBJdCBp
cyBub3QgdXN1YWxseSBuZWNlc3NhcnkgdG8gZGVmaW5lIGEgc3RhdHVzLXR5
cGUNCnJldHVybiB2YWx1ZSAoc3VjY2VzcyBvciBmYWlsdXJlKSwgc2luY2Ug
YSBzZW5kZXIgd2hpY2ggaXMgaW50ZXJlc3RlZA0KaW4gd2hldGhlciB0aGUg
bWVzc2FnZSBwcm9jZXNzaW5nIHdhcyBzdWNjZXNzZnVsIGNhbiB3YWl0IHRv
IHNlZSB3aGV0aGVyIA0KdGhlIHJlc3BvbnNlIGZyb20gdGhlIG1lc3NhZ2Ug
aXMgYW4gZXJyb3Igb3Igbm90ICh0aGUgY2xpZW50DQp7XHR0IHJlY2VpdmVS
ZXNwb25zZSgpfSBtZXRob2QgaGFzIGEge1x0dCBzdWNjZXNzfSBmbGFnIHNl
dCkuDQpTbyByZXR1cm4gdmFsdWVzIG9ubHkgbmVlZCB0byBiZSBkZWZpbmVk
IGlmIHRoZXJlIGlzIGRhdGEgdG8gcmV0dXJuLg0KSWYgdGhlcmUgaXMgbm90
LCB0aGUgcmVzcG9uc2Ugb2JqZWN0IHdpbGwgYmUgYSB7XHR0IG1hcH0gd2l0
aCBubyBlbnRyaWVzLg0KDQpBcyBleHBsYWluZWQgaW4gU2VjdGlvbn5ccmVm
e3NlY3Q6bXNnZGVmfSwgcGFyYW1ldGVycyBhbmQgcmV0dXJuZWQgdmFsdWVz
DQp3aGljaCBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgTVR5cGUgbWF5IGJl
IHBhc3NlZCBhcyB3ZWxsIGFzIHRob3NlIA0Kd2hpY2ggYXJlLiAgQ2xpZW50
cyB3aGljaCBkbyBub3QgcmVjb2duaXNlIHRoZXNlIHNob3VsZCB1c3VhbGx5
IGlnbm9yZSB0aGVtLg0KDQoNClxzdWJzZWN0aW9ue010eXBlIFZvY2FidWxh
cnl9DQoNCglJbiB0aGUgZGVzY3JpcHRpb24gYmVsb3cgdGhlIHtcZW0gbXR5
cGV9IGF0dHJpYnV0ZSBvZiB0aGUgbWVzc2FnZQ0KaXMgY29uc3RydWN0ZWQg
ZnJvbSB0aGUgdG9wbGV2ZWwgYW5kIHNlY29uZGFyeSB3b3Jkcy4gIEFueSBh
cmd1bWVudHMNCnJlcXVpcmVkIGJ5IHRoZSBtZXNzYWdlIE1VU1QgYmUgZW5j
b2RlZCBpbiB0aGUgbWVzc2FnZSB7XGVtIHBhcmFtc30NCmF0dHJpYnV0ZS4g
IFRoZSBNdHlwZXMgcHJlc2VudGVkIGhlcmUgYXJlIGludGVuZGVkIHRvIGJl
IHN1Z2dlc3Rpb25zIHRoYXQNCndlIGhvcGUgd2lsbCBiZSBhZG9wdGVkIGJ5
IGRldmVsb3BlcnM7IGNvbmNlcHRzIGFuZCBNdHlwZXMgbm90IHNob3duIGhl
cmUNCm1heSBhbHNvIGJlIHVzZWQgYW5kIG1heSBhcHBlYXIgaW4gbGF0ZXIg
dmVyc2lvbnMgb2YgdGhpcyBkb2N1bWVudCBpZiANCnRoZXkgYmVjb21lIHdp
ZGVseSBhY2NlcHRlZC4NCg0KJSBkZWZpbmUgY29tbWFuZCBmb3IgZGVzY3Jp
YmluZyBhbiBNVHlwZS4NCiUgYXJndW1lbnRzIGFyZToNCiUgICAgcXVhbGlm
aWVkIG5hbWUsDQolICAgIHBhcmFtZXRlciBsaXN0LA0KJSAgICBkZXNjcmlw
dGlvbiwgDQolICAgIGV4YW1wbGUgdXNlDQpcbmV3Y29tbWFuZHtcbXR5cGVk
ZWZ9WzRdew0KICAgXGJlZ2lue2Rlc2NyaXB0aW9ufQ0KICAgICBcaXRlbVt7
XHR0ICMxfTpdXG1ib3hcXA0KICAgICBcYmVnaW57ZGVzY3JpcHRpb259DQog
ICAgICAgXGl0ZW1bQXJndW1lbnRzOl1cbWJveFxwcm90ZWN0XFwgIzINCiAg
ICAgICBcaXRlbVtEZXNjcmlwdGlvbjpdXG1ib3hccHJvdGVjdFxcICMzDQog
ICAgICAgXGl0ZW1bRXhhbXBsZSBVc2U6XVxtYm94XHByb3RlY3RcXCAjNA0K
ICAgICBcZW5ke2Rlc2NyaXB0aW9ufQ0KICAgXGVuZHtkZXNjcmlwdGlvbn0N
Cn0NCg0KJSBkZWZpbmUgY29tbWFuZCBmb3IgZGVzY3JpYmluZyBhbiBNVHlw
ZSBhcmd1bWVudC4NCiUgYXJndW1lbnRzIGFyZToNCiUgICAgbmFtZSwNCiUg
ICAgdHlwZSwNCiUgICAgc2hvcnQgZGVzY3JpcHRpb24NClxuZXdjb21tYW5k
e1xtdHlwZWFyZ31bM117DQogICB7XHR0ICMyICMxfSAtLS0gIzMNCn0NCg0K
XG5ld2NvbW1hbmR7XG10eXBlbm9hcmdzfXsNCiAgIHtcZW0gbm9uZX0NCn0N
Cg0KDQoNClxiZWdpbnt2ZXJiYXRpbX0NCiAgICBtdHlwZSAgICAgICAgICAg
ICAgICBhcmdzICAgICAgIHJldHVybnMgICAgIG1lYW5pbmcNCiAgICAtLS0t
LSAgICAgICAgICAgICAgICAtLS0tICAgICAgIC0tLS0tLS0gICAgIC0tLS0t
LS0NClxlbmR7dmVyYmF0aW19DQoNClxzdWJzdWJzZWN0aW9ue0FwcGxpY2F0
aW9uIE1lc3NhZ2VzfQ0KDQpUaGVzZSBtZXNzYWdlIHR5cGVzIGhhdmUgdGhl
IHRvcGxldmVsIHdvcmQgYGB7XHR0IGFwcH0nJy4NClRoZXkgYXJlIGludGVu
ZGVkIHRvIGNvbnZleSBzb21lIGNoYW5nZSBpbiB0aGUgc3RhdGUgb2YgYSBz
ZW5kaW5nIGFwcGxpY2F0aW9uLg0KDQpcYmVnaW57dmVyYmF0aW19DQogICAg
YXBwDQogICAgICAgIGV2ZW50DQogICAgICAgICAgICByZWdpc3RlciAgICAg
aWQgICAgICAgICAgICAgICAgICAgICBhcHAgaGFzIHJlZ2lzdGVyZWQNCiAg
ICAgICAgICAgIHVucmVnaXN0ZXIgICBpZCAgICAgICAgICAgICAgICAgICAg
IGFwcCBoYXMgdW5yZWdpc3RlcmVkDQogICAgICAgICAgICBzdGFydGluZyAg
ICAgaWQgICAgICAgICAgICAgICAgICAgICBhcHAgc3RhcnRzIHByb2Nlc3Np
bmcNCiAgICAgICAgICAgIHN0b3BwaW5nICAgICBpZCAgICAgICAgICAgICAg
ICAgICAgIGFwcCBzdG9wcyBwcm9jZXNzaW5nDQogICAgICAgICAgICBtdHlw
ZSAgICAgICAgbXR5cGVzICAgICAgICAgICAgICAgICBhcHAgZGVjbGFyZXMg
bmV3IG10eXBlDQogICAgICAgICAgICAgICAgICAgICAgICAgaWQNCiAgICAg
ICAgICAgIG1ldGFkYXRhICAgICBtZXRhICAgICAgICAgICAgICAgICAgIGFw
cCBkZWNsYXJlcyBuZXcgbWV0YWRhdGENCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZA0KICAgICAgICBzdGF0dXMoPz8pDQogICAgICAgICAgICBvayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAgZXhlY3V0aW5n
IG5vcm1hbGx5DQogICAgICAgICAgICBlcnJvciAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcHAgZW5jb3VudGVyZWQgZXJyb3INCiAgICAgICAg
ICAgID8/Pw0KXGVuZHt2ZXJiYXRpbX0NCg0KXHN1YnN1YnNlY3Rpb257U2V0
L0dldCBNZXNzYWdlc30NCg0KVGhlc2UgbWVzc2FnZSB0eXBlcyBoYXZlIHRo
ZSB0b3BsZXZlbCB3b3JkIGBge1x0dCBzZXR9Jycgb3IgYHtcdHQgZ2V0fScn
Lg0KVGhleSBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIGdlbmVyYWwgbWVj
aGFuaXNtIGZvciBzZXR0aW5nL2dldHRpbmcNCnZhbHVlcyBmcm9tIGEgcmVt
b3RlIGFwcGxpY2F0aW9uIGJleW9uZCB0aGUgc2NvcGUgb2Ygd2hhdCBpcyBh
dmFpbGFibGUNCnVzaW5nIGVpdGhlciB0aGUgQ2xpZW50IG9yIHRoZSBIdWIu
DQoNClxiZWdpbnt2ZXJiYXRpbX0NCiAgICBzZXQNCiAgICAgICAgbXR5cGUg
ICAgICAgICAgICBtdHlwZSAgICAgICAgICAgICAgICAgIHNldCBsaXN0IG9m
IG10eXBlcw0KICAgICAgICBtZXRhZGF0YSAgICAgICAgIG1ldGEgICAgICAg
ICAgICAgICAgICAgc2V0IGxpc3Qgb2YgbWV0YWRhdGENCiAgICAgICAgcGFy
YW0gICAgICAgICAgICBwYXJhbSAgICAgICAgICAgICAgICAgIHNldCBwYXJh
bWV0ZXIgdG8gdmFsdWUNCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZQ0KDQogICAgZ2V0DQogICAgICAgIG10eXBlICAgICAgICAgICAgICAgICAg
ICAgICBtdHlwZXMgICAgICBnZXQgbGlzdCBvZiBzdXBwb3J0ZWQgbXR5cGVz
DQogICAgICAgIG1ldGFkYXRhICAgICAgICAgcGFyYW0gICAgICB2YWx1ZSAg
ICAgICBnZXQgbWV0YWRhdGEgaXRlbSBmcm9tIGNsaWVudA0KICAgICAgICBw
YXJhbSAgICAgICAgICAgIHBhcmFtICAgICAgdmFsdWUNClxlbmR7dmVyYmF0
aW19DQoNClxzdWJzdWJzZWN0aW9ue1N0YXR1cyBNZXNzYWdlc30NCg0KVGhl
c2UgbWVzc2FnZSB0eXBlcyBoYXZlIHRoZSB0b3BsZXZlbCB3b3JkIGBge1x0
dCBzdGF0dXN9JycuDQpUaGV5IGFyZSBpbnRlbmRlZCB0byBjb252ZXkgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIGFuIGFwcGxpY2F0aW9uLA0K
b3IgaXRzIHJlc3BvbnNlIHRvIGEgUmVxdWVzdCBtZXNzYWdlLg0KDQpcYmVn
aW57dmVyYmF0aW19DQogICAgc3RhdHVzDQogICAgICAgIG9rICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIHByb2Nlc3Nl
ZCBub3JtYWxseQ0KICAgICAgICBpbnZhbGlkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZSBpbnZhbGlkIChiYWRseSBmb3JtZWQp
DQogICAgICAgIHVua25vd24gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlIHVua25vd24gKGJhZCBtdHlwZSkNCiAgICAgICAgZGVs
aXZlcnkgICAgICAgICBzdGF0X3N0ciAgICAgICAgICAgICAgIGRlbGl2ZXJ5
IHN0YXR1cw0KICAgICAgICBwcm9ncmVzcw0KICAgICAgICAgICAgcGVyY2Vu
dCAgICAgIHBlcmNlbnQgICAgICAgICAgICAgICAgcGVyY2VudGFnZSBjb21w
bGV0ZWQgKGZsb2F0KQ0KICAgICAgICAgICAgdGltZUxlZnQgICAgIHRpbWUg
ICAgICAgICAgICAgICAgICAgZXN0LiB0aW1lIHJlbWFpbmluZyAoc2VjKQ0K
ICAgICAgICBlcnJvciAgICAgICAgICAgIGVycl9zdHIgICAgICAgICAgICAg
ICAgZXJyb3IgbWVzc2FnZQ0KXGVuZHt2ZXJiYXRpbX0NCg0KXHN1YnN1YnNl
Y3Rpb257RmlsZSBNZXNzYWdlc30NCg0KVGhlc2UgbWVzc2FnZSB0eXBlcyBo
YXZlIHRoZSB0b3BsZXZlbCB3b3JkIGBge1x0dCBmaWxlfScnLg0KVGhleSBh
cmUgaW50ZW5kZWQgdG8gcGVyZm9ybSBzb21lIGFjdGlvbiBvbiBhIGZpbGUg
cmVnYXJkbGVzcyBvZiBmb3JtYXQuDQoNCg0KXGJlZ2lue3ZlcmJhdGltfQ0K
ICAgIGZpbGUNCiAgICAgICAgZXZlbnQNCiAgICAgICAgICAgIGxvYWQgICAg
ICAgICBmaWxlbmFtZSAgICAgICAgICAgICAgIHRoZSAnZmlsZW5hbWUnIHdh
cyBsb2FkZWQNCiAgICAgICAgICAgIHNhdmUgICAgICAgICBmaWxlbmFtZSAg
ICAgICAgICAgICAgIHRoZSAnZmlsZW5hbWUnIHdhcyBzYXZlZA0KICAgICAg
ICBsb2FkICAgICAgICAgICAgIGZpbGVuYW1lICAgICAgICAgICAgICAgbG9h
ZCB0aGlzIGZpbGUgJ2ZpbGVuYW1lJw0KICAgICAgICBzYXZlICAgICAgICAg
ICAgIGZpbGVuYW1lICAgICAgICAgICAgICAgc2F2ZSB0byAnZmlsZW5hbWUn
DQpcZW5ke3ZlcmJhdGltfQ0KDQoNClxzdWJzdWJzZWN0aW9ue0ltYWdlIE1l
c3NhZ2VzfQ0KDQpUaGVzZSBtZXNzYWdlcyBoYXZlIHRoZSB0b3BsZXZlbCB3
b3JkIGBge1x0dCBpbWFnZX0nJy4NClRoZXkgYXJlIGludGVuZGVkIHRvIGlu
dm9rZSBvcGVyYXRpb25zIG9uIGltYWdlIGRhdGEgb2JqZWN0cy4NCg0KXGJl
Z2lue3ZlcmJhdGltfQ0KICAgIGltYWdlDQogICAgICAgIGV2ZW50DQogICAg
ICAgICAgICBsb2FkICAgICAgICAgaW1uYW1lICAgICAgICAgICAgICAgICB0
aGUgJ2ltbmFtZScgd2FzIGxvYWRlZA0KICAgICAgICAgICAgc2F2ZSAgICAg
ICAgIGltbmFtZSAgICAgICAgICAgICAgICAgdGhlICdpbW5hbWUnIHdhcyBz
YXZlZA0KICAgICAgICBsb2FkICAgICAgICAgICAgIGltbmFtZSAgICAgICAg
ICAgICAgICAgbG9hZCBpbWFnZSAnaW1uYW1lJw0KICAgICAgICBzYXZlICAg
ICAgICAgICAgIGltbmFtZSAgICAgICAgICAgICAgICAgc2F2ZSBpbWFnZSB0
byAnaW1uYW1lJw0KDQogICAgICAgIGRpc3BsYXkgICAgICAgICAgaW1uYW1l
ICAgICAgICAgICAgICAgICBkaXNwbGF5IGltYWdlIGluICdpbW5hbWUnDQog
ICAgICAgIHBhblRvICAgICAgICAgICAgeCwgeSAgICAgICAgICAgICAgICAg
ICBwYW4gZGlzcGxheSAoYXJiIGNvb3JkcykNCiAgICAgICAgICAgIHBpeGVs
ICAgICAgICB4LCB5ICAgICAgICAgICAgICAgICAgIHBhbiBkaXNwbGF5IHRv
IHBpeGVsIGNvb3Jkcw0KICAgICAgICAgICAgc2t5ICAgICAgICAgIHJhLCBk
ZWMgICAgICAgICAgICAgICAgcGFuIGRpc3BsYXkgdG8gc2t5IGNvb3Jkcw0K
ICAgICAgICB6b29tICAgICAgICAgICAgIGxldmVsICAgICAgICAgICAgICAg
ICAgem9vbSB0byBnaXZlbiBsZXZlbCAoKy8tTiBsZXZlbCkNCiAgICAgICAg
aGlnaGxpZ2h0DQogICAgICAgICAgICBwaXhlbCAgICAgICAgeCwgeSAgICAg
ICAgICAgICAgICAgICBoaWdobGlnaHQgcG9pbnQgYXQgcGl4ZWwgY29vcmRz
DQogICAgICAgICAgICBza3kgICAgICAgICAgcmEsIGRlYyAgICAgICAgICAg
ICAgICBoaWdobGlnaHQgcG9pbnQgYXQgc2t5IGNvb3Jkcw0KXGVuZHt2ZXJi
YXRpbX0NCg0KXHN1YnN1YnNlY3Rpb257UXVlcnkgTWVzc2FnZXN9DQoNClRo
ZXNlIG1lc3NhZ2UgdHlwZXMgaGF2ZSB0aGUgdG9wbGV2ZWwgd29yZCBgYHtc
dHQgcXVlcnl9JycuDQpUaGV5IGFyZSBpbnRlbmRlZCB0byBwZXJmb3JtIHNv
bWUgYWN0aW9uIG9uDQphIHF1ZXJ5IG9iamVjdC4gIFF1ZXJpZXMgd2lsbCB0
eXBpY2FsbHkgYmUgQURRTCwgYnV0DQpubyBzcGVjaWZpY2F0aW9uIGlzIG1h
ZGUgYWJvdXQgdGhlIGZvcm1hdCBvZiBhIHF1ZXJ5Lg0KDQpcYmVnaW57dmVy
YmF0aW19DQogICAgcXVlcnkNCiAgICAgICAgZXhlYw0KICAgICAgICAgICAg
YWRxbCAgICAgICAgIGFkcWxfc3RyICAgIHJlc3VsdCAgICAgZXhlY3V0ZSB0
aGUgQURRTCBxdWVyeQ0KICAgICAgICAgICAgc3FsICAgICAgICAgIHNxbF9z
dHIgICAgIHJlc3VsdCAgICAgZXhlY3V0ZSB0aGUgU1FMIHF1ZXJ5DQogICAg
ICAgICAgICBleHByICAgICAgICAgZXhwcl9zdHIgICAgcmVzdWx0ICAgICBl
dmFsdWF0ZSB0aGUgZXhwcmVzc2lvbg0KXGVuZHt2ZXJiYXRpbX0NCg0KXHN1
YnN1YnNlY3Rpb257U3BlY3RydW0gTWVzc2FnZXN9DQoNClRoZXNlIG1lc3Nh
Z2UgdHlwZXMgaGF2ZSB0aGUgdG9wbGV2ZWwgd29yZCBgYHtcdHQgc3BlY3Ry
dW19JycuDQpUaGV5IGFyZSBpbnRlbmRlZCB0byBpbnZva2Ugb3BlcmF0aW9u
cyBvbiBzcGVjdHJ1bSBkYXRhIG9iamVjdHMuDQoNClxiZWdpbnt2ZXJiYXRp
bX0NCiAgICBzcGVjdHJ1bQ0KICAgICAgICBldmVudA0KICAgICAgICAgICAg
bG9hZCAgICAgICAgIHNwZWNuYW1lICAgICAgICAgICAgICAgdGhlICd0Ymxu
YW1lJyB3YXMgbG9hZGVkDQogICAgICAgICAgICAgICAgdGFibGUgICAgc3Bl
Y3RhYmxlICAgICAgICAgICAgICB0aGUgZ2l2ZW4gdGFibGUgd2FzIGxvYWRl
ZA0KICAgICAgICAgICAgICAgIGltYWdlICAgIHNwZWNpbWFnZSAgICAgICAg
ICAgICAgdGhlIGdpdmVuIGltYWdlIHdhcyBsb2FkZWQNCiAgICAgICAgICAg
IHNhdmUgICAgICAgICBzcGVjbmFtZSAgICAgICAgICAgICAgIHRoZSAndGJs
bmFtZScgd2FzIHNhdmVkDQogICAgICAgICAgICAgICAgdGFibGUgICAgc3Bl
Y3RhYmxlICAgICAgICAgICAgICB0YWJsZSB3YXMgc2F2ZWQgdG8gZm5hbWUN
CiAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZQ0KICAgICAgICAgICAg
ICAgIGltYWdlICAgIHNwZWNpbWFnZSAgICAgICAgICAgICAgaW1hZ2Ugc2F2
ZWQgdG8gaW1uYW1lDQogICAgICAgICAgICAgICAgICAgICAgICAgaW1uYW1l
DQogICAgICAgIGxvYWQgICAgICAgICAgICAgc3BlY25hbWUgICAgICAgICAg
ICAgICBsb2FkIHRhYmxlICd0YmxuYW1lJw0KICAgICAgICAgICAgdGFibGUg
ICAgICAgIHNwZWN0YWJsZSAgICAgICAgICAgICAgdGFibGUgd2FzIGxvYWRl
ZA0KICAgICAgICAgICAgaW1hZ2UgICAgICAgIHNwZWNpbWFnZSAgICAgICAg
ICAgICAgaW1hZ2Ugd2FzIGxvYWRlZA0KICAgICAgICBzYXZlICAgICAgICAg
ICAgIHNwZWNuYW1lICAgICAgICAgICAgICAgc3BlY3RydW0gc2F2ZWQgdG8g
J3NwZWNuYW1lJw0KICAgICAgICAgICAgdGFibGUgICAgICAgIHNwZWN0YWJs
ZSAgICAgICAgICAgICAgdGFibGUgc2F2ZWQgdG8gJ2ZuYW1lJw0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGZuYW1lDQogICAgICAgICAgICBpbWFnZSAg
ICAgICAgc3BlY2ltYWdlICAgICAgICAgICAgICBpbWFnZSBzYXZlZCB0byAn
aW1uYW1lJw0KICAgICAgICAgICAgICAgICAgICAgICAgIGltbmFtZQ0KXGVu
ZHt2ZXJiYXRpbX0NCg0KDQpcc3Vic3Vic2VjdGlvbntUYWJsZSBNZXNzYWdl
c30NCg0KVGhlc2UgbWVzc2FnZSB0eXBlcyBoYXZlIHRoZSB0b3BsZXZlbCB3
b3JkIGBge1x0dCB0YWJsZX0nJy4NClRoZXkgYXJlIGludGVuZGVkIHRvIGlu
dm9rZSBvcGVyYXRpb25zIG9uIHRhYmxlIChhbnkgZm9ybWF0KSBkYXRhIG9i
amVjdHMuDQoNClxiZWdpbnt2ZXJiYXRpbX0NCiAgICB0YWJsZQ0KICAgICAg
ICBldmVudA0KICAgICAgICAgICAgbG9hZCAgICAgICAgIHRibG5hbWUgICAg
ICAgICAgICAgICAgdGhlICd0YmxuYW1lJyB3YXMgbG9hZGVkDQogICAgICAg
ICAgICBzYXZlICAgICAgICAgdGJsbmFtZSAgICAgICAgICAgICAgICB0aGUg
J3RibG5hbWUnIHdhcyBzYXZlZA0KICAgICAgICBsb2FkICAgICAgICAgICAg
IHRibG5hbWUgICAgICAgICAgICAgICAgbG9hZCB0YWJsZSAndGJsbmFtZScN
CiAgICAgICAgc2F2ZSAgICAgICAgICAgICB0YmxuYW1lICAgICAgICAgICAg
ICAgIHNhdmUgdGFibGUgdG8gJ3RibG5hbWUnDQoNCiAgICAgICAgaGlnaGxp
Z2h0DQogICAgICAgICAgICByb3cgICAgICAgICAgcm93ICAgICAgICAgICAg
ICAgICAgICBoaWdobGlnaHQgc3BlY2lmaWVkIHJvdw0KICAgICAgICAgICAg
Y29sICAgICAgICAgIGNvbCAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0
IHNwZWNpZmllZCBjb2x1bW4NCiAgICAgICAgICAgIGNlbGwgICAgICAgICBy
b3csIGNvbCAgICAgICAgICAgICAgIGhpZ2hsaWdodCBjZWxsIGF0IHBvc2l0
aW9uDQogICAgICAgIHNlbGVjdA0KICAgICAgICAgICAgcm93ICAgICAgICAg
IHJvdyAgICAgICAgICAgICAgICAgICAgc2VsZWN0IChzdWJzZXQpIG5hbWVk
IHJvdw0KICAgICAgICAgICAgY29sICAgICAgICAgIGNvbCAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0IChzdWJzZXQpIG5hbWVkIGNvbHVtbg0KICAgICAg
ICAgICAgcm93TGlzdCAgICAgIHJvd3MgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0IChzdWJzZXQpIG5hbWVkIHJvd3MNCiAgICAgICAgICAgIGNvbExpc3Qg
ICAgICBjb2xzICAgICAgICAgICAgICAgICAgIHNlbGVjdCAoc3Vic2V0KSBu
YW1lZCBjb2x1bW5zDQpcZW5ke3ZlcmJhdGltfQ0KDQoNClxzdWJzdWJzZWN0
aW9ue1VSTCBNZXNzYWdlc30NCg0KVGhlc2UgbWVzc2FnZSB0eXBlcyBoYXZl
IHRoZSB0b3BsZXZlbCB3b3JkIGBge1x0dCB1cmx9JycuDQpUaGV5IGFyZSBp
bnRlbmRlZCB0byBwZXJmb3JtIHNvbWUgYWN0aW9uIG9uIGEgVVJMLg0KDQpc
YmVnaW57dmVyYmF0aW19DQogICAgdXJsDQogICAgICAgIGV2ZW50DQogICAg
ICAgICAgICBsb2FkICAgICAgICAgdXJsICAgICAgICAgICAgICAgICAgICAn
dXJsJyB3YXMgbG9hZGVkDQogICAgICAgICAgICBzYXZlICAgICAgICAgdXJs
ICAgICAgICAgICAgICAgICAgICAndXJsJyB3YXMgc2F2ZWQgdG8gJ2ZpbGVu
YW1lJw0KICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lDQogICAg
ICAgIGxvYWQgICAgICAgICAgICAgdXJsICAgICAgICAgICAgICAgICAgICBs
b2FkIHVybCBhdCAndXJsJw0KICAgICAgICBzYXZlICAgICAgICAgICAgIHVy
bCAgICAgICAgICAgICAgICAgICAgc2F2ZSAndXJsJyB0byAnZmlsZW5hbWUn
DQogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUNClxlbmR7dmVy
YmF0aW19DQoNCg0KXHN1YnN1YnNlY3Rpb257Q29vcmRpbmF0ZSBNZXNzYWdl
c30NCg0KVGhlc2UgbWVzc2FnZSB0eXBlcyBoYXZlIHRoZSB0b3BsZXZlbCB3
b3JkIGBge1x0dCBjb29yZH0nJy4NClRoZXkgYXJlIGludGVuZGVkIHRvIHBy
b3ZpZGUgYSBnZW5lcmFsDQptZXRob2QgZm9yIHVzaW5nIGNvb3JkaW5hdGVz
LiAgU3BlY2lmaWMgYmVoYXZpb3INCmRlcGVuZHMgb24gdGhlIGFwcGxpY2F0
aW9uLg0KDQpcYmVnaW57dmVyYmF0aW19DQpcZW5ke3ZlcmJhdGltfQ0KDQoN
Cg0KXG5ld3BhZ2UNClxhcHBlbmRpeA0KDQolIEFubmV4ZSAxIDogZGlmZmVy
ZW5jZXMgd2l0aCBQTEFTVElDIHByb3RvY29sIChubyBtb3JlIEphdmEtUk1J
IGRlcGVuZGVuY3ksIA0KJSBodWIgY2FuIGJlIHdyaXR0ZW4gaW4gYW55IGxh
bmd1YWdlLCBzZXBhcmF0aW9uIGJldHdlZW4gcmVnaXN0cmF0aW9uIGFuZCAN
CiUgbWV0YWRhdGEgZGVjbGFyYXRpb24pDQpcc2VjdGlvbntDaGFuZ2VzIGZy
b20gUExBU1RJQyBkb2N1bWVudH0NCkluIG9yZGVyIHRvIGZhY2lsaXRhdGUg
dGhlIHRyYW5zaXRpb24gZnJvbSBQTEFTVElDIHRvIFNBTVAgcHJvdG9jb2wg
ZnJvbSANCmFwcGxpY2F0aW9ucycgZGV2ZWxvcGVycyBwb2ludCBvZiB2aWV3
LCB3ZSBzdW1tYXJpemUgaW4gdGhpcyBhcHBlbmRpeCB0aGUgbWFpbiANCmNo
YW5nZXMgIC0gYXJyYW5nZWQgaW4gb3JkZXIgb2YgZGVjcmVhc2VkIGltcG9y
dGFuY2UgLSBiZXR3ZWVuIHRoZSB0d28gDQpkb2N1bWVudHMsIGllIHRoZSBt
YWluIHVwZGF0ZXMgZnJvbSBQTEFTVElDIHRvIFNBTVAuDQoNClxiZWdpbntl
bnVtZXJhdGV9DQoJXGl0ZW0gXHZlcmJ8VHJhbnNwb3J0IGNob2ljZXwgLSBU
aGUgbWFpbiBkcmF3YmFjayBvZiBQTEFTVElDIHdhcyB0aGUNCglKYXZhIGRl
cGVuZGVuY3kgZm9yIGh1YiB3cml0ZXJzLiBJbiBTQU1QLCBKYXZhIFJNSSBh
cyB0cmFuc3BvcnQgbWVjaGFuaXNtIA0KCWhhcyBiZWVuIGRyb3BwZWQsIHdo
aWNoIGFsbG93cyBodWJzIHRvIGJlIHdyaXR0ZW4gaW4gdmlydHVhbGx5IGFu
eSBsYW5ndWFnZS5cXA0KCVxpdGVtIFx2ZXJifFJlZmFjdG9yaW5nIG9mIHJl
Z2lzdHJhdGlvbiBBUEl8IC0gUmVnaXN0cmF0aW9uLCBkZWNsYXJhdGlvbiAN
CglvZiBtZXRhZGF0YSwgYW5kIGRlY2xhcmF0aW9uIG9mIHVuZGVyc3Rvb2Qg
bWVzc2FnZXMgYXJlIGNsZWFybHkgc2VwYXJhdGVkIA0KCXN0ZXBzIGluIFNB
TVAsIHdoZXJlYXMgdGhleSB3ZXJlIG1peGVkIGluIFBMQVNUSUMuXFwNCglc
aXRlbSBcdmVyYnxBcHBsaWNhdGlvbiBpZGVudGl0eXwNClxlbmR7ZW51bWVy
YXRlfQ0KDQpcdGV4dGNvbG9ye3JlZH17VE9ETyA6IGNvbXBsZXRlIHRoaXMg
bGlzdC4gTm90IHNvIGVhc3kgdG8gc29ydCB0aGUgaW1wb3J0YW5jZSBvZg0K
Y2hhbmdlcyAhISF9DQoNCiUgQW5uZXhlIDIgOiBkaXNjdXNzIGhvdyB3ZSBj
YW4gbWFrZSBTQU1QLWNvbXBhdGlibGUgYW5kIFBMQVNUSUMtY29tcGF0aWJs
ZQ0KJSBhcHBsaWNhdGlvbnMgdGFsayB0b2dldGhlciANClxzZWN0aW9ue1NB
TVAvUExBU1RJQyBpbnRlcm9wZXJhYmlsaXR5fQ0KVGhpcyBzZWN0aW9uIHdp
bGwgZGV0YWlsIGhvdyBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gU0FNUC1j
b21wYXRpYmxlIGFuZA0KUExBU1RJQy1jb21wYXRpYmxlIGNsaWVudHMgY2Fu
IGJlIGFjaGlldmVkLCB1c2luZyBodWJzIGFibGUgdG8gdHJhbnNsYXRlIFBM
QVNUSUMgDQptZXNzYWdlcyBpbnRvIFNBTVAgTXR5cGVzLg0KDQolJSUlJSUl
JSBCaWJsaW9ncmFwaHkgJSUlJSUlJQ0KJSUlJSUlJSUlJSUlJSUlJSUlJSUl
JSUlJSUlJSUNCiUgaW5jbHVkZSBhbGwgcmVmZXJlbmNlcw0KXG5vY2l0ZXsq
fQ0KJSB1bnNvcnRlZCBzdHlsZSBmb3IgYmlibGlvZ3JhcGh5ICg/KQ0KXGJp
Ymxpb2dyYXBoeXN0eWxle3Vuc3J0fQ0KJSBiaWJsaW9ncmFwaHkgZmlsZSBp
cyBjYWxsZWQgc2FtcC1iaWJsaW9ncmFwaHlbLmJpYl0NClxiaWJsaW9ncmFw
aHl7c2FtcC1iaWJsaW9ncmFwaHl9DQoNClxlbmR7ZG9jdW1lbnR9DQoNCiUg
JElkOiBzYW1wLnRleCx2IDEuMTggMjAwOC8wNS8xNSAxNjoxNzoyOCBtYnQg
RXhwIG1idCAkDQo=

---561407174-2033512628-1210868855=:12719
Content-Type: APPLICATION/pdf; name=samp.pdf
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.63.0805151727351.12719@andromeda.star.bris.ac.uk>
Content-Description: inWG draft of SAMP doc, RCS revision number 1.17
Content-Disposition: attachment; filename=samp.pdf

JVBERi0xLjQKNCAwIG9iaiA8PAovTGVuZ3RoIDE2MDIgICAgICAKL0ZpbHRl
ciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjatVdLj9s2EL7vr9ChBxmIaL4p
7SXZYJOiRYO8jPbQ9CDbWltY2XIkeRfpr+/MkPJq/dp0g8CASZEfZ+YbDmdI
EXH4iUhwydJUR06ljPMsmq0ueLSAqV8PWhGWqDRlRivoD8D9ZKKsAUE2Soxj
VinERF8jzqQFVQQa9mH264XRkmVZSgMyy7Cf9bPj31Yiuq4vPl5EH3dKhMmY
tSayiilBKjhDuUqAEGaFjBqwam/o08BImVrGUzDSacVsSrRfTy7Gb6WLhGNS
mGhyEykuWOps1IMm87/j30b/TH4HnB3gDLMZisb5dTcScdGMEhGvc+yX9Tqv
cNHFm8nOAA1e58JFA/UHjhTCsExhxzIZMM9lKR3TJzhC11qwhCDI4M8jDIVk
VppAsWy6LRA7w6pX91M5CcGEEE+wCiA0+/0xXuB+5wKvaev37Q7JdfVI2rj5
dpLjg/qfydJmmqVSno/PHoQkrp7avarCoMzXs+IUtYHOA2p4PAWc6kRzZjL3
DGp9wkms0UyCWQNqEuBWeZM505BjrMqYc/7ofb5692GUyfjFCHKLjT+XK2Cy
wR1DSgWOuvhqs6lK+JzlHZw8j3xXtC3u6aJcL5A0GOGYMRm0GVOoEKR/aGrY
80TB0vogskWqYIGOLJol7FHXpGC8g7THUqN+yC9CM2PVE37hHMLPhQOrOKSc
FmkjZWVdLCAH75OQkOKFEbu1R0NXGcjOQEMqICp/hAd4njlujoduz8NYyaQJ
qRWICDimwObKs/gL+zWONre4dzBo42vc8Sa/6TxGcp4m3CRAXph9yspBqTJ2
p+ZoSDvI305CSAumtD5WAY+QA/sz8ZichuWWyAVUD0Jyk2XZevvvCiLQ+tpw
eRBqEpJGBiZzy7Q9URoCJhmAyAwFxx50Qh0nHz+WhGYsu25zOR7f39+z8q7O
2broxoyxg1AxcBuAFHDWCGMgFaSYE6DQZ9/nNw1BkarzbgsYNPePvCva7n/5
TcNWq1Sf99sAdNpvPegZfjtrxLP8piRz+ol460E+nRV3Zb3dxRxVtuC79tIX
CWUGrMOBT0CsDjJevjxwctCEV0BrxffZPgCftr0Hod43c0xlHVrsD/8XbngL
fwKGL0/apCFvOvudNj2Az9gUQFRXt2TP0hu086AcLIP9VBnVlkz5Yjxh4H7p
4tdQWKCZjeBviUM2TvzMlCaG06+wUrVdU0PLtgltW9fQ4HTBbhoqYDyo8afk
XVDztsQL57+4ZJOjB5uSZN4+UvmFC73DobZ1jeCaFfPtGeGTUSrjHMV9A3RV
N4+ErtiUdTCbxt8qtLx5NUWbMecBDZQ/Y9vbI+KPHKLMMQ63J4n5WJ3PxwGa
DLBHznPYzh6Eaq99ATHS4NloKaHQ1y+f4NwMvuGW58JMaK4hJ4VJrD1jrseK
BzC/FO5Sp/2C/exgHVPw8JEQM+kTzHpsMgATNS2Gh9YpKOlmJ5EidQrxks+6
g3MClx2p00jA9c7yo3eYkAOOP+wEvNKsxTvTbr339TCLCA0FF55kPSjc22D/
P4wSrX1EYJv7ZoXxUVCUtHg/A+DCz2z8fYzOBSaCyg93S7qd+w+qCLgmn1YF
CZb+7OBYvfLBSsi2hu2G6LzHv7wpwjXQwvVP460HHrS+QJLOFNVhukwgXmhI
KRWDdTDTFU29Ibt8PaJHXuGR+XruobN6Rdq3aEgJd1HCUqRHQ6Wmv/iA4Pf4
BxcfbXi8Kmj5dKDH24OTSzpnd/hX+JGm8D5akLqWFsyReDbwF+Cm0N+WSG2+
czUM5x5Ke+FdV5W0DtIHAR6cctJtvRqlwL9dV6w2Xeu/vPtcfIOPxgqzT+UH
8ip0aHHh0U3xdVs2o7C3q7DDEogEcfXN3uptO3QQQsq+XW0ocZJzOnoVYC+v
XuwS0QMD2jttTFx2oSV3W/IONGEvui5oIwzpxlm0CgfqbZipylXZFUFkQ2ta
nAw2FEE4OgfbYp3j5lRBXAnGgPvvSmy2/qW9Z+9eoMKLMQwZDHKoKc2t/+rq
RdEt8QKAX4OQAioNJHeNsbf2HkcpRRVc78PdL0N+JIyusdgrg9J5gVtKgRdC
CkfhAJAQCKcT5TqDXCNPPEL6Kv2A8ZkGqq1gmTG+2uLzMevloEvEwYs2EzR5
qOs/Z544omVuZHN0cmVhbQplbmRvYmoKMyAwIG9iaiA8PAovVHlwZSAvUGFn
ZQovQ29udGVudHMgNCAwIFIKL1Jlc291cmNlcyAyIDAgUgovTWVkaWFCb3gg
WzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCAyMyAwIFIKPj4gZW5kb2Jq
CjEgMCBvYmogPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9X
aWR0aCA1NDMKL0hlaWdodCAzMDAKL0JpdHNQZXJDb21wb25lbnQgOAovTGVu
Z3RoIDI0OTI2Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRENU
RGVjb2RlCj4+CnN0cmVhbQr/2P/gABBKRklGAAEBAAABAAEAAP/+AFhDUkVB
VE9SOiBYViBWZXJzaW9uIDMuMTBhICBSZXY6IDEyLzI5Lzk0IChQTkcgcGF0
Y2ggMS4yKSAgUXVhbGl0eSA9IDc1LCBTbW9vdGhpbmcgPSAwCv/bAEMACAYG
BwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyks
MDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEI
ASwCHwMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJ
Cgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGR
oQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNU
VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1
9vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQAC
AQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS
8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNk
ZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1
tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAM
AwEAAhEDEQA/APf6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiijNABRUVxcwWkDz3M0cMKDLySMFVR7k8Cu
Evfivpktw9n4Z0+88RXinBFmmIVP+1Kfl/EZoA9AzSE4Ga8zeb4ka5zNf6X4
ct2/5Z20X2qfHoWb5fyqA/DizviW13XNd1d2+8J71kT8EXGPzoA9Cu/EGjWC
lrzVbG3AGSZrhEx+ZrLn+Ifg22AMnifSTnpsukf+RNYNr8OvBtmuIvDlg3vM
hl/9CJrUg8MeH4B+60LTE+lpH/hQBZg+Ivgy5Zlj8T6UCoyd90qf+hEVq2ni
DRr8KbPVrG4DcjybhGz+RrEl8MeH7hds2haY49GtI/8ACs65+HHgy8UiXw1p
6k94UMR/8dIoA73NLmvNV+GdlZENoWu69o7DkLBetJGT7o+QaesfxL0Lm31D
SvEluOTHcx/ZJ8egYfL+dAHo9FcDafFTTYLiOz8T6dfeHL1uP9Nj/cMf9mUf
KR7nFdzb3MF3Ak9tNHNC4yskbBlYeoI4NAEtFGc0UAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFGaTNAC0U
1pFRSzEKo5JJxisXUPGHhvTI3e91zT4vLBZlNwpbAGfujJPA9KANvNcBrnxK
VtQk0bwlY/23qicSyI2La2PT95J09eB6Vh3N/rfxKYlHudG8JE4UL8lzqC+v
+xGf1H6dPpemWOjWMdlptrHa20Y4jjGOfUnqT7mgDnR4MutdnW88a6rJq8qn
ctjFmK0iPsg+99TXXW1tBZ2629rBHBAowscSBVH4CnDpThQA8dacKaKcKAHi
nCminCgB4pwFNFOFADsU+minCgBlxa297bPbXdvFcW7jDRSoGU/ga4yX4f3O
iTPeeBtWk0eZjuawmJls5T7oeU+oruRThQBx+j/EUw6hHo3jCwOh6q/ETu2b
W5945OnPoa7vNZOraPp2vadJp+q2cV3aydY5BnB9QeoPuOa4UNr3wvw2+51v
wep+YH57rT19f9uMfoPSgD1GisSw8X+HNSijks9c0+USLuVRcKGIxn7pOR+V
bKurqGVgynkEHOaAHUUmaXNABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRSZoLAAkkADkk0ALRXH678UPB3h7ct5rdvJMvWG2PnPn0wucfjivPdS/aEe
7LReGfDVxctnAmumwB77Uz/6EKAPcqr3d/aafAZ7y6htoh1eaQIo/E18v6x8
SfHmqhkvfENpo8LdY7UhXA+q5b9a5230WXXpvNVde1+cnl4oXYH/AIEc/wAx
VcrJ5kfSGq/GHwNpQIfXIrmQfwWimXP4gbf1rjr39oixkZo9E8OX97J0UyME
H1woY1xenfDHxPcEfY/BsVsp/wCWl/OgI/Alj+ldRa/BzxfcIBdaxpVkh/gh
R5cf+ginyrqwu+iMy7+MnxBvuLPSNP05D0aUZYf99MP5ViXOv/ETU9zXfi94
VI5W1+X/ANAUD9a9GtfgTCMHUPFGoS+otoUhH4feq/c/CLwNounXF/qs2oS2
tvGZJZLm+cAAf7uKPcQvfPCr3TmlR5dZ1/UbraNzGR/w/iLGu1+HfwqguZYt
e1W0mW3JD2dlMQxYdQ8nA4PGFqz8P/AuneJ/EEvix9IjsNCjfbptgdzedtPD
vknOP1PsOfcBweuaUmnshxTW7KK2kp6gL+NSrZMesgq1QWqSiAWijq5/CnC1
Xs7flTmbnFIG54I/Mf40AH2Yf3z+Io+zN2INOJ5IwfyoVxuAyPpn/wCtQA0x
OOqn8KQVOSwJAzx3pysr5BAJ/WgCEU4U/wAtT0OPrSFGXqKAFFOFMFPFADxT
hTRThQA4U/gjBAIPY0wU8UAeEfE34O2ltNJ4j0S1le0yXvrC3IDKO7xcdB3X
8q4fTvDjeVFPoXiTULVJPmR0Ygen8JB9ulfWA69a8T+IHhg+CNQk8S6VaGXR
bmTN9aRYH2eQ/wDLRewUngjscevFwcb2kRNSteLOZ+2/ErQpwlr4xFztAO24
Yvnj/bUj9a07b4t/EjTuL7QrLUY16tCh3H/vhj/KqGp6pLDO1xqOl6nYRvhl
e4tW2FccEOuVI/Go7XULK85truCX2Rxn8q3VKnLZmHtakfiR1tl+0RYxMsWt
+HL+yk/i8tg+PwYKa7HSvjD4G1YDZrcVs5/gu1MWPxI2/rXndgA6SCZFliAA
Mco3A59jxWXrHhbQbpzImmW4jPUxAxlT6fLipeHl0Y1iV1R9FWl/aahAJ7O6
guYT0khkDqfxFT55r5STwPHA0lzpOr32nzIAQVbPf1BUj9a2rLxX8UNBwttq
tvrEAPCXGHY/i21v1NZulNdDVVYPZn0pRXh9j8f59PkW38VeF7qzl4zJb5wf
fY+P/QjXoOh/FDwd4h2pZ63bpMf+WNyfJfPphsZ/DNZmh19FIGBAIOQRkGjN
AC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUySVIkLyOqIoyWY4A/GvMvFvxz8MeHjJb2BbV71eNtuwESn0MnT8g
aAPT81zHiP4h+FvCpKarq0KTgZ+zxHzJf++Vzj8cV4rNqvxc+JpYWFtPpmly
cDy/9Hj2+7n5n/D8q2tB/ZxgBWbxHrLzOTuaGzXAJ/325P5CgCp4g/aKuZy8
PhrSUiXp9ov2yfwUHA/En6Vyhj+I3xEO+5k1i+t3PEdvH5Nv+Z2p/OvobQ/h
34S8OhDp2h2qyr0mlXzZM+u5skfhXQ3F3bWkfmXNxDDGP4pHCj8zQB8+6L8B
NakCtePpunKeu/N3KPw4jrurH4H6Eir/AGrqWp6ljrG0vkxf98JjH510eofE
zwXpZYXPiOxLL1WF/NP5Jmufuvjn4ThB+ywarent5FoQD+Llaav0FodTpfgL
wno2PsHh/T42HR2hDv8A99Nk/rXQqiooVVAUdAB0rx24+O8jEiy8KXDDs1ze
JH+gBrOn+MviydSbXR9Ht/QyzPKR+WKahJ9BOce57piivneb4pePpRxeabb/
APXKzLY/76Y1ny+PfHU7Ev4pkT2hs4lH8qr2U+xPtYdz6YJxXkfji4m8f+NI
fA1lKy6TYFbnWZ0PUjlYgfX+v+7z5reeMPFUVtJLN4r1Y7RwI2VCT2AwO5xX
rXw/0CTwx4ZRbss+qXrfar+WQ7naQjOCf9nIH1JNTKLjuVGSlsdhbxQ2dvFb
W0axQRIEjjQYCKBgD6CnGZRwvP0qoGZzgknkKfxA5/MUv3VJcgEfeC9QfUVJ
RY80k4z1oLhMdNx9ag8wg7VO3PIbs31pUzu2DKNjO3qpoAk3beTkZ7kf1FSK
So3ck9gDmogVibB+VyO2dtIxOcyLz/fWgCQEE9VJ9xtNSLkctvAHqcio1Vm5
yroOpI5pQwOBGdgHY0APznkYPupwakRvnALH6MKhyAfnTB/vCpRuRODuJ9ew
oAdkjrkD16ipFb5TjBHXI5qBcfwnafQ1IDgMWXaemRQBIQrcjj+VNwVPINAJ
6nn3FSbvlBPI9RQA0U4UhXHI6UgNAEgpwNRinUASZqK6toL60mtLqJJoJkMc
kbjKspGCD9aeDRmgDhvB9zN4W16XwLqMjSW+wz6LcScmWD+KInuyZx9PpW/q
vgPwrruW1HQbGSQ9ZFiCSf8AfS4P61R8d6Dca3oa3Gmt5etaZJ9s0+QdfMXq
p9QwyCPp6VseFfEFv4o8N2Wr242i4j+eM9Y3HDIfoQRQBxt18HrWAMfD+v6l
ppJyIpSLmIf8Bbn/AMermLzwb440SVpRY2etW5+81nJ5chHuj8E/Q17j1oxz
mrjUlHZkSpxluj5zOrWMEk1rdCfTrpgP9Fv4jC457buCPoatWyeZMvp1zXu+
paTp+sWpttSsre7gPWOeMOP1rz/UvhBa27m48K6nNpMvX7NJme2b22scr+B/
Ct44j+ZGEsP/ACs5rU3F0xgYBvLQYVgCGGOmDXL6h4M0HUPNP2L7PIBuD2zb
P/HeV/StTWY9d8NXIk8RaW0EOQBf2mZbdj7nqmfQirsckVyIrmBleGeLKshB
BP1rZOFRdzFqdPyOU0618Y+F5AfDHiWVogci1uD8p9trZX+Vdbp3x01rRJUt
vGfhx07fabQbc++0nB/BvwqC1Tdcgf3TS3jCV2jYB0IwVYZB/A8VnLDp7Fxx
Ml8R6r4c+IXhbxUVTStWhe4Iz9nkzHL/AN8tgn8M10+a+XdR8F6Pf/PDEbGf
qHt+Bn129PyxVzSvE/xE8FAC3uxr2mp1hmy7qo9P4x+BIrCVGcTohWhLY+ls
5orzDwr8cPDOvPHa6iX0e/Y7THcn93n0D8Af8CAr0yOVJYw8bK6MMhlOQR7G
sjUfRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFBOKCcVyPjT4i6
B4Hts6jceZeMMxWcJBkb0JH8I9z+tAHWMwVSxIAHJJOAK8v8Y/G3Q9DlbT9E
Q61qu7YEhJ8pW92H3j7Ln6iuKuJfHPxZia61C4j8M+ER8zPI2xXX15IMn1OF
q1pvib4c/DlGi8MafNr2rKNrXuBgnv8AvWGAP9wEe9CVw2Ej8E/EX4nut14t
1JtH0pjuWyVSDj/rmDx9XOfau80nwH4A+Htst1cJZpMnP23U5VL59t2AP+Ag
V5TrPxV8Y62WSK8h0m3P/LOxXMmPeRufyArjpohcXH2i7eW6uCOZbmQyOfxa
tVSkzN1Yo9/1T42+E7EtHp5vNWlHAFpCdmf95sD8RmuP1D43+IrvcumaNY2C
9nupTM2PXC4FeaDgegFSLwrfStFRj1M3WfQ27/xt4y1Xd9r8TXiKf4LMLAAP
qoz+tc/Lax3MplujLdSnq9xK0hP5mpQacK0UIroZucn1FiiihhPlxonP8KgU
/JoPESD1JNIOtXYkcKkHEJPqetR96lbiFB65NAhA7qeGP51KJ3/i2t9RUFOy
ACT0FAG34P0xNf8AG1qkkANnpii8uAOjvnEan8efwr3F5AFkwuSDtJJzknk/
rXAfCXSmh8MyavIu2TUZ2uNzcfu1ysY/n+dd3tUQgPIMsxOQM+lcM5c0rnbB
WjYld3YzrnGMEAcUDJZJFXIYYYCl3ILpgEJLcZY+3pTVd5EeMntlQOORUlEg
CR5SRgyHkAdR704yFcxMNqdiKhT95Hs43Dlfp3FSohZAr/L/AHSev0oAXJTC
MC6dsf0qUL5Q3FiU/u/4+lRrKI8oAQuep6j3pMtG/JyD39aAJSfMxsOCP4c/
ypQwbhxg9NwH86YE3jdH+I9KlDqCATl8Y30AOGYVy2G9B2pR8x3KcN6H+lRZ
aNuec+venhQ/3OvdaAJAdx2spz696eSVAC4KCmbwo2nJPQkdqBlOQePWgB4x
1U4PoakzwoB2tjp2qNQrnIGMdRSlt5O7jn8qAJUODjpntQRxlfxFNTIbDcjq
DTgxByevrQAA0uaGXHI6d6bmgCTNGaZuozQA/P59q4Xw8f8AhFvibqmgfd0/
W0Op2K9Asw4mQfXhq7fNcP8AE5HsdJ03xPbqftGg30dycdWhYhJF/EEflQB6
KKWmQypPCksbBkdQykdwRkU+gAoIoooAY8ayIySKHRhhlYZBHpXnPiD4VwCZ
9R8KTrpd6SXa0YZtZz7r/Afdfyr0mkIzTTa1Qmk9GeA2dxNb6ncadqlo+n6r
GNxtpDkOP70bdHX3FMJ3MT6mvZPFPhPTPFmmfZNQjIdDuguI/llgfsyN2Pt0
NePy2t7ousnQNf2/bCC9reKMJexj+Iejjuv4110q3NpLc46tHl96OwztVqxX
M+7n5R1zTHtHQZX5h7VPbgxWzueDXSc5j61oum64z/bbVGc8CVPlkH/Ah1/H
IrI00eMvAchm8L6m17Yg7msJhnP/AADp+KkGukzzmlH6VlOjGRpCtOOx1vgv
41aJ4gkWw1hBo+q52+XM2InPsxxg+x/M16eGBAIIIPIx3r561Pw1peu2Ttfw
fvR92ePiQfj3+hyKztG8S+MPhswEUja5oCn5oXJ3RD26lP1X6VyToyhr0Oun
WjP1PpeiuV8G/EHQfG9oZNNuNlygzLaTYWVPfHce44+ldVmsjYKKKKACiiig
AooooAKKKKACiignFABTJJUhjaSR1RFBZmY4AA6kmqmq6vYaJps2oaldRW1r
CMvJI2APb3J7DvXzB8Qvipq3jq6k0zSvNs9EBx5QOGn6/NIew/2fzz2NwO88
c/Gt555NF8E7ZZuRLqb4EcY7lM8cf3jx6ZrzOyvNO0y8bUWh/wCEk1123te3
+77JE/qqn5pT7tgegPWsC001IEAkPmHOSP4c/Tv+NaOOeoreNH+YxlV7FvVt
W1XxHcLPreoT3pBykbHbFH7LGPlFVQAo2jAA6ClXbkdTzS7gDwBWyilsYtt7
hUjA7qaJD7D8KkAlln8uJXkkPREBJP4CqESWdrLeXsFrEpMk0ixqB6kgVoeI
NIbQ9e1HTDuIt5iiMRyV6qfyIrsfhz4K1xvFdhqOoabcW1jbMZd867CWAO0A
Hnrj8q2Pir4O1e+15dV0qwmuopYVE3k8lXXI+71PGOnpWfOuaxfI+W55Jtb+
6fypcEdj+VPmS5tJTFcRywSDqkqlWH4GkE0gB+Y/pWhmOfgIPakFSSSt5uMK
eB2qFr+3jlETKjStwI0BZyfoKG0twSvsP61NN94L6ACtzS/A/izXNrWfhyW1
ibpNqMnkr9dn3iPwrsNP+Bt7cMJNa8R7AfvQ6fBt/J3yf0rN1oo0VKTPMCQo
yTgep4rP1C/gNnLBDPG9xKPLREYEknjt9a+itP8Ag14KsSrzadJfyj+O9naT
P/Achf0rL+IWi6RYDwtpGnaZZ2a3msRGQW8KoTHGCxHA+lZuu3si1RXVmnpN
jHpWh21lGuEt4Y4B+A5/UVdfiKIdOCf1pWeMRJiMndlvmP4U55mXy9gVcpng
e5rA3JGVzOJFU44OTx2pWCQzli/IOQFHb61FMxZkJbOUHX8qWQ5WNvVcfiKA
Jnk8p8RqFHUHGSaJOWEgyQ36U0K0sKlQSynB+lSRquDEzgknIAPQ/WgA/wBa
u4DLjqPUetSIAq7JWAHYDqKiExUjYoUDtSuoBDL91ulAErOyttACj0HelwGB
ZR9VpifvAEJ+b+En+VPUCNsufm/ujr+NADo8sMEZT19KeTsACdD/ABetMdt6
7hwB1UdqEfHB5U9RQBID5noH9fWnR7g20DHqDTNhJyCNv96n7ww2DPsx70AP
Yjb8n3R19aAwYc9fWowSp9CKkVQ43DgdxQBIp2Kd3ftSD5eOqmm7w5wfwNKp
KttI69qAJQQAPp1prDHPakLDdz93tTxkrhuvagBmaXNMzjijNAD81S1fT01f
RL/TJQCl3bvCR/vKR/WrWaUNggjtzQBg/C7UX1L4c6O8xPnwRG1lB6homKc/
98iuwrgvhoPsdz4u0notprkzoueiSBXH9a72gAooooAKKKKAA1znjTwpb+LN
AksmYRXcZ82zuQPmhlHRgfTsfaujpCM0AfPWlaldSwNHdR+VeW8jQXUP9yVT
hh/UfWt+aSF7ZEYbWNM8aaaNM+KReMYg1ezE5A6edEdrY+qlaoXj7psA/dr0
aUuaKZ51WPLJofJaMvK8ioMEHBHNPiuXj4zke9XYTDdOqkANWhmMmPl2ipnB
NVVJByODWvf6XN/Z7Xq4MUcqxcepBOf0H51jg0XTCxz2peElmvk1PQ7htM1W
Nt6SQsUVm98fdPuOPUV2ngr4xzW14nh/x3CbPUVwqXxXEcnpvxwM/wB4cH2q
paLumB9Koa5pNlrsDW17EHUZ2OOGjPqp/pXPUoKWsTop13HSWx9AK6ugdCGU
jII5BFOr5v8ACvjnW/hjewaZrTyaj4ZkO2GZRloPp9O6/lX0Lpup2Wr6fFfa
fcx3NrMu5JY2yCP89q42mnZnYmmrot0UUUhhRRRQAUUUUAB4rP1nWbDQdJn1
PU7hbe0gXc8jfoAOpJ6ADrVm7uoLK0murqVYreFDJJI5wFUDJJr5W8f+N7j4
h66WQyRaBZuVt4skec399vcj8hx3NNK7shN2VyHxv401L4i6n58++00S3Yi1
tQ3Ln+8fVvfoOg71iRQxwxlI1CDPQUvYAYAAwAvAA9KF6GuqEFE55zch2T24
FOPWmU89vpVkCj7wpx+8frTB1p7ffNACg4Nb+ieL9b8NSEaXdrFGTkxtErg/
mM/rXP1LJ98/hRa+4j2/wN8VbzxBrtvo+p2VvHJOG2TwsQCwBOCpz1we9aPx
A+I03hK/i0+xsoZ7h4hIzyudqZJAG0deh714Xo2oNpOt2OoJ962nSX8Aef0z
Wt461mPV/FWp6gJVNuJtkb548tAFB/HGfxrL2S5vI19o+Uk1zx34g8RxmG/u
4/IP/LGKFVH54J/WsLTbLUNbvvsWi2E2oXI+8sI+SP8A33PCiux8CfC+98Wx
x6lrBmsdFbBiiU7ZroepP8Kfqa970nRdO0PT0sdLs4bS1TpHEuAfc+p9zzUy
qpaRHGnfWR5LoXwQnuitx4o1QqDz9i087VHs0h5P4AfWvT9D8I6B4aiEekaV
bWp7yImXP1c5J/E1tAYorFtvc2SS2EAApaKKQwNeZePmM3xK8GW4+7DHeTsP
+AKoP869NrzDxk5T4veGmwp/4l111GfSgDakz+7XByEHGPXmpXikYR4UgBBy
eKbNNIspUPjAHQY7UkzZ8snn5AeaAJnRRHHvkA+UjC896cHTyTtTOxs/P71B
n/Rh/suf1p0ByxQ9GUj8etAE0UjO+x2+VgRjsDUYyp9xxSJHIwyFI9zwKnlE
YIctncPur69+aABvn2uoPzdcDvUsa7V2yttDdB3BpkcpJMa/ID0x1zUXc569
6AJ2cqSirs7H1p2fMTd/Go+b396YTvj3/wAS8N9PWliDghwQAO56UAORyhyP
/wBdTGNQNxyFPbvmmEqgDRDgn7x7U1HwTuOQfvZoAlEmflYAJ6CkIKnGcjtT
GUqfUHkH2qVPuYk4U9M9aAHoPMXB7dGpWchsAbQO1ROzZ2kAAdqfnzF/2x+t
ADiARuHTuPSpEPyjJ5P3c1FGcZY/dH60rnJDdj09qAHAgDY3T+RqQZChT97k
ioh+86cMOv0pxbfkD+Hp9KAHPgqHHQ9aZmpAQ0fP8XX61D0oAdmjNNzQTQBz
Hg0NH8SPHUeAEZ7KUY9TCQf5V31cH4QPmfEfxtIvKr9hjJ/2hExI/UV3lABR
RRQAUUUUAFIaWqOr6tY6JpdxqWozrBa26b5Hb+Q9Sew7mgDzb4nSo/jfwxEm
PNht7uWT1CEIoz9T/KuWZtzsfU1ZjvZdc1K+8SanG0M9+FjtYH629sudqn/a
JO4/WkksyBuQ7hXfRi4w1PPryUp6FetXRUsmuC181wsYHWEDP61lEEHBGDV5
f3Nnnu1avVGSPR4ZPDzeEpnEsh03f87NnfvyP16Vw2oQaXNJnTJLkrnpMAD+
n9apJqUq6LLpv/LOSdZj9QMY/PB/CqqsysNp59qiEHFvU0nPmtoXoI2hidmH
41UJyxNannqbRY5cZaqM1uY/mXla0MytNawXsLW1zEssMnyuj8hhWFpOsat8
INZ3w777wxdSDzYSeYie49G9++MGumtl3TD2qO+jhvFlgnjWSGQbXRhwRWdS
kprzNKVVwfke0aTq1lrWmQajp1wlxaTrvjkU9R/Q+o7Ver5l8OeJb34R686S
pPeeGb0khActE+Oozxu9emR9K+lLaeK6toriCRZIZUDo6HIYEZBB9K8+ScXZ
noRakromooopDCkNLXJfEjxcvgzwbd6kpU3bfubVT3kbofwGT+FAHlHxs8dS
6rqZ8F6TPttoiG1CVT95hz5f0HGffA7c+YKqRxLHGCEQYUf1+tQWySBXluGZ
7q4YyzOxyxJOeT+OfxqwfvGumlGyuYVJXdgB4+lOT71NXkEU5PvLjmtTIXtT
z91TSBOfmIAp5KBAVXOD3oAaMk8DNTNG284FR+aw4Bx9KfISWByeQKAHCFu5
UfU0+SP5/vr271B1qWXqp9VFMQ8RL/z1QV13w18Iw+LPFLLeKsulaUFlmTHy
yyt9xD7DBJ+grjBXsfwDlj+xeI7fI85byORvXayYH/oJrKs7RNKSvI9hVQoA
AAAHQCnUgpa5TpCiiigAooooADXmPxCgeD4i+DdQ/wCWMn2qzY+jMmVH44Ne
nVznjbw6/iTw5JbWsgh1C3kW6sZj/wAs505U/Q8g+xNAGbLHI9xJtRjz1AqR
4Tti3MqfLj5j7msTRddOvWRnkR7e7jcw3dqx+a3mH3kI/UeorWc/uYj04P8A
OgCdBEIZBvLgYY4GP89aRZgjAxxqpB69TUcHLsv95SKaD3oAsTE+awLEjORn
0pUO6Blz907h/WkKNJHG6rk7dp/CnRhYXDPIMg4IHNADQcHINWGjLgSfdDdc
9jUbMImKogGP4jyTSxsZNyMcluQT60ASJJHGwKjeT1J6Y+lEpbfydw6qfaoA
cH3qZP3kZQcsvK+9ADo2HKsflbqfSl2NvK4ywNJsCcyHH+yOtPMheIgDG3qB
3FAEiFF+QkM3b0FRksWO7r0NRj8qlP7xA4GWHDAfzoAeP3i4/iHT3pUGMO2Q
O2OppoAjOWOW6gA9KV234cd+D7UAPdt4D9hwR6UKwHyt90/oajR9p9R3qQgR
cnknlf8AGgB2fKGP4+/0oJ2sHXpTdxdSf4l/UU6LnIPTr+NAD2+UqOgI/Wmy
8P8AUZpikuGU/e6/jUkmWUEcngcUAR5rK8Q+ILTw3pT310DI5Pl29ugy9xKe
FjQdyT+XWs7VPGVtbXx0nSLeTWdb7WdqQViPrK/3Yx9aueHfBtyNUTxD4nuI
73Wgu2CKMf6PYqeqxA9/VzyfagC54E0G70XRJZtUIbV9Sna9vivRZH/gHsqg
L+BrqKQDFLQAUUZpCaAFpM1y2v8AxF8MeHXMN1qKT3g6WloPOmJ9Nq9PxxXF
XHjXxR4raSHS1i8PWOP9dLiW7kHYAfdTP4kVUYSlsTKajud34p8b6N4ThX7d
OZLyQfuLKAb5pT7L6e5wK8i1LUdV8Z6rDe62FhtYW32umRtuSI9nc/xv+g9K
u6D4PW4v0RRJJdziR57uZt8shCnG5jz1xUFkhQO7jBXg57GuqnRSeu5y1Kza
93YW9kzIEzwKjiuZIjwePSonbe5b1pBXScxpxPDdMFYYY1JqFu0aqqcqKqWS
/OZD0Wl+2uJWJOVoAg6cd6lgXfKq1YKQ3Iypw1Ogt2h3O44A60ARXbZlCjot
LBclPlblfeq7Nuck9zQKANeGFGjaaPrisqeVIEkmndY40BZ2Y4Cj1NPvdWt9
FtYhLITJMQI4Y1LSSk9AqjkmuR1Wz1TxjqZ06Ui1ghYG4hjbcIMdpGHDSn+6
Pu9+eBE5qOi3LhTctXohlrbDx/qk8k4lj0W1Vo7fBwZJCMb/AKjr+Q9a7L4Q
eLrrQNbk8A67NuCsTp0zHg99g9j1HvkU7TbGHTLFbWCLyoYl2qv+Pv61y/jT
SpbuxTVbIsmo6c3nRyJ97aDk49xjcPofWsatJuPN1NaVW0uXofTYorlfh74t
j8Z+DrTVMqLkDyrpF/hlXr+B4I9jXVVxnaIa+Z/jZ4gOu+P49HjbNno8f7wZ
4aVsFv5qv519IajeR6dpt1ezHEVvE0rnOOFGT/KvixLqXUbq91Kc5mvLhpXP
1JJ/Un8qqCu7EydlcnU7nye5p4+8KjXhgfepCOfxrrOYWMEsQKcG2/d/Omk7
WwOlTW9s11dJAjxIznAaWQIo+rHgUAS2VhcalqCWdohkmkyVX1wpY/oDUCHd
G2PY17b8M/hzPperxa9e39hcqkLJHHayeaAzcZLDjoSOPWuR8VfDO78P3NzO
mp6WbV2do45LgRSBc5A2t1P0NSqibsU4O1zgBUp5ijP1FQipRzB9GqyBBUz8
xRH/AGcVCOtTHmBfYkUxDBXX/DPxCnhjxtBLcuEsNTAs7hicBHzmNj7ZyPbO
a5AVI8STWEkcgDKzAEfhUzjzKxUZcrufYQ70teR/Cv4ki8jh8M69OBqMahbO
6kOBdIOik/8APQenf6162DmuNpp2Z1J31QtFFFIYUUUUAFFFFAHC+LfB13Jq
P/CR+Gmjj1gIFuLaQ4iv4x0V/Rx2b86z9F1y01qGSAE2l/auVurG5+WaA4HV
e49CODXpJGa53xL4L0rxN5c06yW2ow/8e+oWrbJ4j7N3HscigDPi8mOVG8xm
5/hWnM6xuyrEoIOMtya5q7/4SfwqSNZsW1jTlOBqWnR/vVHrLD6+pXNadhrW
m65H9p0y+gukIBby2+ZTjkMp5B+ooA1BI0sUgY52/MB/OogaWA4lUdm+U/Q0
/wAhl++VRRxljQA9jvjR+/3TSJuZhsBLe1OiMXzRjL7vXgEjpTTM7DGdo9F4
FAFiREDB3bG7+FfWmidl/wBWAoHp1/OmR/MjRjr95aYD+tAE8igNuXgNyKEc
o4YdR2pYlaWNkA6cgnpQDGncO36UASGPJ3DAjIyGPpSrKsZ+QfUnuKYHaUMr
feHK/wCFRg0ATONrdcg8g+tOjf5sEcHgimxgyJsA5HK5pdyx5CYLd2oAkwIT
83Ldh6UAmQEdW6isrW7/AFGz0v7RpelNql2rBfs6zrF8pz825vTj864O68R/
FaaQCx8HWtoCfv8AmpMwH4uAaAPUIyxcbeTVPVta0rRY9+o6ja2cQ5BmlCk/
QdTXmht/Gt6v/E3s/FNyG5MVpe2tlGfb5CWx+NaGk6fNpchnsfhPbtcDn7Tf
6vFLJn13MGP5UAbq+OJNVkA8K6BqWsseRcGP7NbA/wDXVxz+Aqyng/xJ4hyf
FGui1s3OW0zR8xqw9HmPzsPUDFB134gyjbF4d0K2wM4m1F3x/wB8pSLN8R7z
G+/8M2IJx+6t5pm/UgUAdfo2haV4fsRZ6TYQ2cA52xLjcfUnqT7nmtDpXnJ0
fxhdcXvjqdE7rY6dFF+THca4bx/pX9mzaTp58Qa/fXd5Kzz/AGi/YqIEHzfK
uAMkgZ9qaV3YTdlc9t1HxHoukAnUdWsbTHUTXCofyJrkr74yeErcsllNeapI
ONtjbM4z/vHC/rXmelaNoSTBk023VlOd7JubPrlsmuiksodclUQskdzHwygY
DqO4HrXQsP3ZzvEdkWNS+KviW4wNL8P2uno4ysuoz+YxU99idPxNcve33iDX
XA1vX7y5hZubW2/0aEj0ITk/iamvkc3Tvtwg+VcdgOKl0eATX6s4+SMb247C
tY0YIylWmyfUtKsdEgtoNOs4bWKSMMxQAEnvlup/GrGk6Rqt5AklhZzSbpQd
6jCjHueKgnuDf/aI2PzoTLH/AFAqNLu7sp4I7S6mt3VRny3K8nmtLNLQy0vq
eqeF9CvNMlmmvTGGZQqKpzjnJz+lYeteDrwy3MlnEkkckhcBWwQD7Gr/AIR8
Q3d/qU9hdzebiISRkgA8EA9OvX9K5XxH4u1S51O5htr6SK1WRlRYvlJAOOSO
awj7T2jOiXs/ZoxL3S7uwl2XEEkbejqRVQVYS/mLZldpM9SxyfzqzDFBeOMc
NXSvM5X5DP8AU2eOhaqlXNRjaNwuPlFZ808NrEZLiWOJB/FIwUfmaAsTIxU/
KcGtcXSparFLglhXN2GoyapPs0PTL7V3Bxm2hIjB95Gwo/Ourtvh74p1f99r
Go2uiWoGTDafvpgPeRvlX6jNZyrQj1NY0Zy6GHqlzZaVEJrq7iiRvuhj8zew
Xqfyptvp2u6naPfiOLQdHjG59T1UbDj1SI8n2JxmtIap4J8JXTw+E9KPiHXV
O1r6eTzFiPq0zcA+yVC9jf8AiKUap4kvjfzxtmG2VdlrA3+yn8R/2mzWfPUq
fDojTkp0/i1ZhReTNJKPD/2qKGUbbjX7z/j8uh3WEH/VIfUDJFaVhbQ6bbx2
9pEIYo+FQfz9z71NIGEhBGKWJd7gVtCmoepjOo5+hqnbLaY4Dms0qVYqQPoa
kmmKSgKelWEVboKQPm7itDMw/hbfnwd8Ur7wzIxWw1ZfMtgTwHAJX9Ny/gK+
hBXy/wDEAy6ZeaP4gthi50+5XkdwDuXP4g/nX0xY3UV9YW95CcxTxLKh9VYZ
H6GvNqx5ZtHpUpc0Ezj/AIv350/4W65IrFWliWAEDP33VT+hNfLNquy0hUf3
Qfz5r6O+PxI+GMuCRm7hBwevJ6186R/6pB6KP5CqorViq7EgNTnufYVXqdTm
NfritzEaeQDTm5VT+FNA+UjuDT15jIHJBzQI6/4a+IE8OeLIrmaTZavFJHKM
4BG0sP8Ax5R+dczPdS3+pS3sxLzTSmRyTk5Jz/Wo0RACHOWYcAUnnMBhcL9K
La3Hd7D/ACW3EHAwTyTUqJGI3UygnGcAVBJyQ394U6A4mUdiMUxEimDv5hzU
u+E25KxHAbu1VMYJH4VNFysi+q0CJFkhHWH/AMeqZJIWt5P3OMEH71Us1PAf
kmH+xn8qYA62kybXikHcFGwQfUH1r0vwX8YLjSdmm+KGlu7McR6kq5eMekoH
3h/tDn1BrgNV0i40g2QuRg3dpHdJ/utnj9KgtDi5T3yD+VRKCmi4zcWfWdjq
FpqVnFeWNzFcW0q7kliYMrD61YBzXyXomtav4YvDc6FqD2jE5khI3Qy/7ydP
xGDXrXh3446fNst/E9k+mzdDdQ5kt2Pr/eX8c/WuaVOUTeM0z1uiqlhqdjqt
ol1p93BdW79JIZA6n8RVvNQWFFFFABRRRQAmK5fXPh94e124+2SWrWmodr6x
cwTD6svX8c11NFAHm83h7x1oakabqdlr1qvSG8UW1xjsPMUbW+pArPufGcdh
Mf8AhIdH1TRH4BkuYDJDn2lTI/lXq+KQqGUqwBB4INAHBabq9hqaCbTb+2uw
OQYZVf8AlWhMuyQ44B5H0qbVfhz4S1iQzXOiW0c+c+fbAwSZ9dyYNZL/AA51
CywdD8Zataqv3Yb0JeRj2G8AgfjQBpRJJkSAbQD948CpHEUb5A37uR6YrAm0
v4iWTFiug6wg6YaS2kP57lqvJr/iG0iCan4F1hCh+/ZSR3Qx/wABIP6UAdL5
zlgc4xyAOlOkwCGH3W5Fci3xA0KA7b7+0dPbuL3T5Y8fU7SK0rLxl4Xv4tsX
iLTM5yu65VT9MEg0AbasQwx1HSp3QKd7ZUNztHXPpVOHULSYf6HcwSZ/iSVW
z+RqygaRWQhsn5lOO9AC+ceAmFUdAKHAyGHRuRiovqDU8aZjKvkAnK+v0oAI
s7844756Yp0jbCUXoeSfWoml3DaBtX0pSd0QPdeD9KAHqd8bLjkfMKfERGQ7
HkngeoqOP93iRsj0HrSS58xgfw+lADwxSYZ555qVThvLBzsI/OotwCiX1GAP
enx5MxYA8rmgCJsBm6YBPJPSvDdQ1T/hJPFGo62Dutifstln/nih5b/gTZNd
38StdezsE0K0kZb/AFUmMsv3oYP+Wj+3HA+tcXPpsemRRJbkGz2AQv0+X0Pv
610UIa8xz156cpYtf3dtJIe9S2lxJYQG8Rys0h2xew7n+VVZry0ihihkvbaL
ccEtKox+tUNQ8SaOZgqajbmOMbECtuyB9K6ro5bPojo7m5MsK30agox2yqP4
X/wNXrVrePR5JW+SS4baD/sjrXJ6ZrsbSMttZ6lewyDbItvZSPkeo4rauofE
GpBIdL8Ia0YY1CobqNLfPv8AM1S6kF1KVOb6C21k/wBuikiYEbtx+nf9KLqM
xapcMVO1cuvHY9P51b0/wh8QWVwmlaXZb125ur0vtH0RTWyvw28WXygah4l0
60+UKwsrDeSB/tO39Kl14FKhNmZp9/LpN8t6oy6RFR+KkVzdxdwW4L3NxFEO
pMjhf516NF8HtMlO7VNd1u/J+8puREh/4CgH862tO+GfgzSmD2/h+zeQHO+4
UzNn6vms3iFfRGiw7tqzxSLXLO5m8mwFzqE3aOyt3lJ/IYrodM0PxnfHdZeF
2tVI4m1O4WED6ouW/Sva5JdP0i0LSPbWVsg5LFY0H8hXGan8XvC9o7Q6dJca
zcrx5enxF1B93OFx+JqHXm9i1QgtzItPhf4hvMHWfFCW8Z+9BpdsAfwkfJ/S
tiH4e+A/C0J1HU4IJWT713q8/m8/8D+XP0FchqXxF8YavlLKKz0G3P8AEf8A
SZ8fjhB+RrnU0lLy/W71Oe41W7znzb6Qy4+in5R+AoVKpPcTq04bHoWofFiy
WE2/hLSJdSC/Ktwy/Z7RPox5b6AfjXD6pc634oYt4i1R5oM/8eFpmK3HscHL
/ia2priOVFt3AGBgVVFkpnUSTCKI9ZGUtj8ua3jQjHV6mMq8paLQpwQxQxLD
BGkca8BEGAPwFdvc6Y1r8Pre6Rf3gm85j/stx/hUuh+FNBu8SNrIvG/uRkR/
oea7mbT7a405tPkjzbMnl7Qei/WoqVkmkiqdFtNs8dBS7XnAcU2GIxFmfoK6
jV/C+h2Dkxa4LaT/AJ5SYkP5DmsSQxmEweYHPZwCM/gea6IzUtjCUHHRmUzF
nJ9atWTFH39hVaSMxvtNT/6u39zVkGR45tUv/CWouADsjEn/AHyQa9S+EmoH
UfhfocrNuaOAwH22MVH6AV5rqZ3aDqUR+69rKP8Ax012HwCYt8L4M54uphyf
cf41xYle8mduGfutEnx4gab4WXjD/llcQufpvA/rXzbAcwRnOflHP4V9b/EP
TG1j4e67ZIu53tHZB6svzD9VFfIdhJvs09V+Ws6L1Naq0LQ61NHzGw/EVDUs
Jw+D3roMBw5kGP4qehEZ2cZPBPpTR8gY916U1ucN6/zoAUZU+4NPkADHHQ8i
kbna/qOfrTvvQg914NMQ4fNAf9k5pAcMD3BpYeXKHowxTe/PXvQBLKMSk+vN
Ptz++X34pGBaGJgCf4aWKKUupWNjg56UCESKSSQRxozuTgKqkk/QCut0H4ee
JtVnQ/2TNb2z8PLcYjwp6kA8n8q5vy7q3uzJAZY5FbKuhKsPxFdboXj/AMX6
Zcwq9/cXNqGG9LlRJle/zHn9aUuboNW6noHxP8C32t2+lzaJarLLZxtC8e8K
fL424z1xg/nXkMuiarpF4iajp11a84zLGQv59DXsnxN8baloVvpsGhyKk12j
SvJ5YcqnGMZ4Gcn8q8fudd1zV7qM6lqF7cDfnbI52j/gPSopc1vIupy30Mg/
eP1pe3akbiRvqaUc8VqZFhWn0fUvtOkXdzptxtXL2kmzdx3A4P412ujfGTxT
pgWPU7a01mEdXX/R5sfh8p/IVxd6c3T/AIfyqD/PWolTiy41JI950n40+E78
Kl7Lc6VMeNt7CQuf99cr+ZFd1Y6nYanAJrC9t7qI9HglVx+YNfK7f8gsAgEP
KSQfYVQitY4JxPamS1nHSW2kaJh+KmsnQfRmirLqj7CzRXzNpHjXxrYzxQ2v
iOWdCcbL+JZhj3bhv1rpbP42+ILVtuo6DYXqqcF7S4aIn3w4P86zdOS6GiqR
fU90orzG1+OGgmJZNR0vV7BSMmRrcSRj1+ZSf5VvWHxT8EajtEPiKzQsMgXB
MP8A6GBUNW3Lvc7Ciqdpq2nX4Bs7+1uAehhmV/5GrlABRRmigBMUuKM0UAIV
BGCMj3rNvPDuiahn7bo9hcZ6+bbI38xWnRmgDkbj4X+CLk5fw1YKfWJDH/6C
RVU/CXwmhzbwX9qe3kajOuP/AB+u4ooA4Q/CywU5t/Efie3PbZqbH/0IGj/h
W9yjh4vG/idSOm+4jf8Amld3RQBwR+H2sD7nj3WgP9qKFv8A2WkHgLxCv3PH
+pj62kB/9lrvs0UAcCfAPiFzl/H+pEnrizgH/stOPgDW2OX8fawe3EEA/wDZ
a7yjNAHCt8O76UATeOfEbAdkkiT+SUD4YwsAJfFviuT2/tHaP0UV3OaM0AcA
/wAG/Cc8/n3g1O8m27TJcahKzEemcjirMXwh8CxYzoMcmOf3s8r/AM2rsZ7q
C2XdPNHEvrIwX+dYl7478J6dkXXiPTI2HVftKs35A5oAZb/D7wfakGHwzpQI
7taIx/Mite30jTbMAW2nWkOOnlwKuPyFcdP8ZPBqNstby6v36BbSzkfJ9ASA
P1rMuPjG0k/2fTfCWqyyk7QLt0txn35JH5U1FvZCckt2eoYo/lXkNz4/8b3S
Mbay0LT06ZkkkuHH5bRWMNQ8YapMx1TxXexW2QGFhElvgngAMAT+tWqM30M3
Wgup7lPcQ2sRknmjijHV5GCgfia5XUvih4N0yQxPrcFxMP8AllZhp2P/AHwD
XjTeHrObUpG1H7RfyQklnvZ3lJx65OK3Y4odM0AJBBFAZWJAjQLwfpWiw76s
h4hdEdFe/GV5cronhi+n7Ca+dbZfrjliPyrn7jxn401d8T6xa6TAesenW+5s
f775x+ArJByacASQB1NaqhBbmUsRN7aE6eGLS+m+2X81zqsy8+ZfztNz9Ccf
pSSKI32KgRR0VQAAPoKtmZrSBVQ4J60iXEU42yABvWtkktjFyb3KdXbRQkbS
kfSmtZNuHl/MtLdN5caxDj1qiSBnLuWJ61ZgumTCvytU6ntk3yewoA1JbdBa
F4eGPausvdaZ/hrE+8+dIBbMc85Bwf0H61wr3TLN8p+UcYq69y15pyWobCJI
ZQo/vEAf0/WonDmaLhPluUbaPdJnHA5NLNKTLkHpUhU20BBGHNVasg0YSt2A
jfeFQ3WUl2elJbHyVMvftUsmLmPzB94daAMnWHEXhzVJT0W1k5+qkV3XwIga
H4V2LN/y1nmcfTeR/SvNPHl19h8G3KZw9wyxD8Tk/oDXt/w80xtH+HuhWLrt
dLNGcejMNx/VjXHiX7yR2YZe62dI6h1KsAVIwQe4r4y8QaM3hjxprGiMNqQz
sYeOsZ5U/wDfJFfZ9eGfHjw4lpf6R4zS0W4hgkW3v4iSA6ZyuSOx+Zc+61hF
2dzokrqx40KUHBBr6J0/wl8N9U022v7bQQ9vcRiSMiSToRnH3+o6H3FWv+EF
+H3/AELw/wC+5P8A4utvbIx9kz51YjAJ+63BpijIZO45FfR//CEeANu3+wBj
/fk/+Ko/4QjwBuz/AGAM/wC/J/8AFUe2QeyZ85J80bL6cipLeNpN6gfKR1r6
IHgjwADkeHxn/fk/+Kp//CGeA8Af2DwOfvv/APFUe2QeyZ87IIonDOxZgfur
UkkqpJuSNMNyCea+gz4J8Ak5/sAZ/wB9/wD4qlPgvwEVAOgjA6fO/wD8VR7Z
B7Jnz8txLLE67hlfmAAAqLz5SB+8b86+hl8F+AlOV0HB/wB9/wD4qj/hCvAP
/QB/8fk/+Ko9sheykfP87swik3N8y8nPcUxJnV1O9uD619Cf8IZ4DKhf7B4H
Qb3/APiqT/hC/AX/AEAf/H5P/iqftkHsWeJa7rl3qd1a+bIw+y2sdsmG6que
f1qnb3tws8eZWI3DNe9t4O8CO25tCyf99/8A4qgeDfAgII0LBH+2/wD8VQq0
V0B0pM8HlupI55EZY2wxHKChLmFiN9onXqpIr3l/B/gV3LNoWWPU73/+KpB4
O8CA5Ghf+Pv/APFUe2j2D2LPD7sWb3km4yxnPX7wqMWkb48q6iYnoG+Wvdn8
I+BpHLNoeWPU73/+Kpv/AAh3gT/oBf8Aj7//ABVHt12F7FniVzaTx2Vsvllh
gsSvI5qgRg4PB96+gh4Y8FjbjR2G0YGHcY/8ep0nhvwZKMPoob6lv/iqPbrs
HsWeD6dxLJKRxFGzf0/rVYZzmvfV8K+CFR1XRMK/DDc/P/j1N/4RHwN/0A//
AB5//iqft49g9izxuzIl0lkOP3bnr0wf8mpNK1BfCzxQ3tut9oVx881s0Qka
0yfvID1X1X8q9lj8M+C4UdI9G2q/3hufn/x6iXw34NnffJo+5sYzufp/31Uz
qRkrNFRpyi7pnNx+FPBGsafDe2ui2FxDJ9yaBfK3Z5z8hB9aYvg2wgx9g1DW
tPHYWupygD6Ak1PqPhgaHJJfeCP3PmYNzpFwx8i4x3Qkny39+hpdF8SWWsyv
ahZLXUociawuV2TJjrx/EPcZrnNxY9E12CFntPHOuqVOCLgRT8f8CWnofHkJ
/deMLadR2uNLT9SpFblsrOxUKSrKRnHHtR5ap/rZQD6LyaAMtNU+IqBtt74Z
n2jOJLeaMn8mNSReIPiLjJ0nw5Ko/iW6lQfqtakU8ccilI/YsxycUyZn80q7
FsHjPpQBRXxd45D7D4V0qU+serYB/NKT/hOvGC/e8DRMf9jV4/6rV0NhgR1B
yKmlGZMqOHG4AUAZw8e+K+h8Av8A+DaH/CnHx34rDlP+FfzbgcY/tWH/AAq+
ItnMrBM/wjlvyqaSU7VeP5dwwT3yKAMp/HPi1SB/wgRBPrq8P+FNfxp40BKr
4ItlP+3q6f0Sr+amYNIEdRkkYP1FAGUPFfjyVgsfhjSIieMyaoWH6JTW1z4j
Mmf7P8MQZ6CS4mc/oorX3JFyMM479h/jROcyluzAMKAMb7b8RpkLNqHhq3AO
CI7WZyPzYVVu28Z29pNeal47stPs4VLSSx6WgC/Qux5q1q/inT9DItZfNutQ
nA8iwtRvmkPY4/hX/aOKpWXh86/cRaj41HmCM7rXRrcn7Pb+7nI8yT36DtQB
xmmax4t1++ubmXxXrEOixLmOURxQyze4Cr8oPbvUOqWN3cRfal8Q67eWpO1x
PqD5Q+jBcDHvivYhYeG1g8gaewiznb83X86jh0rwvBv8vTCvmKVcZb5h7/NW
8ZU10MJRqt7ngn9g6YW3yWolb+9M7SH9TXS/2bYaNo4iisbWO5nwzlYlyq9h
nGa9QXw/4QRw66Rgg5HLf/FVJNo/hW5YtNpjOT3Jb/4qrVaC2RDoze7PGxkH
gkc9q6CINc6Y1+U/0qNfLz3df7/1Fegf8I/4P/6BB/76b/4qrMWneGoZBJHp
zKwTYMFvu+n3qf1iPYn6vI8muZGTZFGTn2qzNfNbxJakAlPmc+rV6V/YvhPz
BJ/ZR3g5By3/AMVTW0LwizFm0olick7m/wDiqf1iIfV5HFywW9/MjR8PdbXY
egAwaqa8jfaliTmOIYGK9IWw8No6OunsGRdqn5uB+dNbTfDLMWbTmJPU5b/4
qj6xHsH1eR4/0PvVqzQM+8/dWvUm0Xwo/XSifxb/AOKpV0jwqilV0xgD7t/8
VR9Yj2D6vI8qnl82UntUYNerf2H4S/6BR/Nv/iqX+xPCX/QKP5t/8VR9Zj2F
9XkedWEzwKZGOVFOlEV6S6nD16MdJ8LFNp0xtvplv/iqauj+FUIK6WwI92/+
Ko+sx7B9WkeXPE8bbSDVr/UW+P4jXpZ07wy3XTWP13f4019K8LSfe0xj+Lf/
ABVH1mPYPq0jyzPpVi0DeaGBwB1r0n+xvCn/AEC2/Nv/AIqnrpfhdAQumsAf
dv8A4qj6zHsH1aRwM7peLgcMtUPLYSbCMHNemLpXhdGyumMD9W/+Kp507wyW
3f2c2fXLf/FU/rMewfVpHm07gARr2otGIlAHTvXox0rwsxydMYn6t/8AFVXv
ovCOk6dc39xp5jgt4zJIxLdAM/3uvYe+KPrMewfVpdzx3xJZ/wDCU/EPw/4W
hy0bSiW5x2Xqf/HFJ/4EK+l0UIoVQAoGAB2rxT4IaNJq+sa147u4BH9qlaCy
TrtTPzY9hhVB9jXtorlnLmk2dVOPLFIKoa3pNprui3elXyb7a6iMcg7gHuPc
dR9Kv0hGags+ffh/fXfhHxJf/D/W3xJFIz2EjcCQHnA9mHzD3yK9Q6Vk/Fzw
DJ4o0qLVtIBTXtN+eBk4aVQclPr3X3478ZHgHxnH4t0cifEerWoC3cJGCT03
geh7+h/CgDraKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigArK1vw5pniCNBfQHz4uYbmJtk0R7FXHI+nStWjGaAOQeXxdoDfv
lbxHp68iWLEd4g91+7J+GCa0NP8AFWi63cNHZXircZ+e0nBimRu4KNg/lW/+
VZur+H9I15NuqafBckfddlw6/RhyPzoAs9Dg5/GpyrzJG6qWONrY9q5YeEtS
00g6D4lvIIx0tr9BdRfTnDAfjTjqHjm0jdLrRtM1ROzWN2YG/wC+XGP1oA6f
bGn35Mn+6vP61KJj9nYRjZs/E7frXGnxdd24/wBN8Ja/BjqYoFmUfirU+Hx9
pKP++staiDDawfTZf6CgDp888/nmpovnikQcn7wFckvjvSG+7aa1J7R6ZKSf
zFSxeNrl3H9neD9flGessCw5/FmoA6nYqcysR6IOpp6yGSKSNF24wwVf1rjz
eeNr7/j30XTNMUn797dmZgP91Bj9aP8AhFNU1An+3fFF7NG33rbT1FrER6Ej
LEfiKANHV/Fei6HIIru9U3THCWsAMszH0CLz+dZz3HivxIEWCH/hHNPxgzTY
kvJB7J0j/HJFbOkeH9I0JCul6dBbE/ekVcu31Y/MfzrSoAytF8OaboCSfYoW
NxKczXUzF5pj6s55/lWrRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABXl/j++u/F3iSw+H+iNmSWRXv5F5EYHOD7KPmP
vgV0fj7xnH4S0cCDEmq3QK2kOMkHpvI9B+prW+EfgGTwvpUur6uC+v6l887O
ctEpOQmfXu3vx2yQDu9E0m00LRbTSrFNltaxCNB647n3J5P1q/SAYpaACiii
gAIzXi3xN8CahomsHx74QUrdxEvf2qDiRf4nA75H3h+PXNe00hGaAPLvCPi2
w8X6QLy0IjmTi4tyfmib+qnsf61v1wvjz4c6l4a1ZvGfgRSkykveadGvDj+I
qvcHuv4itTwd4303xhY7oD5F9Ev7+0Y/MnuPVff86AOmooooAKKKKACiiigA
ooooAydc1+LQ/savZXl5NeSmGGG0jDuzAZ6ZHYVS/wCEovf+hM8U/wDgAP8A
4qpNa/5HDwX/ANhOT/0S9epUAeS3PjGaztpbm58I+JoYIlLySPYgKqgZJJ3V
tSami6INVitp54zALhYYlBkZSM4Azycds10Hjr/kQPEX/YNuP/RbVzugf8i5
pX/XnD/6AtAGHY+ODqllHeWHhbxHdWsoJjmhswytjjghvUYqz/wlF7/0Jnin
/wAAB/8AFU2C9b4f6+18DjwxqUoN7GOljOePOA7Ix4b0OD7V6qjB1DKQVIyC
DkEUAeW2/i2JtRtbLUNG1fSWumKQSahbeVHI+M7A2T8x7V0Nb/iHQbLxJolx
pd+haGYcMvDRsOVdT2YHkGuB0K/vrW+m8N68wOsWabknAwL2Dosq+/Zh2NAG
/RRRQAUUUUAHfFc7J4uje9ubfTtF1nVltpPKlnsLXzIlkAyV3ZGSM807WLu+
1XVI/CuhyGO+uE33l2vSxtzwW/326KPxr0LQ9FsfD2j2+l6bD5VrbrtRe57k
k9yTyT70Aed/8JRe/wDQmeKf/AAf/FVWv/HP9lWcl5qHhfxHa2seN8s1mFVc
nAyS3ckD8a9blkWKNpHIVFBLMxwAB3Jryt7p/iBrsepyg/8ACNWEp/s+Ful5
MODOw/uDkKD7n2oA3LK6N7YwXRglt/NQOIpgA6g9AwycH2qHVNa0zRLcT6pf
Q2kZ+6ZHwW/3QOT+AqnrurXsV1Z6Ro0ST61qGfJEn+rgQfemk/2Rnp3NdB4c
8AaXos32+8LaprT8yajeAM+fRB0RfQCgDlU8ZLcjfp/h3xHfRHpNDprBD9C2
M07/AISq+/6E7xVj/rwH/wAVXqnSkZ1RSzMAo6knpQB5b/wld/8A9Cd4q/8A
AEf/ABVJ/wAJTe/9CZ4p/wDAAf8AxVemf2hZf8/cH/f0f40f2hZf8/lv/wB/
R/jQB5n/AMJRe/8AQmeKf/AAf/FUn/CUXv8A0Jnin/wAH/xVem/2hZf8/lv/
AN/R/jSrfWjNhbqAn0EgoA8y/wCEpve/g3xTj/rw/wDsqavjvRY5Vh1H7bpM
rcBdStHgH/fRG39a9WBBGajnt4LuFobmGOaJuGSRAyke4NAHHRSxzxJNDIks
TjKSIwZWHqCOD+FPrN1jwDNoRl1XwSRbS53z6S7H7NdDuFH/ACzf0I49qfou
r2+u6TBqNsHRJAQ0cgw8bg4ZGHqCCKAL9FFFABRjnHfOKBntn8K5tLe68eaz
caXZ3Mlt4esn8u/u4Dh7qXvBG3ZR/Ew9hQBLe+MtHtbxrG3e41K/HW102Bri
QH328D8TQus+IpRug8CayyHoZZoYj+RavQtJ0XTdBsVstKsYbO2XokKAA+57
k+55q/QB5VL4pu7AbtX8Ka9YxD70wgWdF+pjJI/KtXS9Y03W7U3OmXsN1EOG
MbcqfRgeVPsRXoFcZ4q8Cx38x1rQHTTfEMIJSdBiO4/6ZzKPvKfXqOtAC0Vl
aBraa3ZOzwNa31u5gvLR/vQSjqp9R3B7itWgAooooAKKKKACiiigAooooAKK
KKACsHxb4s0/whpDXl2weZ8i3twfmlb+gHc/1qv4x8bad4PsN858++kX9xaK
fmf3b0X3/KsvwH8OtS8TasnjLx0peYkPZ6dIuFQdVLL2A7L+J9KAJPhl4E1D
W9YHj3xepa7lIewtHHES/wALkdsD7o/HrivaQMUgGKWgAooooAKKKKACiiig
AIzXk/xA+ErX99/wknhCb+zteiPmMkZ2JOfX/Zb9D39a9YoxQB4Z4V+I63V6
dC8Twf2VrcTeW3mrsSVv/ZSfToe3pXoFS+N/h3ofjmz238Xk3qDEN5EMSJ7H
+8vsfwx1ryR9R8YfCedLLxHA+reH87Ib6LJKDsAT0P8Ast+BoA9WorO0XXtL
8RWQu9Ku0ni/iA4ZD6MvUGtGgAooooAKKKKAMDWv+Rw8F/8AYTk/9EvXqVeW
61/yOHgv/sJyf+iXr1KgDn/HX/IgeIv+wbcf+i2rnNB/5FvSv+vKH/0AV0fj
rj4f+Iv+wbcf+i2rnNB48OaV/wBecP8A6AKALlxBFd20ttcRpLDKhSSNxkMp
GCD7Vm+DdWm8L6vH4Q1OVpLKbJ0W7kP3lHJt2P8AeXt6j6Ctas7W9Gtte0qS
xuSyZIeKaPh4ZBysinsQaAPQ85rmfGfhT/hI7CGezlFrrVg3nWF1/cfureqM
OCP8KqeCPFFzqIuND1oKmv6cAJ8cLcx9FnT1B7+hrsSM0AebeH9b/tqyk86A
2uo2r+Re2j/ehlHUe6nqD3Fa9VvG/h27gvE8WaDFv1K2j2XlqvS+txyVx/fH
VT+FN0vU7TWNMg1Cxl8y3nXcp7g9wfRgeCPWgC3WN4g1qXTI7ez0+AXWsX7G
Kxtv7zd3b0RRyTVrWdXtdC0ua/u9xjT5VjQZeVzwqKO5J4q54H8MXVtJN4j1
5FOu3yAeWOVsoeqwp/7Me5+nIBqeEPC0fhjSmiec3Wo3L+ffXjj5p5T1PsB0
A7Cuh+6KMbRxzXE+OPE13DJF4Z0CQDXL5MtMORZQdGmb3/ujuee3IBleLdUk
8ZavN4U0+R10m0Yf2zdRnHmHqLZD6n+L0HHrWtFFHbwpDDGsccahURBgKBwA
Paqmj6TaaHpcOn2SkRR8lmOWkY/eZj3Ynk1eoAzPCirN8VfEMjgF4NNtI4z/
AHVYuxH4kD8q9FAxXnfg7/kqHin2sbL/ANqV6LQBzfjfxFN4a0Bbm0gSe+ub
iO0tUkOEMshwCx9ByfwriT4Nj1R/tPinULrXLonJSWQpbRn0SJSBj65re+Kn
/IK0D/sPWf8A6EasnrQBzn/CAeEf+hesf++D/jR/wgHhH/oXrH/vg/410dFA
HOf8IB4R/wChesf++D/jSH4f+EGGP+EesvwUj+tdJRQByVzolx4QtZdX8KXl
zbNaI00umyztJbXCKMsu1idpwDgg16lo+oxaxo1lqcAIivIEnQHqAyg4P51x
usjOg6kB1+yS/wDoBrb+Hpz8OfDn/YNg/wDQBQB0teV6Gi23izxlZxDbCmpr
Kq+jSRKzfrXqleXaX/yPnjb/AK/bf/0QtAG9RRWP4g1t9It4IbOH7Vq16/k2
NqOskh7n0RRyT6UAVtaub3VtUi8K6JIY765XfeXS/wDLlbngt/vt0UfjXomi
6PY6Bo9tpenQiG1t02Io6+5J7knJJ9TWX4N8LJ4Z0t1ln+1andv59/eN1mlP
8lHQDsK6PpQA2RljRnYgKoySTgAeprzCbxF4i8X3txc+HdXGkaJATHa3BtVl
a9cfechukYIwMcml+Jusane3kPhu20bXJdJkw2pXVhaM5kTr5KHjg/xH0OO5
qtD4n+zQRwQeDvE8UMShY400shVAGAAM9qAOu8FeKpdbhuNO1WJLXXtPIS7g
B+Vx/DLH6o36Hiur614drmq3891aaxo3hjxNb63Yn9zI+msEmjJ+aKTB+6fX
sa9h0LU21jRra+ezubKSVcvb3KFJI27gg+/egDkfG3h66sb4eL9BhaS+gTZf
2af8v1uOv/bReqnqenpTtO1G11bToNQsZRLbTruRh19wR2IPUetd4RmvLvEG
nnwHrUms2qEeGtQlBv4VGRZTHgTKOyMfvDscH2oA36KAwYBlIKsMgg5BFFAB
RRRQAUUUUAFFFZ2ta7pfh6yN5ql2lvF/CDyzn0VepNAGj1OO9cB4q+I6Wl6N
D8MQf2rrkreWoiXekTfh94+3Qd/SslNR8YfFad7Hw5A+k+H87Jr6XILjuCR1
P+yv4mvWvBHw70PwPZ7LCLzr1xia8lGZH9h/dX2H45oA5XwB8JnsL7/hJfGE
39pa9KfMVJDvSA+vozfoO3rXq4GKUDFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FRXFtDd28lvcxJNDINrxyKGVh6EHrUtFAHjPib4Ky2N62teAdQk0u+GWNoXI
jb2Vu30OR9KxtN+J15o18NH8d6VNpt6vH2lYzsb3Kjt7rke1e/1m61oGleIr
FrLV7CG8tz/DKuSvuD1U+4waAOXs7211G0S6srmK5t3GVliYMp/EVPXBap8G
tc8M3cmpfD/WpIs/M1jcuMN7An5W/wCBD8aoWfxSu9GvRpnjjRLjTLscefHG
dje+3091JoA9MoqnpmradrNsLnTb2C7h7tE+cfUdQfrVz/PNAGBrX/I4eC/+
wnJ/6JevUq8t1n/kcPBf/YTk/wDRL16lQBz/AI7/AOSfeI/+wZcf+i2rndC/
5F3S/wDrzh/9AFdD48/5J94j/wCwbcf+i2rntC/5F3S/+vOH/wBAWgC/RRRQ
BieINIuro22qaPIsGuaeS9rIfuyL/FC/qjdPY12XhXxNa+KdFS+t0aKZWMVz
bPw9vKv3kYeoP5jBrIrndQjvvDWunxRotu1wrgLqthH965jHSRR08xf1HFAH
qh5Feba5oGoeFNdl1jQdOmvtJv2LX+nWwG+GbtNEpIBz0ZfxrttC8QaX4j05
L7SryO5hbrtPzIfRl6qfY1p8GgDzzw14d1DXddj8SeILOSzgtCRpemzYLRnv
NIBxvPQDsK9D6UVj+I/E2l+F9O+2ancBAx2xRL80kzdlRerGgCr4w8Ux+GdJ
WRIDdajcv5NjZqfmnlPQf7o6k9hXLeHtFk0uKe7v5hdaxfsJr66/vN2RfRF6
AVBpNlf6nq8vifXo/L1CZPLtLPORYwf3f989WP4V0FABRRRQBl+E3WD4q+II
pCA9zptpLEp/iVC6sR9CR+dejA5rzLXtKvLiez1fR5Uh1rTyWgaT7kyH70Un
+y3r2OK6Hw54/wBL1qX7BeZ0rWl4l068IVwf9g9HX0IoAu+M/Dx8TeHJbCKf
7PdK6T2sxGfLlRgyk+2Rg+xrhv8AhLZtNHkeJNE1PTrxOHaK1aeBz/eR0B4P
oema9YooA8m/4WB4f/v6h/4Lp/8A4ij/AIWB4f8A7+of+C6f/wCIr1qigDyX
/hYHh/8Av6h/4Lp//iKP+FgeH/7+of8Agun/APiK9aooA8hutY1HxTZz6X4a
0XUXe6jaFr68tzb28CsMFsvyxAJwAK9P0TTI9F0Ow0uJt0dnbxwKx7hVAz+l
XqRmVFLMQFAyST2oAUmvLdGdZvGnjWdDujOoxRhh03JCoYfga1Nd+IC3k0mi
+Dwmo6mflkuxzbWY/vO44Yjso7ioNE0iDw/pC2izFypaa4uZjzLIx3PIx9zz
7CgCfVdUtNG0yfUL6Ty7eFcse5PZR6sTwBU3gbw5dm4l8U69EE1a8Tbb2x6W
Nv1EY/2jwWPrxWR4a01vHGuReILuNh4f0+Q/2ZA44upRwbhh/dB+7+Jr08cC
gA6VXmvrSCTZNdQxPjO15Ap/U1j+L/FEXhjSRMITdX9y/kWVmh+aeU9B9B1J
7CuDsvBGnXMb3niS1ttV1m6YzXVxKu4Bj/AnoigYH0oA9QGq6d/0ELX/AL/L
/jS/2rp3/QQtf+/y/wCNeb/8IJ4T/wChe0//AL9Uf8IJ4T/6F7T/APv1QB6R
/aunf9BC1/7/AC/40f2rpw/5f7X/AL/L/jXm/wDwgnhP/oXtP/79Uf8ACCeE
/wDoXtPH/bKgD1COWOeISROro3RlOQfxpt1bw3lrLbXMSzQSoUkjcZVlPBBr
y3TLsfDfV1TlPCWoSgEdtNnbvz0jY/ka9WUhhkHg9x3oA8ptoZvBGuReGrx3
k0m6J/se7kOdvf7O7eo/h9Rx2rpa3fEXh+y8TaLPpd+pMUoyrrw0TjlXU9iD
yK4PQtRvoL2fw7rzD+2bJdwlAwt5B2mX3/vDsfrQBv0Ud6p6lq2n6NbG51K9
gtIuzTOBn6DqT7CgC5UF5e2unWj3V7cxW1ugy0srhVH4mvO7z4pXWsXp0zwP
olxql2ePPeM7F99vp7sQKvaX8G9c8TXcepfEDWpJP4lsbZxhfYkfKv8AwEfj
QBQ1L4nXms3x0fwJpU2pXrcG5aM7F9wp7e7YHtWz4a+Cst9errXj7UJNUvmw
wtBITGvszd/oMD616pougaV4dsVstIsILO3H8MS4J9yerH3OTWlQBFb20Fpb
x29tDHDDGNqRxqFVR6ADpUtFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAJj3qlqmjabrdm1pqljBd27fwTIGA9xnofpV6igDxvW/gPbwXR1D
wbrFzo94OViZ2ZPoGHzAfXdWDN4j+Ivgc7fFWg/2nYpwb22649SyjH/fQFfQ
RGaQgEY7UAeEHxb4Q8cixH9uXmkXtrKZofnEEiuQV4cgqeD610S+F7tlDr4z
8UsrDIYagCD+O2uj8RfCvwf4lLPd6RHBcNybi0/dPn144P4g15/P8G/Fnhpm
l8GeK3MQ5FrdHaPp3U/iBQBs3Pg2a9tZba58W+J5oJkMckcl6CrKRggjbXRW
tulnZwWsZPlwRrEueuFAAz+Veay+NvHXhRtnizwnJLApwbq1G0fXK5T+VbOk
/FfwlqgVXvnsZT/BdptAP+8Mr+tAHbUVFbXNvexCW0uIriIjIeJw4/SpaACj
0oooAwdQ8I6ZeXzajbtc6ZqTdbzTpjDI3+9jhvxFKtt43tsLbeN1ljHT7Xpk
bt+LKRmt2igDBe18bXWUu/G3lRnqLPTY0b8GYnFO0zwppunXv9oObi/1LvfX
8pml/AnhfwArcooAKKKKACiiigAqjqmjaZrcAg1Oxguox93zFyV+h6j8KvUU
Ac0ng2K2UJp3iDxFp8Y6RQak5RfoGzinf8Ivf/8AQ7eKf/A1f/iK6OigDnP+
EXv/APodvFP/AIGr/wDEUf8ACL3/AP0O3in/AMDV/wDiK6OigDnP+EXv/wDo
dvFP/gav/wARR/wi9/8A9Dt4p/8AA1f/AIiujooA5z/hF7//AKHbxT/4Gr/8
RTH8E2l5gavq2taug/5ZX1+7Rn6quAa6aigCG0s7awtVtbO2ht4E+7HCgVR+
A/nWb4n0OTxHo0mmLqMtlFKf3zRIGaRP7vPQE4z69K2KKAOch0XxTb28cEPj
q9iiiUIiJp9uAqgYAA29Kk/svxb/AND9qH/gDB/8TW/RQBh6d4enh1g6vq+r
3GsagsXkwS3EaoIEPXaq8AnuevFblFFABRRRQAUUd6iubm3soTNdTxQRAZLy
uEA/E0AF1bQXtrLa3USzW8ylJI35DKeoNc/a+H/EWn20dpYeOdShtIRshia2
hkKKOi7mGTgcVnat8V/CWlblS+a+lA4W0j3D/vo4X9axovG/jnxW2zwn4Ski
hY8XV0Mj65ban86AOvOmeLFUs3j+/VRyWNlbgD9K4LxTrunWl/Z3mofEG71L
UNPcvbraWULMpPUFlwMHoQT+Fb0Hwc8W+JWWTxn4rkER5NpaHcPp2Ufka7/w
98K/B/hoo9ppMc9wvIuLv96+fXngfgBQB5hD4j+Injj5fC2gDTbJ+Be3I7eo
ZuP++QcVv6J8CIJ7oah4y1m51i7PJiV2WMexY/MR9NtexYAGB0pQMUAUdL0b
TdEs1tNLsYLO3X+CFAoPufU+5q6BS0UAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACEAjB5B9a5jW/hz4R8Q
7m1HQrRpWHM0SeU//fS4JrqKKAPGb79n2ygla48OeItR0ybqoc7wPxXaf51m
yeGvjF4cB+y3tlrtuvRXZWYj/ge1v1Ne8UmKAPn5/iZ4j0RtnibwVeW6r96W
JWVf/HgR/wCPVp2Hxg8I3gUS3VxZse08BIH4rmvbioYEEZB7GsHU/BHhfWMm
/wBA0+Zz1cwKG/76GDQBy1h4m0LU8fYtZsZif4VnUN+R5rWAJXcOR6jpWFqX
wD8EXxY28F5YMf8An3uCQPwfdWDL8A77T/m0Dxrf2pH3UkQ4/NWH8qAO6orz
5/BHxh0z/j08SWN+g6LI4JP/AH2n9age/wDjDpZIu/CtreoO8ADZ/wC+H/pQ
B6RRXmLfEvxRYHbqvgC/iA6sgkUfqh/nSJ8btGRtl5o+p279xhWx+ZBoA9Po
rgIPjJ4Ql/1k17D/AL9tn+RNX4vin4Mm6a0q/wC/BIv/ALLQB2FFc5H4/wDC
Mv3fENiP95yv8xVhPGXhiT7viHTD/wBvK0AbdFZY8S6C3I1zTT/29p/jTx4g
0Q9NZ04/9vUf+NAGjRWcfEGiDrrOnD/t6j/xpp8SaCOut6b/AOBSf40AadFY
knjHwxF9/wAQaYP+3lf8aryeP/CUX3vENif91y38hQB0dFcfN8UvBkPXWlb/
AHIJG/8AZaoz/GTwhF/q57yY/wCxbEfzIoA76ivMX+N2iuxSz0fU7h+wwq5/
Ik0L8S/E9+dul+ANQlB6M4kYH8kH86APTqK83S/+MGqMBZ+FLWyU/wAU4C4/
77f+lTp4J+MOp/8AH34ksbBD1WNwCP8AvhP60AehEEDJ4HqelZV/4l0LTAft
usWMBH8LTru/IHNczF8Bb/UPm1/xrf3RP3kjQ4/NmP8AKt7TfgH4IsSrXEN5
fMP+fi4IB/BNtAHP3/xf8IWYYRXVxeMO1vAcH8WxWYnxM8Ra22zwz4JvLkN9
2WUMy/jtAH/j1ex6Z4H8L6Pg2GgadCw/jECs3/fRya3goUYAwPQUAeER+G/j
F4jA+1XtloVu3VUZQwH/AADc36itKx/Z9sriZbjxJ4i1DU5urBDsB/Ftx/lX
suKWgDl9E+HPhHw9tbT9DtFlUcTSr5r/AF3Nk104GBgdBS0UAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFRTW0FwMTQxyD0dAf51
LRQBjXPhHw3eAi50DS5c9d9pGT/KsyX4Y+CJvv8AhjTR/uQ7f5YrrKKAOFm+
DfgGf73h6Jf9yeVf5NVKT4F+AXPGlzJ/u3cn9TXo9FAHmJ+AfgU9LW9H0ump
h+AHgc9ItQH0uf8A61eo0UAeXD4AeBx1i1A/W5/+tTx8A/Ao62t6frdNXp1F
AHnEfwL8AoedLnf/AHruT+jVdh+DfgGD7vh6Nv8Afnlb+bV3VFAHJxfDHwTD
9zwzpx/34t38607bwj4bswBb6BpkWOhS0jB/lWzRQBDDawW4xDDHGPREA/lU
2KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigD/2WVuZHN0cmVhbQplbmRvYmoKMiAwIG9iaiA8PAovRm9u
dCA8PCAvRjI3IDcgMCBSIC9GMjYgMTAgMCBSIC9GMzYgMTMgMCBSIC9GMzUg
MTYgMCBSIC9GMzIgMTkgMCBSIC9GNDEgMjIgMCBSID4+Ci9YT2JqZWN0IDw8
IC9JbTEgMSAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IC9JbWFnZUMg
XQo+PiBlbmRvYmoKMjYgMCBvYmogPDwKL0xlbmd0aCAyMzE1ICAgICAgCi9G
aWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42t2a3XOkuBHA3/evmLcw
VRmCPkDwlHJ2L3ebus1u7TrJQ5IHzGCbOgZ8wPjO+evT3fqAGZvO1uYhnpSr
DCO11FL/WlJLQmwS+BMbkcg4z/XGqDxOkmJTHd4kmzvI+v7ZU7giKs/jVCt4
Xwj7zJ0uRKyl2ewWNf7h+s3v/qhSUBYXkHJ9uxFKxkIXG5MIeOab6/3fo38k
QrdbEdXbnRZpdNsPh3Iaww980dF0P0vAQ0S/VluZR/dlB+l3lJFF/a0V3kNa
OZVW+ma7k8aWmbDIL/iPftadE2+gCaoeKLHbygIEqWj5ABU9tE1VTk2PikaU
iLf/vP4TdHonVJym1IWrrp8g+76G1spcRc3hgbT2wwQNBH2TTa96ysgjqu1E
HxUb7bO0jwMJjKS0vGuopzZnfKLEqT7Y39N9SVVIXycUuGlrqg5sR01bthoI
YLPLB+zgaf+khub0+Myj8b4cbDsxNVgVs8jue/s+lT85m1LO/nGbZpHrd3nn
kpGN1A5ECfBMdG9Tes9WRMNv5kbcwusRtVTUVdvA3Uu9aBsC+7SFvsZArlDR
F5C9+vBpu1NQE5pVpUnUWFsHE+3rvRXA/qLADapsWtszzACdlOEsSO/jsaIW
1YTAVY29wwKlfTyg2Rr0Xfx1WIgHjs/7QYV6sn0OntL+FkonKvoEqT9efbl+
/xYSZJGCA0NFaLImWLHQMBJGm31D5WvXS8prOpt19C5c298+vUfzPRLDwaaU
9rHv/zXXA6njNBCG/oCan77SpZRK7EBW5Op2DAJ3m/NEesvBCXrHwnfsZOnS
H4ZFKztblxtLqPHYlk7BLw34E70dR+tUcyvKbm+z9vXu+Si2dbe9rbYeRnAm
I5LZmbQU5ExaSmwnPd//FUt9xH9XOzur4EDpB6t8b0vZ4Yrd6fY0pva2NLk+
jl384dxvb9uLKX23EAPNz+195o3Q4jzNo/dYo4EirioD7W3H3iXakWnbGRpp
EhoGKICsBHotlXNpkDKUdkaiGbQffppzaJaG90OPkygWu6u7eijbF1p8NqtB
6e4O6ajITsA/kxUG37bDYpacp983312HpUfIJNawLqUpLGmSFqcYcmIlcvif
CbkZYK06S/q8WLp8Bbu5Blq5YDUTJpYipZXrVAv25G3fgRUnOw2cN8qtr4tG
na+YXuRcrZYbIeIitWp9PTKLU5WRXrHdFUkWve+2yjrVgE3A4ZRE+2M1oU3R
cySsx3mksGmwDJ/UasDnC2iChj65SmOoViRJEv3QjFM/PEF1sKSCQ6WQ9n/1
OEOl8zRODZhYyPg0EpqDGyeym2VsbLM06lk9aFT1TJeLkjhdPpDidHlv1IWJ
M60dQekIfq5/PhlBHU63k5sG4dVNg1n0peoffHiUpfIyOPk+s6AWQuukltbT
a6hYdZ4Vqy7AylUsitzBUg7WNS2lDoMD1G9xXqXXDz5wwKihwalSZ5c8yrwR
eHqzEENvYc51epy6QI9TF+hleWxS6ehpR+/Kbi/642RH1HRP0Sa87XvKqY5h
BaNtQJoUF4nN9Z7HNgsx2BZ2TFexceoCtjN1Ly6cWss4SwSpk3bhvPJLZoUL
6D0ul1Nd4fx4pGQIW3bK6OjjI+bXlPaIAViNoXdeKB1lX7eoyrCo/rmHabhq
S6sFp9tX7gff4iMyjwXYgveRWYjxESeENsxWfYRTF3yEUxeGNoSnxi3ZMqyi
H1ygWt4hewpSYVhfb3NB87Pb4bc9ZkO0VMC28xKhub7z0GYhBtrCimYVGqcu
QOPUeWiqKGKZKQctrKa0TQcwPza3tSVG+6Mnf5DQulTascOztI+3bXMyTatE
XwY/bwaW30Jond/SoKv8WHWeH6su8Mt1nAvj+On/kt8Pxxt71nFJY8+bgGc3
CzHsFsbMV9lx6gI7Tl1gZ2AvbdyiGqcvTZgO47u6bdzJ0pMl9Qnj3XKa6qGD
SCkT4rVDcn3lIc1CDKSF1YpVSJy6AIlTFyClaVxIH4hkDtJfRkfGD6BPQ08n
8LT3eK0D6BvwmSI2UgQrvGhPJ7NbCL2A76wm2gAkq/w4fYHfmb4XI1clQa/R
7iAhRK434zSU1WRD1KtP70f7Zvf0Jo3eUQiLMW1pE64xisUNpnLHhFobEwnx
dSGsms+FcIpFj3nX0Ja08geyZh7cH2p7Jl12zXgAMiZ77e4h0ljJ/D+4xyzE
uIcTIvcQq+7B6QvuwekLwztJwE2kg+SD1rf9gc7mj11TkROEwNWfi+Me1U0B
9yQJVPNCvj4yrn88mVmIIbOwFEOG0xfIcPo8GZlnsVZ++KhwKHdnD/HdTUC4
m5gJYUpDd02WjwOVzaBSrS5j2vU2YOkthNbpLa25To/V5+mx+gI9A0nu+DaE
pV/sZSIGNGFqpc3g6dldVlzyUul6ziMLMgyx2YIMMEZZ4MUoC7hSWLN06nj5
UPRLVbalPeahgUT3w+GoG5PqrrIHdPsw/qq+m1c0e2be4E4f49Q81a+BkOss
j2gWYhgtzCbkKiROX6DE6QuYtIqTMKx8MHr14L+u2NIlsz3wnpDcnj41EBCZ
XtYYcv3kCc1CDKGFxcTqRRKrLxDi9AVCMo+zVDlCxhH6G31ZgqPDn2u7qe9w
stn7/Xanlb7kuc/1nuc2CzHcFnYUq/cSrL7AjdMXuEGwLhPjuOXMXhyHlb35
M9Hnrf9mwJ1junnOCWfRd13lbpXxLoPmSKhYvAZUrsM8qlmIQbUwHYOK0xdQ
cfo8KlGA3kw4VIVfq+puXoPC1eznuqqbx5B+cg1Yu89ZXs3o8R1jkSyE1pEs
TSRWr4dYfR4Jqy8gyWGrJeatrogS6KsQ0UcXLQx2F9V3p9NfiMhxMB0wbDiO
k/01Hh/8139YdLszJn9FqFyHeVSzEINqYTqxeujI6guoOH0BlYG9l1mQEt9C
Cs9G6Ns1G/KVbevOk7uTUlXb+M8mdlrI/w0q22GeVJBhQM2Gk6vnVpyygIlR
FiilsMeSeoFJWkzf2/sVi6l1QTiOkMF+GpjRJ350ZV6PI018JpOXET34TvOo
ZiGG1cJ8DCxGn/9Me5dJ2DwZ/tOzQlF9LzZJFrCkyWLjZOwF+kqD5nq8rn8D
e+atiWVuZHN0cmVhbQplbmRvYmoKMjUgMCBvYmogPDwKL1R5cGUgL1BhZ2UK
L0NvbnRlbnRzIDI2IDAgUgovUmVzb3VyY2VzIDI0IDAgUgovTWVkaWFCb3gg
WzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCAyMyAwIFIKPj4gZW5kb2Jq
CjI0IDAgb2JqIDw8Ci9Gb250IDw8IC9GMzUgMTYgMCBSIC9GMjcgNyAwIFIg
L0Y0MiAyOSAwIFIgL0YzMiAxOSAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9U
ZXh0IF0KPj4gZW5kb2JqCjMyIDAgb2JqIDw8Ci9MZW5ndGggMjQ5NSAgICAg
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
jz0E0FzI5J9u8HsTrXoX+dEuTevDfuHHKRQW4DVhIG67+m437GHDDXsKBI8F
yW1Vrt0A5JCPKO4GILmROxriD7XFYoR7DgqVPRte1Rhi8Pe/rvEt5/TjhX+A
Wn4EoS6YUQVYRDNYVBy3qZOZjYSO2PSgJZsIvFBXKFakPK7Oybyi7qAlixBp
QdByZ6TU5XXbOXvBRLaTn75h69Z2t5QO5+CuJwRF52j/1DsqBWiFLHHsFh7q
ftuiy0FHI/Uwb6C82XXONRW21b6i+r5yBefRc9pnclMMhOdU27QwmMitynGP
05yJVDm/eX2Jz/qAkIGvpEtJl003RW8H/OGysOUV3bm3hoEChJ7HLWQpto++
8T3XR+cw8GzpzjCt+wXXa9vb4H8se7/7fOzDBGmYMLl76ZfDT2VMSfBtpmBZ
fnxPz8vMRkJHxsNBS/Q946G6jDMYOHF1TuYVdQctueFH40WmrAizOB8lA6pQ
kKH2VOjrde0/78DfZb12d3BctlR0Q/EH+gWehAp1s7BjmOJf29HCwz2+cmvF
tgkVVo3LL+gdX34wQrFWmIw+IHCh01Y82w/Byq6nn+jB8LrpSsgO7XHqCmvy
pPruInJXV82ioko/N7BcL+279PRrULmxb7htqs7denpwup/oI7SKfsHc2MtZ
yEdSTvAbvna7oq/W3IdttTtqv0aTXIKOORZuoGBP6+0kt8u1uqmtOyhX9MCS
jFhjotQQ2CM2e9+1+OLL1TNuOwLTUUKCNx7r5huyU4UfAYLSQbziZwAKgkt5
128twQWdrdlKSIhCNoQN0SN28uLtFTn2tq+86kW726yg26fwlv1zQ5kbttc2
7c59wQk+8sv1h9mqfpy643LDHbOLloYn1lTWvC5Jnd2VvTUx3Fi06zXe2jUw
FIZIB3ee6i2mibCgqr5vq6av71bVqRzcSLv4i6bgg8yRCWkUE8L4do5GH7/C
fKnrP2kpkPZlbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqIDw8Ci9UeXBlIC9Q
YWdlCi9Db250ZW50cyAzMiAwIFIKL1Jlc291cmNlcyAzMCAwIFIKL01lZGlh
Qm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgMjMgMCBSCj4+IGVu
ZG9iagozMCAwIG9iaiA8PAovRm9udCA8PCAvRjQyIDI5IDAgUiAvRjMyIDE5
IDAgUiAvRjI3IDcgMCBSIC9GNDMgMzUgMCBSID4+Ci9Qcm9jU2V0IFsgL1BE
RiAvVGV4dCBdCj4+IGVuZG9iagozOCAwIG9iaiA8PAovTGVuZ3RoIDI1Mzcg
ICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjapRnZjuO4
8X2/wshLZGDslUSd2afNIscEO0BjxkACZPIgS3SbaB2OKE1v//3WRZluy5OH
oIEmRVYVq1g3HW1C+Is2URjviyLZ5KrYh2G5qbsfws0zbP3tbowERRXFPk0U
zD1gt7lLymifxPlm51H88+GHH/+q4k0U7cs03RxO12PDaB8lxebQ/DvotLXb
XRRU2yh41ttdkqvA6q7qt3EeTKa2vDRb0z/L7jQC7Fwj1oSzUTe8c5wnnrwi
sq5e2jfY3zFgXARvl+0ON3CBUOKgqaaKZ1XvqFTWERwAvd/+5/APkHIXJfsk
yYhpQFFJGBALmjkFyLFqeZ0E0uM3WDMMg+tRcEHGBwT/ZhqSB6E7XJhbpGCI
18aMup4MHc4kAXU+tsaef4Q1oj4fbT2ao5MHQd7fJK4dx4Fu4F6EF7qiEbmI
gj2IW8TB4awtIcYsGnFQ03VdJj4Z96pRgPRvFzysb9yN4iLfGU2FvZZEfpVD
Pk5CBeCmSXeXSchOg8hRvaCy5IxKdk/6dU0R1s5Age8KISPFGDCysgdrzbHV
ssUcDWgnKoIjz7JBJlX1VnBG2W8r5PxN2AEN8/Ig42UcnknvXcfaJBS60bnC
/3qF5VczneEmoiR4PYN1AH36TAMz8bKxPM5ghnBnWVnSnSEI3llrB95v9Ncw
Snpt3R6tfo1UAlBfJrBnBB8bXn9i/kGpiNXqP6zwkLBtiZfUBiGBvC9DSjKc
B7ySV5C4jFhvZRiY7tLSLXUk+Q7NAKAmgTqjXDg7jchXp8lJh/GFscXBEeBf
n37dfX76hT8qsTsioWVCFFhbBRncKKegwgpUGNo2Gfa9Ag5IBoJVMGqLbkfz
4cRjPXRI4Wh6jjfo2sQ5zr5MZCVNhaQbXnsa5UL5U7RLaO4Ydx2WzsqWsxaI
Lz9/elph1Po6VElBlqGSEjTfkusXLGQ1aQh0BEH6M51pCU2weodlzXPPa+xr
RfD0689fDh8R6ZcPvEJhkEDotgHPLAHOU6oZ+oWne86nM3k3sJhlECWMneg2
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
UGFnZQovQ29udGVudHMgMzggMCBSCi9SZXNvdXJjZXMgMzYgMCBSCi9NZWRp
YUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDIzIDAgUgo+PiBl
bmRvYmoKMzYgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0YyNyA3
IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKNDEg
MCBvYmogPDwKL0xlbmd0aCAyNzk4ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCj4+CnN0cmVhbQp42o1ZSY/bSg6+v19h5GQDsSKpVFrmlgHebEAwwUsD
c5jMQW1Xt4XYlqMlmf73w49kabHUnUEDrRKLqmKxyI+Lo01If9EmCuMgz5NN
ZvIgDIvN4fJbuHmmqb8unpF+YvI8sImh8YTZT+5NkQSmSGmQBnkarfIUWRAa
emZhFERJDp4/P/z24S9JvImioLB28/A0SqZMD8d/bz/3j+ddtK1a+nf68KV/
bA9N9bjbm2jr6H9mt5/oGW0x35bPFT2uz3/a/efhH7/9/jDsH2dFkEfFZrL9
QkTPs5DRTGWMcxukWTyT8eNun0RmeyNRq/b0oYWQkKmB4CRrnENWsHwNbUhs
HyAsOPpHokQyd3EtHYBm9pB+s4+sCWxsaJAESZLyTtX1mZjzUL5+8ct0O9ZG
tL1MZvvbjbbOtjVNNl2LmWhbXoWDuX/sINl1R0ydTB+byhP5/VLzEkd3lvef
J9c4GVbXp7q5lLR4V9W6Kp8a+13lDOFM+La/uIbkMIkhOY4yuEFJukt/GOZv
ZYNDVbxideNtnExVV3mKvpznhy743NBRtA0gkd1++fjps+5IxNvtLCuWg5rn
ItJRID2EiJLt18gkeqnvQMEi/MDWfpln9x7ElHRTnZ18eKivfFj9iLct+Tz1
dO3RCtSoSQlOd+rqFfHm++JKw3xbP+FZQC90cx1dUNsJBWzQM7jGq4FkMu9+
4Oq9AagwpLiUrvILW8j1SKvSXrLG4iB+E5GqXijVstSHqvR3tzgAiD+r7uTv
iB/tTXzmUH0No+TgPy2vdLVQdpINRzNJwqKfnIz769E1ZzgGu4ruyQDBe4K6
YpkvbefgO1HITlv3ndPjXQRdxDOZSDx0OTzp71l5H8vWHYWDNa3MKh7Gg82C
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
8ZxALY21NJAXYeRkXgZVF8heX9yQT91XyLkJMiQy1gTRK7/meZ79hGntp7L5
SjhAvNyuCGxhf7Gd8PxiuwJ3Gs22O9RDninFaWZ9Wm59iny5+wEENVZut2P1
jp+MwD/vX2lCAzMrimweEviXiQLdrSErbwiShMh+LJBbde4wwg33cu2QsRZ2
6AkG8qX8JvPaxVGKG4Q5OZ9BimXXcz/l2U+YVnK/u5VwJrPYzsRBYdK3t1Oe
X2xnyAltPNvu6FDFXzliIpl4bKU7dehEFfghtQpcINMVxU4t//WXRwLGJMjS
u0RzcGe0BrhXTc8zu89zL0HlvXTCb0zt8BOncA0/ONG4a8qrzxgaSVhAJufs
hh8zyTnlp91JF8I1T1jmMLQKaWra5KHXw7mSH94YadrXELAwQULI+yYAjjxr
vpJwi0t5oBx7v1dSRDy53Ot/SLEOzmVuZHN0cmVhbQplbmRvYmoKNDAgMCBv
YmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDQxIDAgUgovUmVzb3VyY2Vz
IDM5IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVu
dCAyMyAwIFIKPj4gZW5kb2JqCjM5IDAgb2JqIDw8Ci9Gb250IDw8IC9GNDIg
MjkgMCBSIC9GMzIgMTkgMCBSIC9GMjcgNyAwIFIgPj4KL1Byb2NTZXQgWyAv
UERGIC9UZXh0IF0KPj4gZW5kb2JqCjQ0IDAgb2JqIDw8Ci9MZW5ndGggMjY5
MCAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqdWVuP
m0oSfs+vsPKEpTFLQ3M7b95kziarcZKdcaRd7dkHbOMxGwxewDOZf3/qBjTG
JtJqpKHpLqqqq76qri6rmQN/aqYc144iPQu9yHaceLY9vnNmz7D0t9FTySde
FNm+9mBsELeLCx0rW7vhbGFw/Ov63V9+99yZUnbs+7P1vhfrKFvpaLbe/dtK
it18oQPPOszd0Dpvan470lvd8Fv5h6O8tOKXpuTnKanmymqybXZKmpTnsgKf
2nparr4JoxQ4KqtOgPY5K57vYDoOrSQvYaJ4ZqLXrDnwhzuka5L5f9Z/h50t
lLa1DkjRBjV6g9XTfOFGFrL1IsX64yAttqAY0OwyZItTqN85T0m+zKT/O2c4
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
9o85E25ec9+3kvxMKdRtKwscdvnZtdKKun4Vf1KCMFDwv5yxG0q3HlXsSCvZ
WFHBnRUlNcSf3+TTvazR1QvJd3IVgit212e84+x/TXUGZm8HL7ToEgdPDjKc
aOZtxsj3PJXwgxMdWlgHIVkYJsnCo5hrbw6GgCSv0YteYP0o+KZRtNz5Ok9D
0BkCzDNA7nmaOmEOG3/uOxYBgygH4bBoSQeVcdHeZ9rr6jWb3UwPCs5l/Yv0
0NNMpAchogNjjZXFG6eIG4eGjiGy40n5Lc1IgYsqD6ItdgcKgOu0o/tuGL5w
vUltZUwK9BsMTHOD0fGh3jsmnbk4p9RMgqjEZ8IPo9aQefotySDMmpp50k3y
2fRDLQeGZyu8gxttX+Li+m4ffr7bhx+Gg++B+r6T7XmNtcWfhmBWIWghi91z
mVK9Mc3qom2JPLZl17BMyBLCO/2ZbJtcPiyLVDhcdCgx/MZxxz9HuUHbC1mZ
P3/JAZa1lU+Ry7m3S3Npp1epfE+JEJ6jeon75pt62AkTq5bdvV8O0qHWt8Cv
Qt9WarrGNmhug78lokzfKYngRyVD/9c3euydw71vUqWWZqTTqL8exwOVltz5
NC89+M6JC246SbbjHitZ3zM7lbiMGxq058O+5PX6DqfHhZaHP/C8dJfUgqco
aNYXv2WKGnuOiUjbkVbD3Ebnqw8VeM2DHRdo3BMn48Ik13G+9NNg8Ikq5WG3
wu+YZdKsgEP2ZPAJuo0ATcVy+usGro9ufzhJv+Fe+dm2b0GFv0Jji6LYox+z
JztlPc0Vz8caytC45YNqBJey2l/Mx7L+BNXIXMVlbmRzdHJlYW0KZW5kb2Jq
CjQzIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA0NCAwIFIKL1Jl
c291cmNlcyA0MiAwIFIKL01lZGlhQm94IFswIDAgNTk1LjI3NiA4NDEuODld
Ci9QYXJlbnQgMjMgMCBSCj4+IGVuZG9iago0MiAwIG9iaiA8PAovRm9udCA8
PCAvRjMyIDE5IDAgUiAvRjI3IDcgMCBSIC9GNDIgMjkgMCBSIC9GNDMgMzUg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago0OCAw
IG9iaiA8PAovTGVuZ3RoIDIyMTMgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNv
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
0VXhRk5pjWwB62La625Ng06+9sicqltFfReUtIe8vLQNmnKQWHJ0fMivo3V1
DDtTN+V6AKuFdYoBbMTgT4JjkLqd9o6CV87Kv6t+4O8MWK/PS+R7vsXtmmOX
g81jVJ7HZ2ze44Tb7pjFitWsIIHFMpHhzuhmsRqFxumdJnFv3jPBklwCx4EL
zPrIa0paRC8UG1iLQNFBR2PK+K7n5V3en76mJInmz3AIxZUAzrryC7p11YF1
TV0Ln1HhpgNMVOzcuElQf2PwKAaLpG2WzPDiQote7llb3AgfYl8UJrCInnVo
vAmNVkfVeHXAinP6KDLYJok/rqAgF2mcjvbjCUf9kYD97IXTsbLDC9d6cvxX
+yoVa99E/1dfNUPxel9lgbiviqSv4s+o4JK/oaRHWRQvRS1JDYPGkcech0fM
zZV1vmZ4rc3CDwGp/kabNQN6vc1SUehDnT9+Slh9kCkWDTIr/8SvghYieWI4
o3u2Nzw52y3JJce2rluu5NEosH+X172e8579/8fXJM0iX4PO3xR0gtn4zJpp
PwwziwfFTO5p4acqPFzT+gcHP+RIZW5kc3RyZWFtCmVuZG9iago0NyAwIG9i
aiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgNDggMCBSCi9SZXNvdXJjZXMg
NDYgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50
IDQ5IDAgUgo+PiBlbmRvYmoKNDUgMCBvYmogPDwKL1R5cGUgL1hPYmplY3QK
L1N1YnR5cGUgL0Zvcm0KL0Zvcm1UeXBlIDEKL1BURVguRmlsZU5hbWUgKC4v
c2FtcC1hcmNoaS5wZGYpCi9QVEVYLlBhZ2VOdW1iZXIgMQovUFRFWC5JbmZv
RGljdCA1MCAwIFIgCi9NYXRyaXggWzEgMCAwIDEgMCAwXQovQkJveCBbMCAw
IDQ4NCAyMTNdCi9SZXNvdXJjZXMgPDwKL1Byb2NTZXQgWyAvUERGIC9UZXh0
IF0KL0V4dEdTdGF0ZSA8PAovUjcgNTEgMCBSCj4+L0ZvbnQgPDwgL1I4IDUy
IDAgUiA+Pgo+PgovTGVuZ3RoIDUzIDAgUgovRmlsdGVyIC9GbGF0ZURlY29k
ZQo+PgpzdHJlYW0KeJzdU8mOEzEQvfsr6ghIU3QttstXEILrDH1DXMiQAZSM
NCzi93l2L2QO3DhNoqjbVvn5bXmgiYWm/l2fh3N6eVPp7kcS6jvf75JWV/Yg
mczovC9rcW5CmjWzOGWvnKuTaq485X19SNIiuJV9R2oVLroBbMsBj+ltaZPw
1Gg7LVmC3Xb8bX1IG4N9YuO7Ijzif0jH9IFy4dKUPkLgLfhxuCr9TsMIunn7
1CR/Se+TcFtVPkFxS3Do6kOS5X19HM70ak4KOHeaD+h2kBqHTIXmY1o6D9ET
+t+8Q3IWo/mcnr379en5/C29mdM1GrNURYPNCzwsUwM1cCg5c4OLklW5QJZE
Za106pZ74Cqg4tMtwFSphhywg/PYOeFckSFGi3Iz7BxfpIUUeri8/FMXUAOR
brqEQ4tf6sIvupdtKHp9+vr5/ifJhaxHf4S/9Y8pc+2kGmqTQdyqtZFeeGZr
Q95uutVAILUnr6zexyPGmDSD912VlQZI1KAh1Lzq1PDgioMC1BL9YCl5WObi
vQP9HhzVAWZmbINNaGUHmBeYvcCDn2Gj+e6ihjkXaqip5sGqROv8DI1zW7F9
YgSvSM1dFmwMKWmZYGdnAO0oupP3SyX+c0QGX4AMYwp6EJdBaQ/qShk6ULUr
eCURKOftPmF9AldUs1FvVEmqNLpCnbp9F6P3e+rX6Q8kNC+BZW5kc3RyZWFt
CmVuZG9iago1MCAwIG9iago8PAovUHJvZHVjZXIgKEdQTCBHaG9zdHNjcmlw
dCBTVk4gUFJFLVJFTEVBU0UgOC42MSkKL0NyZWF0aW9uRGF0ZSAoRDoyMDA4
MDIwNzE4MjMxOFopCi9Nb2REYXRlIChEOjIwMDgwMjA3MTgyMzE4WikKPj4K
ZW5kb2JqCjUxIDAgb2JqCjw8Ci9UeXBlIC9FeHRHU3RhdGUKL09QTSAxCj4+
CmVuZG9iago1MiAwIG9iago8PAovQmFzZUZvbnQgL0hlbHZldGljYQovVHlw
ZSAvRm9udAovU3VidHlwZSAvVHlwZTEKPj4KZW5kb2JqCjUzIDAgb2JqCjUx
OQplbmRvYmoKNDYgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0Y0
MiAyOSAwIFIgL0YyNyA3IDAgUiA+PgovWE9iamVjdCA8PCAvSW0yIDQ1IDAg
UiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKNTYgMCBv
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
3vVReOuz53moJiFpmC0cDiUFV0egE2B/TWW3Eu7q1UQsFFsI4iEk3daOfNJZ
KNiJxxGlns0RbXNeBxIIcEsdM4vIoQNC5O6YOfkZHXDy0zpg8RMd8LmC8tNb
HYD5lUvJqjB+qOeNZpABt9NwRMUYPKf2DOBXvHfXZyMdUagj1B8VHRlfB3Tk
UeJtnJIaNYbbdbonqvWEVOymLVhN1GVexiHEsaWekUXkkLEQudtvTn5Gxk5+
WsYWP5ZxkOQSCRLr9y5cNYGlpNaRtD8TCqVIzC5eggAsU2sON7r6WJA00QPT
DzdB5q8vRS/nMYwi3bnlJ8UMeGI1Rt0NqMbmfk2B7Km52G6fKg7TY8Vpgd11
HKC+0fvf6RvuUbDRBUpEDTE7rP2Drs7u1BJTjzBdvycdtrzX9DWn7TUlL4aD
nni16FYGCflnISH9VA5bUfceTaVjcVXS6DKMeQT73gxYYuAns8pHD0vf2j/w
p2Mjq7DsRWAoG2x7a4MZ1WQUzGhv+peO/mZHW+RAP8UNSxc10tpthLLp9a8l
WsDGiGdtVmUKaubMbbMW0bzNaiJ3n9fJT9usm5/YrM3vPmu++2EI167tXVbL
GXNoMmbJhXPSI1sRce1qOprog6MouPPBfHxJ4fFkrF1wmgdsblFsXDAcYxW3
3S8uWnGGQgquQVqHWTKkdZzSRTqlg8Hkax+2Yypdep2sguyuUVve/cC263Tz
22QGg2Tl1q8NGq0fCR/YvkkXfpsfaRyKyDTuxreLmVFDFzOthSOzD1KOmILF
6rmJcSr8URxFYsoY7eFK9Jv2z+ayLx6Ha3vMD0ckxWvp6utUmK5eYumrcB8e
ZYfiL6r63l3cdsEv5I56UYh0VoB56EVLv76NNFNMgzzygiDX95AA73lFuaLN
Ka//A1T9UyxlbmRzdHJlYW0KZW5kb2JqCjU1IDAgb2JqIDw8Ci9UeXBlIC9Q
YWdlCi9Db250ZW50cyA1NiAwIFIKL1Jlc291cmNlcyA1NCAwIFIKL01lZGlh
Qm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgNDkgMCBSCj4+IGVu
ZG9iago1NCAwIG9iaiA8PAovRm9udCA8PCAvRjMyIDE5IDAgUiAvRjI3IDcg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago1OSAw
IG9iaiA8PAovTGVuZ3RoIDI1NDggICAgICAKL0ZpbHRlciAvRmxhdGVEZWNv
ZGUKPj4Kc3RyZWFtCnjahRlrj+O28fv9CiNfIgMnnSTq2X66PtImwAXBZYGg
yOWD1qbXbGXJpaTdW/TPd16k5LXswwIrcjgkh/OecbKJ4S/ZJHEaVVW2KVUV
xXG92Z3exZsnWPrH1TeRLaqqojxTMF4gu8XQrYaqiKoiWcVxl4ZlnERJViHS
Xx7effhBpZskieo83zwcYFRGSZ1sHNLD/vegjrZ/PPz07u8P/rAkLaK0LjaL
o67vE5xv3KdSWKwv7vvtqLttmCV5MG6T4Kh5fNymZTA94iQLzMDABuYA7gFv
Guc9PQ8H3oOQfY/Dl+49rKgieLR9g9DdNkwCHA2yu+HzT3oYmieAa0T4PYqi
P7ZhUdfB2DNC07bIFHhqmGRRlhVE+TA9DnSkha0GaasCvd+GKi2CXWvgWUDE
OFzzU2RTlGmU5sV9+S2Q1uSXREpV/iSkKomBmpsyvHunk+H9O0WGyzv/pls9
anx56aWIYy9FZMneDDuSy/MWGeUY98qo1rF/h+K1e3rBJkzrKC1y+AJpWU6X
/XJsBg0aocoyUID7vwrHBQnWaob704Yzq0wnWwqSKX71M9LihMSwl6PZbYlu
OuXUIKWvvNbTQbvdZHl+ore1ozm3Wk42J0cX0tLtGWy6Fd1pOne0KLTda8tv
BpvM81qw+cmfNemv5xneAno9HPupxVtUHnR4CMkAFkgGzfgeZ2XwZJjj3WLR
uCP4vfqkCbkKLN60k3N2fbc3iG+AgXwP8qQkwmEy80TEdUE7v/S3bZWiLFSe
w3lMb54BeUgTy4Ahh97ywHTDSAwk45LVhj+zXfF8tK9IXvck056/Xv5o1WYY
tRz9gjB60ZEpomPVQlEd0hE3emUAzCM5jhVR/ntCd5IW8eyBwjSvl04oLRUL
mfHocfNwHPXpLJvwAfgd6OmoQktowx+riTPmPPMCwQvtxaOFYL6m9RwhTXpl
8NQR+ClceRZxTYMdhnmcBb+yHbGFmi9xkgEJKquDs+1x1pLm53Hw6SPK+188
2Wtc6zSjPs5HDGN4Zk3D2ci8FmEDpp38eaZjUG8XFkAQkjV8T8RO8d8rloaa
UvjbB5mORz24G2HKmm5QSN2AplDFweMkuERDGQc+RHRugEQ1rRyBAFbPSjxK
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
LjI3NiA4NDEuODldCi9QYXJlbnQgNDkgMCBSCj4+IGVuZG9iago1NyAwIG9i
aiA8PAovRm9udCA8PCAvRjMyIDE5IDAgUiAvRjI3IDcgMCBSID4+Ci9Qcm9j
U2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago2MiAwIG9iaiA8PAovTGVu
Z3RoIDI1NzcgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFt
CnjajVlZj+O4EX6fX2HMkxoYa0XqzttukGOCLLax0wECZPIgS7TNXR1eHd0z
/z51UZZsdXfQQKtIFllFso6vaLUL4E/tVKD9LIt2aZj5QZDvyuZDsDvB0N/u
vkqmhFnmx1EI9ILZDe6jXPmRTnf7xYo/PX344a+h3inl53G8ezpexQbKV1G2
e6r+4w1lby+jbU8P+1BFnmkfdOo9PyjP9l3bcHOE5oDjsfdytiV2nZm9LNq2
g9FRZheDrb8zfS6gv61qw81i+N7yzB4ntLDMHoSMDzrzvj9k2vMf9lGovL93
yPSC/8wz/e+B/dPDf5/+AVvdq8iPooQ0h7l7nSeeHfiLfAYXLVFA0xDdAlkR
VSFX7I0dc0+DYWI8C4H6LpSkfU2y9qXAMxhN33L75Wx6mXaBT+p1w2APtXRV
k1u7Y6F2HDY2cJo1LnhxOCkN++gO0zC2Zhh8nPThL0/zPSsdwOxwl4SpH+cR
mYIPQ36oMvifKL3rwTJuun5dGIpbYb9YggwFjAdUC1G1450c1Fb7CaiqgsD7
18B6hwns+8jfx777Gqiodjsa7lQX21uqfmvFjudOuU0rTlRMNo/KPfElRnDX
A9nVCW2Mu1BF/H758edHpthiIu9QsGGDzpXwXqeNbklkOhAX2kBflKOs0qLt
wrUdi9IMTjzy4Um0bklL64XeF7ZNXMN27e3xRJn2Q63nTW06ufDsF0z3x3O7
Eh5PeC8u81UavyOOed4Tt14JxZHd7vZhFvs6V2LzMQ390qKRh+QRQOCJwyG+
tNw4c4vcHk/rGZum/8Sj49nKpKojpzPSnEOQxuMu6wmvgWZA/1noyoyFrfFW
mG0Y0f2m0l0sXIos15s/Jku+WW147QG1gxgXBalXXC61LYvRit1EQQZyOGzV
HUcG0w88gMGAJnGEsYZ3x4OWA63p51lkdrbGCJnOETLJAu8J6Y6nIdNiudQt
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
TxI6nCthLQ+14olnqUeO0zj1xn+tlszDV39imEvJK899kAD/8cMgdOvQi0Jw
94OG/AB6L+x/DutE1GVuZHN0cmVhbQplbmRvYmoKNjEgMCBvYmogPDwKL1R5
cGUgL1BhZ2UKL0NvbnRlbnRzIDYyIDAgUgovUmVzb3VyY2VzIDYwIDAgUgov
TWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCA0OSAwIFIK
Pj4gZW5kb2JqCjYwIDAgb2JqIDw8Ci9Gb250IDw8IC9GMzIgMTkgMCBSIC9G
MjcgNyAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0KPj4gZW5kb2Jq
CjY1IDAgb2JqIDw8Ci9MZW5ndGggMjE0NCAgICAgIAovRmlsdGVyIC9GbGF0
ZURlY29kZQo+PgpzdHJlYW0KeNqlWFmP2zYQfs+v8KMMxIpIUVf7lB5pUyBA
0Pqt7YNW5q6JSLIrydks2h/fOUiJPiSjDRZY8xjNDOf4ZkixiuBPrEQkwzxX
qyzOwygqVlXzKlo9wdZPV7/CfhLneZioGMYesdvcxFkUFsBwE6dhngqiCWEv
jEUO/1MhVx18crH0q8dByChUwH+TRSIUKkcW321fvXkns5XIQimS1fZx5agc
0Xb3exCvN0JEUfD2AQZBvxbB0OGorIY16JMGb3H28f0aN2mhxIV2x5MfiHYo
cZYF23Uhg5cjTESg+/Wf219e/bgdtXR2S4sszG8ZAjRNkmK1kWmopPoaM6SZ
COMsPTODCmOV+mZwRGSGUFhD/Hx64MP8YPrq8Fl3Lzz9ABbQeNoKBns6dmvQ
Ks3sOVNwep7edLmj2XhEpGksV0KERcIOc5xUEUqINNT0fQv6gH0P3U53PBwO
+BsFn9YyC7Q+2tWurHDhk6UHXR95+Iza7w3t7nlpj2M6OUxMz7/dqW1N+wQf
vsaFGF2Pcs6Id0gNVjmsZR58Jg3IZLDVaBZRAofW9M1rtBScfwO+UIoNX5VH
3H6oNX6TBwfSMQuI6bDGc6IKtGbax0MHS005GDxOy5/Q9+sNiMfF08DE+wPK
fmYSYsTrO+0404D4mdZKH/Z2oL+YftBt5bRyxgNpLYx3t05yaBoyDIVFRRGC
6aRRtYSNbgYOHlwo+ccZGSbKWRbMLQtFfkCSVuud3oXrjZIy2O7dMv+mzEgF
H7vDH5FQtd6Q7SAK0BeVwcWKvwDDeQf3j5DQEUpKa0ks8ae3TMjBjhFuHDvd
V8585gjuaHnj2dQ1jjLyCH2Ky2z0vuqMXd4xkWkvkydWKowgXdMoCfNM3sZL
S7PxiK6T55ITHhAw4EpgkgP4JssCLc0dgRecUGB4BQ4WfBIAH/lVUD9xmIc4
S8MIJy3CfY/J0DQQpwhl5UCBien0xEj3bIY9jzgdYLCHbJ9BuQQATMllkJto
5jEuAYyLQGXUdUtyC4wbjNfS1IhIRcLoAL9TcheUSPhT1Ua3uDzYOeVjHtA5
x2TsmfGzy0Sc0NBKnLCNOEOEax5/dOHusowi+iLLrlFhTKmZzKjoJJ9R0RGP
aGA/MzaxKKd15YDvwhkSQi/OilUSqzApspvecDQbj+jaHZecKGuuxKUqlPDZ
ojhLc0fcBafFnFFFERZx8jVJ47GYzxpHxGnjOqRfnWeeqOwP2ham/5wxCvof
oe70BR7RfM6oLAuzlPuCtzaeUEM/E2Ct01jDTX9V+HoOSKs+ULL61BZg5jzw
ZMCY+2b2OAnY6N5pRpobh4G2TxTC8cGziBshkIaySBeFWZJlYbEEsxa+MN0P
5UNt+r1nQDzwWM2rEo02lTi/kJN5HHyw3Qg+5mwFV4ZCqDvGmogWrGWJ8ARy
3lxL8kZ7LcpzBvPklTvGq24wvT23GfqpM4C+idDKxtThLLZ8iMVOw+GjIzsA
XWddMcYx3SUAU6ANTqEMS8DXiO8v75tG70w56BqbTtDqEX1X11wgOENhBCkA
DV1HNQA8+ZpprUr5ee2AuQNr7Bzh38sRgqB2Eizmd7YZ5cX+0Fheh+5WGWB+
KVcw3xqPLt4udE5pkVor1NrWDlqbmrKOCjjXBErv2SyNsyRMkzt12iOajzxH
xOg4F3mL8lzkLcuzkefL60/HI7khjae0g/EUUjBxaCyDZuz1yx0lcckU7sYA
9qTrAixRQnORrR8xPDIZnHqL8JLcBSd9804pv3plRRhHeK0n5TRGF90TB5Sw
o2gr/4iSCAbwI5jF2Sk3jsf5pQjCZc6RKg2zO3A70Sy4kWm4K5714oKw0YlL
wpwPJ2GQqRDLSthaiYPRezShi+QzT8Ar9MuY2++xfZv/FCFEiRkItx9wcDBv
cLOKi8A84gLfI608a/+LJEZPct5GxXS5xZstvnhEDD0djwe6piEh/cLKsTtQ
GGDziApudtrLZIBBW5hbPD/qFovYwiNyGZhLUxIg8eLUScKOaY61qRwd36wu
DmBR0AMNF5U3Iy2KoWu/BxkT0UKsWSLUIZkPtiV5Y7QtynPh5smjRwNwkHRh
I8HVY3uDk+fpKQSnH7Y4ebG+6XkRzSopfAgj9m7dPizgcOzcK234HQSv8RBf
FkacAtcwEkfQscIV/BJGBlCCHtIIPaI5BHGf+zf5mwhi21uZQMcrvqqN9ljM
t9GOiAuFsm30b28/fPz/b4cyEWEik+WY9Ijme2dJscJNxLt1LrFu27cPrMVn
rcob96BTm/MsdXc4D2j8DgOvb1V92tmSnkxVv3QcMYBOZe0YMduz7t29PcGw
0RR9PX79pPtb72nWvKhNr21/P+zH2BxvnW2lj8MoeKqO2Jqcxf9sRyGKGFLy
Ti/rEc3DgyNabv0X5Tl4uJR3lmcOHnx5PR68s88f18mlBCRBajPzH3wJUPze
EAc95FhpAR9WP6+TBOrGSfPuWIPafrp4cRwAsfOpx03/dbLvjbhvN6f30+4s
YvwbnAi+xZdB8BW+9yK2Ua9sNT9rK5gb4X81uC4bK0pGFQUm3ttENr49jFHb
lfQabLexq/kSCfj/d/QF/mePs6GSYsN+p5J4RAuhYomWrz2L8sZQuZB3O1Q8
eTXf+29EiczDRHhBAsYp7fu07dnxsV67x9WuG4u4dyPYMRQiaIwubmaBEJQD
6Xf6QI9owaSWaLmfX5Q3mvRC3m2TevKaku4zNywah3lSTCZVicSXd/o9tb5F
aafvDxS4leG7Otdfu9lRwNsgV4kgi+MOtEKQkZsR/HDNDLrh0Se6477QO9+U
3HwPZe383DqWhvNxxl8FdiTZsrsmmhsPZYWga4KlIai86twUEOHutbB/AQFi
kOJlbmRzdHJlYW0KZW5kb2JqCjY0IDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9D
b250ZW50cyA2NSAwIFIKL1Jlc291cmNlcyA2MyAwIFIKL01lZGlhQm94IFsw
IDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgNDkgMCBSCj4+IGVuZG9iago2
MyAwIG9iaiA8PAovRm9udCA8PCAvRjI3IDcgMCBSIC9GMzIgMTkgMCBSIC9G
NDQgNjggMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9i
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
jadsx2HJjIjTxrmQKCe+OI/dCTOz52m/lvnkc8gt5EzYlUaeHq/85RbuZUfK
ZqBTDqYh4RO8ugvkZrEDZZ4tRYoZq0oGBhl6nqOWmsQ5z7SmYtLQsCd20PuV
3SsTq+Fcc3DL5ePmLOwY7p5AM7yCtATi8GZbabSiJOdMOJ3Q8ZvBjo1tcoVi
zHyVClEyK+E32YSu4VsRCCs7zQOHF7IJf4nKXTtze4R9W9eMSILM8nVGu9pG
qPfmn8/jZzQVBrA6WkVB4kcxfWjzYcaPVA7/U4jd7rC6Jn2afYZzAjaTBPoK
F2YrUCxCxfbXu6CqkZ+AZgpuUU/QfWDMrOHSipUqRXPARRitGXHTnGZiTWAR
a6ZYUpvPuuGEvD6WfPaL4JkkavEDouPZzJjuf0AM88hXWeQ+UeGtLpjZmzKQ
FMsL76df3vM8dgAUAcO8uYAJ9jAMIIoqHpFzC0l2GlyFFJDACFOJFkMAmVAq
X0TnuymLemfey9tryxWZH0RqFcbgPLX4mXY0oLBuZrxkvwtoH+0nTKjCI950
DcFR/3fsoOPEe/sWXv9GL95D8MCDb/KuYG5OSuBNeeEVV7TIFV9xJY4rGUlA
SUcuagvCwleFusith2xRfH4lviAuLtELUuZHt/Afjh+nEOXz4z9WWPsO+E/M
46TPZ2Q16vEIQ5npiXrrddoXCgXsSzeO+r+0hhVBrJWN7ulhrxWZjjFb/eAv
Gtd/uFg1U5+MrVKIkOzCTN/uLZBtnMCbQ7DhFyQ+Wqdxg1LSNLgMub9c+XHj
/LgEKwqCOS2i78PKjIkRUc3TIgwoHRwTqghYn93ic+qHRfr9HYXnZsfLRIxC
X8WXOz4+wSnhFkmXSHQaNV39FFloobdiot/E5peGBMofi+Fy27hd1qp3+FE3
DqbbouvIOqaPd0Fhs/y8hEBXgnFGriPELL87hDHM6h2EfM0THf1YcPOFEqfk
O1wcjF+cY67V5829MCgi+gXqu1Ew8dzWlrBQfhRETg5aRYXXm7nfuW43+z/u
/bZNZW5kc3RyZWFtCmVuZG9iago3MCAwIG9iaiA8PAovVHlwZSAvUGFnZQov
Q29udGVudHMgNzEgMCBSCi9SZXNvdXJjZXMgNjkgMCBSCi9NZWRpYUJveCBb
MCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDQ5IDAgUgo+PiBlbmRvYmoK
NjkgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0Y0NCA2OCAwIFIg
L0YyNyA3IDAgUiAvRjIxIDc0IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1Rl
eHQgXQo+PiBlbmRvYmoKNzcgMCBvYmogPDwKL0xlbmd0aCAyODI1ICAgICAg
Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q1a64/buBH/fn+F
sZ9kIFZFinoFaYM0t31mL0Fug364Bq3Wom01suyT5GS36B/feVEPW+u7AkWA
XYocDofz+M0MN2oRwD+1UIH209QskjD1gyBbrPffBYstLP3x4reSLWGa+pEJ
YTwidosrkynf6GSxGnH8/f13v/lDqBdK+VkULe43CxVqX5lskQQKfqeL++In
rysPS+XVebVc6Tjxjg182eVKeWtblPUWZ2OvxYlyi4RMluOw4PG3stvxqD4w
eWVz2qu8FzCRZF7X4Iay6hkeGt5h90udeA9I5dmisI7lruxsu1p+vv8L3G+l
jG9MTOIe87X1lyujU+9+ZxuQNAwir2zxd0wChIHxtqcc75HXyL1zNxLinI/D
a586nup2slblDYpt6cIdM0NZca3d51VlW9nydRkBq+pkW/7+hjt25RpP3M0I
vgZhVmEWuMvyR2OPjW0ty2kLUJeBa7RlvRaCbkd3g9G3sqp4VNgj80AL4MQB
WaeZXAMmjs2BKNa2ZdOh3pGCT/paNmT0OQXvRRig17GXy+/CrpljgSeIUss9
qdVHLt/d3vfe6Lw7NqEfxmbWYR3NakREDqvV2GF14Icq6zmhgH8PVHJxoo59
ncXXTxSaixONmQmR8YmvfoTLvrmDHx+Wq0hF3gaGFWow736HM8Z7CR8vf8vj
n/jXqxZVtK3hpxB95t2vYAbUCBFW7pFHBT/+URBxCT+7lnagZVRg/CgNJ/YR
7jfI4IYZ/kemYOb25n+QAU/blmjJtl+FY89AYzWVIiIp3oAXxCHaImI9sIfF
2kPXTCm4yt6RgLIPF/4kp4bftu79quCZXFZyZrcfYrgkV25lgeKNhN/Jhpp/
49FHQLUaIafiOQiyOV93EBcqDTG3rXm0QQ4V2BfO/bYkYOKFB/x44nHOWIjD
w5GkOxCG4oR9PPYIUw/hBCtHgiX5EP1QqEKEndYUTXIWgyqO6Ip2TnqCGga6
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
ePMOSw+VUOlxWW+iR0ZJLJXkfD497yoAI2LXVdBLAhzWdvzXsW31xMd9vH37
/u7u9ofvb79/9tlRRdrXQcz248UvCzf660xJP9rwfEnviOgPP69f4+tCPPSH
aMFxlUrPO2fPCwnZ+xYJ3r6HEUEU34U5vMaJ15/P7wU7/UBn03ud+aWj+ZV3
AUBO5LVxUimg2qGxHnqTWIMNuCnB+UlTAmunuqBik/5INHqxgW+pCt1DF/31
OfLsIz9JHztm0O1yGY2qSNgtatuWdY115mUV/s8Zrwup3rrwuRlnC/ERLxv+
xmLC8fsKFV2VjCYGPLXuUSgfTMzVw+jvCOIQ+O7xrJNmIf0ngaut5kAzAzGZ
gnoxdHzwHio8P8z9V4TLw/4LCCvfomVuZHN0cmVhbQplbmRvYmoKNzYgMCBv
YmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDc3IDAgUgovUmVzb3VyY2Vz
IDc1IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVu
dCA3OCAwIFIKPj4gZW5kb2JqCjc1IDAgb2JqIDw8Ci9Gb250IDw8IC9GMzIg
MTkgMCBSIC9GMjEgNzQgMCBSIC9GNDQgNjggMCBSIC9GNDMgMzUgMCBSIC9G
MjcgNyAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0KPj4gZW5kb2Jq
CjgxIDAgb2JqIDw8Ci9MZW5ndGggMjYwOSAgICAgIAovRmlsdGVyIC9GbGF0
ZURlY29kZQo+PgpzdHJlYW0KeNqlWVmP48YRft9foUcKWPWyyeaVl4UD2EEO
A8HuBHmw/cAlW5qOKXJMUjvZ/PrU1TxEjhwgGGDYx8eqYnWdLX0I4U8fdBip
PDeHLM5VGBaH6vouPFxg60+bp5ZX4jxXiYlhvAD7zVOchaoAgqc4VXmqCaNg
T8U6h/+pjg49vHK39GlBQUehMkD/lIVaaZMjiT8+vfvwQ5QdtFGxSQ9P54NH
edBT/VMQq+x40joMg38+l+MRREgDN/CzxEcWXO0wHHVQXuzH4y9Pf3n3/dPE
2KsiLXIVJ/nu13nMaQEi2eLooLUqkoRk85SyHHShSbbvgH+eAn+QMBiG8gJS
WFzLWER4lrDUzsMvw9iX1cjvVV17jLJgRNlda3tePSOxDtZkPj57ku2562H9
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
pd0GTseRyoriMTvB/A67O0q7PZyvTSJdqEL/X9ffCxJvX397EF9/53L9/aM/
a2zv+FIQL7/JRnDwabnP11NdS61Amgbft1VHS7XjeAdp+6278gjOXUf68V35
AvT2XbmG1jYzZroTzIqALzTFIGGONyP4RMOcKmVJL3GWs1XC/mfL10n3rTwU
l2EeTZx2e3nBnBagnWb+jpL/7eGOIXiICs1DfgJ5zA6qAZVAE71kN3VE+MHz
1TRMLB0f3a3UvOL1MkUnHNv+KuqUMotWfZ8chVqlebyuT0v69WFcdnA5J4kE
O0QKaKsWBtepzIPnZy4C3wgKUVoonUKPEKuo2P/pRSCnBWbnZNZ0+GDM1hKM
0uB8D9kJ5nf45QUcjV4xLEUjJbL98AMc2AKfqQh629CfIWqRUGufyJVJUkFB
lZRH0unDajBlFa5rRM2/UtL95lm3sszJgI80xtvhaN2mDoM0Ha6c8kPts9V8
/xJH2XwdIOPBX7vTnTtk5zfv2LVBjo8vtBYYvtAyezFCQKQ8lBdyIAq9Cfmx
So15yNdjNozvQn6hTJGtGD/5BD8piPXlJj1tjz1LVB75Yx/oxyOKrZedwzeh
ynUsWGx35P5+9WPHfd9Ddcnyx8AlWH4YUm8F8QJcBJLLwxg+Y3acoNAqDmNP
B+XWG58zAMLdLbP/Aj1rT45lbmRzdHJlYW0KZW5kb2JqCjgwIDAgb2JqIDw8
Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA4MSAwIFIKL1Jlc291cmNlcyA3OSAw
IFIKL01lZGlhQm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgNzgg
MCBSCj4+IGVuZG9iago3OSAwIG9iaiA8PAovRm9udCA8PCAvRjI3IDcgMCBS
IC9GMzIgMTkgMCBSIC9GNDIgMjkgMCBSIC9GNDQgNjggMCBSID4+Ci9Qcm9j
U2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago4NCAwIG9iaiA8PAovTGVu
Z3RoIDI1NjYgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFt
Cnja5RnLkty28a6v2CM3paEJgs/koNqUZUfxQ7G0Ptk+cEnMDC0OOcWHVlvl
j0+/wCGHHOqe1FYtGkCzu9HoJ0bdefCn7pTnu0kS3MU6cT0vvctPr7y7A2x9
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
Y3+qDZhMKVMdV3e24Mzq3Nj6amK90h92/fjk90kyUcsraMC3jBbqVTf2tt9x
Jzi3jdYiUaeB8hdm2fnFbpD6mzwtzoLpVeenXTCTGdNtc9VsrprNVTujUiU8
wNJ1rkCf452MB6pxh9MYY9FScJ1qThgpZUBRjClECO58fgrDaVmYeicpBfrk
aP5CWO5fxkA1rRBsFP3feuUL/29f+eYO4QFJfed7iatj9gfe+3RnoR+mvsHo
uwv+imvMaaK0v715g9WBdxHXo5537Km8qcXgzMaX5SMg+qcGw+PnPXppPJ2x
xz6h6b+cyXCXj4JR6NrfQEyf420rnzuoJYsABQ+XHP62QjcAN0iVfWzkk7Vy
sJZzdsFHOmdtz/vQbIsrpa4X67kb2ma1zk7QQWa5uXTRdXEp5dHVOrtFbybY
R5cV4j1V8tHePkichycq6REeRq3D5A3Cb/64tgs4vuvDHapUu6m/3o35YeBi
hQ0YKZuOCzuuVnA3bqT8uxY+uFr68P2KMakwBSYXawIQFKJRIRdrskioI+AI
YivPcz5CRuSgFfGrC7gLTz6YHGqmkr2X4yis/mQ6bC3wFU2h4914icRiROlk
+yVygrTiBJaSjt2Yb/ahk9vHCN1XJdeO+ABV88ZHk0sLcC2XDx2AjpWltnob
grK74CyluqLDz6PhgpsG7fvJJjdB2eY2p4PcyO+gIzlC38SHBiPvssNYqXn4
BNT3thugdkX0lkkLgnA3SPnftCNuIcSLEtKBNpRWOddpBSY0L9myPKeWRqwH
EoRtNCjx2OdBSSLkeJhaGv4JgJ5f5DFn9ZeRRH7koF18LjRCgXqU6cfUf0Nu
3UW+53x3n/gO901rZgnOGPjxtlVecFYuJFWu9rSlQz8lLG4/ACTcXTL7L4gk
pvVlbmRzdHJlYW0KZW5kb2JqCjgzIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9D
b250ZW50cyA4NCAwIFIKL1Jlc291cmNlcyA4MiAwIFIKL01lZGlhQm94IFsw
IDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgNzggMCBSCj4+IGVuZG9iago4
MiAwIG9iaiA8PAovRm9udCA8PCAvRjQ0IDY4IDAgUiAvRjMyIDE5IDAgUiAv
RjI3IDcgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9i
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
ChigFTQJ+wS2c0GjNaCQ3EgcnO675xEDpW+gfB4xUPyz5L2kNBAtRIwQLd9R
FuX1EbMoz0WMJ++Xwl3fYMuPaBeH8K0W6viavAx+wMykcztc7KHt+4ccr/N8
XWC+Rw7uzQAIK4kObPevZp3cYequ5AU71um/c+94zcPtqU+CFEhnqvIukCgu
SU8pPKchhDhuUkw09B75OltdAcbk6rtDxr4XMiqHBalaDhmP6HnIOCIUZ5+G
zKI8FzLL8iRkfHl/dHxyo4jegMDVPcI8n53v8PRHUqyQkv0EJDvuX4uuE4RG
/Z6wLUfxgEN9PDClgBB/ESW46rWqSYmZdENFgqHU96WcPq9wIZoJDrj6ZNoF
x3cVodiPDwTHKtT0Ej9c1DmBW9VjBGMjfgaAsSM9+2OLjgHM3MlE0Chq9zgN
na+bGJDE+S5z/i0X+7jHufyoAPAnf2c/Q1El7Lo99WBV1HSKA8TlHecYc4+P
qV/uVVtehis2FI2mlmcp/lkkhxKGbOWxin9JyZ9sBK/CWtvvObXggNg6yPtX
FEfVjTnTFV/l8qIgY6wgGubgPZqBtu7VhPdo8HKUzPzixFAPQXCqYY34C9ou
leIvKaMMDCopPEiZkd/bgLiS74UOVHdz7NzDDfDo7nDtS/beDyVAcaQXowdp
A0xITX+wUvyxrWqfXecB0WK0zuYUIQkGmplrEqQSExnHh5B48ijM/cQ6FfZ/
YQX+NGVuZHN0cmVhbQplbmRvYmoKODggMCBvYmogPDwKL1R5cGUgL1BhZ2UK
L0NvbnRlbnRzIDg5IDAgUgovUmVzb3VyY2VzIDg3IDAgUgovTWVkaWFCb3gg
WzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCA3OCAwIFIKPj4gZW5kb2Jq
Cjg1IDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9Gb3JtCi9G
b3JtVHlwZSAxCi9QVEVYLkZpbGVOYW1lICguL3NhbXAtbm90aWZpY2F0aW9u
LnBkZikKL1BURVguUGFnZU51bWJlciAxCi9QVEVYLkluZm9EaWN0IDkwIDAg
UiAKL01hdHJpeCBbMSAwIDAgMSAwIDBdCi9CQm94IFswIDAgODM3IDEzNV0K
L1Jlc291cmNlcyA8PAovUHJvY1NldCBbIC9QREYgXQovRXh0R1N0YXRlIDw8
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
nmvkc7lM3clcs4y3seQznPi4MRdYnqITFjVeh6aNJZ/h7BZrIHXmb69HsQN/
GEBeC29PNBZ8Ms/EApB2tflomNmmBbkWqh/1+AC5VJr3+gChQbHQjeWnPOoM
9nBza7q9INcj6zXh0s0YZ5VBE5fqVUXNXnyuTyVFoue46zUb6zPT/cUIhlax
xy2GKVU9K2HvFZsnyFtr8qjWxkNnx6tpjGHvbk+7Oef5Hl7w5dO9doeGrgnr
DRkpr7eVWYSnRRS/O974Th9LkIPd5W+rbG84x642SwaCPZLsELILn520AeiA
8GLKmoIRzTDKORJ61IwPODuOhY9L8BktX4Vsk378oXV7tW1BePWYTy839dEj
3nqqNSpS4CFZY5WeDG1++KRFipwvrGqO4se//jyMN69VOYQ1c0W/G+KVmdFC
P06QzHJ6lsKLVnk6xF8raCwkDLqw870WcFJzr1sl+8haqlzu7ePlNSYW91eN
vyCkknC9xFnF6mtGJQDzjRNro8RCjjXr1tK1qtU+614QJ4wGKIdunmM8dCUO
NJiL8MJvno3xFVyb6au8NpOZT+qixQBKfY7DICwa46nrYaHR5hOT8aIclZHz
4Gpey3LIYmMfYLO5T3EJgiOxRcWRXJL0sle6bqlw337ZLOht18Qi2J435OmC
/fpj04+W8GtWg8V2fb0+0eVB+y2ov3v9xdP9O6frVxljKHru9fcr8nkK/Xao
QTj9/u3GYT/qdL5akPurM9YrRL8U+jL+X8/4PtY94/891ie8DvZ/NdZfr/Ef
v/4X57P/6WVuZHN0cmVhbQplbmRvYmoKOTAgMCBvYmoKPDwKL1Byb2R1Y2Vy
IChHUEwgR2hvc3RzY3JpcHQgU1ZOIFBSRS1SRUxFQVNFIDguNjEpCi9DcmVh
dGlvbkRhdGUgKEQ6MjAwODA0MzAwNzM0NDFaKQovTW9kRGF0ZSAoRDoyMDA4
MDQzMDA3MzQ0MVopCj4+CmVuZG9iago5MSAwIG9iago8PAovVHlwZSAvRXh0
R1N0YXRlCi9PUE0gMQo+PgplbmRvYmoKOTIgMCBvYmoKMTA0MjkKZW5kb2Jq
Cjg3IDAgb2JqIDw8Ci9Gb250IDw8IC9GMzIgMTkgMCBSIC9GNDIgMjkgMCBS
IC9GNDMgMzUgMCBSID4+Ci9YT2JqZWN0IDw8IC9JbTMgODUgMCBSID4+Ci9Q
cm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iago5NiAwIG9iaiA8PAov
TGVuZ3RoIDI4NjYgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3Ry
ZWFtCnjalRrJktvG9T5fgVvAKhFCL9hyU6wokQ9JyVZVDo4PGBJDdhkEaQDU
RH/vtzUWAuQ4NQc20K/f1m/HqCCGPxWoWEd5boPM5FEcF8Hu9BQHB9j6x+JX
yRGT51FiDawnwH5zawsVWZ0F2wnGv319ev/J6ECpqEiS4OtLoIyOlC2CLFbw
mwdf97+Ep6rrNlsVlhsVHipYGp2Gr64/8qo/Vq7lZVt1l81WZ+G56RgwC1s4
VeHx2iGC5/r7JtfhOz5QNntBcsbfJLyUXTeg5cUOD5/haNtWu37z69cf338C
KUeejdZRnGYgJnLbVc2+arcIF2z91lbZyNqUxekOW7dnPDPZQS9aGUHzXO42
wP1vIE6hRVpcEVu6MHNZ+RUKMYNhXpiUSoMsKjJScp5GsdWBjYxhFasVdmyU
GQP3NgBFm63VNvzQfW+It2OLWmnO146p7VC/dS1PpxJhvrMetM6jIs9nengm
7lHJKg3pgqsGj/T4JuEbgZ2Sfw6A233DfYCiN3Ab7uImZ9Lw3PLZ5/aMvOx3
ZSc7IzZkcYYAKQOSPOw7lNDo8LNQYBOARV32PesRbmcqAxCoyJRiD5yz0hEp
MZOxaEdU1bXeM8hE9CK8tNUF2Wor2WVe83BflTWvxNhhdUJGr3XvLrWQaysi
ILaAF8K67AZkS7YH2x786lSxt8gdkiLS8KuHK9fuHDcupJmGH5y4nKvra9ej
45V9JQ7mGt775PAmr22FbD39/esQIGxqwDyLILUmMqldjyECs50ALWPILSaU
2CzJFVEOxx6TY5i3yM0xsavckPPhNAVHsJleI6cgfFpVzMPngicPtc0gshQp
wga/B3FkE4IYFvD+9+GUvHj/+WSDj+enL0/Bl5GsgoibQ4jSYB9xvqoIrZIo
zmCRGBA7zdcV4aE8ECoCrvsqERhv38Dyr7e60Wka6VwHE+R3xfewb3BygxE5
+bBuwllIzsdWfMOYyYpIW7XG2MhQlkYmQfVFkD9WQZIoTwzpN82LVYgii2KD
kLEFEUY7s7PUKCbkgVCon1Emo1CmhiIMypQl4Q/oexDnVPj+J8oTAAN5gi5i
oX0gPkG7KqTALBicax1MsjDZjMEPmDNUOOp+g4yQ7vH9tcewXruecwW8iykU
wYVsKGhiUNszrJMzF7g/CILf3L7ac3ZRNo6yRXZhjFCUSLiDxRFfXp8hYtsY
M5RragF5odQBi27XukvPa84t3xwbzElSTcebr0cJ8mzceUHx2jUHfMjCV9x0
JAXvopWBGrZrWWRilm4nB0FE5M0Cn+5w9EkOHsfkYS1lR3h3Ib0+19UJI3fu
IzcAiMgM9uoo98HriRJ5a+IdoyUBoFCbs50Q28eSUZzBw7c6t1x/5AnfXcVr
SexQhrzjusBJwpaqjLLErie9IY6Z3giZxwTpupIKoOU3mFPwt/ofKnfX42XO
jnSS2pYqf0U8pVcyrVUoAYFtAUtAkYP210yYysOyq0YUz5KG0W4QO8m4zAZS
5VrIBvGdmOBhthOglXrZgs/BfXggKuaW9BJIFm/RE5g36CVQRMZ6Ro9szYKt
TCsfa7n87Hir5DcnLlY6LuV5C60G93pGY0aTxd0Xqrx5va9qbwDf5YycFfQH
x0pvVm58Vi5SfZMA575k2ZXkGXCfzzVHHS6/5ZKvfMzVN73BveJrXg+xn2wS
Sybi6hIc9a5NmKKIFNTpD21iAnTfJjwQSq/v2sRDet4mHtMTm5jS4/hTZJP4
U6Thy9BKsf+hK6GFIGDvT8zbPdlEnxuXHnRRwWNkV5aDzvVygYAA+qaQXLB/
1md4WgkH026SLw3ZKA9j6VJKkfv546R0RmZaIPBupS1UqYpSY6WfO16ft3c7
vySJIDQK5H3LyOLIxMkbljECPbAMAaLK+L5lPKI3WMZDet4yJvQkM6mxMZ+3
cTaWbMZeSBAdd/NwiK/HxjdW8s5nQzCEPQP4xNPxo+tl8cBlYXdou1eapvON
84+mjR1STbgOMp2YZX+U7DhaElsQNIbUIjk2yFvjyaFqLNSfNh77pvFYBX2D
fcN4RqAHxiNASM7eN55H9AbjeUjPG8+EHhuPmeQIfJhetZFEgoubEQm+Kpcw
/ZX6V1hDiE7gIq+y9dKeTzfQFLvcwTUUS1aMZJ49nLeH3TB3wMhCswkxhqFO
nVrWJJFK9QA1eBJl2EaoAhKv9tpoyW4TTjXgAc1ZyjaqJks/AYE3u/N1WXld
yla2uejBdOwtFbCutkyIy3seTwqgupVMahNpp9bK3LuDAjrxpwcFOkugYc0D
iJiA+k5TxiDbEWatXZnhIXNe0MoVWKp6SEtAHtOa4xk8FfSTxlFSIKvQQBou
qP51lksyBudKpB558MmP1jrjOpYCE/Qf7r+xMmASQyyFl1iednzghW7xtMQ0
raz/IsBjfHRTdOcX3v6GGxWFubXcB0YSpanEJBDH+XloqiON04uJWQDTdrdJ
4rDs3blZG0TCmcwjw4ntkp7G1thHyx9wbAb46vc/bWwRYhCAJ4oBS+SZiQpw
Jz6JacSMisSnFA5Sk2jENE2GrR+4qmyX/LOINRlbOW1hiCH7Nr6U4bs3UDCZ
Yjma0/lQONHQlUeS+BYvhGnj00C02vlqpOOdAQ3eLSUjrozlYHc80zAS17Ns
y+X5DY5pKYTPTpiBvouarmVreH/AeNN4pWO3Ja2TL8Rwsogk26a7O03DiZNJ
V/uZONDgV4rnYL/8Ggd7APnxCeoQcLbXJ5yUqaIITk8K8qdViTzXTz8/fZlk
KiG01QqSUTo4dxakUZFZSlMqjYyFMKLiKFXpOE6fMazjKFdZoOMsimP1eMIn
sNsJMEeUJCiACUNUIR0ocAoPg1T/3fAVWZPP1WxNRh2SoQlIHl65UcXXPFvI
0b3x0Z0udXWaFNT8uj86Ni1E4eSXei/YPAj4tKHvxdXshGVt8ihJsklJg2aB
VQ2mQ3HNCTwUCZBZ/OeQiSj8QQYJ7pCQEIfogT8HCTTK0HeLrfd0MkrRTwYO
MJzbc8yzmXzpqZ2XBDRQkAYAnnkkqLIZ12jnC0EVCGoX34PU/MPPBB4ygFZ6
KOC2eWbC/1B4bgaKIj08DGUzuX4uJayI5USSlgNCJV4/4ZYWEyvgQFTkUYpz
ddKW/7TR8JjMqw0VAi80HWwuNLeRT1QEJgkF1+WO7+h0KUmJ38cid6onEDy1
6f9jEFCDCjhZH5DC7CFVP/J2vnKyxK3X43nJ2rlF7FjB1XzCF4+j/dLrV1QR
VItceyktA8bRmujTodUJkCn7pXA2jZTO5zZwQie6YwMQhHIP7lAAnDqw0wFj
ezCLTNKApUpx4weimbDqTcTXkVb7e35mPrloa/hhX/WDt54oP6AS/TGaDb4K
sjP/8pdRpFfxvR/FdkAnGPemupn3WM0gBkZ2/Po1MR1qjs5SDvZ+GkPW09JH
Mcls3DFNvdbnE2G+P/q7x9dNRaD7of+fkMG5LwW30jVDzYnPWJ/i3FyIEWGK
MCNPFHVIFoJ1k2nCKP5JmlZSOH2x1rmWrKkk3x5ER/TNEdD/E68Jt8mucLGr
qSumIEzn/VWh69VE4iQAXDlJ4tYM5Q0CUb06/gjJTzym1ZC+CdPZ9fKeanjc
eSHNDxrENkgkWApbspzuwPqgELw1ifBaDVrgl58/drzgtI91mZRSsLzgBbZi
NeNXTICmti0Rr+Sv+cg61mvQsiG7jE44kKujy6r4JF0+0HDN7uxJtHy5cKof
lFsNc51yUHY3E5vDI9GDjlBcwY8ykL/fuuupW5/7SjmhoInLdL5et2w1FBTz
GmFZj2Afoe/M43ShAIEJBIYKkmzx/VP+HWNE5In9AeF3G8VlbmRzdHJlYW0K
ZW5kb2JqCjk1IDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyA5NiAw
IFIKL1Jlc291cmNlcyA5NCAwIFIKL01lZGlhQm94IFswIDAgNTk1LjI3NiA4
NDEuODldCi9QYXJlbnQgNzggMCBSCj4+IGVuZG9iago4NiAwIG9iaiA8PAov
VHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovRm9ybVR5cGUgMQovUFRF
WC5GaWxlTmFtZSAoLi9zYW1wLWFzeW5jaHJvbm91cy5wZGYpCi9QVEVYLlBh
Z2VOdW1iZXIgMQovUFRFWC5JbmZvRGljdCAxMDYgMCBSIAovTWF0cml4IFsx
IDAgMCAxIDAgMF0KL0JCb3ggWzAgMCA5NDAgMTU4XQovUmVzb3VyY2VzIDw8
Ci9Qcm9jU2V0IFsgL1BERiBdCi9FeHRHU3RhdGUgPDwKL1I3IDEwNyAwIFIK
Pj4+PgovTGVuZ3RoIDEwOCAwIFIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4K
c3RyZWFtCnic3L09uiS7rh3o1yi2LWN38J8cgfwnU5+sUj/JqDJabfT0G2st
gGRm7nsGcM8xahPJiCBBEv8A/5+v5zt9Pfjf//3999f/9R/j63/9v7/y/C61
f/1/v+yH7157ndV+/4//+qu3sb7z+mq9fo8xvv5uSJ3zO6f21Vsa3zl/1dy/
U51fvVZ7Rd/t3796sYefdXqUJ38/+bzB2/ENPCFIr8nG9RUvGE/5rk/fn4i2
PeCD2D18kPGCt1n8/vW/f/23X/l7atLEyb/9bP/VEuf+tO/SvlLN6btVm/SG
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
LyC4FzwlRTwyO7gosmPRFrFkkUfIEtOiEtJiYPWlRxPrMXmDHWNSsC2RZ1fr
buMJxNNcHZrq3KUisRUhcXZuk5skEvLo3JDS6B9S7iXoB3ZSNGEjogC8IbgK
qzH2shO12GLMOKyq5Qd7TNGImupbrMzLLGyEj+x3sRjDFdazXLPuODCFayok
d3HPJCQFOQ/JZEoJDjNE2bFyFUNO9cku+8JuN1FmPOEQXZL+B6OsniF5AXgE
Hlq5EtOiqIzkFLOQWWwkrVWnzVaOVL5JsR24FmMUpXOuutucJxOxTo+pqxDy
8DcshYnCLP8Il7BiD4pmPOnYUMpyZt7c3nKlueHkfRNiYtMd6PWbXncCKGgs
ciEOA5fygt5w5pMlBUCPsh8PXL9BdOOCb81sHQKHFS03BWSRjotGIg/uEQ19
uGm687m+96VfcgMjE2XBpooaWFEmlvpy9cLbtH6/T0sHEBb9l/O3eAfYPoBt
ql5vHMA2K2d+DiDT6PI5gEizbOfAWVvBAucA4mrZ5+6BoGRpytjLvBe28giq
EkeC65W2zcU0jQTXrMTzSduemghknvqAAOBSjdcjpOGks0WMZlPyDL+ddXAe
ymwqHhDnCoOf6z55mF65OywFFXc/R7PIfNWYEUP8DLlZcOqWzLi8IBu9hX6m
k2s4AmwayfUQ86WQCcPi4i6A+NamgtTBeh1TU/E+YL2FyB8KcvZt1QZvBbs2
XsNV71eHrlPv3DzBkftop+tSqYSLgnGwupwLCUmNzjqhKuz2tRwOqaq4FC+A
F0Nysj4BslmEMh8EnW30KnOMQQRiEodMYJpjXD1mkndYhcaIqOovnFpGYDKR
TMBcTjyLSgxqEFqHi0i8HBSenb6y+P0+PCzSPc7h6VNidhye7hUMzuHpI0ls
9MPTO0vS76PRu9uZ9uFBofh28bfuJX2dfaGwP5X8zb961uUlwb+QONvq5l/R
PPwrIMG/8IInH/6FDGHSss2/kGu25uFfuNv44lcmZSl16Jyi3lWoePcYrNbu
7KvLWn64F6qh93y4F5x/+GBwr2gf7hWQzaw6LVRvAEk6ouGdFyUe9sVJ9Jt9
4XZinJFgX7z69tp1vWfF+Ox92UHV89Vj6HaCYF/YELS/bfaFLfO0w76wpXhY
nH3Fpjs7820bYmZDl7xu9gXA6Id9YRgwkAb76l0Rfod9cR/Ow784tXHIBFa0
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
70Q08IpeAQ1UYa4ENLbYzse+KbRhV74jWyll6wQvyAhAA+jrysMT3DA104gD
GnA0jxcM0PjoZFZq/3vhGWZwrGCDFToSS4D8ynzhGbsrp8bhCCC8LQEMAQL8
rBrV7rE9+4leMXOh5hPeaAblWAqc4Y2IKlq5dI1ZHCvwJziWsN9ghr/fsQiv
n8c/3oKMkLyNcYX5IJ5gXirvMD9GFdTNUcNXNyD260jZi480aIodYHGvH2Rv
ZDsbge6UNMOk8etO/KcEsGDgHYvuMIyj1wF9rh4cvig7yS8MSgLU++/gCOob
VmERsg53D56h1nA4DdGbkMRFb2YSFzvUOiRij94sm5HyIDvUZq7Ck+zNsn8b
k7JDbebJA9YoZ5vMYFzNeIBxOf0NQfb0Gjgd1CrobNHPjkLn/f/5BaQleWNl
bmRzdHJlYW0KZW5kb2JqCjEwNiAwIG9iago8PAovUHJvZHVjZXIgKEdQTCBH
aG9zdHNjcmlwdCBTVk4gUFJFLVJFTEVBU0UgOC42MSkKL0NyZWF0aW9uRGF0
ZSAoRDoyMDA4MDQzMDA3MzEzMlopCi9Nb2REYXRlIChEOjIwMDgwNDMwMDcz
MTMyWikKPj4KZW5kb2JqCjEwNyAwIG9iago8PAovVHlwZSAvRXh0R1N0YXRl
Ci9PUE0gMQo+PgplbmRvYmoKMTA4IDAgb2JqCjI4NDMyCmVuZG9iago5NCAw
IG9iaiA8PAovRm9udCA8PCAvRjMyIDE5IDAgUiAvRjQzIDM1IDAgUiAvRjE2
IDk5IDAgUiAvRjQyIDI5IDAgUiAvRjcgMTAyIDAgUiAvRjM1IDE2IDAgUiAv
RjQ1IDEwNSAwIFIgPj4KL1hPYmplY3QgPDwgL0ltNCA4NiAwIFIgPj4KL1By
b2NTZXQgWyAvUERGIC9UZXh0IF0KPj4gZW5kb2JqCjExMSAwIG9iaiA8PAov
TGVuZ3RoIDIxOTQgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3Ry
ZWFtCnjanVlbj+u2EX7fX+G3ykCtI4qkLg2CAEV7irbYNMnxW5IHraRdq7El
H0nO4gT98Z0bJVmS7SBYYMXLR86QM/MNSatNAH9qo4LQTxKziXXiB0G6yU9P
weYNuv6x+CoZopPEt0ZDeQJ2nTvXuwuNnwbRGkYBxKj0eoLFRA61ixI/NTTR
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
TYSziwJLpM9LSELvCjVfLjT9VrYNI+mYDS2nRjI5zcvULiLoe+EVDNSObeNr
IVSA2oe3469uci1kJ+Z6LLmXO2ZdbrsiemyghwWlxvF8Q4DCOz1i8JWE+R5x
I9/zMGcLKI/GI4Z30og8HNETy0MP7PraaWTyvOa2E9LHtZHpTLKMV/F5pYFK
5UzAfb8MP0r8exJIAt+N+JVn4us5UcEfv/kGr4qRe9jsuuqFM1fEG4bRdCyG
bZZbKXbDhbxBS7xv3eshHr+H44FcpXB+5f28eM4zyg90dLW8+ZFHJ76y4QYO
cr7WDxJhqn0TxjdORanydaA3gsFlq8X7ogEQ9o4TOWH/B02SPmJlbmRzdHJl
YW0KZW5kb2JqCjExMCAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMg
MTExIDAgUgovUmVzb3VyY2VzIDEwOSAwIFIKL01lZGlhQm94IFswIDAgNTk1
LjI3NiA4NDEuODldCi9QYXJlbnQgNzggMCBSCj4+IGVuZG9iago5MyAwIG9i
aiA8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvRm9ybQovRm9ybVR5cGUg
MQovUFRFWC5GaWxlTmFtZSAoLi9zYW1wLXN5bmNocm9ub3VzLnBkZikKL1BU
RVguUGFnZU51bWJlciAxCi9QVEVYLkluZm9EaWN0IDExMiAwIFIgCi9NYXRy
aXggWzEgMCAwIDEgMCAwXQovQkJveCBbMCAwIDkyOCAxNTFdCi9SZXNvdXJj
ZXMgPDwKL1Byb2NTZXQgWyAvUERGIF0KL0V4dEdTdGF0ZSA8PAovUjcgMTEz
IDAgUgo+Pj4+Ci9MZW5ndGggMTE0IDAgUgovRmlsdGVyIC9GbGF0ZURlY29k
ZQo+PgpzdHJlYW0KeJzdfb2WJDFvXb5PMbGDcfGffALHlkIdR2tLDnYDy4Ff
37j3AiS7e86nXGeDHaJZVSQIgvjn//l6vtPXg3/+/++/v/7rP42vf/u/v/7l
q/XvvvLX/zDw//yV1vesOX/9v1/olr7+6b/9Givl79y+Ul35u46vv79W7um7
5Q358+ufT680vvucdy+HvPTa73qHoNf7+/+DL36+6/riP3jXT+Pao/+H7/qH
c1zfKyf7O9X5fBd8MeWnfo+0IS+9DOOj57uXQ35+1zsEvd7f/x988fNd1xf/
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
f4AEc/1zRvgJuUboT5kABqRds3DImQUSFHAt0/XUJ2Q/hbSzxQ1+TCgbEhr4
yDImfACuufszP0C2OXAwHGpsg8GAf7vUbVBgQtaTLpMDU0ogPbhRgikn/Vg1
mPQ1+iUOMo2lp6sHI+u3XWQkeUW34UTJPceyMiicrm152e1tm9kQt97wDSNt
6w4/sdpl/2ESVJrbQqSUpGPxZmZNr9e240RnvXrQqL+tVEw+g4l7m7EG/RV1
G7qIbHi53Q72vsyeaMV4m7Bqbojb25hKRQud7HEDct0zLovdSJ6e4za9ASmO
sTAieGbFvXithxSQq8dUscf9hqUyttc3lir+71E4Ye1RevtaIYe47XO/wW2j
+xvbdBqjCONqjDI2ZczjSEkx06vHc0cRbFxd33Bs7lE4tvcoX9dD+VNdVuLw
RY7su/xsRcy1bR8Z8w2gIcuFZs0VvEQ+tlEgBPfthbM2M/LCS7fb2423Ie7n
0xvmdgPyG+3yE3IM9K9JQOcYR96expjE8U7GPI93kokydCTLozlw6caTt8Nz
4NIN+N23S5RvXX07Te2ruIMlfKrRPNNygJyy8XT4bOP9x6sbIwi/b4ww/MJv
a4XlM95HrQFGZ5h3/KrIJghCw14iatW9f+Ea9cUqWQkvMwzyiqGB7uxj4hQu
4oCow5DaDF//onUXSY+8XEihXIkhqvZKkCuVjMpbA/LKnC6svIpp/edf//3X
/wdSPdVaZW5kc3RyZWFtCmVuZG9iagoxMTIgMCBvYmoKPDwKL1Byb2R1Y2Vy
IChHUEwgR2hvc3RzY3JpcHQgU1ZOIFBSRS1SRUxFQVNFIDguNjEpCi9DcmVh
dGlvbkRhdGUgKEQ6MjAwODA0MzAwNzQxMjJaKQovTW9kRGF0ZSAoRDoyMDA4
MDQzMDA3NDEyMlopCj4+CmVuZG9iagoxMTMgMCBvYmoKPDwKL1R5cGUgL0V4
dEdTdGF0ZQovT1BNIDEKPj4KZW5kb2JqCjExNCAwIG9iagoxOTY1OQplbmRv
YmoKMTA5IDAgb2JqIDw8Ci9Gb250IDw8IC9GMzIgMTkgMCBSIC9GMjcgNyAw
IFIgL0Y0NCA2OCAwIFIgL0YyMSA3NCAwIFIgPj4KL1hPYmplY3QgPDwgL0lt
NSA5MyAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0KPj4gZW5kb2Jq
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
xVPmXIl8N+6+lnvf5MpMXO4DV8LDLYZlL6NjZGBQ7H038AKjRy/RfmxMghCO
Phr7D1zzRXllbmRzdHJlYW0KZW5kb2JqCjExNiAwIG9iaiA8PAovVHlwZSAv
UGFnZQovQ29udGVudHMgMTE3IDAgUgovUmVzb3VyY2VzIDExNSAwIFIKL01l
ZGlhQm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgMTE4IDAgUgo+
PiBlbmRvYmoKMTE1IDAgb2JqIDw8Ci9Gb250IDw8IC9GMjEgNzQgMCBSIC9G
NDQgNjggMCBSIC9GMzIgMTkgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4
dCBdCj4+IGVuZG9iagoxMjEgMCBvYmogPDwKL0xlbmd0aCAyNTc5ICAgICAg
Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42sVZS4/juBG+768w
cpKBMUcUqRdymiyymw0wm8FOB3vI5qCWabeytuRI8s72v0+9qJdldwY5BA20
KbJYRRa/erCoNyH86Y0OI5VldpOaTIVhvinP34SbIwx9f/OrZYrJMhVbA+0J
sR/c2VwrG6Wb3YTjn56+ef+diTZaqzyON0+HjTaR0jbfpKGG32zztP9HUNTb
nc3ywLVts9VB+0sYa7Xd5ZENfpCh/sVBIw+DsgCKbrvTgeOR5sC/3bXE3tJ1
3bvtP5/++v47a6dyYe2hxsWixNYhlwv8a+pui7xoxmylcazCJJYJVcfieyD2
S2ldf23hu+bP37ZxHBSnq6yr6JDnZhdZo8I02ey0VdYmxG3fbHdRGpTXs6u3
0OjdHialcXDALZAO8DsZxUH74xOSvl5oqvTR5hd0Z0fq6VBRRwd6zDLDekRC
TzXXI4j2rA5FdaJtORxcU2U428t/pUqjtM4mqjSwhYJVh004eJzf4hds6nm7
i23wL0cH2nOnLBep966jEZxTAW2UBag/pKpqlP7Nn59GzMYp4S1JIxXFySpy
Pc1uQnSL3CUn3ItR2Y1AGNZh+lig0LwhcMEJBSoBFRhIklhEl7IhW9GH0wmU
kGV4xp3jZiNoaQtESIUnRP1fqv5lIOaG+710lx5IZCbQH1YOP4qMSrNczpJQ
BHJ18KHew/+f8btCWWDDIdrxChoyqxJthEP30lxPe5ZZotDzjrdooljliZ5h
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
RmrnkdTOv3c1BgDIok5cBaeXRxNyFpbCnd6QV6NyAnSXfD/CXOtOVqNjLDfp
x1nNhOh+gVybTCVS7v/L9RkLjBTJ9tzALBMXxq6BRlN8RPGng59XNFMk5tc+
6rmK9ePXaEKWQqhE0LaXPVL32XE0LOqqO8sq6I0wHpzCbWztqRJfS1GaPA/a
ZAYqJZG9PHw24opggAoWmSx62iEvU4PbgRb5Nvh9LrZ8y8y4UNvNh8fKSrpa
OsL+vcObZM0lvLUThTiIr9kPD3SkWSlY5FqZ0Hg+qJ0ovHEA8mZ+K+w/FPSG
2WVuZHN0cmVhbQplbmRvYmoKMTIwIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9D
b250ZW50cyAxMjEgMCBSCi9SZXNvdXJjZXMgMTE5IDAgUgovTWVkaWFCb3gg
WzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCAxMTggMCBSCj4+IGVuZG9i
agoxMTkgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0Y0NCA2OCAw
IFIgL0YyNyA3IDAgUiAvRjIxIDc0IDAgUiA+PgovUHJvY1NldCBbIC9QREYg
L1RleHQgXQo+PiBlbmRvYmoKMTI0IDAgb2JqIDw8Ci9MZW5ndGggMjg0OSAg
ICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNq1WVlz3MYR
fuev2OQl2CphjDlwOa5UKYod22VVGJEPqpL0AO6CXMRYgAKwZPjv0xeuXewy
LielEjFHT3fPTPfX3bN6FcA/vdKBUUniVrFNVBCkq83+Klg9wNTfT75altgk
UaGz0J4Q95O+S7VyJl75E45/vb365gdrVlqrNAxXt/ej2EAr7ZLV7faTV1Rr
3+rUu8k3XVFX7frL7c9X398OrHXEy/s1S9J7Gn9CtCD9iBNKt0qvtRecCE2M
iqPoslCheUVoEqkw0TOhWbU9FmiCVJlXdtnTXBZ4zGncpT4RagMVvLLLnuYV
oUecUOgbuFejvfsaRDd8x0XVdlm1ybl3aLFhAg8p7rnZvlRrk3hdBsawycry
BUkTNBITe0/r0HkZEJfFllk8Zg3293mXN7g7uBUTK7gZaDjlXESadLj4Bege
1z4wz1tFtDpWYZjOKL9vGlK3XfsuCr3HBjo1LIq97QHV1t4WZ5x3xyypvSmL
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
VMdLPzLMH9OB1p8QL5xFCoVGAhyTEM6EQ4LkvrT9mco2sW6+wbzMB9s80TUB
14XiKNGUPIH4r1efvgSrLej6Mzg9Vp/PV+jnOk1X+ysDaUyQSre8urn653Qz
zMyfcKPNzF+9+s3EWgWO0bUjnKO4z+9TRk9WQOKLrwD9Q5wL1hog4A8LT18W
CqK4p/wO37sovBYEeH+RPCyIlLbRLL6WKLvt/oeyCRMotL8syo3EoCnT/D9s
+bDp+i0fGZOv01gh/IH32dQMwLb0yqtM/zr53RO/gAPnfIkrlMQ6dv3rLlev
5bbJKROkwm3hoTJSJo3OndiSgH6f8kvSsb7Qin/DSYRGQU4nC8hJ0Lm55KXk
ktMh/H2B6sjySeI8oQJuCzLRHoCyopK3atDUBMk80Z8dCOIIVbKMNyPkLz1Y
O2WGt9lFiz4+pxQW9If6ZoFjTK75Xx96OjyB183SGzYE8+C3HPpMv7N5B9iS
svHvetGcsDifefREnHoYST24UIiiV9MMDRgWwvdimjEhOh/mNBijCaJpmsG1
4CQU0T2Nr+RAUPGvgC33OB/o305gQGJELKUFVe3QkdRE0y94o8nL5J0EV3l5
okE4EJGBVeSYb5w/GBurOHrlXAaaC8fCNJd+sgaUitLwokQhuSzRpAoIpxIX
fq8G11EOQtwlaUJyWdqcz4Ufq9FCjbksUUguS5zz4bgSanytcN4IbFwm0WCV
Z00p7V02vvDwCL2iWK+upE/vm/Alu5CxPbsPd/gHICJFUK1bIaInUxzdybMm
uIu18Qw/bzr+2Str5Fel8feFIZ8bnvAk6yEnBqSmN6tQnArTPawpbQ5IPL6K
yg/ERz883deU5CWQ5CGnb88Ze2opn71o7CPNwnsyJMQ2sD0fer/W5zLrU2H/
AQ7sIoFlbmRzdHJlYW0KZW5kb2JqCjEyMyAwIG9iaiA8PAovVHlwZSAvUGFn
ZQovQ29udGVudHMgMTI0IDAgUgovUmVzb3VyY2VzIDEyMiAwIFIKL01lZGlh
Qm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgMTE4IDAgUgo+PiBl
bmRvYmoKMTIyIDAgb2JqIDw8Ci9Gb250IDw8IC9GMzIgMTkgMCBSIC9GNDQg
NjggMCBSIC9GMjcgNyAwIFIgL0YyMSA3NCAwIFIgPj4KL1Byb2NTZXQgWyAv
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
+Ozd0PJBhRdiigv3cUbEQzwuMClO9xT9zmFCQ2YWjq77pLYhq3ZxrXbOtP2R
4SyAHGhnw1LtESD2DWst3cZtwiTE+iTS0frkBXLHz86JGigVAzUlfQUpn9UM
C1wAGXp6ZfACCfGe0qO8sBpS56daNia6dKYZKcoBdedvGPUrq+tMk9MNb23f
qGwTBzaHdgVMaDggtQge8wHq0/XU+cUoNM2Q4/z1PXz326/w93bpKIzQxtVn
eQNPZWuzP94+3vIoNc1XJ2V7Xh/5yvSeYM8kVH/D5+91+RUTMk5TxqV8FmJ3
di2A7VMhfsyALupo6u1pfGH3fgy7d1v64XeY+PNb+Pv0Ea/6f3sHf798wI4f
LsFvoqlOeRV9TzQLYUoihfa1m4fub2dRUQBEODpn9j/VMjBbZW5kc3RyZWFt
CmVuZG9iagoxMjYgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDEy
NyAwIFIKL1Jlc291cmNlcyAxMjUgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4y
NzYgODQxLjg5XQovUGFyZW50IDExOCAwIFIKPj4gZW5kb2JqCjEyNSAwIG9i
aiA8PAovRm9udCA8PCAvRjMyIDE5IDAgUiAvRjQ0IDY4IDAgUiAvRjQzIDM1
IDAgUiAvRjIxIDc0IDAgUiAvRjI3IDcgMCBSID4+Ci9Qcm9jU2V0IFsgL1BE
RiAvVGV4dCBdCj4+IGVuZG9iagoxMzAgMCBvYmogPDwKL0xlbmd0aCAyNTE4
ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q1Z62/b
SA7/nr9CyH6RgdVE89IjaBu0d+liu31dm8Mdri0Osq3YQmXJ1SNpDvfHLzmc
kWVbcXDAIYCs4VAkh+SQv5lwL4Q/7vFQsCRRXiwTFoapt9ichd4Kpn47+uX2
E5kkTCsJ7yNmNxmolDMlYi8YSXx1c3bxWgqPc5Zq7d3c7tSGnHGVeDfLL35e
zUTs3xVNPeN+taFhNwukiPy7mVZ+BvSmyOZlTsS6ot93xaKp2/rW8v6jqJb1
TCT+/Szgfjv7dvPm4jWPvJilMeoWImJKJp5iUpJmQTx7FioWwzjYMTFk8gLB
JYs4LJQrplRkpm7WxqLYv60bsHGTWUvqW/rt3PzXkCtnfdESbQVfFHe41tyu
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
Y2VcwuEMrBKPR5ERNFyO74OKEBpqDEwg8OQlsuMMBlY6UGsvZWkkCQdE4E1t
haG+93WHAA57fk2/b0xhvptprEuGsswJKJi2VbuK1l7OglQpaFLUmhpzAH7Y
F3a/xtt5nQiYAKa6J/KmWK1tP8Nh/nPr0gxSoYO8jZTe5ZGMdiuQHE+oLo1w
a7F1vXGMo6XCwZszhd6wqYRZ90Apkm9mAZwObPa6itLZhoQziCBiEeJ/N4DF
/oOjRZqABmTqq/OI/ZeHGrs5FuBmZ2RVd8fmCci/xLXEVeEcjLoHT+GgW9N2
R8UUk7LfUQCvHXmIc4itllb03z9ff/r46cPr399eHxuhoctIx8lI4WdXXiyg
g5rIRMitH6lyUOw63L6XFxdz7JOrlhnf9rTt7BVTvbmYI2W1zLoM+TKq9xd3
hVNzP3V7lCSwKyQgySR9eh8KgiFTu9DJCkbCjjaFiFOWADxxPLhCspqZUF+h
mbTIQ1uh+ABCV/8XW52sk7ZKKQEYyD1bC7TyuYqTOJX88YonNZOhnK54AewV
dMHJE1Iqzb8aJy/qBFR3lG55TCWTh6a4f1buBDllfwKdI+RVZW5kc3RyZWFt
CmVuZG9iagoxMjkgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDEz
MCAwIFIKL1Jlc291cmNlcyAxMjggMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4y
NzYgODQxLjg5XQovUGFyZW50IDExOCAwIFIKPj4gZW5kb2JqCjEyOCAwIG9i
aiA8PAovRm9udCA8PCAvRjMyIDE5IDAgUiAvRjE2IDk5IDAgUiAvRjQ0IDY4
IDAgUiAvRjIxIDc0IDAgUiAvRjcgMTAyIDAgUiAvRjM1IDE2IDAgUiAvRjM2
IDEzIDAgUiAvRjQ1IDEwNSAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0
IF0KPj4gZW5kb2JqCjEzMyAwIG9iaiA8PAovTGVuZ3RoIDI1ODAgICAgICAK
L0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjavVpZj9s4En7vX2Fg
X2wgZsRDV4B56E0ymxmkJ7NJD3YWs/PgluW20Jbk6Eind//81kHqsGUZ+7Jo
QOZR5FesKlYVyZYLD/7kQnpKRJFZhDoSnhcvkvzGWzxC19/OfqUdoqNI+EZD
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
KaPEtrsKKbbZlq77rGNn28nGVkX32u5+BjcqOz/s3o5OIc8ZPWZQOCCjTtqL
e1lpXyj/yoF4QDQjU0s0L9M5uE6mJ3DTMh3AfU5zSn+/2Vs1HXnjDU35k9vT
HuVSfNXm2czYIxf4HsX+9hNe3mOpu2SDbrpFCvlOs6rtWJp8n1oM6re3glSC
qc/3ugtSw3ebC68gAT4SNE3avQ/1t2c1+foDWFEQLyfTQqdfLxD6ysG9p5nR
LtPMK3cGq9PtGGtatT3WF2fjfJFm38H6QJXh1RmdJnQIRwIyHhHbweRlTAC7
DR+cnI+ma9KsLGru+/Lh028f32HZA/fuHpFMoAYXcFnFtPbeGtWP1RRUpcvK
1uxFMRbZmafVrqxy27lPL95Hu33cr87I0Gr4K6YyfdKHHdPJHnUNLpTtLOhn
8BfwX2yJ0k1yI27C2k0MP8ESHx4PDTfZW30jI354yIdAmGlUZTX5FAEOzb54
ikuxTBotAj3pXr2FEn5MdxJfb/7401tsgeTnG4hc4ESfoewJGceL/EbiQVD6
tn64+XLz94mAKA3EKdW/KIdw2opD445+2kSwXSKg9fuHzXEs9EQkQyAClxPO
Phw60nVPy3buL+AEGGgOwbBw381G6dsOz7oG5NZ2j8YpN7HisJTzUzIo1zZ0
ryh4YB68EHNfT9fsV9KR8Xt0bmttB1YxKR3WFeQqnDJm9l3coUWOK+bl0L+T
o+23NeSbKgbSloMUQtBlg+MjYzxsT9zDuF0s3wh4cArGG3XrEtAB3OI5GJ/Y
tQbTPHZ34bw/YEvH/DSvDV/sAdkGYykaIHJVbA7cygMSkjA4f5YPzZrVT5et
VMYiVBesFBIfoT05n47Fmv6vYdLjqVjCBHphaXDBypyy4v4zop/Igf0XAjGq
tWVuZHN0cmVhbQplbmRvYmoKMTMyIDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9D
b250ZW50cyAxMzMgMCBSCi9SZXNvdXJjZXMgMTMxIDAgUgovTWVkaWFCb3gg
WzAgMCA1OTUuMjc2IDg0MS44OV0KL1BhcmVudCAxMTggMCBSCj4+IGVuZG9i
agoxMzEgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0YxNiA5OSAw
IFIgL0Y0NCA2OCAwIFIgL0YyMSA3NCAwIFIgL0Y0MiAyOSAwIFIgL0Y3IDEw
MiAwIFIgL0YzNSAxNiAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0K
Pj4gZW5kb2JqCjEzNiAwIG9iaiA8PAovTGVuZ3RoIDIxMjEgICAgICAKL0Zp
bHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjanVjbbuPIEX2frxC0D6EA
i8ObLApBAkwGM9kE68Vgxg8BsnmgyZZEmBctm7ItIB+fOlXVFCVxdxaBAbG7
uljXU9VFh7OA/sJZGER+miazdZz6QbCZ5fW7YLajo7/fPEN9JU5Tf5XEtB4x
u8Nlsgn9JFrPliOJf3t89/5zHM3C0N+sVrPH7SyMAj8hGesg9MMknT0W//Z+
bvtF6JnFMkpXXr/PeqwSr86I2pSHY5X1ZYu1cGC5lWUmnL8EYVLp+6WVZwO2
3rHRsq3L/I72m9izrbx31tWBJV8s1YzEy9umKFWtSsw6s/jP4z9ny3Dtr1Yb
eibkyj27cCCWtddaWz5Vxl8skzD1Pi/SyGs7nMRe2die/cmhYJ2w6evIy6vS
QG2ziFI2l3jdO3vQjk+yYa43kpDVZVM2O6EicHuVWMGre/KCLHkeQkJMFEgi
nWTTIdRZoVapxmzbm46dCy7cwjlc2WdWFmyMZ9RkJuWd4fiaAvuN93TsL3i3
LcWNCWdpxG+VWwU2stU40jmnXWSm3mvZ72XV71VYnTVFBvfb7jRheUap2DU1
ySV5vegLPcp/sr5n+RTjJMERxfh1wUqJcI+grynoVnZD6LDhAIt1z0LZtp0s
sguOyxTgwJY1y60EBBw/yDna6rRIB8McaGEZXm9oW0x41zYGb5DpLA5RClzA
WcReKIXJy8LIuuewQ3iwRhhPQrb79kj0qnBcpkPKpCCZoc86fet4UK2tOoHz
Q2fssc6eqss0rMRQhPcFrpvutaOCAnDjNJQ8YtFC458sNtEUhKmY7oPQ+xF1
ABbnMNYoHk0wyyrrQ2VczhkcZduoaPhZFcKnoJuCzQAHVPsyjjeu3cRJ4Nkj
W7aXgzNWGVtU+mVFHhp7B+5ICgGMNUs9ycalGGtnB28ogrrqWzxTb3fMkIds
wLDRBjVmyoYIt2WhR9wU6incAK4xp7/UJTU6a349Gm5M5AXFe32fev9AQcIG
p7Yx3CMrIbMKtFps3FNqk2TalhFDq3Yrz660z6M3Mz3+9uHhi5A1rVMtCAmM
E+9bz7EoOCaF0L50rauyOI5dzhLCpDP7AMGdUX4JGrXNjGvYBT/x/iuPTG4Z
LI2gdoj9MaPkDnlMvNd9eQYDbcuqkpWDMCnPj1NN1R7J5vt83PcrNGcCadls
O04GaxVqOFxTofRr8Fl5Nq0StIORqyh9UND+SgQnF6ekSnCSFXSzSW1oRkHN
XUtCDb3BVfS9W+s5hCt0PGJ4gfWEOwLNipwGaOLVWoubFmezbC+UPHP1oiyZ
iBMkgGAFh5bMk6OhB2OzzcpK+Eo9toPhY6X6DjmGarxPgBzh50zddqr9uZAg
R7MOZ8mxc6HSg/pdzyCk68mHpHefHocxyM03q4CGhDTiScmnIz8OU/q9D6NZ
R4PTFenraI5yEpYjETxH0WxF9sbIw/ZGD1wgZygWYRB4n8i6twyZtDcG6ty3
ChJ/vYkmRznHsxwxTYxyypWkKz8JJYo/Gi7BdcgQxdOVFC3NW6b4UhalH6w5
Fu0yl8uz0FO0jngdePsWOXm9kYbl4VCV+Xk6BLkud3udpbB1N7KMKCMhU72m
M7vSYhLibi9DB1aZPHQe4/aenC+ihNBqZDWw1sbabGdkg5IuO7n65AZQstUr
pLHK2etR6+Y6nlOYGQ1tt5xqkLCYGxz8PN+IWmY3CN2s/SAOZ0kc+SFlbWLu
H3CgrMsRL8MgSS4m+pBAOciDST9QOwgT76tBxy5kU2KWkcGCB/u+RHk1crgF
ua1lUyGb+fMWLaqSPr4KV64czxxZ7w61urGQOEG25eNOyK+lTkXY7DHwPPlT
rRnvdOBFss68S/x2lZD+oprUu9D73HH7+QkG5s9wExIq80uwCmgxtzy1A67+
HjfJE/34byBUB8jNfVBheTWnd0Ja/PkPGWelnpbwFtbk7H1/ZSaYis94t4XO
n67DO5gp0mDcWNqcfmHVYFKU+ukmHCf6EzzsM/hVceg10P96gD6Y9/XLRyHl
nHVgweSMAi1dSRLDfhx4Sb1aeIQa6mjiu2v52OwMD6QwmG5l0U3rB9VNPx9F
EhwuYWfHHfzE4b4NtSQHHIf8m8Ao9F4cmDSJ4yjrCwhe/vHKRVg/5F2RdJ1m
jml0UzzUjqRvcR+AA68LngJGYWI0/SG48FRUvmRO5BJYxXfAyBGVhw/NWgOA
6GUIXHUJaEaKOObzkHVl8PxOMzXAf2ldUDrTfx9W3+TzTnNcMxoZzOxBNvSV
m6Rs23PAjlIcTH9SX/UT6dweMvhyYOzKTeE+/KdDyw3soGaxJ9wHMmeTxnKi
sHjiqhGeuZgHgP5V2OcFbK3h5wlFd8eaN6mfoAeP1I8bSiElgWqF9QcZ7GD8
XKQunfRHx9mL5g98f3LJ5mz8+c27CZ/n0HSE0vrkczXwWKddXP0ZqYPnfgj3
4ssOspzwyHVkmlpqIE0LicfTSt4OIMWq18C/AJUR1T9I30MeFBtk0N0F6tnF
EervfgtV34el0ZufkeNQYNk8lIAZ3Q+/HjnqHFtEaSexv77bsGwz+a7Bu71e
dFJ2wnMD2puCM07Aitssw9k0PAlMZVTdcR+krrtkDRfAYG0ilJNwdA5FB846
XxTfK5FKXEMbzvgjsrY3dTI/X5uNQ7e5xtR7WMYIeM/DBCz3n1jszS31+7YA
MHY3aUXdn8D+GzWqNkIxTyFc+Fowm8iP1pf/F5wf2Dr2yE5UyTnxX/hDVaJz
XTC3cv//gkF0Wx6+tvDzA7MPtcJXxotrB8bdEPwPqkugPsCd3fgem/rK2MT8
P+Hf/cg489x+Y0QbGi6D2MmB69HqWpn7z/Otsv8BA9qiZGVuZHN0cmVhbQpl
bmRvYmoKMTM1IDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxMzYg
MCBSCi9SZXNvdXJjZXMgMTM0IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2
IDg0MS44OV0KL1BhcmVudCAxMzcgMCBSCj4+IGVuZG9iagoxMzQgMCBvYmog
PDwKL0ZvbnQgPDwgL0YzMiAxOSAwIFIgL0YyNyA3IDAgUiAvRjQ0IDY4IDAg
UiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTQwIDAg
b2JqIDw8Ci9MZW5ndGggMTEyNSAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29k
ZQo+PgpzdHJlYW0KeNrlV21v2zYQ/p5fIXRfZGCSRUqypCxzsQVri64vQecC
A7ZhUCTaEmJbhiQn6b/fPXeUYyc2lgEd9mEIcD6Szx2Px3sulHIC+lOOCrSf
ppGThKkfBJlTrM4CZ0FLr5/8KmsSpqkfRyHpe+Bh0Ysy5Uc6cbw9jz/Ozsav
oshRys/i2JnNHaWVH0bOJJ34SaCdWfmb+83Ii1Xkfl6PlNuaBcm6I9GbdvTH
7C0591TkR9GEwdWWlq59EverJQw2JIrLnOQS49+DOHhBv12+IrkBsNpek/Rh
uG4NyUUNQA+1BfZbCWDTYv425709kjdAfCGP6jtEMn4V6r2TeIGfZnRcHflB
IsHNKjPywjClKFTUdr0M5uZOlF/fjzzlviOnHpRPpFxBuZTlshl5euIWmNqu
zHqkE7dHpLLcYX6YpZnEbaDfjnTqGqy1MtsPQdzVrdXmTSsK3FW1dchG90gf
/FT5emE44Z5K/DjODtJ+B0izXZYUYpK4S4RKEzcy7JqV6at6vbCr9Q3gBiO7
p9XnzZJMKeA77A0DupiRF6lMcgcMlUDd9S1fQ93g0mS+yOmCxUuL6ZV1P9gV
y3rIztOy6SngkJIrySGlAnJ7fQ7s2U+zXRlniR+Eyomz2NdKH2PFruAt1NvD
nqz3AYNYrj5S9L/MpOjGuABbyYVMvaHBbIbiGCvkJzhyns9gCBGESukHJNGA
PP25OHibD3U8ViBADBH8CWfHfF1yknv2Aulh7y8bFL91yFS578fMOjDtOV7e
sYrg+urBlUqzwVinRCBJycXLB9cEi6mq7fE6KYHvSbyQbICxL6cHEcTiBPaG
y60pSdqmIFCl/TCIDiJ+jP8A/ApHnXasorX4Dw3nUW9S7sWYDcQDifIDiVw8
HMnQBfzlLWO6HeZYYHvAKfZBNnLUyNbwmEPgbsX5nSYhyQjpiaI5AkH4+XWK
iQC3jrEyBUl9gbLoELN1MB1Ocmu3gEdGbWDGRFxNbWc4EixMLRIJ7f4Gyunp
JV+XfK7lkIvHDValfhRPDjrsXVVLtwKLqdMYbFx2MtqR3HYczLWm20ivWnfm
FNvxj03Rps9h+x72JNsHDCJ+AzbNrnZkVMIDHQSioBn8fJJPoLUpcCDhgWVR
gZw13AP+c0JH6QGh1dcg9HGCfkLU3Ybt+ezPYtDXpVoOgw1eB3V5jutEAcaa
WQfhaaaTmI2G/3HCJ27Jyy1HLgTb3/zfIBieGCAAFQsqqTP/gGr2MaPlQfLw
z5XmaJN6Ue2G2jJujUHollyWZFMsOWrrpu47UVa8CJO8zPmHSomOMLxcNEgL
iCWuXLfHTnmzRmLo7UtG26cBtCq3U+vmSEFtOzPn19VSGkXR7B5ZHNMaT5Ne
1nhH21CKXJ4haCjXHJTtLjUud920phQgv7Pot6y7Im9LU/onOo5KlR9k6bM6
zh72ZMcZMP/790WcTR6nfPjSyUL+Pjn27TJAvAcMp/qAJJo+cMIgHPwgKP1k
s+Er6OlmfwG0FC/3ZW5kc3RyZWFtCmVuZG9iagoxMzkgMCBvYmogPDwKL1R5
cGUgL1BhZ2UKL0NvbnRlbnRzIDE0MCAwIFIKL1Jlc291cmNlcyAxMzggMCBS
Ci9NZWRpYUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDEzNyAw
IFIKPj4gZW5kb2JqCjEzOCAwIG9iaiA8PAovRm9udCA8PCAvRjQ0IDY4IDAg
UiAvRjMyIDE5IDAgUiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBl
bmRvYmoKMTQzIDAgb2JqIDw8Ci9MZW5ndGggMTY5NCAgICAgIAovRmlsdGVy
IC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNq1WFlv20YQfs+vEPJEASHNPXil
boIkaIoUSFA0Ql+aPlDk2iLKQ+GSTvzvO8dSoiTaRgMUATbD2dmZ2W+ulcUq
hH9iJUIZpKleJSoNwjBbFc2zcHULW79e/C/cEZWmQaQV0DPhadPXmQi0TFb+
TOPbzbOr91qvhAiyKFptblZCikCB1VAEQqerTfmXd/16LbzvDSz12o9E5N0B
aXpYbNXB2v4My3MBSxA+h/X1q/Xfm9/AqC90oHXMSvC8GWDZdSWs73LUV7Oo
kIEK9aPyn1C+MbC8skTu0d5uhHUboCsk+xEFhhwP5PidX19Nx4YdLF35Cbmk
e9FL1Jr3JGPR1oPuzQRfwXqNmOQ1LKOhbzw99BXCc4uKcjyw92GpypewCrxE
JG9gLXHxJZ664mMoxceuYbm6I6xGcpoYJ8bnt4j+i3OosBgevSUBhcuW4j0T
VKeC7RFWO5H74MilOLTHGC5h/xSEJTrcoLp7QsGi726fDqCNO6fhYMRfcveQ
Fc0W1/7hjH308tFjl8ckNPhdkI979JbrZQ7GDyGxQafh+lCN2kM9+z1KVwXl
Pcp17SPpRNrHYw38nxBd5gfiMiLZ3GPh3pF2O3OawHm4RJ8CJ0StAitN/XCa
RI9h4C9VyhVHBIRGjMKwaIkYewxYTxd8Qt9M0j4h6locplf5jgCqJ/1X75Wc
NXg/DNIMpoAEDSE3+Hcgbde+krF3s/bBJMaiYcawM0gk3m4tU2/c8sfQuV3s
z06gqCvTrnGT9/LeOKLuODj0ZdFChXeqauhRxKur1hA/QIef/bI5TC0hQ7io
WimdwDTkKRjAVqBECmss5KqHOXfG+mM29iYN/kwFjT0YhSIJpHBj79QOwhKB
RyIMvY+bdQY9Zw++hlDRL9d+rDSMGkvFfgu31Dr0Ppsmb4eqgHtolXl5WzL/
zzWc6uhskW9Hn0sEgqAxCBAWwUGo87UC6O8vEHDvACVlEEu9ONonGX8mRHc8
ifwkJbMsiFNOnjfgrkwySN18MCXThtIOotm/AEYKd0F+CjlmKUi4jbdG2aJz
IQd21Tplect5B3gerctQB1EMESK7zQB4RgDnQoYqFUgpnaCF0sbUQQeGHQx1
okqDjnwJhabEQaOUqHQVDATD7EuVBEl2UtQQIgxGDNfJW1KNH90N/8/pTrto
wdoce4oBIJQQ3k3X8675zm+QmqQTRAjZWDh07iuXvM9dGrcOR/Fg24Gd6Rt6
d1Ugd6gATPaiW2h8dYdCECOVKTKYSXjqYO+tDdcO5eWHgbfy2nZM7XLLhzou
196pGLhxbsfB2Ekr+OYsdG5g0Zyqmbd3jwozmN4dGZwRuF+z4DTjGSlIFAfY
4Bjn2aQi6QKM1DfMKif5raprplDHOGC34O8tRtwz0F+gN31zIERCeZsdgz+z
xYEkLptwAAG1h9oDPfcL/iPOSnmU5DC0wAzaTD0CUbFHmDoAPHXNmqCEr6pl
AVIgT9OJsw427b0dTIPJpSLwh1+74+3OGUXlA9PmjgCB9kCfF+ABr3KWc35o
Xt5l36PCfV/lFAMhudsjE28jjlbwicUcOnLILw1N7C3SR8hR6BAscQgWUGVl
i9FOgAvpcgF2BkJ7z8GzzJuAFOqs9Nw+a8IWhaqqduF+n998/J1H0SGPgbZm
GmAHl5HrrBcVNpFioV8JrYM4is/7lV1qWPCzK5kaVu6aAFoZrSkDN7jjKIjj
01b0AXJER9A9dxg7pKwpuAvoKD7AihuU3AQt7nDqIlVWhAsAbSdd7gQ2HKg4
/uBpBPK9+TpWvSmZbWrTuJntjkMfZHeTIIqy81LQSXKWei/4FyHrTybz2KsR
7CnGLglQAButdsPkpCRxszUcZOO0bbks2W7ezr6KrmnoVcHaSmP/GSi7l2r4
pMNayOMMns0bBj2NXaLyu2TSCexp++AE0C3CnkY0O9w2eEJd7SdAIoagVRDN
lqUYDJDpx5oT58wzAkPNUlOrJWQUZzS+p1CgNDz4SnfY8MYUZTVFAYjS1NWx
cyCnmRQXyN5RpVS2sZNqC79WXFstXyy4XLoeUXcutjQIdHrwEOmbnopOZ/Qw
6JhZ9IZGjts5OHK8LUpd9AZUTbUMxHgius+HYVKCud46cZiuTJSG5mNVA1SX
v5IRN8iFBHLhk0HsRXaW3JaZOcCtTIH8YereyGeU+RRdhE4dtrm5M10N1tQ3
TH8Jo9AEt8GkpLNODXaLh15/maK/3Tz6+DvKXL79ZCbo542TwfvL5NzY9Bei
S2P/AuYTnktlbmRzdHJlYW0KZW5kb2JqCjE0MiAwIG9iaiA8PAovVHlwZSAv
UGFnZQovQ29udGVudHMgMTQzIDAgUgovUmVzb3VyY2VzIDE0MSAwIFIKL01l
ZGlhQm94IFswIDAgNTk1LjI3NiA4NDEuODldCi9QYXJlbnQgMTM3IDAgUgo+
PiBlbmRvYmoKMTQxIDAgb2JqIDw8Ci9Gb250IDw8IC9GNDQgNjggMCBSIC9G
MzIgMTkgMCBSIC9GMjcgNyAwIFIgL0Y0MyAzNSAwIFIgPj4KL1Byb2NTZXQg
WyAvUERGIC9UZXh0IF0KPj4gZW5kb2JqCjE0NiAwIG9iaiA8PAovTGVuZ3Ro
IDI3NDAgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja
fVlbj9u6EX7Pr1jkJTYQ6+huuX1KmqbNQdMetNu+NAWqleg1G1lyRSmb7a/v
zHxDSV4rBwusyOFwOBzO3dFdSH/RXRTGQVGkd/ukCMLwcFedX4V3j7T0h5tv
pFuSogiyNKHxAtkv7tJDFKTx/m63oPj+/tVPH5P4LoqCQ5bd3R/nY8MoiNLi
7r7+58a2212SHjZVdz5v4/1mbLfRxlbbXbQpaTTYrnXAeLLDCaPhZDD44/iA
QUeovV/snC63xtSGKdW6RFgdhqZ1Y69oxAIdPJieqVy2u7jYmJ4Pf7CNHXjt
efuv+5/pprsoDdI0F8bdWPHSifGJV8ffkHiWaW+GsScKLaZuKPns0WEqtyNG
4nwD/r6EWYT97tSNTQ00uhsdYDA5dkzvXDb2f6aeQbLpyYKMTkene5qSLuVh
jGDbR8/m7YWIifD+/QflJT+QKIhkJ0xUphZxMbgb+S6NbYUPAiifTcfyeAq2
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
R/c6QJPJKUJw3DDyZNleVH2FgidrW99PnAxaTlNVG4dVRz/Vw9EkDgTsAS+8
y8kcPm6LaDKZg2rCd85czxSGuRwLi0VyHUPWPPAxkIbs5VgHzr5dSGnkwhm8
BmmU2fS8vTlO14ftH+LZsUTeaa6m6d6/ENeB9w+vWQzoBMRS39TSR92jcOfv
V3k8I6LP5hejsZjZKLFJX0m3ShakyB2JQgtSLEKhoc005XeTBF7OPCHQYXZV
kq/57qopnUNnCb1c7o009qtPC2j276Vg32j3hNVfnkczvqTgvN9Kv4PWy0lt
ZQUFEMPxQQ+aVyaX1Fsz+Eyl0Jy9yF9cwGGTJqnXN5nLNVIZzl9Y/+R5vQr5
TKkqNUvxqSsbASBzB+sZgBG+VvJjSYZ8g9iBsA9woZYX9L3SQ05Vi80noYFl
adXS13ynOnfdSb7MX9IwBrrDGLlj6NseBFn2g6VA5dVlxfwWtf/c2Vi0VdQW
lPjUum4xFyVHr4NmkkAvT0aXIoxXUj74N3nyRKvDIl1pyqWLn0cYtXSAkuKx
J6CEfxna2fTM98G/03h+g132iF0a8QvfWmKC+tsMMoNiSml47So9EuS1n28W
opoSNA5j81tzLCO2TOuQCtDiqnHzgthv2fdSoUug1bZ8qRt9JX0TlH49MErx
/Tz9ulB+Bzkfc8t2rRzHNqtV+ePcdmlvfwWYorZ0BRr9EUeTm3zz/s8ff/Oj
Xvohkd/8frWVPuPcdtKptgySMPF0+M5x8fIw/8vi7WH/ByG5Q6FlbmRzdHJl
YW0KZW5kb2JqCjE0NSAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMg
MTQ2IDAgUgovUmVzb3VyY2VzIDE0NCAwIFIKL01lZGlhQm94IFswIDAgNTk1
LjI3NiA4NDEuODldCi9QYXJlbnQgMTM3IDAgUgo+PiBlbmRvYmoKMTQ0IDAg
b2JqIDw8Ci9Gb250IDw8IC9GMzIgMTkgMCBSIC9GMjcgNyAwIFIgL0Y0MyAz
NSAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0KPj4gZW5kb2JqCjE0
OSAwIG9iaiA8PAovTGVuZ3RoIDI0NjIgICAgICAKL0ZpbHRlciAvRmxhdGVE
ZWNvZGUKPj4Kc3RyZWFtCnja7Vpbj9y2FX73r1j4SQN4FN2oi+EacBG7cBE7
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
9f7UUL+XcAEx8SdodKq1FPrHA11UcT1d1HENEwJYYM/8vmcfhMvrnDHKijv3
bOS5f6hK8U7Jl2O62eeFrHU4rB6w45hPN6QjVyz080QTnf+rekaKko4mczgP
nZsT3a6RH46Dd6u8xsDq80fxMBArpabc6POp49gLEiV3fUECXuxYQrdU8MuY
p7YtHypRpnsNOXNxY6mYX45Q5Yn7hSgaFhTX1FJDabhGLovS6QnPT82FGQ+J
omXFmLzoevRBVcl14a992cmNY0HXsEdz8UhZV5l1CIXlrR8vGCXzHrPH5YqS
M7HCc+q50e3o3nN0TxmMFgO8cBxBYUdxgw93Ejb8ffQjqEP4k+sjL0MH0cJD
Wc+xOdiIsloXfDvc5o2IJJixuNO4NjHosa+chS1Hbt9u+Uw+iSrUa0w+wp5g
WrgZTEpEOYg2JtQjdtwXhW7FN6jGB5/ZYtjnZdU3GokmXslmkKbKmgeOOQH7
pR9x5Q55DL4/HUpzjsdXCoJUmT3VDHMYb9tRBKV0GuIO+B6dmREKOE6hcJRR
80Ux98tnCV7mUi20cWYPrUpKKhFsHeACmYN9X7GsGHI/v3ODsuM3XA9hFIu5
WlQGAheZfS3ChCqMg/JMS9LU2dOSP850ece5bCioWcog8ytpSjeNWcVZSPke
Z4cCHAs4xewyqC2AdIjnV862sCKzNJADa6PxEww+yq/4/IKP9sxG4OiwY3Pu
mFMBL3W9VJlTuyTIBNMdjkI2MCrnKwNJgBgGpnXb4zjw303w/wJWTtmxq2Jz
Zoe1ovJHiU/d4fCu3txmcAQOEjvFuuisHfx8N/RC0w/CB9niTA1KWLsE+y+r
n1X4ZW5kc3RyZWFtCmVuZG9iagoxNDggMCBvYmogPDwKL1R5cGUgL1BhZ2UK
L0NvbnRlbnRzIDE0OSAwIFIKL1Jlc291cmNlcyAxNDcgMCBSCi9NZWRpYUJv
eCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDEzNyAwIFIKPj4gZW5k
b2JqCjE0NyAwIG9iaiA8PAovRm9udCA8PCAvRjQ0IDY4IDAgUiAvRjI3IDcg
MCBSIC9GMzIgMTkgMCBSIC9GMjEgNzQgMCBSIC9GNDIgMjkgMCBSID4+Ci9Q
cm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNTIgMCBvYmogPDwK
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
PcABA4q9fo9Pei8uKeu+tfHwBXjeeFSm543HXr9oAfs+v2K0Y977wW3zQeKs
+SDh2eYTQYb4i3NferR7sfuwSW3Hz7+WxKYii/3lffeiVDPtaSqZ9DQU7t/5
0YWqCTl1FbxlplLOimrsdpZOhJ6MDnRwVVEyLecHnXozXgzzmsmH0jW7puoP
THpCP3HQl8OA+AIJsJt+8yMicfhPNHRjwK3ujU/z17ilt+pM0QfRF1+qrzwL
35rw01ukvBz6thXdKvOfXe+V/Q+0qUZfZW5kc3RyZWFtCmVuZG9iagoxNTEg
MCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDE1MiAwIFIKL1Jlc291
cmNlcyAxNTAgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yNzYgODQxLjg5XQov
UGFyZW50IDEzNyAwIFIKPj4gZW5kb2JqCjE1MCAwIG9iaiA8PAovRm9udCA8
PCAvRjMyIDE5IDAgUiAvRjQ0IDY4IDAgUiAvRjI3IDcgMCBSIC9GNDMgMzUg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNTUg
MCBvYmogPDwKL0xlbmd0aCAxMzU4ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCj4+CnN0cmVhbQp42rVXSW/rNhC+51cYvVgGKj4uWq8tmhZFe2l9eyke
FIt2hGhxJduB/31noSzJltOkQGFAEsnhLN9wvqHVQsJPLZTUIkmCRWwSIWW6
2FQPcrGDpZ9v3sptMUkiwsDA90i4X/SDVIlAxwt/pPGH9cOXR6MXSok0DBfr
7WBWKqGCZLHOv3qtrZrDSnl25Qcm8LL9viw2GUwciqbGOeM9r3wde/a8gmdT
5zx5eHE7uk2zZwFeaLY8//ZCWnhQdLyYoY7TKgy9rChx/bl0ao5dUe9YyBag
vOVpdA0s/bX+FQL1VSCCICK/fywLW6M2sGB05DUtv8kv/Pjl+Cxw38NP6wtO
aSykUYsoTIWR4RzsF0SdqD+SJUCDYAyojkWQ6otCdKyzFDZ6rAMRyWTidoUB
nfcMeKTicDqT6sh4HX5DWKEKvLKAQecGCC2+K7RwhsfedjPQVOQBoptnqDwD
KCOjLvMQWxx/zIql/XnGG29N7XGlxUflwpnM3IQzWiXVmGacx+8GP0M4HWCx
hMeR065kIMLETMyeUEN5JMxQxlc6FSqFdOlEJPBGod3HE6FUYqIxrAgHHCOZ
JN7u33DC+I6oaA9nEDTg5pxj+Y+JmmBIToxB8U0k9cStGT04XRDCFQ+26Fvj
BhtUhfXTA/SprN54BBq+PAL7DIUBhCS0iha+AaaJuTBCoQXIG4RbSu/PA/jq
w34EOoq8322HSGY7zIfXsdIJfYGTWgsVxaRu/QKY+pQ+kyAGNOrQxx3NhRCb
TjDHxE4dzwErafSeCQt3MmOgeIOZKi0vlrz6RqzX5jx6UiZgzyY8oAMpNLCu
ZAagHODjOBeGiUSqtJP9TgDCMsVozmwia51fBdObrXOb8ynXcSyUVi5XjCo4
DSAn3gadr5lema1puqi3uNBWGfA5SdB0xpzeHA88djQL3ym4n/ExphU85bSj
34kYYY9AtPs+8T3vJA5Go4eOP1rbMfpN3Tl9vb9zbPKH/ftoO0fo04Teo/JA
pSKK9IeofCR7n8p7oblEzvFI8wpegg7Hl3iEu2zHtEKM1yLsG2IUYsKc52uX
FiQyLKPzDB4FFihzXQHbVJQm6o6Zor4UZOEsPMlQPhN9o4KzowE2SxwFAmrG
6hGtvuKjeavft3qsX/FMoU4UvbLK3DTw7B17uaUAMVTbEhLMggP63+gTDlcc
wynDcCwFesKdrYvsJllXnEb8h763HMeQ0HhSUET+7QaN1Aciu9jbc6vCPDJn
+omGi4oTxWd96LmL+JW4FneVRM12lBIYb8um9/UOJodi5fr1b3bLFnUYG6rT
onJ3BeziFMtBuC7qdtGgxd1VhlM1PXaDD3QQNxfb/gQG9oDCpbPbuh7AM9+o
A7YOAQKAkG1HrajrWfhTjSFwjeGxKDlAE8WXroBUsLOf6wqwHUiko6zgYNIO
uMnQ/FVLQMmX/sO1BJQ+oRS1BVgYtQUY3WsLcBmPw9hR/bbg83AbgqOVoSOE
Ydx3BNBOvdc5NGkKvYucw8gIE4XTQ8+xttumrZhVu6Zy9+Nswzd8ujy7d8av
J6mC0om1dpdhgnMGoevcDmwLoPvSXeB1j6O1TKDjfYiiB9H7DO1kriCd42Z7
oiqeXgOn1c6VmDvKwVLj01dnrpSAcqBpvfScF3pLLGC2i5ozqsYln/63jC+O
KIdqGrqTufY9rXAqkZP9HwxTvZy41dyr7kvYUZSkFxiBJDJHLsS0QwismW4J
xWBp8Jq9WN4oWr4X+bu2hygG282MGUJreX3y+n+6qaG/xXN/mXsRf5C5/ces
4X+1kabXg+4bdW2s//N9a+wfqgXcf2VuZHN0cmVhbQplbmRvYmoKMTU0IDAg
b2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxNTUgMCBSCi9SZXNvdXJj
ZXMgMTUzIDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44OV0KL1Bh
cmVudCAxNTYgMCBSCj4+IGVuZG9iagoxNTMgMCBvYmogPDwKL0ZvbnQgPDwg
L0YzMiAxOSAwIFIgL0Y0NCA2OCAwIFIgL0YyNyA3IDAgUiA+PgovUHJvY1Nl
dCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTU5IDAgb2JqIDw8Ci9MZW5n
dGggMTQ0MyAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0K
eNqtWFlv20YQfvevEPpiCg3X3IPk8rFFm6JFGyCI3uoioCTaYk2JEklf+fWd
Y5ciLaq1k8KAucfsfHPtzI7kLII/OZOREtaaWaqtiKJsttpeRLNb2Prl5Cvd
EW2tiI2G8YDYb4Ymk8KodBYOOP64uLh6D2tSiiyOZ4ubI2wkhTR2tlj/GcRC
ibkM4nkoZRQFv25hkt8W81AnafBH0bYwaed/LX67eq/VgFc0C5USMkmJy2ID
RKEM4JwyWbClc3Oay6DlxQ1ynqs0eJgr6ym7jR/Ue9iv6AATVLzxiEfqZo0z
G1xLbVgaYwbSqEgLYzKQCqUpWQnCP5VcRyJNHOV3Yh6aKEP5nxkuh1ONk6nc
IXZX7NbF2kvJYvAOyVnfsToABCbRRigwfygNyJMQBigWAnHRIOuurHdgD62S
oN7xt9x6U2kgW+cd2YlJlvMwNsHfZJVV1wpEufh50Ts+S0Wk5SzRqZDaTsVR
HyKONBzQUoSM7ChVKkymeoYT1pwpI5LIjlQsHnB3h/odSdIRSVUjFzCjSbQM
SphskT7fgm42NWDmDRshlnFwCUOC3eX4v7jEZRM8ogVbHlc1TtYF/iPMaATX
4u5D8b/BtTmpuHZu/hf9ksRmnhvCMqANKpiwzAxKMuH8tmCIy5GUEqQaqhWP
1TqH0uLxh6NqJygYwYRGOjMa6+zQlBUWIgDR1ni6pXuZP9OxeApzjawQeF/h
OlNiWA9gkdPunLVP3bfHs7sFmgx0lWkcPL1jRsA9S9M0QKnyHa+dyhlcR3GE
FA38WzLuCrmhl5o1CgsU8lyw7pHhEzoBkpCRMg2eYPxSgvyo07QJvK0du4pn
LAcKtm6nIveuZ5AESJU7XIr1Fdhcaf0G8CO/FyY4jWSOsS9IUG9djFUFRxyZ
IlOJDr54Jltm2rGXEOu2dImAryiO/VHvlO+vYB5+cBRH5r07xtbYoOlu8a5W
JaagTfdNPnPsUDLPjj2E+pQ7N6NEzcphUJXIqPceWecbvfdmMdC7d8/TErwo
8vAEEAAyCzUU+TQeFvnEFfmPWE7ui+a5r/J4f95a6LFabXnW+quuoRR2WA+f
XdFreW2T4+IDFs2eCtT245qCd1z7cYNrP8UrL5wr/zqm8OWifrhHfzXkiOny
H2fD+q+tq/+I4Os/jrHK277+O0n52iQJ1Hkzuje+zN/UDdwMZeHq1ZgjlY2J
6wprP2/4b86fA/uCdsYVH8VTEhyG/sIl1KrsX1Vw4LGsKsZwdi9XeVU5bksW
ifd/+AnZ/P6OZ8v7biJ8dzU/PNq9PwlSlNeRNCv/enGPltYFgKvCNMkZDx0G
3Imu27i9G4rYbe7W6xv+uocOW8Cq4NwLRyuI4SR51QtnQHv+heOJJgJm8oVD
OWB1LvnkmIMPlXtukE0OmIk+483qGjBLFFtyXtEiWAVmUHGqPF9c63yF7l8m
xvuMJ2AkDM7nqbRz6LNsQsnigLnlc4u3rCEo/RXonz56ZIq/o4GiU9vsG6c8
yviEabP5b+WxWuQVrtGrtzgWlI0TwfPGs8iurKnuvSntpS7tfYKgRgFXXXOP
gb3F9Je8Mv0lJ31OFtETCI72vY7KMGNDtA/SH66N0x9TsY40riH3+aaI3Ii8
B30PzM4mPiV0Yl02oydQsSKr31OBPtXHZELJUfujtG9/MnlsfzLp2x/fxlEW
5OxnpYitGQVB5zLHRGdE959SPKae841Q6/bBPxhvW98QIfV0Q8Tvc3k2a8hU
CZWlr8oaA9rzWcMTnbX2OHfEX9cd0VuO3gv9QztNpT3pWbol3iZPgx0DbT0i
r75NYsZ97zKR2zpksKxcCONdbRmdOtGla8tTqHej7HBb0uPNPfaYtjpuP/Yi
UONzFGHoJ/+LRKbp54upnzY8SXikIf+MohrCVehIez6olVYvwfyPJKdg/wAy
ajePZW5kc3RyZWFtCmVuZG9iagoxNTggMCBvYmogPDwKL1R5cGUgL1BhZ2UK
L0NvbnRlbnRzIDE1OSAwIFIKL1Jlc291cmNlcyAxNTcgMCBSCi9NZWRpYUJv
eCBbMCAwIDU5NS4yNzYgODQxLjg5XQovUGFyZW50IDE1NiAwIFIKPj4gZW5k
b2JqCjE1NyAwIG9iaiA8PAovRm9udCA8PCAvRjI3IDcgMCBSIC9GMzIgMTkg
MCBSIC9GNDQgNjggMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+
IGVuZG9iagoxNjIgMCBvYmogPDwKL0xlbmd0aCAxMTY2ICAgICAgCi9GaWx0
ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42rVXS4+kNhC+z69AuTRIwWtj
G5vrStlI0eYSdU7ZPTDd9CNLNyNgZjT/PlV+AG5gtDuzUUs0dpXrq5erChZR
+LGI0YxoLSLFNaG0iHaXOxodgfT77J+5I1xrIgWH9wmzJ6aiYERkKkonEj9u
7z58EiJijBRSRttDlFFGOJORgn8mdLTd/xOfLwmLyyM8qiTNqNRx91DBaneG
x6WExxEIKqMi7k+WSzIRH5H8VF3tyvIeR/Jz2dmXGvaaco+UffJ1+0eUZoLk
VEcpE0SI3OjQlUZYkoqcs7iDhVXhivsXhFdMT+BlvIHX/h4etedhsGdIz2iP
Q/eCWWzBF7B7ZLmv5/b3KMdADPZPWQMrUeXS4ZiNvrH/hytSQD1El5LwXAXo
jm5EGu8s8PxAhAJW64An6/pAK3PQO26mmRxRpzwpo4JInQW61Q0Cgvg81wXo
hWA7c9DahJErXBJ478g4cC0qtOm9Z93BzRgutR4uwZiapEtAm0bMh2uSGU7x
MTXous9vYALa1O3fA5Mu2DSk/6tOnNjZwvPxMk/xIMgbe2A3hvF/cepq6m8O
t+FUBSmUDLJslv8Bz/tjsa5dcAeweMw0zBfvwYdPUGbHkpoyyYkqoKZwqKnK
WiVJRuCATlLGKI23SYH5jh7jeR7/WXUdKNhZaTybSIMkzDLC4CqimO0JmFJj
Gs8U4JtV5288z6AmJvB4eYC6oGIk496pxM2nBLc8F4tP/h0z8gF1Ycij46q2
hGc8gMR2bze+MC6sjmET4dKEj85SZ24Pp0TJwrH+QiB8XKNZLxYBz7ZOr/MV
lemr677aD5raG5PnBCIbRuWK2hr9m2+DpXncOFe0KLo/N9fO7V/tf+/CAK9f
qKSlAX2x/j0Y4y9lDxRmefZGTOlk3EPqiPhfuFLgO/SpiQdBLe9+2w7NuFCE
chYJpk0kF3r70LYdazrhnXdtlikiimwQuOD2pcZWmcqP96tfu/dD9TZ997YG
J6nOOH9L2/Vyh6ZPg0sftvufB3vb7dPXTDa11gl1PdoCv7VZ0Vdq+hKOLU2j
kTOcoVQZ6+vbOo61QhMNiYF4J6xnR/RZfcZyeFoIuvV+ix54NqLzGDtJAwsY
SKFGOSEI5YVYx9qWhNTDeTJPOFFz63dIqB0GdqCmfiuGFfVoqvASEoa7rl0u
OXNY/Kv1qYc28+Ma8iACF6XbfEDY7myryIC92L0rGzMzMq5ctFd87o7vzD01
0FiYukfMMUyRypUjpPgEGrpZ2/yg99+FtmtqO3jchmKaWJ/RvR0I51SrMSBw
RQul1PvNRVFrJofYzvKfhD01vlsaBBQncK+X5oDCzQF///V5nAD8lOLs+d5B
QNDcfBHBsW6YiajCQUBBI4PWDg1Qm1kAt8NZAA/3J3/CDQKWWNvNYAjAjbUh
QGQEctw29sfW5NvcCmhYQuaT9p8rCdNQitPIi1WnbJ1etqP7/u8UdP2fEpnl
Qbx9mz807cV25665uMZe7rDxh33ftXCMwELH9p/jBTcf0Usf2J4lHXlMpw7s
hRtGOOVeDirK+S2Y/1Sfg/0HRg/kNWVuZHN0cmVhbQplbmRvYmoKMTYxIDAg
b2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxNjIgMCBSCi9SZXNvdXJj
ZXMgMTYwIDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc2IDg0MS44OV0KL1Bh
cmVudCAxNTYgMCBSCj4+IGVuZG9iagoxNjAgMCBvYmogPDwKL0ZvbnQgPDwg
L0Y0NCA2OCAwIFIgL0YyNyA3IDAgUiAvRjMyIDE5IDAgUiA+PgovUHJvY1Nl
dCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTY1IDAgb2JqIDw8Ci9MZW5n
dGggNjY2ICAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0K
eNqVVEuPm0AMvu+vQL1kODA778e1VbdSpZ6aW7cHGkiClEAEbFb772uPIQlt
tFUVafCMPz8+27HMBPxkJoXiIZjM68CFiNnm+CCyHai+/PWVk4kOgVujQb4B
z8pCR8N1dCA4Hpy85/CCjZ4LDV8vJJcmIPbj+uHxyZhMSh6tzdbbTCrPTVTZ
DFpXP9hLn0t2yH+uv2bKcCdCVkjDjXFJW59BW7dwjFeIX0AOHWjLKi+M05K9
wKU/5AUUI0q2ousqL6w07BWBA8mTVQ1nlTyLhdOhBMW5/k+nk1VFtxEuHYqW
rUDcNkg0cSmPyGqV4vrIo7eL4BMSjpaQCQjRDbdBTVC7JO9ciHMtU54KBIhf
JoIpiZkF5laO9MXEyGr1XhXueB8wcOrOleLsieh31xDb5jD3sTwiMYpGjPS/
yT8+KX8zR4W0mvsYYTJhkDyVwnLFAS8FZCiFYJ8gvsYOwNFXTVuOkKl2nn2r
h5T8rh7It1Y3vqECSnHpfHK63gOoSCS18uxIt1SXXXoL0GY43k55AXpU49u+
xMdzjk8zSrL9LGPTTsARXJ0RWB9I8YoGqOwreniW2lCOi/+R0jZNgEg5btCi
6+dJ/oOPFtzbOEE/cJhoHZDWG0VAJv2UV9NiMmPdVnV1yTSNnnKOK2EWjTr1
XSLZVGgeFLiCD9SFZgL6V/clTQxqj/W4h44oh+OID1tIORm8DE27I3GDdoTq
Us/wj18PkLUTkn2fipxQzbOQZkNmv+gdn6fKN6mKFKiqJ7u2GhZDTnPTtcjV
sZHa41h5Oh2aTYkda7qWo8nD5/Vl1U2bzkSRluM7S9HyYDWuUceji3dX7Lyz
i6i5gRmf1+aihbB0uBY6mzCYNI3FbVoGQKi9OpqD/QYdY20sZW5kc3RyZWFt
CmVuZG9iagoxNjQgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRzIDE2
NSAwIFIKL1Jlc291cmNlcyAxNjMgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4y
NzYgODQxLjg5XQovUGFyZW50IDE1NiAwIFIKPj4gZW5kb2JqCjE2MyAwIG9i
aiA8PAovRm9udCA8PCAvRjQ0IDY4IDAgUiAvRjI3IDcgMCBSIC9GMzIgMTkg
MCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNjgg
MCBvYmogPDwKL0xlbmd0aCAyMjI5ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVj
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
Y91UXD9YQV2zbXPrvlCFqAGiDk9/8a/F/UglDPkwldJWwra0E6ECBZcKf/8O
4SewC4tNy8E78SSSA/w5WbdJ6B1F+kbrPmA644KWiVxQnnTBc/qcC55V51xw
oO4/cLkyBWhxZssNNJOMRBVIAiuuXtmswVV184G/zyx2qx0lPvvSlSV/Weuy
1K1lJuzaFfxgkrVd19R28bNduOO23WTcl4y1ugX2ncL7zn6M0/tqHzTQnUqT
IWLjwPthuusfKPL2klltYsPp+YSMyQq5nkwHzavp3Gc8pu6/AyLekbKynwVw
/sO0/ZYhfOxxtw+dbjm0cONnGwrbOY3hHNJAHDgI/9s8rkv4p1wd2a9rMC7A
f6YRViVN9TLWEUoFBeKRI1zGoFUi2P/mmV2RBP1keubLFTQA0M6+Af8B02n4
OyaCvzoF/zP6In8enfrG7kB/ZMphR2O5hqas8UZ6bGsuLy64iocboq9U3vMz
zJ/9NQEZfp7ot/Cn9FUTUsQFAvQTvvYXec7F610pFfhJlJw9Rsdz/hhfS0Lb
T94a9Owh1CdnL23Pc6xMpsJXgXJyqNOMXiuDxpxWj5X9H8zO1w1lbmRzdHJl
YW0KZW5kb2JqCjE2NyAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMg
MTY4IDAgUgovUmVzb3VyY2VzIDE2NiAwIFIKL01lZGlhQm94IFswIDAgNTk1
LjI3NiA4NDEuODldCi9QYXJlbnQgMTU2IDAgUgo+PiBlbmRvYmoKMTY2IDAg
b2JqIDw8Ci9Gb250IDw8IC9GMjcgNyAwIFIgL0YzMiAxOSAwIFIgL0Y0NCA2
OCAwIFIgL0Y0MyAzNSAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0K
Pj4gZW5kb2JqCjE3MSAwIG9iaiA8PAovTGVuZ3RoIDY0MCAgICAgICAKL0Zp
bHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjajVTbbptAEH33V/AIUna9
d5a+5dJWtnqJVNQ+RHmgthPTYkA2aZq/z8wCMcZAK6Rh2Tk7c2bOLNxj8HCP
M0GtVV4oLWUs8la7GfMewfXx7M2bI9JaqpWEdQfcOknrJdJQa/ggpk1KQsYp
VxZBV/Fs/kEKj3Maae3FD0dqDShe3/l36j64j5ez9/FbNM41FUfUYL4a8o90
glMWyZN0SxoQo5kfB1b4SSBC/yUrAu7vLwISStwn3EeMivwrXBcBAdAKkdsG
87mJcV3sygTPJhWGcF7+5u1kAGdWtBmSfF0DvjRpfqT5ATNVAEtygt2AIglX
VCnjSGebFwwGeM6iyL/9dPktXlwHRMNpAi8IltRf5R6ZVA3pIqt3H4p9vVhv
Dr8d17I9BcsyS1eYHz+qFL157U1zZI+0NvuidCE3++RnmqVVIKzfcOqL1zTd
hIIKbYbVazCkA3LyKTUgXwvCTmyRTVWCeTefg03/gCkSiqQ36Jrf4MYKzNMO
ied44IDQLHGVHBzq1m2gq0rBrm5aV9OeBQasMKJraEm3eAwjZv2ClVWUaTtZ
cIs5K/hkXvuRsOALNw5w9QSNjD6ZiuUTlEwkqCKAF2NgDIyIkspffEflvqJK
lzUkd3OxOZeruZJGSqqYmL7cHdD45W5B7nLrscs9kU9Tq8f+RcfJ6VEZnpwO
lf7kPD+job9wBtzMU/cbeAQz73MWSlEOxU41qcVMN6kfCZmNa8IsjaCMaU2O
oAlNGpDTxIxqMp7v/zTpURnWpENlRJO/YHcZqlHiRaZoit2gMNpQJc1kp1rM
dKf6kSaFiUA8EU7rcsQMJIs4lUy2cTCXNGf/FQCh9zzZK+Ros1FlbmRzdHJl
YW0KZW5kb2JqCjE3MCAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMg
MTcxIDAgUgovUmVzb3VyY2VzIDE2OSAwIFIKL01lZGlhQm94IFswIDAgNTk1
LjI3NiA4NDEuODldCi9QYXJlbnQgMTU2IDAgUgo+PiBlbmRvYmoKMTY5IDAg
b2JqIDw8Ci9Gb250IDw8IC9GMzIgMTkgMCBSIC9GNDQgNjggMCBSID4+Ci9Q
cm9jU2V0IFsgL1BERiAvVGV4dCBdCj4+IGVuZG9iagoxNzIgMCBvYmogPDwK
L1R5cGUgL0VuY29kaW5nCi9EaWZmZXJlbmNlcyBbIDAgL0dhbW1hL0RlbHRh
L1RoZXRhL0xhbWJkYS9YaS9QaS9TaWdtYS9VcHNpbG9uL1BoaS9Qc2kvT21l
Z2EvZmYvZmkvZmwvZmZpL2ZmbC9kb3RsZXNzaS9kb3RsZXNzai9ncmF2ZS9h
Y3V0ZS9jYXJvbi9icmV2ZS9tYWNyb24vcmluZy9jZWRpbGxhL2dlcm1hbmRi
bHMvYWUvb2Uvb3NsYXNoL0FFL09FL09zbGFzaC9zdXBwcmVzcy9leGNsYW0v
cXVvdGVkYmxyaWdodC9udW1iZXJzaWduL3N0ZXJsaW5nL3BlcmNlbnQvYW1w
ZXJzYW5kL3F1b3RlcmlnaHQvcGFyZW5sZWZ0L3BhcmVucmlnaHQvYXN0ZXJp
c2svcGx1cy9jb21tYS9oeXBoZW4vcGVyaW9kL3NsYXNoL3plcm8vb25lL3R3
by90aHJlZS9mb3VyL2ZpdmUvc2l4L3NldmVuL2VpZ2h0L25pbmUvY29sb24v
c2VtaWNvbG9uL2V4Y2xhbWRvd24vZXF1YWwvcXVlc3Rpb25kb3duL3F1ZXN0
aW9uL2F0L0EvQi9DL0QvRS9GL0cvSC9JL0ovSy9ML00vTi9PL1AvUS9SL1Mv
VC9VL1YvVy9YL1kvWi9icmFja2V0bGVmdC9xdW90ZWRibGxlZnQvYnJhY2tl
dHJpZ2h0L2NpcmN1bWZsZXgvZG90YWNjZW50L3F1b3RlbGVmdC9hL2IvYy9k
L2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ov
ZW5kYXNoL2VtZGFzaC9odW5nYXJ1bWxhdXQvdGlsZGUvZGllcmVzaXMvc3Vw
cHJlc3MgMTI5Ly5ub3RkZWYgMTYwL3NwYWNlL0dhbW1hL0RlbHRhL1RoZXRh
L0xhbWJkYS9YaS9QaS9TaWdtYS9VcHNpbG9uL1BoaS9Qc2kgMTcxLy5ub3Rk
ZWYgMTczL09tZWdhL2ZmL2ZpL2ZsL2ZmaS9mZmwvZG90bGVzc2kvZG90bGVz
c2ovZ3JhdmUvYWN1dGUvY2Fyb24vYnJldmUvbWFjcm9uL3JpbmcvY2VkaWxs
YS9nZXJtYW5kYmxzL2FlL29lL29zbGFzaC9BRS9PRS9Pc2xhc2gvc3VwcHJl
c3MvZGllcmVzaXMgMTk3Ly5ub3RkZWZdCj4+IGVuZG9iagoxMDQgMCBvYmog
PDwKL0xlbmd0aDEgOTcwCi9MZW5ndGgyIDM4NjYKL0xlbmd0aDMgNTMyCi9M
ZW5ndGggNDUzOCAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeNrtlnk4lO3bx7MVY18KCbc9woy9MVFMDRJljUKNmXsYxgxj7FlirMkW
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
dHJlYW0KZW5kb2JqCjEwNSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlw
ZSAvVHlwZTEKL0VuY29kaW5nIDE3MiAwIFIKL0ZpcnN0Q2hhciA0NQovTGFz
dENoYXIgMTE3Ci9XaWR0aHMgMTczIDAgUgovQmFzZUZvbnQgL0ZWU1VYVitD
TVRJMTAKL0ZvbnREZXNjcmlwdG9yIDEwMyAwIFIKPj4gZW5kb2JqCjEwMyAw
IG9iaiA8PAovQXNjZW50IDY5NAovQ2FwSGVpZ2h0IDY4MwovRGVzY2VudCAt
MTk0Ci9Gb250TmFtZSAvRlZTVVhWK0NNVEkxMAovSXRhbGljQW5nbGUgLTE0
Ci9TdGVtViA2OAovWEhlaWdodCA0MzEKL0ZvbnRCQm94IFstMTYzIC0yNTAg
MTE0NiA5NjldCi9GbGFncyA0Ci9DaGFyU2V0ICgvaHlwaGVuL2IvZC9lL2cv
aC9pL20vbi9vL3Ivcy90L3UpCi9Gb250RmlsZSAxMDQgMCBSCj4+IGVuZG9i
agoxNzMgMCBvYmoKWzM1OCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDQ2MCAwIDUxMSA0NjAg
MCA0NjAgNTExIDMwNyAwIDAgMCA4MTggNTYyIDUxMSAwIDAgNDIyIDQwOSAz
MzIgNTM3IF0KZW5kb2JqCjE3NCAwIG9iaiA8PAovVHlwZSAvRW5jb2RpbmcK
L0RpZmZlcmVuY2VzIFsgMCAvR2FtbWEvRGVsdGEvVGhldGEvTGFtYmRhL1hp
L1BpL1NpZ21hL1Vwc2lsb24vUGhpL1BzaS9PbWVnYS9mZi9maS9mbC9mZmkv
ZmZsL2RvdGxlc3NpL2RvdGxlc3NqL2dyYXZlL2FjdXRlL2Nhcm9uL2JyZXZl
L21hY3Jvbi9yaW5nL2NlZGlsbGEvZ2VybWFuZGJscy9hZS9vZS9vc2xhc2gv
QUUvT0UvT3NsYXNoL3N1cHByZXNzL2V4Y2xhbS9xdW90ZWRibHJpZ2h0L251
bWJlcnNpZ24vZG9sbGFyL3BlcmNlbnQvYW1wZXJzYW5kL3F1b3RlcmlnaHQv
cGFyZW5sZWZ0L3BhcmVucmlnaHQvYXN0ZXJpc2svcGx1cy9jb21tYS9oeXBo
ZW4vcGVyaW9kL3NsYXNoL3plcm8vb25lL3R3by90aHJlZS9mb3VyL2ZpdmUv
c2l4L3NldmVuL2VpZ2h0L25pbmUvY29sb24vc2VtaWNvbG9uL2V4Y2xhbWRv
d24vZXF1YWwvcXVlc3Rpb25kb3duL3F1ZXN0aW9uL2F0L0EvQi9DL0QvRS9G
L0cvSC9JL0ovSy9ML00vTi9PL1AvUS9SL1MvVC9VL1YvVy9YL1kvWi9icmFj
a2V0bGVmdC9xdW90ZWRibGxlZnQvYnJhY2tldHJpZ2h0L2NpcmN1bWZsZXgv
ZG90YWNjZW50L3F1b3RlbGVmdC9hL2IvYy9kL2UvZi9nL2gvaS9qL2svbC9t
L24vby9wL3Evci9zL3QvdS92L3cveC95L3ovZW5kYXNoL2VtZGFzaC9odW5n
YXJ1bWxhdXQvdGlsZGUvZGllcmVzaXMvc3VwcHJlc3MgMTI5Ly5ub3RkZWYg
MTYwL3NwYWNlL0dhbW1hL0RlbHRhL1RoZXRhL0xhbWJkYS9YaS9QaS9TaWdt
YS9VcHNpbG9uL1BoaS9Qc2kgMTcxLy5ub3RkZWYgMTczL09tZWdhL2ZmL2Zp
L2ZsL2ZmaS9mZmwvZG90bGVzc2kvZG90bGVzc2ovZ3JhdmUvYWN1dGUvY2Fy
b24vYnJldmUvbWFjcm9uL3JpbmcvY2VkaWxsYS9nZXJtYW5kYmxzL2FlL29l
L29zbGFzaC9BRS9PRS9Pc2xhc2gvc3VwcHJlc3MvZGllcmVzaXMgMTk3Ly5u
b3RkZWZdCj4+IGVuZG9iagoxMDEgMCBvYmogPDwKL0xlbmd0aDEgNzkxCi9M
ZW5ndGgyIDE0MDIKL0xlbmd0aDMgNTMyCi9MZW5ndGggMTk4MSAgICAgIAov
RmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNrtVWlUE+caFosCkbKI
1gUvDFBkU7KwBooISNKIQAiREAElJAMMJDMQJpCwlU2WWrksIhTtASNXy16W
o4LSgiLKJqKoSAFFEBGsZRHQiHgHrLfn2p/3/rrnzvyZ532f9/me7/m+c0Zf
h+6524GHBIAUBEZ3E02JNoCTK8MKIJoScPr6TkKQg0IIvI+DgjYAkUwmAg6i
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
rb42jvkb4T98cP8X+J8Q4PJBjhBFBBxhKO6fClofnWVuZHN0cmVhbQplbmRv
YmoKMTAyIDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQov
RW5jb2RpbmcgMTc0IDAgUgovRmlyc3RDaGFyIDQ5Ci9MYXN0Q2hhciA1MQov
V2lkdGhzIDE3NSAwIFIKL0Jhc2VGb250IC9WUlNZWkUrQ01SNwovRm9udERl
c2NyaXB0b3IgMTAwIDAgUgo+PiBlbmRvYmoKMTAwIDAgb2JqIDw8Ci9Bc2Nl
bnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQKL0ZvbnROYW1l
IC9WUlNZWkUrQ01SNwovSXRhbGljQW5nbGUgMAovU3RlbVYgNzkKL1hIZWln
aHQgNDMxCi9Gb250QkJveCBbLTI3IC0yNTAgMTEyMiA3NTBdCi9GbGFncyA0
Ci9DaGFyU2V0ICgvb25lL3R3by90aHJlZSkKL0ZvbnRGaWxlIDEwMSAwIFIK
Pj4gZW5kb2JqCjE3NSAwIG9iagpbNTY5IDU2OSA1NjkgXQplbmRvYmoKOTgg
MCBvYmogPDwKL0xlbmd0aDEgNzkxCi9MZW5ndGgyIDEzOTEKL0xlbmd0aDMg
NTMyCi9MZW5ndGggMTk3MSAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+
PgpzdHJlYW0KeNrtUllYE1kaBQXRqKwCQotU6JFBlizsiRsJi4INIiLEgEpI
ClKQVEFRYZFFMSiKqAjIIku3hFEWcRgQmlVwoaFFFiFsCrg0woiAiLS0jGIX
OE5/Yz9OP/U3dV/q/P/5zz333LuJ6LrPhMFDfEEHBMZMqCQqHbB1drMGqCQK
YdMmWxTkYBAC23EwkA5QaTQqwBD5A6YUgGpJN6PRzXESYIsERaCQPx8DDGw3
L5KsAIYQRCEuBwacORgfFOIaXI4A2IdwIRCLIAEMgQBwW5wIAdzAEBANBXkk
ApUK8CAuBviC/hBMIC/6cYT9EMDqU5knCvrcCgXRENwUYICb3AzgFnkILIgA
eKAfgeyC4HuBuJM/wtSX4g4igcCFI1yUxzP6XZcjhAQR/+4jwiARBqKAM8ID
UfhLqif4yZozyINEwi+7jhhHAHEZsL8ABCifSlCIAxQO8lwhjMsH/DiCEHCp
DsK8L03gsS1ZIHs62zvttDNaus2llisHgjH3iKD/iC5ylzD1N4xng0LhgBeF
RKFQcSK+Pv8d/GIre5iL8CAYfw4WlgAHRTkRBPxd4MgCiKQCEMwDwwEwHPdL
JsEIho8AeCTRgB+CEhYv05wGkBEYXCwuYQsKQMbCkN8wFcd8FPzE+P0pmUwk
PNLEzBIwMcVHqRQrCmBlQYn+b+J+GAoWgY52uDqFYkX7dFCuCEVBGFt6VniC
n7EfhOcNguEglzDQi3C3xAWkV54sjLGXdBbJG8oy/b9Pcilv7K5fLe6/ICu4
cm93sOFwGWu++JKa4qj8qG7Y+69CEuqi9rY5vIoNTsroWRgN9Rm9dKT6K9bM
JeeI50F6c+KXSrWV0tkJC9k9XcOthakH8ptypn94ednVwM59TGGQKHPLK/TG
raw4SyuWwyXB/vgTZfpmRDfljODCU+bxQ2HKqclyQx3imID4lVVGj14jdSLV
ecnK71IWvGdfdNl4aWT3WB6E23v6+L1CAZ9zJnGXkbluouRcVnXN+/mSbPKO
TrNK/aQMWLotO4VjaV/1dXLPvafaUTdyYkjHB6UnWi+HGY/o1eqg4hJ/L3DX
1XEZqEA8oVO0XTe3XXSyt4Ogmtjj2fy8r2h7YUxNd5rWg4YOJyEvNJ4xOU7w
UvxXg3nU4E3S8j6PtCMalWqPlO4ezpNQSWsc/vZBzq94VRTr49TdFbJVtENu
YQcJ7/seJZRrmlGV9230tstv3c1u89TW9klbrT7imppwaHzdkJnSOJAMPjqn
rduyts3ax3RHl0Bli5z2qZYEIsgK5xPs/OaVbbb9pTZd3dCxinnr2EgX60fp
eWKnZ7hJki9VQ7xakrmsvGlmZkjWdsvaoMzG6Ppn/M6Pk3uhus5tu8qmWSW+
/f6JvsJmyRs3dePMmrTt7w4nPNCpKu3eSyRojtxuYvfnVjLQlINbAUnGm6mp
O+p70wIw61c7ppjGQhd5s1Cg51pzhdFkxu75EstXOQB2Rr4zcoThxE3fu6kL
ne/fETqq/PEXS8q6m25C1sqQpnyjoPkLG5urIPnX9IX9L5eF/HxcrB6fUnV/
c+DZp4Mdqq4fPFsVl3vHPNwikzyZutbqO/cUUpPLquq49/nF0aTLx+te69Pz
7EpjGseTNigckf826FuKbVzr4au7ZuT3lFw6YisdZ0asr2fsCQWpaoE+d3ZG
+ZneXLBOr0jU+msARUv/9vUZUaBliFaYcRawwfHGgEWBfqScDqIprrye//Du
z+Wu0UGmRTxCsepPtvkv6jsY2XJXidanytizz1KK2geu1Def4zzcwPwGXH5/
/Yk53wapB71mz4C+3tESIxNHkXg/Y/xUoaqe66PzjxPkL4Yc0Lo4kPRq6+OU
OxoVwQeGSyd15MwPrWfT4R6j3sRBL+WD9zL5Tg1HbpNfPM3Yn2VTf2OB2aLY
T0rG8isjU2P9BnOgFvZR8oUtmpNM5tvtpx3vqNQuWGsaaRjwmKzHTwRonyfN
20tKarQ69lyzvNdspHtN1tnH5ZqTbNXhVGViEd2duE7NF2pnmtnUGbxyv+Pd
ORbjHe9R9Ea30K170F1l84OTZcmN0tOjdQ5fX7TnG6wvqJmgD+xLn2DViFrz
NNfATnONUHGW/5O8B8YiGUVtE81qosIo+UXmWkQsYRnujMCy35Jd28Jiz7ZJ
ilLjw1w8JsaWt7WjKSR1bF+6Nuv82Kyb4W1zveGNKn83WDAsLcsezK1qFhr/
47VqcH1m9DSBaRxl+/y4twwmuYYUEnP+uXFgZfSyisHdvWPF3ytGnkixv5jz
SwOfDVgqNBjOflNhHWpECJ1YdffeNlatQXZ5NIemVimnNEfrfkhWqK5SaaXR
5D6OY9tytQvY6of7PBe0OrIGZdQUIiR5Z/TapdLhtssZJmkc2Ypp8JT0QGxN
XEtp1GsdJZbO9eHr1s9U+bnsJ0Pn/U6rc3s/zC4UHKtmk8PE78ZcfFQN2C7n
nKeZW482dVKuXTijWF59nbt+Qulo02iu06orJit4KmlxNyV2pWOiH2Lfzp1T
zl+TvaL2vK79Rx++0IXDqys2yJ46ttZjTeJQXktgRrqXx/0VAcpDdJc3vRoa
me/mmlZuvTxl8+OEc8HLn3LLXzAo/+NH+L/An0KAKwA5KIYIOWgg4VeobxE2
ZW5kc3RyZWFtCmVuZG9iago5OSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3Vi
dHlwZSAvVHlwZTEKL0VuY29kaW5nIDE3NCAwIFIKL0ZpcnN0Q2hhciA0OQov
TGFzdENoYXIgNTEKL1dpZHRocyAxNzYgMCBSCi9CYXNlRm9udCAvV01FSkdE
K0NNUjgKL0ZvbnREZXNjcmlwdG9yIDk3IDAgUgo+PiBlbmRvYmoKOTcgMCBv
YmogPDwKL0FzY2VudCA2OTQKL0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5
NAovRm9udE5hbWUgL1dNRUpHRCtDTVI4Ci9JdGFsaWNBbmdsZSAwCi9TdGVt
ViA3NgovWEhlaWdodCA0MzEKL0ZvbnRCQm94IFstMzYgLTI1MCAxMDcwIDc1
MF0KL0ZsYWdzIDQKL0NoYXJTZXQgKC9vbmUvdHdvL3RocmVlKQovRm9udEZp
bGUgOTggMCBSCj4+IGVuZG9iagoxNzYgMCBvYmoKWzUzMSA1MzEgNTMxIF0K
ZW5kb2JqCjE3NyAwIG9iaiA8PAovVHlwZSAvRW5jb2RpbmcKL0RpZmZlcmVu
Y2VzIFsgMCAvbWludXMvcGVyaW9kY2VudGVyZWQvbXVsdGlwbHkvYXN0ZXJp
c2ttYXRoL2RpdmlkZS9kaWFtb25kbWF0aC9wbHVzbWludXMvbWludXNwbHVz
L2NpcmNsZXBsdXMvY2lyY2xlbWludXMvY2lyY2xlbXVsdGlwbHkvY2lyY2xl
ZGl2aWRlL2NpcmNsZWRvdC9jaXJjbGVjb3B5cnQvb3BlbmJ1bGxldC9idWxs
ZXQvZXF1aXZhc3ltcHRvdGljL2VxdWl2YWxlbmNlL3JlZmxleHN1YnNldC9y
ZWZsZXhzdXBlcnNldC9sZXNzZXF1YWwvZ3JlYXRlcmVxdWFsL3ByZWNlZGVz
ZXF1YWwvZm9sbG93c2VxdWFsL3NpbWlsYXIvYXBwcm94ZXF1YWwvcHJvcGVy
c3Vic2V0L3Byb3BlcnN1cGVyc2V0L2xlc3NtdWNoL2dyZWF0ZXJtdWNoL3By
ZWNlZGVzL2ZvbGxvd3MvYXJyb3dsZWZ0L2Fycm93cmlnaHQvYXJyb3d1cC9h
cnJvd2Rvd24vYXJyb3dib3RoL2Fycm93bm9ydGhlYXN0L2Fycm93c291dGhl
YXN0L3NpbWlsYXJlcXVhbC9hcnJvd2RibGxlZnQvYXJyb3dkYmxyaWdodC9h
cnJvd2RibHVwL2Fycm93ZGJsZG93bi9hcnJvd2RibGJvdGgvYXJyb3dub3J0
aHdlc3QvYXJyb3dzb3V0aHdlc3QvcHJvcG9ydGlvbmFsL3ByaW1lL2luZmlu
aXR5L2VsZW1lbnQvb3duZXIvdHJpYW5nbGUvdHJpYW5nbGVpbnYvbmVnYXRp
b25zbGFzaC9tYXBzdG8vdW5pdmVyc2FsL2V4aXN0ZW50aWFsL2xvZ2ljYWxu
b3QvZW1wdHlzZXQvUmZyYWN0dXIvSWZyYWN0dXIvbGF0dGljZXRvcC9wZXJw
ZW5kaWN1bGFyL2FsZXBoL0EvQi9DL0QvRS9GL0cvSC9JL0ovSy9ML00vTi9P
L1AvUS9SL1MvVC9VL1YvVy9YL1kvWi91bmlvbi9pbnRlcnNlY3Rpb24vdW5p
b25tdWx0aS9sb2dpY2FsYW5kL2xvZ2ljYWxvci90dXJuc3RpbGVsZWZ0L3R1
cm5zdGlsZXJpZ2h0L2Zsb29ybGVmdC9mbG9vcnJpZ2h0L2NlaWxpbmdsZWZ0
L2NlaWxpbmdyaWdodC9icmFjZWxlZnQvYnJhY2VyaWdodC9hbmdicmFja2V0
bGVmdC9hbmdicmFja2V0cmlnaHQvYmFyL2JhcmRibC9hcnJvd2JvdGh2L2Fy
cm93ZGJsYm90aHYvYmFja3NsYXNoL3dyZWF0aHByb2R1Y3QvcmFkaWNhbC9j
b3Byb2R1Y3QvbmFibGEvaW50ZWdyYWwvdW5pb25zcS9pbnRlcnNlY3Rpb25z
cS9zdWJzZXRzcWVxdWFsL3N1cGVyc2V0c3FlcXVhbC9zZWN0aW9uL2RhZ2dl
ci9kYWdnZXJkYmwvcGFyYWdyYXBoL2NsdWIvZGlhbW9uZC9oZWFydC9zcGFk
ZS9hcnJvd2xlZnQgMTI5Ly5ub3RkZWYgMTYxL21pbnVzL3BlcmlvZGNlbnRl
cmVkL211bHRpcGx5L2FzdGVyaXNrbWF0aC9kaXZpZGUvZGlhbW9uZG1hdGgv
cGx1c21pbnVzL21pbnVzcGx1cy9jaXJjbGVwbHVzL2NpcmNsZW1pbnVzIDE3
MS8ubm90ZGVmIDE3My9jaXJjbGVtdWx0aXBseS9jaXJjbGVkaXZpZGUvY2ly
Y2xlZG90L2NpcmNsZWNvcHlydC9vcGVuYnVsbGV0L2J1bGxldC9lcXVpdmFz
eW1wdG90aWMvZXF1aXZhbGVuY2UvcmVmbGV4c3Vic2V0L3JlZmxleHN1cGVy
c2V0L2xlc3NlcXVhbC9ncmVhdGVyZXF1YWwvcHJlY2VkZXNlcXVhbC9mb2xs
b3dzZXF1YWwvc2ltaWxhci9hcHByb3hlcXVhbC9wcm9wZXJzdWJzZXQvcHJv
cGVyc3VwZXJzZXQvbGVzc211Y2gvZ3JlYXRlcm11Y2gvcHJlY2VkZXMvZm9s
bG93cy9hcnJvd2xlZnQvc3BhZGUgMTk3Ly5ub3RkZWZdCj4+IGVuZG9iago3
MyAwIG9iaiA8PAovTGVuZ3RoMSA4MTcKL0xlbmd0aDIgODI5Ci9MZW5ndGgz
IDUzMgovTGVuZ3RoIDE0MDcgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUK
Pj4Kc3RyZWFtCnja7VJrUBNXGC2oIBGnKmoQRK9YBASSLBAiWNTwFDQBDLSg
tbpkb2Ah2Q3LBhLeDlghiI+q4APEB4K1WqujgNKCljJmrFVQiqUjUAlYH2kt
8hCqYhfQscWf7a9Od//sd75zzz17vs9uQajERYiR0TCAJGgXhIN4AV+RJArh
AYTDY9nZ+VIQpXGS8ENp6AUQT08ECFUxAOEDnsDLlefFF7DsgC+p1FB4TCwN
HHwdR0gCIFRACpeiBBChdCxUMBpSVA4kpBSHtIYDhHI5WDNyIhGsgYmQSoIY
h4UgAMOlNIiGMTjB4o44CiJkJBCMwZhK+bqVBKlExhRwYEw6AsYiRhJyDcCg
jMUVk8xdkHHyb5gaLx6gksvFqGJEfjSlt/qoApdrXjFIhVJFQwqISAxSxHjq
h3DMnAhiuEoxvhtEo3JcKiRi5BC4IO4cnht/rIEnBuBqiIXitDQWyFB5IhzF
IYGNt8LEN2qEu9I/ODQ83OnVXEeboShO0OEaJQS8N+zRGnlTMylRuBqs43F4
PIQhMu/rr/XjLvMnpCSGEzHAle8BUIpCNSxmg5iKD1IRgBMYVAOoZhxzOQRJ
M0cAE006kJEUa2SszDpxo5loIT2Cj0JuroDLCJHJcij7C+r2Ch2b7Aj89l/7
+JDqVBdXT+Di6cG4QBAPIBDw0/9OjCDwBBUM8gN8Ho+3xHUsBqmKoiBBj64b
k+jrWoYzU4BQDaWs1hZSujQnrqjyk88y/I82npjENRvSnXrQanopsjrjAI6l
S/gHwxbE0GUPD3ee31bPjm+yDJYu3WNBnZtTIN76cd8Ri5PntYfKI3dk8es4
P0rYmmxt4dRhJ/uHQfUJH+wt3txp7VVH6ffnLXRu7VuYqTM/iN33WXu09ml7
y5QZi9d8utjWStB63LTNaDZb0/bLrflPqjOLrnhLf/v+p9VBoezEAK19k2zZ
lOg+dKCLtV6W1NTkFHZPeLn5fmeyJfZ8WsjWunVqg02u7Ra7nm8l5ep+bYZ1
6u2rSlP2zdxHBYf700LMWHU2Pg1tjfU5Vzq527MCa21Wz9Xp3WKfWemcxIUz
Y3jtbsZn71XP+S6uK+LMaWTLy/umVscyBsvR+OKq3TZ+hpSEihrvpxHsgnTO
qsq9UY/LauqntNTMQiyWN7f6bh8qNRNfM9G6ilTnBwqrY7c94rK7f3W/1tIY
WKbPUrxjPqckLWx9FasgBA0YNim43N2e36BEUr6oCM5xfrFoKMpS1n/ogPhU
2irX+vlzLy55urNDvmkWOyXYOt9dOPg1Z97p1p6tjZWXZIOVpvzJusyyK/uL
J4TclRWLpzncq3wi29ch7rxrILcYJq7wjtX7Hw54/pFAyM/A86rinjQNlyQZ
1Zz6Y5fmtq1vSp6LSTbPMPVLlaPZpAfb1Sfp0g6/k4vDIsuqikNKBbX7+Gd2
apXPX34+lTW7sunSDcTCp7uhJ656demu6RN79Tc9jhhu+7fbLn/27uyIGxcv
KLkiXVa2ZVJQffNGk2rbmnP5lQ4lRV25y3s9PEs9Axf0pQcqHRuObxjebH79
xO5242Xac0b+8xIMtwhvVB/5gtQ26XVaRYJ9R+8OI9/pVur8io1YbejKeP6Z
sEKZfm54l7fzZsl7Aizb3NkpYV06J3WwfW2Koa15ws93/HRZC40tOHvuZNtf
zQwcCE4ZmoQ1+rF7tq0wTrPJNVhKZZcNHnk9job8fuc9UvR386gWc6evLpxo
LxqMwbzphG5R+eTdEhf7vfE2BZE1Z3N6N4VUDIIdx+N6k3R3NY/li2aYHhP9
YHd2AM57v7D4gE1RcnFWauqhZI+rJeplJdfrNmRZtz38xn15tJGkf2ZvC+8f
Pqz/Bf4TAlI5RCmaVKBUPOtPsxIIoWVuZHN0cmVhbQplbmRvYmoKNzQgMCBv
YmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNvZGluZyAx
NzcgMCBSCi9GaXJzdENoYXIgMTUKL0xhc3RDaGFyIDMzCi9XaWR0aHMgMTc4
IDAgUgovQmFzZUZvbnQgL0hFSlBUVCtDTVNZMTAKL0ZvbnREZXNjcmlwdG9y
IDcyIDAgUgo+PiBlbmRvYmoKNzIgMCBvYmogPDwKL0FzY2VudCA3NTAKL0Nh
cEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovRm9udE5hbWUgL0hFSlBUVCtD
TVNZMTAKL0l0YWxpY0FuZ2xlIC0xNAovU3RlbVYgODUKL1hIZWlnaHQgNDMx
Ci9Gb250QkJveCBbLTI5IC05NjAgMTExNiA3NzVdCi9GbGFncyA0Ci9DaGFy
U2V0ICgvYnVsbGV0L2Fycm93bGVmdC9hcnJvd3JpZ2h0KQovRm9udEZpbGUg
NzMgMCBSCj4+IGVuZG9iagoxNzggMCBvYmoKWzUwMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDEwMDAgMTAwMCBdCmVuZG9iagoxNzkgMCBv
YmogPDwKL1R5cGUgL0VuY29kaW5nCi9EaWZmZXJlbmNlcyBbIDAgL0dhbW1h
L0RlbHRhL1RoZXRhL0xhbWJkYS9YaS9QaS9TaWdtYS9VcHNpbG9uL1BoaS9Q
c2kvT21lZ2EvYXJyb3d1cC9hcnJvd2Rvd24vcXVvdGVzaW5nbGUvZXhjbGFt
ZG93bi9xdWVzdGlvbmRvd24vZG90bGVzc2kvZG90bGVzc2ovZ3JhdmUvYWN1
dGUvY2Fyb24vYnJldmUvbWFjcm9uL3JpbmcvY2VkaWxsYS9nZXJtYW5kYmxz
L2FlL29lL29zbGFzaC9BRS9PRS9Pc2xhc2gvdmlzaWJsZXNwYWNlL2V4Y2xh
bS9xdW90ZWRibC9udW1iZXJzaWduL2RvbGxhci9wZXJjZW50L2FtcGVyc2Fu
ZC9xdW90ZXJpZ2h0L3BhcmVubGVmdC9wYXJlbnJpZ2h0L2FzdGVyaXNrL3Bs
dXMvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaC96ZXJvL29uZS90d28vdGhy
ZWUvZm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9uL3NlbWlj
b2xvbi9sZXNzL2VxdWFsL2dyZWF0ZXIvcXVlc3Rpb24vYXQvQS9CL0MvRC9F
L0YvRy9IL0kvSi9LL0wvTS9OL08vUC9RL1IvUy9UL1UvVi9XL1gvWS9aL2Jy
YWNrZXRsZWZ0L2JhY2tzbGFzaC9icmFja2V0cmlnaHQvYXNjaWljaXJjdW0v
dW5kZXJzY29yZS9xdW90ZWxlZnQvYS9iL2MvZC9lL2YvZy9oL2kvai9rL2wv
bS9uL28vcC9xL3Ivcy90L3Uvdi93L3gveS96L2JyYWNlbGVmdC9iYXIvYnJh
Y2VyaWdodC9hc2NpaXRpbGRlL2RpZXJlc2lzL3Zpc2libGVzcGFjZSAxMjkv
Lm5vdGRlZiAxNjAvc3BhY2UvR2FtbWEvRGVsdGEvVGhldGEvTGFtYmRhL1hp
L1BpL1NpZ21hL1Vwc2lsb24vUGhpL1BzaSAxNzEvLm5vdGRlZiAxNzMvT21l
Z2EvYXJyb3d1cC9hcnJvd2Rvd24vcXVvdGVzaW5nbGUvZXhjbGFtZG93bi9x
dWVzdGlvbmRvd24vZG90bGVzc2kvZG90bGVzc2ovZ3JhdmUvYWN1dGUvY2Fy
b24vYnJldmUvbWFjcm9uL3JpbmcvY2VkaWxsYS9nZXJtYW5kYmxzL2FlL29l
L29zbGFzaC9BRS9PRS9Pc2xhc2gvdmlzaWJsZXNwYWNlL2RpZXJlc2lzIDE5
Ny8ubm90ZGVmXQo+PiBlbmRvYmoKNjcgMCBvYmogPDwKL0xlbmd0aDEgMjA5
OQovTGVuZ3RoMiAxMjg3MQovTGVuZ3RoMyA1MzIKL0xlbmd0aCAxNDAzMyAg
ICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42u23VViczbZw
i7sHCIFAGnd3dw3uwa1xaKRxd9fgEhwSIHhwCA7B3YM7wd3//tbae5G9/8tz
rs5z4IYxa741R8+qt6qhJFVWYxQ1A5kApUD2YEZWJlY+gLiCujorG4CViQWF
klLcCWgMtgLZSxiDgXwAVl5eVoCoiwWAjQXAysXHwcnHwYVCCRAHOXg4WVlY
ggE04rT/JHEDRO2ATlamxvYABWOwJdAOMoepsS1ADWRqBQR7MAFEbW0Bqv88
4QxQBToDnVyBZkworKwAMytTMMAEaGFlj8L8j5GsvTkIwP3vsJmLw38PuQKd
nCFSABqIJC0AomgGsrf1AJgBzVGYFUGQWkCIyf8bUv97cikXW1tFY7t/pv9X
l/6vcWM7K1uP/8oA2Tm4gIFOAAWQGdDJ/n+nagH/LacANLNysfvfo7JgY1sr
U1F7C1sggOXfIStnKSt3oJmyFdjUEgB2cgH+Kwy0N/vfDpC+/cuAWVFKU05d
jP6/FvRfg8rGVvZgdQ+H/8z6T/a/mPWVIe1xsnIH6LIwsbCwQhIhv//9l/7/
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
oDQbBY9bbD7lVp0JXRVjNtrx+6imnLjJG6mV7zhn93z1Lb1BjR0h47WNzCd0
2bylJxGiOE5G0vregmFK5QKKVvSx9fVOajFL/Q+BIKF3rF+oG2o7hFfo5SPS
24rfw5tNOLm6U4/eM699kqpZJoC9c+c9U9CJaPw1t9MhUK7fIVuOokjqycba
X/BVLveje1vtz2mNJnSjNM/kq5csL2KVrIM8zSpXbXqasjSXg6uhb1PnCe6n
yH8asEAF/TykhKrbVvi7jejigqYDHhEwSbM/emiF59Tenb5sTbEyTF1aH6+j
JzmHud3nwMU/msj/4ChHhULPldm/zJC4jbHTGRLqRZVC4t9NMofieNuRnv9b
+tr3OLbXCh7hUBE7evxHrGU9TxO1P2moVoh48K+DFHLFz9KZcuPteVa1X6e2
625NUucwhjaqSlpH3OUHNMmrUvSTYMWnFPUrJm8qSUwpchcNhxRaKS7VuT4o
faJvw4kNVLlmHU61EqcvYCFpudWFqkt26sqfLsOqfDKRm5k9gWKW6pZ2uGE+
JzAHLURd5McaBeZTIedH6BQ6DHQCp6ElnxC+ILhsR1/+ujSAjRG7Ue/E4NCy
kBdPHBAg403gllishP0ho6ym+KhI36WFqyMuLEXfJIDoBicE++6Ctzac00B0
NxdPVFtqwAnT9H4sUeUma5YHhi/xqRTTZLSHRMEoV0v5Xaki1vA7LwEWu0W+
QrJamymqIs2Pj3O4K5LbxObdQqO86XQRvykE12Yv+DikDIJGH6MWtD4geS0T
bJrAHm8L0Nb87qWan4nYxRFi0+3iSADWT1fcMJDG9S8KleB8ZRUk5LVerplp
x6jrn8wGCiE95lIGFzrFfnwf3wpkTYHP/ISdkWTzngMF9XuWDLnc+R8OtT9h
6AId0gjFSOCYGIb9xp3EpVs8xju0Z5tA1vx82SFeUoEEWG5r/MbRpMd3rps3
hStlJLejyBLrseA94Z8yjX3VGEVOcUh51HsqYSlLp2xxDNm7+bAUbo0D5n1B
9366TMX6uKqCIcjhsPIr1RoUKhcXoQs3UEOVX8nGbPL6KZwbJQiFfrPCx1Kt
2sfuNiWCMc/j8eyBbjWEK+KTe0bdWJfxUXs5moetamW0+sFyYF024TnwCZSj
jwRKy9FIy8cILG2a/BfO3cmsP3la6tKxM+6b8fjKxZoGiGz49aTHcn5E47b7
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
8RUDGJMlhdghLQ6AnIsUDUrpKBfOyR78Bc3NhvS4MEdUtOy39XMt5Z54IjF6
mhoOnBhRviK69A+2NXSnX9myjdTHbIvgZON2gEPfdeuF0NxKn4u0n8Dc3dFB
9OhY1E7CaygGVTEWx2JYvib5bExQskn81gstHd/TAJ/HSWCs20jtr3Y7Sint
kZOys3dTDEQZFgQbnxD6vdIsJwDmTJgm/MEk+qSTI8vovasTRtFnuHZfIl3S
qYCPz4k6dXDMDEjvrrVuREsEpu/Z+8+EQxGi7g47Lo0NUPcQAO6qUZ8N6Vw+
HpNMM2KT75Te67y//CqnR+kfzOi77WmkjzT9VSDdXhG+pqNZuSRmxUcqgnLi
DaEOJrMhicHADlNHY5XagaiODNu4OmcMWcZntPAP/cSF1k34jlxlND7F9FZr
AUH6uyhI2rxfcSlqVsvxfHlvsPlpjDaShgRPqaOul8Z1ayJYb+SYtesazdO2
WCMvklU6AjadBsP68QapJZeK5bC0bzSJR2QlSkalCrx1+uv0Dbt2PNLCKT93
EP24H6okUEsLbIr0pWOnmQxZSZ/Eip7/bI1bjqSVdfXMWYE31oZAY8TbAP2p
NDGXtjsFofWzcNIwsqVMtp6eZtmmI88noXhhZMKiNhOgdYBN36KYNJ5GutxR
+pI1JfKGr3oIDa1IP1vXetQYlP7ll6Xv7XbdnRj2zkqKfCmsHD81gYwO5vXu
4cl+KBk0NfKe/gB4ooop1kstI4ZcN6zoYuKk+AE7zfUO2F9PI99hkPJO0+AG
3tzd1xFpl7v+3LUJX+09aNKPgfedClw2mJkV0S4f1vcIgJ349QMN7rfpMpqJ
ydtO5gwASNzVYFQ+sbNU4xReoe10eq5huzbXt5JlfiDU0xNxuewIN4wJbQDl
gUPSk/LabBsGvXP5s7ZLtPFEyU8yvD0uEvGKp8xgt3u072V7jnZqj7HHwrIl
88ctq3ixS8iswUsxtnhCXFR6s6u2k3Y+Ki2aaLv7zNvNJ98ENJq70d6vWxVw
CP1Ch36vqctf5drqkK4Ka5NVHjEi7O7o8QG/urM5jVWUj+vwmwnpb0MsmD/j
FpoiFUpnCp2olgeO4bTsJqlPv/yHFpRKvw6s3CUUoekCruxQDhPfdm//QAgW
kDVqvusgk/0mj91Y6ctD9W72GKMMhQBrY66LQnSuwQw3LIqlq6Ks3IP7k7XF
UKeudeuVTmfJJ6ZmbSO275o4KreuAndEXes6ZPMSBNZ56rXSxjA2BdqhmAGS
UoWxSBummercjUqr9csdCoHCz+Z4jSaLW6y+ETgSm8GdhbrXIYEyew4YoZSC
X8R0Kyo15EdQpdrrGDiFe0ItmctGr0N/X0snsy1LfSTQwBu820mqp5pXLiqz
1KomazhmaR/1D5OkElGI7MK56ff1Fqy3yPJhdxW3deOLGtHiyq7PCjvsMLOw
6Tt4nhTb8QC4F4dU3MmAWdJGtR1/Jd1E12JtISKNdxLPIeNzRIuJGly9x57B
ldffLF7rG3ustex0FtC1fohD5bMNBVpYYA8odOmBbi2QCuGHD7p/fCTkVRRV
39u+F1alLnY0aMVIYuq002yQFsmrNN4gA7wH2LtSdaWH3bltvbz7raj9NdJX
PpGCb4n6g8PeUZliEnET9ZiH7de7E+KMh2Sh0Hsm2k2Kj7QMGvmreLCF2Wh/
CCiir6MLHP1HlyhugqT8xKJHE/PzanZ4p5LPB4jwo/PWC+YB7Qc2rEiIMFER
tYbfl3ajr3mesf8MXIzGadI7h5BWL0ipyEkv5eLzdg50xZgV0CmC5/31/HdX
HhEZr6uqnTNu1qPWcFdXf1zZbAv1xSW+xA+sg6NIK+mly7XfiB6T1PJFWm9j
oRsZDkxRQscXtOSinsxbSNBLDOKVUuFSPy6HBMvfZCnnd5++lfYfCHUeKrkN
JnlSqSGw+7TbMe5EFZCNwQ0rIJH0YEMyUrPUqP3kg/PSNNiKuEJ1RopKV2nI
tOE8Xu3Dq1Kpmh3T3MmRdsO7/6aFNYS4Ap66IYFx0yN7vQD8w+ggI3eWlYwl
8kCeZLDu51siWKJMaksmLY3AIxU08fCUEOg0w7L2GDEkjoANl9bc/QBgtJwI
PGIiLZJGdgbZ7Sqss/mm+xUJkr1Uwfp6xJt3PoPeynRiJJEVbQ2Ecor+qfNf
kJZMxPMiMDmZwu7NMvivuz3+BGhNXNkOkJWPwcN9MNjGfbJRzMSFTZm6NTGJ
+2DYcEWvK6dWw7FGHJmjVQztbfbYaEOQdFusAp9fN4VE+jtSF60XHmSJUuut
OW8Yo6Iq38zloWAitmYYM8eiLH2kSrmI0hNNxDndY4r+q9gyPaPzTzHIzDdM
hknYiz8TDi2nqmA6iDmbiJqxVDjckyiAbMQBP33C9ifp/YaRfNjjLjjHkhzn
qqX6Bt7SxPfNbLllqTFGyrsdE0O2Sn4rTY1jBUC0y0VNZUfqiQpMjrKtwX1Y
+HRYYyhj3Am5yeY6DZfK+67TN50MamQOU19pka0OTXRkOGjI3vctfwnE8WD5
f/iD8v9P8P+JCUxtgcZOYJCdsZMNyv8BZ3cd6GVuZHN0cmVhbQplbmRvYmoK
NjggMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNv
ZGluZyAxNzkgMCBSCi9GaXJzdENoYXIgMzQKL0xhc3RDaGFyIDEyNAovV2lk
dGhzIDE4MCAwIFIKL0Jhc2VGb250IC9ORlZKVEIrQ01UVDEyCi9Gb250RGVz
Y3JpcHRvciA2NiAwIFIKPj4gZW5kb2JqCjY2IDAgb2JqIDw8Ci9Bc2NlbnQg
NjExCi9DYXBIZWlnaHQgNjExCi9EZXNjZW50IC0yMjIKL0ZvbnROYW1lIC9O
RlZKVEIrQ01UVDEyCi9JdGFsaWNBbmdsZSAwCi9TdGVtViA2NQovWEhlaWdo
dCA0MzEKL0ZvbnRCQm94IFstMSAtMjM0IDUyNCA2OTVdCi9GbGFncyA0Ci9D
aGFyU2V0ICgvcXVvdGVkYmwvbnVtYmVyc2lnbi9kb2xsYXIvcGVyY2VudC9x
dW90ZXJpZ2h0L3BhcmVubGVmdC9wYXJlbnJpZ2h0L2FzdGVyaXNrL3BsdXMv
Y29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaC96ZXJvL29uZS90d28vdGhyZWUv
Zm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9uL3NlbWljb2xv
bi9sZXNzL2VxdWFsL2dyZWF0ZXIvcXVlc3Rpb24vQS9DL0QvRS9GL0gvSS9K
L0svTC9NL04vTy9QL1EvUi9TL1QvVS9XL1gvWi9icmFja2V0bGVmdC9iYWNr
c2xhc2gvYnJhY2tldHJpZ2h0L3VuZGVyc2NvcmUvYS9iL2MvZC9lL2YvZy9o
L2kvai9rL2wvbS9uL28vcC9xL3Ivcy90L3Uvdi93L3gveS96L2JhcikKL0Zv
bnRGaWxlIDY3IDAgUgo+PiBlbmRvYmoKMTgwIDAgb2JqCls1MTUgNTE1IDUx
NSA1MTUgMCA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1
MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUx
NSA1MTUgNTE1IDUxNSA1MTUgMCA1MTUgMCA1MTUgNTE1IDUxNSA1MTUgMCA1
MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUx
NSA1MTUgNTE1IDAgNTE1IDUxNSAwIDUxNSA1MTUgNTE1IDUxNSAwIDUxNSAw
IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUg
NTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1MTUgNTE1IDUxNSA1
MTUgNTE1IDUxNSA1MTUgMCA1MTUgXQplbmRvYmoKMzQgMCBvYmogPDwKL0xl
bmd0aDEgMTMyNgovTGVuZ3RoMiA4MjAwCi9MZW5ndGgzIDUzMgovTGVuZ3Ro
IDkwMjYgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja
7ZZlWFv7tu6LFXeXQnArElyLu7uXhhA8WHB3iru1OBSXQnGKFPfi7lakQIsV
57LWPmu3d5+P9346z0m+5DfGmO/7ZvznzBN6anUtNglzBzOIrIO9CxuQHSgE
kFLRVgByAYDsnGj09FLOEJCLtYO9NMgFIgQACgoCARKulgCgAIALKMTJJ8TL
jUYPkHJw9HS2trRyATBJMf81xA+QgEKcrcEge4AKyMUKAn3SAIPsAFoOYGuI
iyc7QMLODqD51xUwgCYEBnF2g5izowGBAHNrsAvADGJpbY/G8VciBXsLBwD/
v8rmro7/tNwgzrCnUACmp5DMgKeI5g72dp4Ac4gFGoeqw5MX5CnJ/49Q/yku
62pnpwqC/iX/95b+Wx8Etbbz/K8JB6ijqwvEGaDiYA5xtv/PUT3Iv8KpQMyt
XaH/2VVwAdlZgyXsLe0gADYgDzsnz7/q1jBZaw+Iubq1C9gKYAGyg0H+rkPs
zf8zydP2/s7BoaFkIKmgwfpfx/p3Ux1kbe+i7ekIAXD+nv6bgb/5aUnO1h4A
I052Tk7g0+DT+59PJv9hJmMPdjC3trcEcPHyAUDOziBPNM4nKS5eXoA3EGBt
bw7xAEA8nhJzsNs7uDxdAnjajC/AwsEZ7a9TfYrFYWH9V+1v5BYAcICgjk9n
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
IQOK2sWH6HWnP2w3glNKMcJIYq5N6j6QXD1TyyUpgrnnGXiYreqhq4x/AhBL
2VYhC/Bp5ZavwyHf0iv6gRHL6amlju1pWDgymjmVZxSbsedvTvk4N0Ikt5M3
GZKHzYvPTD+W/aCjYjljtfZWY9I8kxpgOKIa6+E//XG3UD1bQPOs8JOGnlfb
VaRZUwnT67xUV5ZrJ0rZfjbmrWCk8Wi84Cq5K0FNHCPbEJWyPGokDxXZeXFW
cJFE5XNxzLGVaXiUgCG+pXBN3xXcji+5mxsfdRoRgC1qB85Nxtrc55jKMkma
885oBJ1lyQxFKLJpm3KV3pu3ZatsyMVkpbtSX0QT609dHV16Y9FMotc2E9Ou
YQrUwyYsvU5iZusyUi0+xTUzcKSdkEM7o33io+YctnkafgVXg4/9xUH9ZIpF
rPu0wiwGmHAFv3ga3O3qEeFn8UT24HGW1zW6lr9Br2NonRJdJUSXk4s1X1xA
ruRIKQ/NEt475efvOgnk8mApP4ZQp120odpMZql7FryvLof42yRZGu1y/j++
0P5X4H+EANgOAnJ2cYCCnG3R/g+mIREIZW5kc3RyZWFtCmVuZG9iagozNSAw
IG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0VuY29kaW5n
IDE3MiAwIFIKL0ZpcnN0Q2hhciAxMgovTGFzdENoYXIgMTI0Ci9XaWR0aHMg
MTgxIDAgUgovQmFzZUZvbnQgL1FLWUJJUStDTVRJMTIKL0ZvbnREZXNjcmlw
dG9yIDMzIDAgUgo+PiBlbmRvYmoKMzMgMCBvYmogPDwKL0FzY2VudCA2OTQK
L0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovRm9udE5hbWUgL1FLWUJJ
UStDTVRJMTIKL0l0YWxpY0FuZ2xlIC0xNAovU3RlbVYgNjMKL1hIZWlnaHQg
NDMxCi9Gb250QkJveCBbLTM2IC0yNTEgMTEwMyA3NTBdCi9GbGFncyA0Ci9D
aGFyU2V0ICgvZmkvYW1wZXJzYW5kL2h5cGhlbi9zbGFzaC9BL0MvRC9IL0kv
TC9NL04vUC9SL1MvVC9hL2IvYy9kL2UvZi9nL2gvaS9rL2wvbS9uL28vcC9y
L3MvdC91L3YveS9lbWRhc2gpCi9Gb250RmlsZSAzNCAwIFIKPj4gZW5kb2Jq
CjE4MSAwIG9iagpbNTUwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgNzUwIDAgMCAwIDAgMCAwIDM1MCAwIDUw
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNzI3IDAgNzAw
IDczOCAwIDAgMCA3MjcgMzc3IDAgMCA2MTMgODc3IDcyNyAwIDY2MyAwIDcx
MyA1NTAgNzAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDUwMCA0NTAgNDUw
IDUwMCA0NTAgMzAwIDQ1MCA1MDAgMzAwIDAgNDUwIDI1MCA4MDAgNTUwIDUw
MCA1MDAgMCA0MTMgNDAwIDMyNSA1MjUgNDUwIDAgMCA0NzUgMCAwIDEwMDAg
XQplbmRvYmoKMjggMCBvYmogPDwKL0xlbmd0aDEgMTUyOQovTGVuZ3RoMiA4
Mjg0Ci9MZW5ndGgzIDUzMgovTGVuZ3RoIDkxODggICAgICAKL0ZpbHRlciAv
RmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja7ZRlXJRd9+8RpFu6h24YGBqkuzul
GWCogaFDQBi6QRppJARpkFJCUEoaJJQuhxIkBIEz9/38n1vP87w859X5nLne
zHdd61q/31577c3KqGvAK+cAtQMrQz18eAX4BCQAClrypgKCAAE+IA4rqwIM
bOsDgXoo2vqAJQAC4uICADlfJ4AgECAgIgESkhAWwmEFKEA9A2EQJ2cfAIcC
519JogA5dzAMYm/rAdCy9XEGuyNr2Nu6AQyg9hCwTyAfQM7NDaD/1xfeAH2w
NxjmB3bgwxEQADhA7H0AdmAniAcO/1+O1DwcoQDRf4UdfD3//coPDPNGmgJw
IE1yApAWHaAeboEAB7AjDr82FKkFRjr5v2HqP4sr+7q5adu6/1X+7y7913tb
d4hb4P9kQN09fX3AMIAW1AEM8/jPVBPwv8zJQ93+S0bNx9YNYi/n4eQGBgD/
FYJ4K0MCwA66EB97Z4CjrZs3+O842MPhPy0g2/a3AX4VQ215NQXu/9nPv1/q
2kI8fAwDPf8p+1f23yzwm5HdgUECABZAPiBQAJmIfP79z/I/xJQ87KEOEA/k
QAiLAGxhMNtAHORkIEkYECwAgHg4gAMA4ACkY34+D6gP8hMAsiVPAY5QGM5f
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
Ue6T2axQ+Jy3Wco0DDHdv/oIfWQPwaR4tM+aVrKS5Cy7t09QfBzzetYYOM2N
u8gYpTGqDWGDazweaC14Kg/jJrDRlHNipzWiUTf+UdLyqC4NmM+MuNfJ+zrS
bqrivKfa0Qg/o7jwYZJy1xT9IHf/SfODaLtuuby00G1EoviC92j0lzb63uUv
ggW++yIdpNuEZJFW9Y8ldOmewG5J3orjoGXjWsnlNw4piXw1yggG1zWxe1P0
FTbt/5idDlpgyoyUUea1EddTja9uXOapVWy67f95tQwq9YrmZ0x/TYjBndjI
T0Fc28ZDc9VmAzIAWPq1658Tw2JjQ9O+ntun8BFgiSoTG42Hj7f463rWSNAV
G3+deJwrlpw8c759yf1lSiXXu++QOxOPNGMhXgqrQXomKNjgVbGP6rGF6Gi5
Ca1L00SJIKfRgTRG2/uH0C+m3EuT33kOx900xR6ys03FxyJQw0aIWFUvHtr6
amAmMH7mtXe+uJZ0L4KbojLcVOK1iqbN4bFiDSwxPdCi/zntrtDsOKI6xCI6
EtUkFZV+gWtPLlQnjOsHkIYUsm1ldvQlN2EGhj8cvbPvYlgQdFmHvCbD5JKq
lUu5LmXOySQNFuGACH82nF5SL2ClAd7IugsLVBT3SNnmIoZm9F74R/IY2X7X
UCjHjmiofbl3Zp1Yc3yLTzWpQ11rDeqLmx5ulXKM1qAUyXxY1rUq+22n6B5A
6o+OIaJqJ3s7ppXTgmnaoHO4480yml/KRrVKDkhkiT0uCYun33tK+TLhi1nT
kOJSKqkXDPuJFdPqz7S9ykXN8ztdmXgKLf1WSieMz5ZMbpv7ZIqPTIgg2sQ5
ZFbzWTW+QzZ34HndYc8GqeSpue4q+6jx5ITImZkvYfrYoptiqepBR9ukLybj
CmQvYwIZm3ExPj3OAOpcRdyJ2pfsfJGGW6RA6KxGms5Evb51FlTbu1X6MGpw
g/e68Xx/nC0lyjBuNlDIDJ8wRRfwZK/4JEYyBOOelbMYxGk59T2jV8evCUVs
9Cs3LL2P4BIJ/nG3QOvUpcePuXharxUa9qDo4euXXFpEhDktY0DsZwcHaG6j
RUMiLwm2Dn5Z9AESb1hF7CLU1AI/QlahTjS5iC38ciw77R6haRtEGftoA+Op
olQtXvnkzrZU3OYJyUI6ah3QfX9Vf/ZAqhds5pWU8SvsfTdmc0kOhvaFS5FL
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
5gNu7p3cRdoufhLuMNOaKuPBJRN0Og+gMlkVKDoyzJO+DQwKVJ+wtF8qxc59
/cYREGbz/sFXrloqVRDJGdGVvAt+czeH74qUWtZ5x12YbiuYenaCcakq3DFf
Ig5UHTpduPIaneLtaYVioBNcHV4wWLXsZDqk5KM1F6BMgX4FtSei6FgL8d6J
AJYRxeqQZEBSWpLsNbE4JZz8n101sG3h0zmq2CSPmGj7tQq7PSuXz419qP7e
NNjCCuU2sMZjZlbr5LgCNyG+Ge91R6hjILkXhYv49LQKNipr4Vj6IcPB3QeZ
EUrtTRYyNgqasJku+4I+iyhib7u1+SAFqq4sQH1vYhjKW9R9+hSjrVcJKQOy
9/4uKt413yth72XZbmJYah7E+nehm1VLtV9rc+fl5CqkbIYd+NkGtmxdBnsz
MA15+SR9mmYJSZh69FqGYrUF3bdHVFji6s0QcR979ams3cT4fC3gcB3eIQRo
ihFfQBPQPcmEw5q0GFuTJCKdm1K87EFfmC/ILepO98xDf2WU1ik5rrl+T1rj
zc50LiYnb9Rs282fFKfZkYnmbpD67p1yJWarrFLZQBolJr7/qd6YJJxIoDtZ
uhd6eEL2MoyC2wSw00F+ACLC8A8bWkvnkqL1DzYzftVXUJzcuUO9BWMOcn5A
6quHwW1isXr3OMFxJ7Qk2CL/orEoDnC+j+lzIl7wqV1SRavX4+7GASSqN7Po
8sAjLwFszUQ5Yn6fWvBtX27x9smZOq6O0syK9HXeUOhksjth3SrPm8Wo8bjY
gUvg/+EP5/8X+H+igL0b2BbmA3W3hbni/C+u5zubZW5kc3RyZWFtCmVuZG9i
agoyOSAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0Vu
Y29kaW5nIDE3NCAwIFIKL0ZpcnN0Q2hhciAxMgovTGFzdENoYXIgMTIzCi9X
aWR0aHMgMTgyIDAgUgovQmFzZUZvbnQgL0dUTkJJQytDTUJYMTIKL0ZvbnRE
ZXNjcmlwdG9yIDI3IDAgUgo+PiBlbmRvYmoKMjcgMCBvYmogPDwKL0FzY2Vu
dCA2OTQKL0NhcEhlaWdodCA2ODYKL0Rlc2NlbnQgLTE5NAovRm9udE5hbWUg
L0dUTkJJQytDTUJYMTIKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDEwOQovWEhl
aWdodCA0NDQKL0ZvbnRCQm94IFstNTMgLTI1MSAxMTM5IDc1MF0KL0ZsYWdz
IDQKL0NoYXJTZXQgKC9maS9oeXBoZW4vcGVyaW9kL3NsYXNoL29uZS90d28v
dGhyZWUvZm91ci9maXZlL3NpeC9zZXZlbi9jb2xvbi9xdWVzdGlvbi9BL0Iv
Qy9EL0UvSC9JL0wvTS9OL08vUC9SL1MvVC9WL2EvYi9jL2QvZS9mL2cvaC9p
L2wvbS9uL28vcC9yL3MvdC91L3Yvdy95L2VuZGFzaCkKL0ZvbnRGaWxlIDI4
IDAgUgo+PiBlbmRvYmoKMTgyIDAgb2JqCls2MjUgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDM3NSAzMTMgNTYzIDAgNTYzIDU2MyA1NjMgNTYzIDU2MyA1NjMgNTYz
IDAgMCAzMTMgMCAwIDAgMCA1MzEgMCA4NTAgODAwIDgxMyA4NjIgNzM4IDAg
MCA4ODAgNDE5IDAgMCA2NzYgMTA2NyA4ODAgODQ1IDc2OSAwIDgzOSA2MjUg
NzgyIDAgODUwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTQ3IDYyNSA1MDAgNjI1
IDUxMyAzNDQgNTYzIDYyNSAzMTMgMCAwIDMxMyA5MzggNjI1IDU2MyA2MjUg
MCA0NTkgNDQ0IDQzOCA2MjUgNTk0IDgxMyAwIDU5NCAwIDU2MyBdCmVuZG9i
agoyMSAwIG9iaiA8PAovTGVuZ3RoMSA4NTEKL0xlbmd0aDIgMjc5OQovTGVu
Z3RoMyA1MzIKL0xlbmd0aCAzNDA3ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVj
b2RlCj4+CnN0cmVhbQp42u1SeTyUa/+WrCNrjtRUHiIiZgYzluzGloylZAuN
8WCYhZmxr9lLKeSQrRAnIVkisky2QrKF7MoSLWTJFvpNznve8/7O+fN9/3o/
7/M8f9zX977u63s91/eWEDU7L6vtTHYC9ckkmixCDqEK6JroWCPgAEIODteB
SEjoUkAsDU8mobE0UBVAqKjIA/qgE2PB+FSRiqpwFEQC0CV7+lPwrm40QEr3
1E+SEqBNBCl4HJYEmGBpbiCRoYHDEoDzZBwepPnLAdoEAmDx8wQVsACpIMUH
dJaDIBCAMx5HA5xAVzwJAvvpyYjkQgaUfi87e3v+seUDUqgMU4DUns1TAMOk
M5lE8AecQRcIDENmdAMZXv4Ttv4qru9NIGCwxJ/ye0n9bR9LxBP8/8EgEz29
aSAFMCE7gxTSX6lW4O/mdMiEv7UxomEJeJw2yZUAAvDfS3iqPt4PdDbD03Bu
gAuWQAX36iDJ+a8WGMHtGYDZGpmeNdeR+cdM9zbNsHgS7YK/5z9lf7L3MOJP
zEiHgvcD7OCMeBEMIuP9Y2X/l2Z6JBzZGU9yBeSRKABLoWD9IYzbw0BIIBAB
4EnOoB8A+jEcw+RIZBrjCMCIJBhwIVMgPweKQgIw7Z+lPcSYEAz7J1IGYE5/
IhUAhvsnQiAUARjlXyBDh/ovEAXAaHvw79Ho6JD9AmUVGL8jK4+E/+QqAiqK
qOD/z7Qk4b28QSM0gITD4Uoo5b0qzptCAUm0vevIyP0P7IJnTAkE/UAcZGiA
jDsT6Z5SGV0Qopfb/ZBVep+Oa9UtTDm9r44r4m3CPkJ+u7GX9HiZ9VZh2kGe
WdZZEd9tKPVabZB5p/7iFa9bqf27sz6XZ9MCqqHWy2km/jOeYusRn3ifVb5Z
/YzcZ9o73lFw2+Z+S+bX1k/ZZlLoCx/YR0WZntv5VDxPj0QpWeunESxjospO
Koha8KV6FcQqxoz58t1OZBnrighxj+F4KjOyRK71FtjK5biXtOvItIlji4uj
HokdpHFxD3+BaoYHV09UKMmqIBujp7I+FN2tLHjy2gT2CEqfsZ2U2dbX9fOt
Xrt0Yqqm4vjWFHqsrRCq1kHHht96q/7i4mZ//W6HsOzjqTspy85vOOrYyWAe
T8jttpc3ItPK5gHWrlyhos6EHxZniylOpfvNW3hqum9WdFr2TuHX5lAvT9sI
sb2beaE5rpnb3ktpDSI06FaSp5+6BpcsZCfG6txg3y1dZYI+dAsoJo5My3th
/DO2jN5mZ0utyMVJsYrXhmkvzWJea51vvgv5jE/zfirJJHc3OZxYvqarcDMq
jJ8pXuHa1VvAr6I+XS75cqqLLMSEl9djxh+rzb6aMK00v8PLE91D41wS9VV3
851gipoow+fSA/JdWA7X8fKstKjnIOKyoyHlGKma1jnZkaO6M4Bq20SiL+dN
OR36et3+1iEup8x5X7i4XXz81f3VYmap7BmWuSEYm0fSWahKxbs59PTSb6u6
GpjFFw6aqfBPHA4h5PqTLkW2Ktdll6XYpLvutl+8qAL5JSLo7J3PSlpvqV2L
cuJx6PaD+km/hduYdONlTBpEhJo7P+cnNvOgd+rXWfj4hWvPW9ktSyI+rHv5
KxZ72TadsUf5V0W2aenPdqpB3vL0rF08WYpR6BomlYXbN6O3nDgv31DxwQWM
ZFA/qUo5qa9bN1rSBrWU7U6r83G4f7p1VmHMZ/h0c0OI0iZ/SOaVvsVhgf66
r2w0s5YHeSo2dMuWAY5Qkdnv9hFsS+Rir8JUHLAkdlurVbXDMQej3fVJoLE+
p9HBJneTkFd1z9hq2eAY6lvFcRxudHF5YjcB8RUtYB1JTUpU0PhF+8rFhbnx
xMVzh1x19sPmYlNVvO1vhB8d3NgquSbWGHF4PVGo9c2FB85X4+c34COOCpSn
q0H6JksZ+KLyWlaX98sOoUuGZZ051QeexKK1Vp07rU5ZSd3XtsG9gtJxdvWr
cwLtDjx+YcgYdVYsOZDXHd7nURb1IfnSTvR+vSVisnQDLFiSeQQpy0FDywC0
qKyKpIO1ku/Ygp2oTs6Z4XlNecEtLNAjB3dgDzJjzA6/V0OAEImOhdZqNatL
KM1Hos4+RXWdu9txgb1nV49ZHiaufYdJTcQq3jGoMDRXC4mQq16xk1qMbkQo
4Myfb6QVFIpcZ+4eRdJIKY1l6QHoLprw1eFJCdy363qaeo0I0bttlGB7g0AJ
EP7GSPrD9FRHAa/ZXM2mrkPDxJXMggURsuu9AXvkVPciTtIYC5Xwdsb2Nixs
NPQffKzMmfS0XxrUH0ihDgT8QreZfZDxUJIiJMF5htXwMhPxI+Dm6HBKqc3O
rDsIJ1RIj0xeRKSjNqZvdg8bwsJ7h668gAzL6ftwoDCtzj3mte93vnnV4LYT
CZ0UVlnTiCTV5Cj6pMJrq0TJ73bv++NZwtBPnrnhi7fl9r8oYpP1zKAHx+v6
DlqyFRA+HyrgEalfm/K98Q6SwKtIwPSpe2uSmmRxcXVFLUeXT/j3npNmD1NQ
Le+wxZ4WVIZqVk3LRUIF1J7VEBToYZutfZ4FIqfut1OMUzlZZObLvnxEEUwO
bRzwP9E28emosMk9uopH+aNI/Z6dwRe4FHbieIlpaayKEfPH59UCl4UomjXF
ksUJzeeklvr9UzOvn7F37xEyMDOFEZSX/IjlbeMyA+3Mg2jznTWhY53mnkSn
8oh32fNfh0KT/X+MRhrwNQ8t1DqyxHHwP11pkKnRa8sLCZQ0rOOV4D8Ta5LT
Y0MS3H6xK2MRy7Y6AK3M78NElXw7rBmo4j7v0D7gHdMipNDBKyAf+ISEavmw
uKkbHNZYrnQ/TKOYbD5lYButXKZwwQ6nUfhR7kFmUN896o58dsvEAmZQS/aV
3OnmIpVfD5dR8vRIVEc+tJvD189x+Y06/fdOAedI8oPhJ7dV5sVgAYOhQlKS
YTdTX1dpVaXWPAx8Cuaq00LTc9V+cIZxpeWbc+H73fxnxejDtyCdLyENRsM3
vyo955u+6pgVahyu39G7I1WUoH5mn0HLFcXjeW7wEqPuKreQsB7R+ywnxG6c
6l+WviuWoFkTU+qorQtLTl94GzlyNKkyeNpSpmE3su09ii1itEKNx02EU48v
RvcZ6N1B5Ww86youoZDZbdHK85w9DoJ1lyxcCBFPKTGUelH3xDsv7jJ8mydq
PHLUO7waYpFbfXL/0HSVn4rkw+jpKOlBVVe/hdEm8aBnJOiz6NYTTdLzOmq7
GV9LrwDWhEMOtYZDCFI+T2ne1G4TTOj46Kb8aklAjn5Tw9wPbi814ie3N63T
r2IsJVnbxk4+5Jz1Gzz6KNYzXtjCdPrZj6RUeyPB5oPMWkKHojWyPaMDAiMb
SyhBuOS1JMFE1orH15d/fC5JUC3emNtdYMq8M9U5MBcyhjKbCvxiXGhK/zBg
JNPxyi5whoci0j5frB1Z5AeJ3ZkX8zwxQh/gNsiGUxGd865PlA2sB4LdiiY+
+Ci9HnTjW6hr+FYfqEEZG3cY3j7AL5v5nPV2etqK7hqkibYUcA5ZWtOWtjSX
sjqZBLUyxive0JFPf2AIag9d9X1+3eYw9jT/7VfcNd2qEoJ6REj65ckoLg6Z
4xrFUd/W1+/NxX9oyjMQ9s4ySOjMiucFM5bFFAS/vjnxy5Hha49zA5pc73Kh
0zyu8vNvcDmCZCguPZuqgYXJtB4v2754LNSK3XLYuAk6YsWWej731CaxKp2r
Va7p3Ng4mvfquoztPg6MAzIi7IED95uMmU/cslHGAdYcnTvB3KRZu62CEynn
A6SF3w6xibFtKcUVralKP3ZgC9MUh4Vyo6uGvvDEBfMoy7snWlDZGiaRCVCt
UIxFLh31zHhqpbha+Uh+gWBcvY4uMcOjEhV04clTiibRHaFZSgeazqrnAcyS
7xfGJ8wmPyZ28k/7oK993Hof01MI6xCLNbc1+u0h4VCIFobT1LRmzCznRhZd
Jg+RWsC9BYXIX2CNQcUKLOBnXkurTw+HTGfuE2++xUne7Xj3EgMGIdpXNpEP
Ld0iUNgvXQLd7PH5imvH1rbH0BoFt58kr/VS6xfwxiVQXD1T7xX7lcdp5iBX
wv4mj4hfg4LPZ5dROplFay/GulUIS37GslgcwBRdsti6oeWZhP/OJdTqKoIj
c4XuQ036ujgqQ658Z1581IOvHS14WhobYWDb/JqqZ2udOM/Nm2tT5Zdn9xY5
usAXHsvDzhyP/U006OiGYlqxjEyXW0sWbSJX+qFWuHGbwc3Kch6gfub6faa2
uY2sGHsPGeQ1QoLHpPWKOgqp9E5cc4V/qa5cZUhbhX+rfmc4KOdSoE/S5XJk
8hn+6AVxuLgm1BzqIaIlVHATc3HmZiivx+1LNo94t5TY7tdyVN+yq4r35B4+
tFbLf+xQdqyGo0GkhxK7ld4L7LcO3HU/r7KiPscRJgNlPQ/HRTERFq9D7/jk
hn0FWQ4cOWp4l7NPBCGurH025hnLgGCCy/CBGOHuA+pB6XENB6ozR+SbS9fX
YLKZKR9zDLusAtMMFrSY48wHlIrh/+YD+Z/Af4UAjgBiKTQyEUvxgPwfW6nX
uGVuZHN0cmVhbQplbmRvYmoKMjIgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1
YnR5cGUgL1R5cGUxCi9FbmNvZGluZyAxNzQgMCBSCi9GaXJzdENoYXIgNjUK
L0xhc3RDaGFyIDExNgovV2lkdGhzIDE4MyAwIFIKL0Jhc2VGb250IC9aSU9K
UUIrQ01CWDEwCi9Gb250RGVzY3JpcHRvciAyMCAwIFIKPj4gZW5kb2JqCjIw
IDAgb2JqIDw8Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjg2Ci9EZXNjZW50
IC0xOTQKL0ZvbnROYW1lIC9aSU9KUUIrQ01CWDEwCi9JdGFsaWNBbmdsZSAw
Ci9TdGVtViAxMTQKL1hIZWlnaHQgNDQ0Ci9Gb250QkJveCBbLTMwMSAtMjUw
IDExNjQgOTQ2XQovRmxhZ3MgNAovQ2hhclNldCAoL0EvYS9iL2Mvci9zL3Qp
Ci9Gb250RmlsZSAyMSAwIFIKPj4gZW5kb2JqCjE4MyAwIG9iagpbODY5IDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgNTU5IDYzOSA1MTEgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDQ3NCA0NTQgNDQ3IF0KZW5kb2JqCjE4IDAgb2JqIDw8Ci9M
ZW5ndGgxIDIxMjgKL0xlbmd0aDIgMTQyODgKL0xlbmd0aDMgNTMyCi9MZW5n
dGggMTU0MzEgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0K
eNrttVVYXM22sItbgrsEGgju7u7uGhwabdzdJbg7wd0lOMHdAsE9uBMIrn9/
a++9krX/y3OuznPoG95Ro6reOarmmBSkymoMImb2JkBJezsXBhZGFl6AmIIq
CyuAhZEZiYJCzAlo7GJlbydu7ALkBbDw8LAARFwtAKzMABZOXjZuXmYOJAqA
mL2Dp5OVhaULgFqM5p8kLoCILdDJytTYDqBg7GIJtAWvYWoMAqjZm1oBXTwZ
ASIgEED1nxnOAFWgM9DJDWjGiMTCAjCzMnUBmAAtrOyQmP4RkrEztwdw/VfY
zNXhf4bcgE7OYCkANViSBgBWNLO3A3kCzIDmSEyK9uC9gGCT/zek/vfikq4g
kKKx7T/L/1Ok/2vY2NYK5PnfCfa2Dq4uQCeAgr0Z0Mnuf6dqAf/LTQFoZuVq
+79HZVyMQVamInYWICCA+b9CVs6SVh5AM2UrF1NLgLkxyBn4rzjQzux/S4Dr
9i8FJm1RcXV1Dbr/Os9/jSkbW9m5qHs6/HvVf5L/xSx/GFwdJysPwCdmRmZm
FnAi+Pc//+n/r70k7EztzazswBeCgxNg7ORk7IkEvhlg4gB4swCs7MyAHgCg
B1iYidHO3gU8BQCuiS/A3N4J6Z/jBJ84k/m/Yv+FrGC0+oNsYAT9QfZ/kv8a
5gEwGZuCS/zvCBt4Ang3kLHtnxB4kqOrvQvQzAT0X7fh3yM8/z3yn2F2ZgCT
g7ET0A4ENP8ryvLf0f+VDF7d1N7W1vhPhAPAZOnpYAm0+xPiBM8F72Jv9ifE
BWByBhk7W/6JcAOYvIBO9n8CYD17uz/PxgH2cnH/M84BNnKxdAL+lfFP9exd
nf4E/qmfldtfGWBdZ/DJ/pvBss5At79cwafIBPyPR+QAq9pZ/S3C/c8zg+z/
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
dnFWgBfx+bnvRxlTzJsT9QWouTD8SC2kTNz9WgfV6sQtHoBNelMd/zvaSm+d
n1wk2DFvV7d0SzVFpS10PBjdsg+fyYv3xnPfoPLjoAkPeJ+Xtgc7Ae7q8Ewe
36FW40xbUQrlB/RSyOwUGCym2w7g6xdt8WpJd7/WleT6MuHvdEzGJajvBzIr
CtXWao9RpVOJnYJs4MkYVX+TTdCi/PTqJE5j42bfShJt94rTMDWsUi3AXHXo
XMzz8PJs35h6CQ0w7hNQt9Th1WqMW/Nv1YZLRb77VH2fNtyZL5NjmpIdm6ry
ijcHt4UoQM1ykODMSgmin5CA+o6VpXr7jEJId44JtbIXxHOkHJ8fOlZsz7Y3
/y1bTHr5jb65P2gSn8aOuVL5d3YNvUMn3a3JUaD1mMcRUU7OFXyZSRIXi9KT
ZDWXqELH0IfZzl4L5v+Hf0j//wL/n1jAFAQ0dnKxtzV2skH6P76+yH9lbmRz
dHJlYW0KZW5kb2JqCjE5IDAgb2JqIDw8Ci9UeXBlIC9Gb250Ci9TdWJ0eXBl
IC9UeXBlMQovRW5jb2RpbmcgMTc0IDAgUgovRmlyc3RDaGFyIDExCi9MYXN0
Q2hhciAxMjQKL1dpZHRocyAxODQgMCBSCi9CYXNlRm9udCAvWEJEVFRVK0NN
UjEyCi9Gb250RGVzY3JpcHRvciAxNyAwIFIKPj4gZW5kb2JqCjE3IDAgb2Jq
IDw8Ci9Bc2NlbnQgNjk0Ci9DYXBIZWlnaHQgNjgzCi9EZXNjZW50IC0xOTQK
L0ZvbnROYW1lIC9YQkRUVFUrQ01SMTIKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1W
IDY1Ci9YSGVpZ2h0IDQzMQovRm9udEJCb3ggWy0zNCAtMjUxIDk4OCA3NTBd
Ci9GbGFncyA0Ci9DaGFyU2V0ICgvZmYvZmkvZmwvZmZpL2FjdXRlL2V4Y2xh
bS9xdW90ZWRibHJpZ2h0L3F1b3RlcmlnaHQvcGFyZW5sZWZ0L3BhcmVucmln
aHQvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaC96ZXJvL29uZS90d28vdGhy
ZWUvZm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9uL3NlbWlj
b2xvbi9xdWVzdGlvbi9hdC9BL0IvQy9EL0UvRi9HL0gvSS9KL0svTC9NL04v
Ty9QL1EvUi9TL1QvVS9WL1cvWC9ZL2JyYWNrZXRsZWZ0L3F1b3RlZGJsbGVm
dC9icmFja2V0cmlnaHQvcXVvdGVsZWZ0L2EvYi9jL2QvZS9mL2cvaC9pL2ov
ay9sL20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kvei9lbmRhc2gvZW1kYXNo
KQovRm9udEZpbGUgMTggMCBSCj4+IGVuZG9iagoxODQgMCBvYmoKWzU3MSA1
NDQgNTQ0IDgxNiAwIDAgMCAwIDQ5MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDI3MiA0OTAgMCAwIDAgMCAyNzIgMzgxIDM4MSAwIDAgMjcyIDMyNiAy
NzIgNDkwIDQ5MCA0OTAgNDkwIDQ5MCA0OTAgNDkwIDQ5MCA0OTAgNDkwIDQ5
MCAyNzIgMjcyIDAgMCAwIDQ2MiA3NjIgNzM0IDY5MyA3MDcgNzQ4IDY2NiA2
MzkgNzY4IDczNCAzNTMgNTAzIDc2MSA2MTIgODk3IDczNCA3NjIgNjY2IDc2
MiA3MjEgNTQ0IDcwNyA3MzQgNzM0IDEwMDYgNzM0IDczNCAwIDI3MiA0OTAg
MjcyIDAgMCAyNzIgNDkwIDU0NCA0MzUgNTQ0IDQzNSAyOTkgNDkwIDU0NCAy
NzIgMjk5IDUxNyAyNzIgODE2IDU0NCA0OTAgNTQ0IDUxNyAzODEgMzg2IDM4
MSA1NDQgNTE3IDcwNyA1MTcgNTE3IDQzNSA0OTAgOTc5IF0KZW5kb2JqCjE1
IDAgb2JqIDw8Ci9MZW5ndGgxIDE2MTkKL0xlbmd0aDIgMTA3MjMKL0xlbmd0
aDMgNTMyCi9MZW5ndGggMTE2NjggICAgIAovRmlsdGVyIC9GbGF0ZURlY29k
ZQo+PgpzdHJlYW0KeNrtlGVUXN22YPEAwd0pHIIV7hLc3YJboYW7J4Tg7h4I
7u4W3CHBIbgT3CVIV77b7ybvvp/dv3p0VY0aZ669z1rzrL3PpqFQUWd+a+5g
CpJysHdlZmNh4weIK6qxAQFsLECgGDINjbgzyMTV2sFewsQVxA9g4+NjB0iB
TCEXkB8/Fyc/FzsyDUDcwdHL2drSyhVAL87wexIP4K0dyNnazMQeoGjiagWy
g+QwMwED1B3MrEGuXiyAt2AwQO33HS4ANZALyNkdZM6CzMYGMLc2cwWYgiyt
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
qNqRAoxXXqkaEfPdPJL6VA00aZA3BlBUSS8vKSVXvVls0+F4PpgHCDHORLwO
b3c9AiKptMa7qXTtRLtj0n5EXn+vnjLBvJRKxOlSufp4RPSsOZJdVcPyCSxx
QaqmxdKFNTnjwkL/aQq9ElH9uubD4XbG+06KicTul/rCRzFpej7YH6ypTOAg
C8ksY/Sy4Q0KVwHOj6pWVnaDU0FmnyxgqAswutCvJTJALrc8y93Vl1B0yzLq
einyZnzG+bmwQe3L2+Z1y4yZooBuCmsqOFPmGba3Xq9fYnYpdGczsSIp9jtO
GbNlPuo/V2Dp8cGfbCn3NJxFjaKPJjFna9ixM59EaeY+Uv7cJdM7Smd4e67V
7ksHzR+uAOuoA4dAagc+eTO0JHDQ0TFFST8dKUv2iV7XRMgmjCfb6GIFXb2z
2v3RFGXHy4NjCkaXuHEFaIsbcm978U3MUmVt3Hx5xec1NivsKgwdgBChvv2r
7DBVsp/o/K+PjuGB554JgS1NfmXpuugzhA0XUqWW4Cvexf7dGz309fw2cpWm
ZtWTs2hCf54Ml1N6HrAFbtktvVeNezzi4HMvn8n3AHsjVR+BSK0hppV9PThc
7XtmhyCpnedU8LC9gY59gwSneAW3V6KD0ICa8dCUfjvbaR1Hx4lz5Bx2g2aj
lYlLF+J1+lDZ+GVbAm1PEDt6TQpD56T+7vFXNcvMTE5L9aj2hld9WDW3SiMH
O8jj5LklsWOHMd64dvis9RZgsuDos5F+RHsECxVWrOwj1ZTBtX4VluMBu1xU
gptal7fdr775qJaoCRpnvK0rF1iDjXlQc+MlZdI2zMVhyaSBvquP50cC/h9+
kP9/gv8nEpiBQSbOrg52Js62yP8LtmYxUmVuZHN0cmVhbQplbmRvYmoKMTYg
MCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNvZGlu
ZyAxNzQgMCBSCi9GaXJzdENoYXIgMTEKL0xhc3RDaGFyIDEyMgovV2lkdGhz
IDE4NSAwIFIKL0Jhc2VGb250IC9OWlRLUE0rQ01SMTAKL0ZvbnREZXNjcmlw
dG9yIDE0IDAgUgo+PiBlbmRvYmoKMTQgMCBvYmogPDwKL0FzY2VudCA2OTQK
L0NhcEhlaWdodCA2ODMKL0Rlc2NlbnQgLTE5NAovRm9udE5hbWUgL05aVEtQ
TStDTVIxMAovSXRhbGljQW5nbGUgMAovU3RlbVYgNjkKL1hIZWlnaHQgNDMx
Ci9Gb250QkJveCBbLTI1MSAtMjUwIDEwMDkgOTY5XQovRmxhZ3MgNAovQ2hh
clNldCAoL2ZmL2ZpL3F1b3RlcmlnaHQvY29tbWEvaHlwaGVuL3BlcmlvZC9z
bGFzaC9vbmUvdGhyZWUvZm91ci9zZXZlbi9laWdodC9uaW5lL2NvbG9uL2Vx
dWFsL3F1ZXN0aW9uL0EvQy9EL0gvSS9KL0wvTS9OL08vUC9TL1QvVi9XL2Ev
Yi9jL2QvZS9mL2cvaC9pL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95
L3opCi9Gb250RmlsZSAxNSAwIFIKPj4gZW5kb2JqCjE4NSAwIG9iagpbNTgz
IDU1NiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMjc4IDAgMCAwIDAgMjc4IDMzMyAyNzggNTAwIDAgNTAw
IDAgNTAwIDUwMCAwIDAgNTAwIDUwMCA1MDAgMjc4IDAgMCA3NzggMCA0NzIg
MCA3NTAgMCA3MjIgNzY0IDAgMCAwIDc1MCAzNjEgNTE0IDAgNjI1IDkxNyA3
NTAgNzc4IDY4MSAwIDAgNTU2IDcyMiAwIDc1MCAxMDI4IDAgMCAwIDAgMCAw
IDAgMCAwIDUwMCA1NTYgNDQ0IDU1NiA0NDQgMzA2IDUwMCA1NTYgMjc4IDAg
NTI4IDI3OCA4MzMgNTU2IDUwMCA1NTYgNTI4IDM5MiAzOTQgMzg5IDU1NiA1
MjggNzIyIDUyOCA1MjggNDQ0IF0KZW5kb2JqCjEyIDAgb2JqIDw8Ci9MZW5n
dGgxIDEzMDYKL0xlbmd0aDIgNjc2OQovTGVuZ3RoMyA1MzIKL0xlbmd0aCA3
NTg1ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42u2U
ZVxUXdv26QYRRBqGRrqGDkFAQWkQkJCYAYaYgWHo7u5upBGkQ1K6BES6O0WQ
lJB457ru5770vZ+P7/vp+T179of5H+tcxzr2udbeLAzqWtyyIJgZWBEGRXDz
8/CLA56paGvz8wH4efj45PBYWJ7BwaYICAwqb4oAiwP4xcQEALL2cICAMICf
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
J+GwnslD56OoisZuHpmMbk+6c+DWIvz+bcE1YOeWcK/MV8SoOx27dkn4WgmD
f9Yid/3bcD+prVBN2oxdz5EfnePQqar3rizVvBZTbh8aqSiYma57148QnjM9
oKH8cVbWnVVPM1zEXm62m0XKVoAF/jq6zQpSaA3ctlHqud4NZk8Tuiazekiy
IaB+bkxevmQiSE4eQROZqS5Pxgckhz38KRWhIEptHf85hk739EWOgGe39Fnb
lEZTHrT/dKRK6CT5/R2JQ0JLgaQGSpTZ1mpBpo9g7yCVGMW9rvSr6yf2VUxL
Y843iu/jG7AiPRZ6RPRfVGa40LA3szX0ZvwS+7oF7sRDbToULljNpjFUKhKi
djVr8y98SpCk9jKhXCP7OxMP90LLAUZU0L15U3houmtFhh2IsiR25FQ5M1br
FzuZmOPL6oqNOHM5q7MVuKIzKv23cofdcnPrQ48ERYWQuHEorSZ7mkLbnMMX
xl/YzGT7v14yWbAJq+s5J1u/8mIVSn20xNBQmRofL4p77peOjT//im8kxlck
oGOkkoVY4SRAiTEo3/P755lnGRh7i44MXKivqLNW+zqdrFTxk6l7hQ4wsotf
Jzo2IqQgU/meFtrWoWsTrkzfSy9DzwIWk8BcCSesHSGWP3jXhERrDZUpdZvU
SDbinV2PaBOg38ZPcu/Mok+/vph2fiPa9igtueZteijz3PoaPpM7G3rN10/4
ta/FmbKg+vShIjciy1xLHD+OnGfDgnknvb51MUira8xurg9QHwleTC5VTRWJ
V5E0/9S+nceUA1P7k1dtq5m6XEG6MsS0/QVdpgO6M1c8957SO2kPC98mdoyq
zCiN+BvMT350xNMNzXHry2Jmijc1XjEt06CnQY18Yq2y9+6ax8y7ZSYiX8pI
P5EIvW+2OSfDLRPewbTBRiaNK3gamB1IySjq/KRTxIvXDT9BU0VNu3p+txwt
LmnEVuVS+ulT388JJ85oAhhjLuPzKvTlMadnC1ql5+SS53nRzVwhZiPi9/FF
HqDQgsBvr3PNbbdFGHv3lcpqc9ohUqgMMhT7lARpwwhPmtEZOvxXJdXaFD2J
Tz5RWh1kxl+VC/2QU2HnOYKlkX11ag0KlQYZC6kXBVeewiy3ATGgKCDbrkTx
BRG7GFV0SCZryalBCb+WtE4jhm38UoYQu0jz5os3IDPmmMXn3UI9DukPiE3G
vj4Nsw+RS0Nh9q5Pt4Rj7PpnS1nKm0+55fLqdVMLla7zUpxunNMLyAjF9oY2
ceA0e86yMGMxnt211/Pq6cGnpO/vdVpRM7azZiuF6BVlsLks7Nwxz+Ppjq6h
pgP6SyJR+dd+73AjJDIu/CXsbPaIaptJktBW9vPSr0W6BxlRteanD6ExQldV
mcXRnc+qM0395ns7X5Q12k9gV9p0NGYBjdoIHaS4862W4JXPpiX0xARfxZIu
F//IlzmNmQljyLBSjQnM0bmP5T+l67/RTclEs5Qr/zVd73Hs2WFtFvpAwyet
iomhqrYE5eWME9utqcZnaMnQxAx9xMFuyetDlAA9ROjLMXfhJJnAGG48w86e
95Tal4eiOw+hqA29lJisVuYfq/S+KYGJ6AzFoQfSFNbPTstj+zUT8CgO6ojP
r9MHsMKE3DAuugq8Z3mDEpQ/P6SDbm1ZP6Mf4CjrpN7Gb2Boezma6e82OXI1
cFKJ6ibNzoDOydxjleTptWaloqrOXY4fT7EcOmZUmyoo+foZV9hHW1HhR18/
JGTJeDlUzwzH7UpGgEiJY5pC0G4NU1tGfLOa4wJ/PFOU4pHHkbMxsTptonyj
Rvxazuw7z8wHl0MazJrLnjNSY/13K6WIs5r0bwkQ0iT3D7SBhI8DDDo8EXqs
V1H65+hvgqXW9tFbtjHkTGVp5Y7KPF2LmVyVtYBakS+OGwVHFXrd/S7eUndv
F9xXU/hzEpuHDFhVSlNJGQilkq0KKenfUInerLzrJ3M3bJBjYaI/Pq/rI4iI
tDEOAsJfPZDC2lDwctuPa7NsG0CVKMIZZugbXCuiJxMv1Y1gPCfXG22IKz9h
ucLP/mWic4gxssEJbCgJngpAERST93jl0qQ+Hhbg6Sz4CIBD3F2BxyVMnqL/
gyZFJln+ZZ/GVs0kUHO2ZeoE3D6Jpb+wYJE6S3o/lVksvN1szV/Fu6fNv9lV
GX2IhUKYPZerKtGge7GqtRIDrFhiwcujDfjWRlkZObqmI6pKcYRL5/2m/vmA
QWgw4aBiPCGd2yr08etcpompaQrC7YA5FZemNwSDzsTcof3yA9mUuakfLRPR
uoL0E/qbhkD0W/Qk9u0PHpx5EzXN3b2nUVYeDFWXLtv8OU+WfQeYvC/XCsWQ
yKp9VdpvRj2sJkQ1LO7/KsXnanj07evJ220ulquDrwty6fwiJO/u7kAzeh9t
ojLBdDV77XPUF0DchhFbzcPWdRfDbmlEZhEREWOtj/00TosWJyN8SD7sTEe4
Txq3eeuBZtRnTxNb658n10VN6G93qwkFVfU78wZHSAxnRDlF1GFS01zzqBY8
Fqu7KTjkKon61xglRLWfvH7wEIpEsdGuB1q1uSD0W5u6dxrKForpgxnEIM/W
koXFbHELmUAhjeoOK8PXfh+YXU2W1rliH2z8CKE2+PqAjI6wVJR9bWWLsq6Q
FYO2IoCRk0E6nPvQXLWTFVspzpFf28jZRUdhzB58bZNNmFGtH9rA9/944f2v
wf8IA3NbsCkcAbMzhdvg/R+OyB4mZW5kc3RyZWFtCmVuZG9iagoxMyAwIG9i
aiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0VuY29kaW5nIDE3
OSAwIFIKL0ZpcnN0Q2hhciAzNgovTGFzdENoYXIgMTE5Ci9XaWR0aHMgMTg2
IDAgUgovQmFzZUZvbnQgL09OSlZXUytDTVRUMTAKL0ZvbnREZXNjcmlwdG9y
IDExIDAgUgo+PiBlbmRvYmoKMTEgMCBvYmogPDwKL0FzY2VudCA2MTEKL0Nh
cEhlaWdodCA2MTEKL0Rlc2NlbnQgLTIyMgovRm9udE5hbWUgL09OSlZXUytD
TVRUMTAKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDY5Ci9YSGVpZ2h0IDQzMQov
Rm9udEJCb3ggWy00IC0yMzUgNzMxIDgwMF0KL0ZsYWdzIDQKL0NoYXJTZXQg
KC9kb2xsYXIvcGVyaW9kL3NsYXNoL3plcm8vb25lL3R3by90aHJlZS9mb3Vy
L3NldmVuL2VpZ2h0L2NvbG9uL0QvRS9GL0kvTC9PL1AvUi9TL1UvYS9lL2Yv
aC9pL20vbi9vL3Avci9zL3QvdS92L3cpCi9Gb250RmlsZSAxMiAwIFIKPj4g
ZW5kb2JqCjE4NiAwIG9iagpbNTI1IDAgMCAwIDAgMCAwIDAgMCAwIDUyNSA1
MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSAwIDAgNTI1IDUyNSAwIDUyNSAwIDAg
MCAwIDAgMCAwIDAgMCA1MjUgNTI1IDUyNSAwIDAgNTI1IDAgMCA1MjUgMCAw
IDUyNSA1MjUgMCA1MjUgNTI1IDAgNTI1IDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCA1MjUgMCAwIDAgNTI1IDUyNSAwIDUyNSA1MjUgMCAwIDAgNTI1IDUyNSA1
MjUgNTI1IDAgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgXQplbmRvYmoKOSAw
IG9iaiA8PAovTGVuZ3RoMSA5NTkKL0xlbmd0aDIgMjM5NAovTGVuZ3RoMyA1
MzIKL0xlbmd0aCAzMDM1ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+
CnN0cmVhbQp42u2SeTyUixrHlVCj7JKI10G2zGIbWzFkzXaMsoYx8w7DLBpD
g5KtFCrh2CJLJKpB9iyniCwpWwaR/WQrIpUs3alON7f7571/3c9933/e77P+
3ud5ZKVs0MooHMUDNKaQacoIKEIbMLREo80QSAABhUNkZQ2pIIZGoJCPYmig
NoDQ0kIAKH9PQAUOIJDaquracDWILGBI8Q2kEjy9aIC8ocLXICSAIoFUAhZD
BiwxNC+QxKqBxRABNAVLAGmBUABFJAK2XzP8AFvQD6QGgDgoBIEAcAQsDfAA
PQlkCOyrJDMyngIgv5tx/r4/XAEg1Y8lCpBniVQAWBJxFDIxEMCBeAjMisLq
BbKU/DdE/Vrc2J9ItMKQvpb/PqZ/C8CQCMTAv0MoJF9/GkgFLCk4kEr+NdQe
/K7OEsQR/Em/es1oGCIBiyJ7EkFAGaHy3UjwMybQQZwNgYb1AvAYoh/4zQ6S
cb/KYM3umwiYjakFygSl9GOr37w2GAKZZhfoCwLwn+HfGPGTWTOiEuiAMxwK
hyNYgaz3x9fJX7oZkbEUHIHMOgt1DQBDpWICIaz7YJE6EIwACGQcSAdAOksy
DEqm0FgpAGsuZwE8hQr5ulTWZmCYr6bvpAnAPH6SFgDD/pMQrP4wcAuqAzDC
FmSlEn8iAg7AyFuQlUvZgmoAjLoFWaX8tqAGAKNtQZZE/y3IahTwE1VYlQO/
4b9vwcCAQg9W1lIDlFXU4V9/QAtAqmue/dfA42TCKX/Q7CigDofDNf/eNtaf
SgXJtG+3z9rwD8YTWBcBgnQQCxnoo2B1Ir2TKy4UhBjd7CzkUPATT82PfFp/
vixVBzr3Skegl1r53A6UWOI/z+9NuMOX9ObYPRgOrz4qWoE68yQYDTvfz/9k
j5BCdhqaawE75+K6vSWzuYGXlHHp9YDkpG+l0sKg9MpIQD1HkcUMApkj+iZ6
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
z4W3iZfIc9SM968YkATjlXzCJk0OB3WMW6zncHTty4rannExLL813XniYKrA
eIQgJsloMN7WTl/XFe81lZvaMRQxRNyzrn+udvcT4iu/shIZpZgvY/pDOi7Z
lhgXnb708oqC0YF2cgVONRgpJkgu9mfz95i9opnWTt+dEbEmBuuYJexs8yVJ
Hnr3GyOFS6KZsQ95d2H3iY1wFca94fS5Vq6HpN+3fQ4xoy7smjUU79ByZH8n
ssp/wR9qFL0947bgURPCjQmbE1diMh/OGw8ntsx9AftVq7Dvg4Fb3e8iKc8e
VoReuuP/8kHr6wE3ZurOqS9M4TxVxdel+u/L7OI2mSI8D54+ijXwt6HV2Jnz
XAq3HD3US0JFf6gZK99HfHX9LRSoddBtC4mC3JyOOiH7SLiYJOpzX7VR7YiY
ZklepO6ZM+N769d05y76bQoUjEs9IwVRpQcFXkCDAmiXDH1TjIHI9aP1CwJ9
fRSPvtj5WFjYgfBQZ+HCO0Lxpg6P4iU6kfSBliArMfV0tfPO6/fEiXSr8Irw
CubOw8j5z5smf9a/CNTzCTCwbkZ3fSFRC4flxqU42O4kmX+E5uvkWs+v9Xe8
FfOuZFMUJQbYhjiUHtg2cFUB/hZ8lmDHL3nyZLYcA31Rgxl0+fNtuSV9qZk1
2Cn4f/hA/l/gf6IAlghiqDQKCUP1gfwDWgo1bmVuZHN0cmVhbQplbmRvYmoK
MTAgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNv
ZGluZyAxNzQgMCBSCi9GaXJzdENoYXIgOTcKL0xhc3RDaGFyIDEyMQovV2lk
dGhzIDE4NyAwIFIKL0Jhc2VGb250IC9QSExBR0ErQ01TU0kxNwovRm9udERl
c2NyaXB0b3IgOCAwIFIKPj4gZW5kb2JqCjggMCBvYmogPDwKL0FzY2VudCA2
OTQKL0NhcEhlaWdodCA2OTQKL0Rlc2NlbnQgLTE5NQovRm9udE5hbWUgL1BI
TEFHQStDTVNTSTE3Ci9JdGFsaWNBbmdsZSAtMTIKL1N0ZW1WIDc3Ci9YSGVp
Z2h0IDQzMQovRm9udEJCb3ggWy05NCAtMjUwIDEwMTkgNzU4XQovRmxhZ3Mg
NAovQ2hhclNldCAoL2EvYi9jL2UvaS9sL24vby9yL3MvdC91L3YveSkKL0Zv
bnRGaWxlIDkgMCBSCj4+IGVuZG9iagoxODcgMCBvYmoKWzQ1MSA0ODQgNDE4
IDAgNDE4IDAgMCAwIDIyMyAwIDAgMjIzIDAgNDg0IDQ3MCAwIDAgMzIwIDM2
MCAzNDAgNDg0IDQzMiAwIDAgNDMyIF0KZW5kb2JqCjYgMCBvYmogPDwKL0xl
bmd0aDEgMTc0NQovTGVuZ3RoMiA5OTY0Ci9MZW5ndGgzIDUzMgovTGVuZ3Ro
IDEwOTU0ICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja
7ZdVWFzLtqhxCJDgbo1b0ODuwd01SAdrGmgadwuW4K7Bg2twCO5OcA9uIWiC
hdNr7X0WOfs83vt0vwsv/GPWHOMfVTVrTuip1bXYJK0cLYByjmAoGxc7lxBA
WkVLS0qfixPAxc6JTk8vDQGaQ20dwTLmUKAQgEtQkAsg6WoN4IZd5xPieSXE
yYdOD5B2dPKE2FrbQAFM0sx/DeIHSDoAIbaW5mCAijnUBugAy2FpDgJoOVra
AqGe7ABJEAig+dcdLgBNoAsQ4ga0Ykfn4gJY2VpCARZAa1swOsdfTgrgt44A
/n+FrVyd/vuSGxDiApMCMMEkmQEwRStHMMgTYAV8i86h6girBYSZ/N+Q+s/k
cq4gkKq5w1/p/z1P/2uEuYMtyPPfYxwdnFyhQAhAxdEKCAH/51A94L/0pBxB
/6uQAtQcZGspCbYGAQGc/wrZusjZegCt1G2hljaAt+YgF+DfcSDY6j8VYBP3
twCHsry6moIC6z9r+vdldXNbMFTb0+mfxH+N/5u5nhg2QxBbD4ARJzsnJxds
IOz3v/8y+Y9ysmBLRytbMGxT8PIBzCEQc0902O6AES/AmwtgC7YCegCAHjBn
DnawIxR2CwA2Kb6At44Q9L+WlIsbwPHW9q/Y38jDCeBwMocAwSDgW+hTlOvf
0X+t6D9hHgCHpaODg/lThBfAYePpZAMEP4X4YPfCFt7R6inED+BwAZm72DxF
BAAcXkCI41NAEMDhCAb+w7wwL6j703VemBHUBgL8Y8RfjTi6Qp4Cr/7qzO2P
ETBdF9is/sMwWReg2x+usBnkAP6PFnlhqmDbP0UE/uoZ5Ph0Ex+sjrMr0OWv
5/QpCMst+USwvFJPBMsp/USwhDJPBOtb9h/ih3Ut90Swnl8/Eaxf+SeCSSg8
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
Q2N5YZrn1jbog1/6R96vYViCg0kvqnt0mopQX47F+clSJ8a4hCV5IB/OYGL6
CBYM/PBka09mryo8vT8WLpwUWI0u6pMesY8XCBARyriCeh9GwcWfRujyxqJd
yK+Q9UrpbVvwN3t4DaPm7ZeGpePr4cEja0coBLZHFN7r2ozvIzx+YUTO3H+u
kzA8cNeCSqSsftQrVXPQ9hXO67YCNecZtApZTvQQktJg+bDjfhJrTdRJQSBj
ZvCsi5JOy/n1ASSl8DCuhHhFQ5ROim99necgFjxF4JLIb5kexN3WuqFU3tC8
LhS8c+osy2sQ19915USPIXsU6im8FvLGdNT1TodyKYOdAJGlbeyuTPQak9zJ
EATZDNAmQbydvqigUOtZ/cTk9Cych7Ew5heUdllDS3HrQMi5E9xBZ78hMuVe
z6u0SMQeKS4qiFAtSv2msW0UePGVk8eU/sO1eHbfrA4xlPP/8Af9/yf4fyKB
JQhoDoE6OphD7NH/C1ru8hllbmRzdHJlYW0KZW5kb2JqCjcgMCBvYmogPDwK
L1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNvZGluZyAxNzQgMCBS
Ci9GaXJzdENoYXIgMTIKL0xhc3RDaGFyIDEyMQovV2lkdGhzIDE4OCAwIFIK
L0Jhc2VGb250IC9MSFBPSUkrQ01TU0JYMTAKL0ZvbnREZXNjcmlwdG9yIDUg
MCBSCj4+IGVuZG9iago1IDAgb2JqIDw8Ci9Bc2NlbnQgNjk0Ci9DYXBIZWln
aHQgNjk0Ci9EZXNjZW50IC0xOTQKL0ZvbnROYW1lIC9MSFBPSUkrQ01TU0JY
MTAKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDEzNgovWEhlaWdodCA0NTgKL0Zv
bnRCQm94IFstNzEgLTI1MCAxMDk5IDc4MF0KL0ZsYWdzIDQKL0NoYXJTZXQg
KC9maS9wYXJlbmxlZnQvcGFyZW5yaWdodC9jb21tYS9oeXBoZW4vcGVyaW9k
L3NsYXNoL3plcm8vb25lL3R3by90aHJlZS9mb3VyL2ZpdmUvc2l4L3NldmVu
L2VpZ2h0L25pbmUvY29sb24vcXVlc3Rpb24vQS9CL0MvRC9FL0YvRy9IL0kv
TC9NL04vTy9QL1EvUi9TL1QvVS9WL1cvYS9iL2MvZC9lL2YvZy9oL2kvay9s
L20vbi9vL3AvcS9yL3MvdC91L3Yvdy94L3kpCi9Gb250RmlsZSA2IDAgUgo+
PiBlbmRvYmoKMTg4IDAgb2JqCls1ODYgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNDI4IDQyOCAwIDAg
MzA2IDM2NyAzMDYgNTUwIDU1MCA1NTAgNTUwIDU1MCA1NTAgNTUwIDU1MCA1
NTAgNTUwIDU1MCAzMDYgMCAwIDAgMCA1MTkgMCA3MzMgNzMzIDcwMyA3OTQg
NjQyIDYxMSA3MzMgNzk0IDMzMSAwIDAgNTgxIDk3OCA3OTQgNzk0IDcwMyA3
OTQgNzAzIDYxMSA3MzMgNzY0IDczMyAxMDM5IDAgMCAwIDAgMCAwIDAgMCAw
IDUyNSA1NjEgNDg5IDU2MSA1MTEgMzM2IDU1MCA1NjEgMjU2IDAgNTMxIDI1
NiA4NjcgNTYxIDU1MCA1NjEgNTYxIDM3MiA0MjIgNDA0IDU2MSA1MDAgNzQ0
IDUwMCA1MDAgXQplbmRvYmoKMjMgMCBvYmogPDwKL1R5cGUgL1BhZ2VzCi9D
b3VudCA2Ci9QYXJlbnQgMTg5IDAgUgovS2lkcyBbMyAwIFIgMjUgMCBSIDMx
IDAgUiAzNyAwIFIgNDAgMCBSIDQzIDAgUl0KPj4gZW5kb2JqCjQ5IDAgb2Jq
IDw8Ci9UeXBlIC9QYWdlcwovQ291bnQgNgovUGFyZW50IDE4OSAwIFIKL0tp
ZHMgWzQ3IDAgUiA1NSAwIFIgNTggMCBSIDYxIDAgUiA2NCAwIFIgNzAgMCBS
XQo+PiBlbmRvYmoKNzggMCBvYmogPDwKL1R5cGUgL1BhZ2VzCi9Db3VudCA2
Ci9QYXJlbnQgMTg5IDAgUgovS2lkcyBbNzYgMCBSIDgwIDAgUiA4MyAwIFIg
ODggMCBSIDk1IDAgUiAxMTAgMCBSXQo+PiBlbmRvYmoKMTE4IDAgb2JqIDw8
Ci9UeXBlIC9QYWdlcwovQ291bnQgNgovUGFyZW50IDE4OSAwIFIKL0tpZHMg
WzExNiAwIFIgMTIwIDAgUiAxMjMgMCBSIDEyNiAwIFIgMTI5IDAgUiAxMzIg
MCBSXQo+PiBlbmRvYmoKMTM3IDAgb2JqIDw8Ci9UeXBlIC9QYWdlcwovQ291
bnQgNgovUGFyZW50IDE4OSAwIFIKL0tpZHMgWzEzNSAwIFIgMTM5IDAgUiAx
NDIgMCBSIDE0NSAwIFIgMTQ4IDAgUiAxNTEgMCBSXQo+PiBlbmRvYmoKMTU2
IDAgb2JqIDw8Ci9UeXBlIC9QYWdlcwovQ291bnQgNgovUGFyZW50IDE4OSAw
IFIKL0tpZHMgWzE1NCAwIFIgMTU4IDAgUiAxNjEgMCBSIDE2NCAwIFIgMTY3
IDAgUiAxNzAgMCBSXQo+PiBlbmRvYmoKMTg5IDAgb2JqIDw8Ci9UeXBlIC9Q
YWdlcwovQ291bnQgMzYKL0tpZHMgWzIzIDAgUiA0OSAwIFIgNzggMCBSIDEx
OCAwIFIgMTM3IDAgUiAxNTYgMCBSXQo+PiBlbmRvYmoKMTkwIDAgb2JqIDw8
Ci9UeXBlIC9DYXRhbG9nCi9QYWdlcyAxODkgMCBSCi9QVEVYLkZ1bGxiYW5u
ZXIgKFRoaXMgaXMgcGRmVGVYLCBWZXJzaW9uIDMuMTQxNTktMS4xMGIpCj4+
IGVuZG9iagoxOTEgMCBvYmogPDwKL1Byb2R1Y2VyIChwZGZUZVgtMS4xMGIp
Ci9DcmVhdG9yIChUZVgpCi9DcmVhdGlvbkRhdGUgKEQ6MjAwODA1MTUxNzE2
MDApCj4+IGVuZG9iagp4cmVmCjAgMTkyCjAwMDAwMDAwMDAgNjU1MzUgZiAK
MDAwMDAwMTgwMSAwMDAwMCBuIAowMDAwMDI2ODk1IDAwMDAwIG4gCjAwMDAw
MDE2ODkgMDAwMDAgbiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMjg0OTU0
IDAwMDAwIG4gCjAwMDAyNzM3MjEgMDAwMDAgbiAKMDAwMDI4NDc5NCAwMDAw
MCBuIAowMDAwMjczNDAwIDAwMDAwIG4gCjAwMDAyNzAwODcgMDAwMDAgbiAK
MDAwMDI3MzI0MCAwMDAwMCBuIAowMDAwMjY5NTIzIDAwMDAwIG4gCjAwMDAy
NjE2NTggMDAwMDAgbiAKMDAwMDI2OTM2MyAwMDAwMCBuIAowMDAwMjYwOTMx
IDAwMDAwIG4gCjAwMDAyNDg5ODMgMDAwMDAgbiAKMDAwMDI2MDc3MiAwMDAw
MCBuIAowMDAwMjQ4MDMyIDAwMDAwIG4gCjAwMDAyMzIzMjEgMDAwMDAgbiAK
MDAwMDI0Nzg3MyAwMDAwMCBuIAowMDAwMjMxOTczIDAwMDAwIG4gCjAwMDAy
MjgyODcgMDAwMDAgbiAKMDAwMDIzMTgxMyAwMDAwMCBuIAowMDAwMjg1NzIz
IDAwMDAwIG4gCjAwMDAwMjk1NjYgMDAwMDAgbiAKMDAwMDAyOTQ1MSAwMDAw
MCBuIAowMDAwMDI3MDU3IDAwMDAwIG4gCjAwMDAyMjc1OTIgMDAwMDAgbiAK
MDAwMDIxODEyNCAwMDAwMCBuIAowMDAwMjI3NDMyIDAwMDAwIG4gCjAwMDAw
MzIzNjAgMDAwMDAgbiAKMDAwMDAzMjI0NSAwMDAwMCBuIAowMDAwMDI5Njcx
IDAwMDAwIG4gCjAwMDAyMTc1MDYgMDAwMDAgbiAKMDAwMDIwODIwMCAwMDAw
MCBuIAowMDAwMjE3MzQ2IDAwMDAwIG4gCjAwMDAwMzUxOTYgMDAwMDAgbiAK
MDAwMDAzNTA4MSAwMDAwMCBuIAowMDAwMDMyNDY1IDAwMDAwIG4gCjAwMDAw
MzgyNjkgMDAwMDAgbiAKMDAwMDAzODE1NCAwMDAwMCBuIAowMDAwMDM1Mjc3
IDAwMDAwIG4gCjAwMDAwNDEyNDYgMDAwMDAgbiAKMDAwMDA0MTEzMSAwMDAw
MCBuIAowMDAwMDM4MzYyIDAwMDAwIG4gCjAwMDAwNDM3NTggMDAwMDAgbiAK
MDAwMDA0NDg3NCAwMDAwMCBuIAowMDAwMDQzNjQzIDAwMDAwIG4gCjAwMDAw
NDEzNTEgMDAwMDAgbiAKMDAwMDI4NTgzMiAwMDAwMCBuIAowMDAwMDQ0NjAz
IDAwMDAwIG4gCjAwMDAwNDQ3MzcgMDAwMDAgbiAKMDAwMDA0NDc4MyAwMDAw
MCBuIAowMDAwMDQ0ODU0IDAwMDAwIG4gCjAwMDAwNDc2MTUgMDAwMDAgbiAK
MDAwMDA0NzUwMCAwMDAwMCBuIAowMDAwMDQ0OTk0IDAwMDAwIG4gCjAwMDAw
NTA0MzggMDAwMDAgbiAKMDAwMDA1MDMyMyAwMDAwMCBuIAowMDAwMDQ3Njk2
IDAwMDAwIG4gCjAwMDAwNTMyOTAgMDAwMDAgbiAKMDAwMDA1MzE3NSAwMDAw
MCBuIAowMDAwMDUwNTE5IDAwMDAwIG4gCjAwMDAwNTU3MDkgMDAwMDAgbiAK
MDAwMDA1NTU5NCAwMDAwMCBuIAowMDAwMDUzMzcxIDAwMDAwIG4gCjAwMDAy
MDcyOTUgMDAwMDAgbiAKMDAwMDE5Mjk4MSAwMDAwMCBuIAowMDAwMjA3MTM1
IDAwMDAwIG4gCjAwMDAwNTg1MDAgMDAwMDAgbiAKMDAwMDA1ODM4NSAwMDAw
MCBuIAowMDAwMDU1ODAyIDAwMDAwIG4gCjAwMDAxOTE2NzMgMDAwMDAgbiAK
MDAwMDE4OTk4OSAwMDAwMCBuIAowMDAwMTkxNTE0IDAwMDAwIG4gCjAwMDAw
NjE2MjQgMDAwMDAgbiAKMDAwMDA2MTUwOSAwMDAwMCBuIAowMDAwMDU4NjA1
IDAwMDAwIG4gCjAwMDAyODU5NDIgMDAwMDAgbiAKMDAwMDA2NDU0NCAwMDAw
MCBuIAowMDAwMDY0NDI5IDAwMDAwIG4gCjAwMDAwNjE3NDEgMDAwMDAgbiAK
MDAwMDA2NzQwOSAwMDAwMCBuIAowMDAwMDY3Mjk0IDAwMDAwIG4gCjAwMDAw
NjQ2NDkgMDAwMDAgbiAKMDAwMDA2OTk3NiAwMDAwMCBuIAowMDAwMDg0MDky
IDAwMDAwIG4gCjAwMDAwODA5MTEgMDAwMDAgbiAKMDAwMDA2OTg2MSAwMDAw
MCBuIAowMDAwMDY3NTAyIDAwMDAwIG4gCjAwMDAwODA3MDkgMDAwMDAgbiAK
MDAwMDA4MDg0MyAwMDAwMCBuIAowMDAwMDgwODg5IDAwMDAwIG4gCjAwMDAx
MTU1OTggMDAwMDAgbiAKMDAwMDExMzAzNiAwMDAwMCBuIAowMDAwMDgzOTc3
IDAwMDAwIG4gCjAwMDAwODEwMzIgMDAwMDAgbiAKMDAwMDE4ODA5NCAwMDAw
MCBuIAowMDAwMTg1ODQ3IDAwMDAwIG4gCjAwMDAxODc5MzcgMDAwMDAgbiAK
MDAwMDE4NTYwNyAwMDAwMCBuIAowMDAwMTgzMzQ3IDAwMDAwIG4gCjAwMDAx
ODU0NDggMDAwMDAgbiAKMDAwMDE4MTk3NSAwMDAwMCBuIAowMDAwMTc3MTU1
IDAwMDAwIG4gCjAwMDAxODE4MTMgMDAwMDAgbiAKMDAwMDExMjgzMSAwMDAw
MCBuIAowMDAwMTEyOTY2IDAwMDAwIG4gCjAwMDAxMTMwMTMgMDAwMDAgbiAK
MDAwMDEzNTc2OCAwMDAwMCBuIAowMDAwMTE1NDgwIDAwMDAwIG4gCjAwMDAx
MTMyMDYgMDAwMDAgbiAKMDAwMDEzNTU2MyAwMDAwMCBuIAowMDAwMTM1Njk4
IDAwMDAwIG4gCjAwMDAxMzU3NDUgMDAwMDAgbiAKMDAwMDEzNzg4OSAwMDAw
MCBuIAowMDAwMTM3NzcwIDAwMDAwIG4gCjAwMDAxMzU5MDEgMDAwMDAgbiAK
MDAwMDI4NjA1MyAwMDAwMCBuIAowMDAwMTQwNzYyIDAwMDAwIG4gCjAwMDAx
NDA2NDMgMDAwMDAgbiAKMDAwMDEzNzk4NCAwMDAwMCBuIAowMDAwMTQzOTE2
IDAwMDAwIG4gCjAwMDAxNDM3OTcgMDAwMDAgbiAKMDAwMDE0MDg2OCAwMDAw
MCBuIAowMDAwMTQ3MTQyIDAwMDAwIG4gCjAwMDAxNDcwMjMgMDAwMDAgbiAK
MDAwMDE0NDAyMiAwMDAwMCBuIAowMDAwMTQ5OTc3IDAwMDAwIG4gCjAwMDAx
NDk4NTggMDAwMDAgbiAKMDAwMDE0NzI2MCAwMDAwMCBuIAowMDAwMTUyOTEy
IDAwMDAwIG4gCjAwMDAxNTI3OTMgMDAwMDAgbiAKMDAwMDE1MDEzMyAwMDAw
MCBuIAowMDAwMTU1Mzc1IDAwMDAwIG4gCjAwMDAxNTUyNTYgMDAwMDAgbiAK
MDAwMDE1MzA1NSAwMDAwMCBuIAowMDAwMjg2MTcwIDAwMDAwIG4gCjAwMDAx
NTY3OTMgMDAwMDAgbiAKMDAwMDE1NjY3NCAwMDAwMCBuIAowMDAwMTU1NDY5
IDAwMDAwIG4gCjAwMDAxNTg3NjkgMDAwMDAgbiAKMDAwMDE1ODY1MCAwMDAw
MCBuIAowMDAwMTU2ODc2IDAwMDAwIG4gCjAwMDAxNjE4MTQgMDAwMDAgbiAK
MDAwMDE2MTY5NSAwMDAwMCBuIAowMDAwMTU4ODc1IDAwMDAwIG4gCjAwMDAx
NjQ1NjkgMDAwMDAgbiAKMDAwMDE2NDQ1MCAwMDAwMCBuIAowMDAwMTYxOTA4
IDAwMDAwIG4gCjAwMDAxNjY4NDAgMDAwMDAgbiAKMDAwMDE2NjcyMSAwMDAw
MCBuIAowMDAwMTY0Njg3IDAwMDAwIG4gCjAwMDAxNjg1MDMgMDAwMDAgbiAK
MDAwMDE2ODM4NCAwMDAwMCBuIAowMDAwMTY2OTQ2IDAwMDAwIG4gCjAwMDAy
ODYyODcgMDAwMDAgbiAKMDAwMDE3MDIzOSAwMDAwMCBuIAowMDAwMTcwMTIw
IDAwMDAwIG4gCjAwMDAxNjg1OTcgMDAwMDAgbiAKMDAwMDE3MTY5OCAwMDAw
MCBuIAowMDAwMTcxNTc5IDAwMDAwIG4gCjAwMDAxNzAzMzMgMDAwMDAgbiAK
MDAwMDE3MjY1NyAwMDAwMCBuIAowMDAwMTcyNTM4IDAwMDAwIG4gCjAwMDAx
NzE3OTIgMDAwMDAgbiAKMDAwMDE3NTE3OSAwMDAwMCBuIAowMDAwMTc1MDYw
IDAwMDAwIG4gCjAwMDAxNzI3NTEgMDAwMDAgbiAKMDAwMDE3NjEyNCAwMDAw
MCBuIAowMDAwMTc2MDA1IDAwMDAwIG4gCjAwMDAxNzUyODUgMDAwMDAgbiAK
MDAwMDE3NjIwNyAwMDAwMCBuIAowMDAwMTgyMjA3IDAwMDAwIG4gCjAwMDAx
ODI0MDEgMDAwMDAgbiAKMDAwMDE4NTgxNSAwMDAwMCBuIAowMDAwMTg4MzAw
IDAwMDAwIG4gCjAwMDAxODgzMzIgMDAwMDAgbiAKMDAwMDE5MTg5NyAwMDAw
MCBuIAowMDAwMTkxOTYzIDAwMDAwIG4gCjAwMDAyMDc4MzQgMDAwMDAgbiAK
MDAwMDIxNzgwMSAwMDAwMCBuIAowMDAwMjI3OTQwIDAwMDAwIG4gCjAwMDAy
MzIxODMgMDAwMDAgbiAKMDAwMDI0ODU2NCAwMDAwMCBuIAowMDAwMjYxMzAx
IDAwMDAwIG4gCjAwMDAyNjk4MjcgMDAwMDAgbiAKMDAwMDI3MzYyMyAwMDAw
MCBuIAowMDAwMjg1MzU0IDAwMDAwIG4gCjAwMDAyODY0MDQgMDAwMDAgbiAK
MDAwMDI4NjUwMyAwMDAwMCBuIAowMDAwMjg2NjEzIDAwMDAwIG4gCnRyYWls
ZXIKPDwKL1NpemUgMTkyCi9Sb290IDE5MCAwIFIKL0luZm8gMTkxIDAgUgo+
PgpzdGFydHhyZWYKMjg2NzA5CiUlRU9GCg==

---561407174-2033512628-1210868855=:12719--

From owner-apps-samp@eso.org  Thu May 22 17:44:46 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A2EE56242AC;
	Thu, 22 May 2008 17:44:46 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4MFiqm5026140
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 22 May 2008 17:44:52 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4MFiqM3026138
	for apps-samp-outgoing; Thu, 22 May 2008 17:44:52 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4MFiq3B026132
	for <apps-samp@ivoa.net>; Thu, 22 May 2008 17:44:52 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 05EB81E401D
	for <apps-samp@ivoa.net>; Thu, 22 May 2008 17:47:03 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAGIxNUiJ3jon/2dsb2JhbACvTg
X-IronPort-AV: E=Sophos;i="4.27,524,1204498800"; 
   d="scan'208";a="7502213"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 22 May 2008 17:43:57 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1JzCyJ-0005eP-00
	for apps-samp@ivoa.net; Thu, 22 May 2008 16:44:51 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1JzCyI-00024b-IA
	for apps-samp@ivoa.net; Thu, 22 May 2008 16:44:50 +0100
Date: Thu, 22 May 2008 16:44:50 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Report of SAMP sessions
Message-ID: <Pine.LNX.4.63.0805221642530.7962@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Dear SAMPers,

I have posted on the wiki my version of what happened at the SAMP1 and 
SAMP2 sessions at the Trieste Interop.  They are at

    http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/InterOpMay2008SampSummary

If anyone disagrees or has something to add, please edit the wiki and/or
mail me or mail here.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri May 23 06:55:56 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 7A83B6242C6;
	Fri, 23 May 2008 06:55:56 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4N4tuN6016147
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 23 May 2008 06:55:56 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m4N4tuPA016146
	for apps-samp-outgoing; Fri, 23 May 2008 06:55:56 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m4N4tutH016139
	for <apps-samp@ivoa.net>; Fri, 23 May 2008 06:55:56 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id A84561E401D
	for <apps-samp@ivoa.net>; Fri, 23 May 2008 06:58:07 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AtkDAIvqNUhA6aayc2dsb2JhbACCOTSPSgEMAwQECQ8FlxiGAw
X-IronPort-AV: E=Sophos;i="4.27,527,1204498800"; 
   d="scan'208";a="7513255"
Received: from py-out-1112.google.com ([64.233.166.178])
  by clavius.hq.eso.org with ESMTP; 23 May 2008 06:54:59 +0200
Received: by py-out-1112.google.com with SMTP id n24so253707pyh.20
        for <apps-samp@ivoa.net>; Thu, 22 May 2008 21:55:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references;
        bh=WgFXYL5DY7qJDcA3gGVy6DgreC1l4VIK209ZU/cjoNA=;
        b=bVSBOdfOLE7nhEh42O6Ko4iuh7PLTk9WPGPBqSHhhRiS+YTy45LPF/gKhhy+LMyX/QSMf3Ilm6UylR2lVyfMoW9rum/nESBrlf9rnDdoV6qqp66nMeLq/44Sy3tySyx74zQHC/ln1pA+8RU1PyuT/QJTejVMf2+BXdJMNIQaWMM=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references;
        b=YkBpBSXylhQiAx/cEHbGZo67ZpxL78KLUixbZT8gea+o6myBc5Gy/Eu8cPSVGfEG1SrM1aC/ILgHqiU5It7/QplkpTvqUotDC0HHX7hZ5pNPvGtlZ9ui7XfdkEa8d/FDQ1+A1fvy3coMOfQjvjw0Etk9J0GFRgGJZiB/YTHIz4g=
Received: by 10.143.1.2 with SMTP id d2mr407754wfi.91.1211518548680;
        Thu, 22 May 2008 21:55:48 -0700 (PDT)
Received: by 10.142.87.6 with HTTP; Thu, 22 May 2008 21:55:48 -0700 (PDT)
Message-ID: <c04646670805222155x286be5a9h53dbc2746f279aaa@mail.gmail.com>
Date: Fri, 23 May 2008 00:55:48 -0400
From: "John Taylor" <jontayler@gmail.com>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: Language neutrality
Cc: "Alasdair Allan" <aa@astro.ex.ac.uk>, apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0805011734590.31759@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_23846_11726192.1211518548670"
References: <9B2B3B51-638C-4B52-88A0-6DCD285D82B4@astro.ex.ac.uk>
	 <68B66472-599B-4D30-BCCC-B8B40C02DEB0@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0805011734590.31759@andromeda.star.bris.ac.uk>
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "John Taylor" <jontayler@gmail.com>

------=_Part_23846_11726192.1211518548670
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi.  I think the reason was
a) People were writing clients that expected the method perform(), not
plastic.perform(), so we changed the spec to fit the implementations (it was
just tripping too many people up)
b) Worries about problems with method names with periods screwing up certain
languages.  I can be reasonably sure that this issue was brought up by Al!
John


On Thu, May 1, 2008 at 12:38 PM, Mark Taylor <m.b.taylor@bristol.ac.uk>
wrote:

> On Thu, 1 May 2008, Alasdair Allan wrote:
>
>  There was a reason why PLASTIC called perform( ) rather than
>> plastic.perform( ) and I think this was it...
>>
>
> according to my implementation, at PLASTIC versions <0.4 it was
> "plastic.client.peform" and >=0.4 it was just "perform".
> I have absolutely no recollection of why - maybe that was it.
>
> The hub methods were prefixed "plastic.hub.".
>
>
> --
> Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
> m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/<http://www.star.bris.ac.uk/%7Embt/>
>



-- 
Google Pittsburgh is hiring!

------=_Part_23846_11726192.1211518548670
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi.&nbsp; I think the reason was<br>a) People were writing clients that expected the method perform(), not plastic.perform(), so we changed the spec to fit the implementations (it was just tripping too many people up)<br>b) Worries about problems with method names with periods screwing up certain languages.&nbsp; I can be reasonably sure that this issue was brought up by Al!<br>
John<br><br><br><div class="gmail_quote">On Thu, May 1, 2008 at 12:38 PM, Mark Taylor &lt;<a href="mailto:m.b.taylor@bristol.ac.uk">m.b.taylor@bristol.ac.uk</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Thu, 1 May 2008, Alasdair Allan wrote:<br>
<br>
</div><div class="Ih2E3d"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
There was a reason why PLASTIC called perform( ) rather than plastic.perform( ) and I think this was it...<br>
</blockquote>
<br></div>
according to my implementation, at PLASTIC versions &lt;0.4 it was<br>
&quot;plastic.client.peform&quot; and &gt;=0.4 it was just &quot;perform&quot;.<br>
I have absolutely no recollection of why - maybe that was it.<br>
<br>
The hub methods were prefixed &quot;plastic.hub.&quot;.<div><div></div><div class="Wj3C7c"><br>
<br>
-- <br>
Mark Taylor &nbsp; Astronomical Programmer &nbsp; Physics, Bristol University, UK<br>
<a href="mailto:m.b.taylor@bris.ac.uk" target="_blank">m.b.taylor@bris.ac.uk</a> +44-117-928-8776 <a href="http://www.star.bris.ac.uk/%7Embt/" target="_blank">http://www.star.bris.ac.uk/~mbt/</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Google Pittsburgh is hiring!

------=_Part_23846_11726192.1211518548670--

From owner-apps-samp@eso.org  Tue Jun  3 13:34:24 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 5CAF6624196;
	Tue,  3 Jun 2008 13:34:24 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m53BYHkd005128
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 3 Jun 2008 13:34:17 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m53BYH6P005127
	for apps-samp-outgoing; Tue, 3 Jun 2008 13:34:17 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m53BYH2Z005123
	for <apps-samp@ivoa.net>; Tue, 3 Jun 2008 13:34:17 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1AB621E4023
	for <apps-samp@ivoa.net>; Tue,  3 Jun 2008 13:36:36 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,582,1204498800"; 
   d="scan'208";a="7799713"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 03 Jun 2008 13:32:45 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K3UmO-0004Fr-00
	for apps-samp@ivoa.net; Tue, 03 Jun 2008 12:34:16 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K3UmO-0006rA-4j
	for apps-samp@ivoa.net; Tue, 03 Jun 2008 12:34:16 +0100
Date: Tue, 3 Jun 2008 12:34:16 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Administrative MTypes
Message-ID: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Hi,

I'm putting together a revised draft of the SAMP document for WD as
discussed in Trieste.  As we agreed, the SAMP document should contain
descriptions of administrative MTypes, while application-specific
ones should be described elsehere (probably in an IVOA Note).

The suggested list Mike posted in his presentation was:

    hub.event.stopping
    app.event.register
    app.event.unregister
    app.event.mtype
    app.event.metadata
    app.event.starting
    app.event.stopping
    app.echo
    app.isAlive

Note that app.event.{starting,stopping} are not intended to indicate
whether a client has joined/left SAMP, but whether it has started or
stopped "processing" in some application-specific sense - Al argued
in the session that these names should be changed to avoid confusion.

I'd like to suggest that app.event.{register,unregister,mtype,metadata}
are renamed hub.event.{register,unregister,mtype,metadata}.
Although it's true they describe things about applications,
they can also be seen as describing changes to the hub state.
Furthermore, like hub.event.stopping, they should always be sent by
the hub itself rather than by individual clients, so it seems to me
like a good idea to group all these hub.event.* messages together,
and separately from things like app.echo or (the possibly renamed)
app.event.starting, which would be sent by applications.

Does anyone wish to agree/disagree/comment?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Tue Jun  3 14:15:16 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 38AC2624196;
	Tue,  3 Jun 2008 14:15:16 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m53CFIUJ009251
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 3 Jun 2008 14:15:18 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m53CFIXA009250
	for apps-samp-outgoing; Tue, 3 Jun 2008 14:15:18 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m53CFGZ6009246
	for <apps-samp@ivoa.net>; Tue, 3 Jun 2008 14:15:16 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id CF8701E4023
	for <apps-samp@ivoa.net>; Tue,  3 Jun 2008 14:17:34 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,582,1204498800"; 
   d="scan'208";a="7800967"
Received: from mailhost.u-strasbg.fr ([130.79.200.152])
  by clavius.hq.eso.org with ESMTP; 03 Jun 2008 14:13:43 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m53CF67U034780
          ; Tue, 3 Jun 2008 14:15:06 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m53CGx813108;
	Tue, 3 Jun 2008 14:16:59 +0200 (MET DST)
Message-ID: <4845363A.3F2BA323@newb6.u-strasbg.fr>
Date: Tue, 03 Jun 2008 14:16:58 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
CC: apps-samp@ivoa.net
Subject: Re: Administrative MTypes
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.152]); Tue, 03 Jun 2008 14:15:06 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr2.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr2.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Hi,

> Note that app.event.{starting,stopping} are not intended to indicate
> whether a client has joined/left SAMP, but whether it has started or
> stopped "processing" in some application-specific sense - Al argued
> in the session that these names should be changed to avoid confusion.

Those names confuse me as well. What about
app.event.{startingProcess,stoppingProcess} ?

> I'd like to suggest that app.event.{register,unregister,mtype,metadata}
> are renamed hub.event.{register,unregister,mtype,metadata}.
> Although it's true they describe things about applications,
> they can also be seen as describing changes to the hub state.
> Furthermore, like hub.event.stopping, they should always be sent by
> the hub itself rather than by individual clients, so it seems to me
> like a good idea to group all these hub.event.* messages together (...)

I agree. As they will be send by the hub only, your suggestion makes
sense to me.

T.

From owner-apps-samp@eso.org  Tue Jun  3 14:49:00 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 28EAE624196;
	Tue,  3 Jun 2008 14:49:00 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m53Cn4Na012671
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 3 Jun 2008 14:49:04 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m53Cn4f7012670
	for apps-samp-outgoing; Tue, 3 Jun 2008 14:49:04 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m53Cn4q8012666
	for <apps-samp@ivoa.net>; Tue, 3 Jun 2008 14:49:04 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id CEBB51E4023
	for <apps-samp@ivoa.net>; Tue,  3 Jun 2008 14:51:22 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,583,1204498800"; 
   d="scan'208";a="7802043"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 03 Jun 2008 14:47:31 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K3Vwl-0004Q4-00
	for apps-samp@ivoa.net; Tue, 03 Jun 2008 13:49:03 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K3Vwl-00071B-1i
	for apps-samp@ivoa.net; Tue, 03 Jun 2008 13:49:03 +0100
Date: Tue, 3 Jun 2008 13:49:03 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Administrative MTypes
In-Reply-To: <4845363A.3F2BA323@newb6.u-strasbg.fr>
Message-ID: <Pine.LNX.4.63.0806031342310.26952@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
 <4845363A.3F2BA323@newb6.u-strasbg.fr>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 3 Jun 2008, Thomas Boch wrote:

>> Note that app.event.{starting,stopping} are not intended to indicate
>> whether a client has joined/left SAMP, but whether it has started or
>> stopped "processing" in some application-specific sense - Al argued
>> in the session that these names should be changed to avoid confusion.
>
> Those names confuse me as well. What about
> app.event.{startingProcess,stoppingProcess} ?

That could be an improvement.

As far as I understand the intention of these MTypes they are likely 
to be restricted to the sort of client which does batch-like processing
of data.  If that's the case, they are somewhat application-specific,
so should maybe not be admin-type messages, and hence should be 
defined and described outside of the main SAMP document itself?

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Tue Jun  3 14:57:56 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 40F11624196;
	Tue,  3 Jun 2008 14:57:56 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m53Cw128013636
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 3 Jun 2008 14:58:01 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m53Cw18b013635
	for apps-samp-outgoing; Tue, 3 Jun 2008 14:58:01 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m53Cw0kw013610
	for <apps-samp@ivoa.net>; Tue, 3 Jun 2008 14:58:00 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 8574A1E4023
	for <apps-samp@ivoa.net>; Tue,  3 Jun 2008 15:00:19 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,583,1204498800"; 
   d="scan'208";a="7802316"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 03 Jun 2008 14:56:28 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1K3W5L-0001QT-7L; Tue, 03 Jun 2008 13:57:55 +0100
In-Reply-To: <Pine.LNX.4.63.0806031342310.26952@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> <4845363A.3F2BA323@newb6.u-strasbg.fr> <Pine.LNX.4.63.0806031342310.26952@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <221E4AE2-826E-4E93-8430-0F427D4CAC9F@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Administrative MTypes
Date: Tue, 3 Jun 2008 13:57:38 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

>>> Note that app.event.{starting,stopping} are not intended to indicate
>>> whether a client has joined/left SAMP, but whether it has started or
>>> stopped "processing" in some application-specific sense - Al argued
>>> in the session that these names should be changed to avoid  
>>> confusion.
>>
>> Those names confuse me as well. What about
>> app.event.{startingProcess,stoppingProcess} ?
>
> That could be an improvement.

Actually for me that's worse. "Process" implies that application  
process itself, not that the application is starting and stopping  
some (data?) processing it is doing

> As far as I understand the intention of these MTypes they are  
> likely to be restricted to the sort of client which does batch-like  
> processing of data.  If that's the case, they are somewhat  
> application-specific, so should maybe not be admin-type messages,  
> and hence should be defined and described outside of the main SAMP  
> document itself?

I'd vote for that. I don't believe it's something that generally  
needs to be broadcast to all applications.

Al.

From owner-apps-samp@eso.org  Wed Jun  4 07:53:58 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 8CBDB624196;
	Wed,  4 Jun 2008 07:53:58 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m545rwSO001040
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 4 Jun 2008 07:53:58 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m545rwqG001039
	for apps-samp-outgoing; Wed, 4 Jun 2008 07:53:58 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m545rwxm001035
	for <apps-samp@ivoa.net>; Wed, 4 Jun 2008 07:53:58 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 3369D1E4023
	for <apps-samp@ivoa.net>; Wed,  4 Jun 2008 07:56:17 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ArkBACnLRUjRVYT4d2dsb2JhbACSBAEMAwQECREDlnqHKw
X-IronPort-AV: E=Sophos;i="4.27,587,1204498800"; 
   d="scan'208";a="7823985"
Received: from an-out-0708.google.com ([209.85.132.248])
  by clavius.hq.eso.org with ESMTP; 04 Jun 2008 07:52:22 +0200
Received: by an-out-0708.google.com with SMTP id c36so473337ana.36
        for <apps-samp@ivoa.net>; Tue, 03 Jun 2008 22:53:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        bh=9YVY2czFneG/LDcGgUOOR2vOU0KAnYuY7dTeLPm06jk=;
        b=LEuMthnVGvGF7KAlg7thuoociDfpDa21aPLMG5fa6yZ48CxPvNzKFcFtPUkDApMt3pl0bn6MsgN1Zr7Quub9gq9LtOuAciqw1RdZSxylRtNHi7rfNHdl8f+r0lel87KjDp/BZ7cdQq4WZY5Ozdwp+tELQR7Uzciv6aZS0rXrZGU=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth;
        b=rsEPklhAL/p8M0DYxpILo4L24rc+GUkyCmPRIY1qRhROD1H/7HmA/rwNeIwVbniPKLTl+A+w/5hsr8x/y7aTaNqCRzDF8r/LOPNgTsBY18pL5gQAwY8meYsczLxWDFDDat6bqS+TvVoDeorIVlr8gjtCeXTe1VSD09rS5ALFnDM=
Received: by 10.100.105.15 with SMTP id d15mr7167578anc.137.1212558835976;
        Tue, 03 Jun 2008 22:53:55 -0700 (PDT)
Received: by 10.100.7.18 with HTTP; Tue, 3 Jun 2008 22:53:55 -0700 (PDT)
Message-ID: <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
Date: Tue, 3 Jun 2008 22:53:55 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: Administrative MTypes
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: 39c2b2643107f879
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

Hi Guys,

        The 'hub.event.stopping' was derived from the PLASTIC message
of a similar name but I really think it could be just 'hub.event.shutdown'
to be more explicit.  This would avoid confusion with the
app.{starting,stopping} but I also agree that at least those two are
application specific things that belong in the second doc.

        That said, I'd still like to have an 'app' class of messages
since not every administrative message will be coming from the hub.
My sense is that app.echo and app.isAlive really mean the same thing
and could be just 'app.ping' or somesuch (after all, if an app isn't
alive it would never respond, but then neither would any other message).

        My presentation slides left out a 'status' class of mtypes in
part because the list was mixed with the idea that a response would be
a message and have an mtype.  However, there were also mtypes that could
be used to e.g. post a progress message giving completion percentage, time
remaining, or just a free-form string to indicate progress or status.
I could see where a status string might be used in some sort of logging
pattern.  To come full circle, I don't see any reason why an app can't
signal it's about to shutdown either (e.g. in some sort of onexit procedure
before a crash).

So, the list of admin mtypes I have now is:

  hub.event.shutdown
  hub.event.register
  hub.event.unregister
  hub.event.mtype
  hub.event.metadata

  app.ping
  app.event.shutdown

  app.status                    str             status string
  app.status.progress           msgid,str       progress string
  app.status.progress.percent   msgid,float     percentage completed (float)
  app.status.progress.timeLeft  msgid,int       est. time remaining (sec)


The progress mtypes need the msg-id to indicate progress on which
originating request, I'm open to suggestions that app.status could just be
a separate 'status' class.  Are there any other application events or
actions we want to reserve for use in the spec?

        Lastly, did we settle the question of whether users can extend
the hub/app toplevel classes or are we saying e.g. that any app.* message
is reserved for the spec?  Can anyone imagine a use-case where they
implement a hub and want to define their own hub.* mtype for some
particular reason?


Cheers,
-Mike

From owner-apps-samp@eso.org  Wed Jun  4 10:20:09 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 8B744624196;
	Wed,  4 Jun 2008 10:20:09 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m548K79u015471
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 4 Jun 2008 10:20:07 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m548K7EF015470
	for apps-samp-outgoing; Wed, 4 Jun 2008 10:20:07 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m548K4MO015460
	for <apps-samp@ivoa.net>; Wed, 4 Jun 2008 10:20:04 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id E2E8B1E4023
	for <apps-samp@ivoa.net>; Wed,  4 Jun 2008 10:22:23 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,588,1204498800"; 
   d="scan'208";a="7826865"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 04 Jun 2008 10:18:29 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1K3oDz-0001eb-9a; Wed, 04 Jun 2008 09:20:03 +0100
In-Reply-To: <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <C7C58D32-DA54-438C-A8BE-793555AF761B@astro.ex.ac.uk>
Cc: "Mark Taylor" <m.b.taylor@bristol.ac.uk>, apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Administrative MTypes
Date: Wed, 4 Jun 2008 09:19:45 +0100
To: "Mike Fitzpatrick" <fitz@noao.edu>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mike Fitzpatrick wrote:
> So, the list of admin mtypes I have now is:
>
>   hub.event.shutdown
>   hub.event.register
>   hub.event.unregister
>   hub.event.mtype
>   hub.event.metadata
>
>   app.ping
>   app.event.shutdown
>
>   app.status                    str             status string
>   app.status.progress           msgid,str       progress string
>   app.status.progress.percent   msgid,float     percentage  
> completed (float)
>   app.status.progress.timeLeft  msgid,int       est. time remaining  
> (sec)

I'm happy enough with this list.

>         Lastly, did we settle the question of whether users can extend
> the hub/app toplevel classes or are we saying e.g. that any app.*  
> message
> is reserved for the spec?  Can anyone imagine a use-case where they
> implement a hub and want to define their own hub.* mtype for some
> particular reason?

Did we discuss it? I don't see why we have to make the app.* class of  
messages special in any way. People should free to extend it I think.  
The hub.* messages... erm. Different matter I think. Not sure.

Al.

From owner-apps-samp@eso.org  Wed Jun  4 11:28:04 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id D9684624196;
	Wed,  4 Jun 2008 11:28:04 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m549S3Sr023804
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 4 Jun 2008 11:28:03 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m549S3PB023802
	for apps-samp-outgoing; Wed, 4 Jun 2008 11:28:03 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m549S22I023795
	for <apps-samp@ivoa.net>; Wed, 4 Jun 2008 11:28:02 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id D0ED91E4023
	for <apps-samp@ivoa.net>; Wed,  4 Jun 2008 11:30:21 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,588,1204498800"; 
   d="scan'208";a="7828295"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 04 Jun 2008 11:26:27 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K3pHm-0006CW-00
	for apps-samp@ivoa.net; Wed, 04 Jun 2008 10:28:02 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K3pHl-0000Ht-Ro
	for apps-samp@ivoa.net; Wed, 04 Jun 2008 10:28:01 +0100
Date: Wed, 4 Jun 2008 10:28:01 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Administrative MTypes
In-Reply-To: <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806041012020.909@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-561407174-106417562-1212571681=:909"
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---561407174-106417562-1212571681=:909
Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: QUOTED-PRINTABLE

On Tue, 3 Jun 2008, Mike Fitzpatrick wrote:

> Hi Guys,
>
>        The 'hub.event.stopping' was derived from the PLASTIC message
> of a similar name but I really think it could be just 'hub.event.shutdown=
'
> to be more explicit.  This would avoid confusion with the
> app.{starting,stopping} but I also agree that at least those two are
> application specific things that belong in the second doc.

agreed - I'll use shutdown rather than stopping for the hub event
and leave the app stopping/starting messages out of the SAMP doc.

>        That said, I'd still like to have an 'app' class of messages
> since not every administrative message will be coming from the hub.
> My sense is that app.echo and app.isAlive really mean the same thing
> and could be just 'app.ping' or somesuch (after all, if an app isn't
> alive it would never respond, but then neither would any other message).

echo and isAlive do do pretty similar things, the difference is that
echo has a parameter and matching return value.  My current draft reads:

    samp.app.isAlive:
       Arguments:
          none
       Return Values:
          none
       Description:
          Diagnostic used to indicate whether an application is currently
          responding. No =E2=80=9Cstatus=E2=80=9D-like return values is def=
ined, since in general
          any response will indicate aliveness, and the normal samp.status
          key in the response may be used to indicate any abnormal state.

    samp.app.echo:
       Arguments:
          text (string) =E2=80=94 arbitrary text to echo
       Return Values:
          text (string) =E2=80=94 the same value as the text parameter
       Description:
          Slightly more interesting diagnostic message to determine whether
          client is responding. The input string is simply copied to the
          output.

Thus echo allows you to tell whether the recipient is actually=20
understanding the message rather than just consuming it.
Is this a worthwhile distinction?   Not sure.  I'm happy to replace
these two by a single ping MType (which does or does not have an
echoed argument?) if people think that's better.

>        Lastly, did we settle the question of whether users can extend
> the hub/app toplevel classes or are we saying e.g. that any app.* message
> is reserved for the spec?  Can anyone imagine a use-case where they
> implement a hub and want to define their own hub.* mtype for some
> particular reason?

In one of your slides you raised the question of whether to use
the samp. namespace for the admin messages.  I suggest yes - thus we
have

    samp.hub.event.shutdown
      ...
    samp.app.ping
      ...

etc.  Then people are allowed to come up with custom hub.* or app.*=20
messages - if they look sufficiently useful they can be moved into
the samp. namespace in later versions of the document.  This matches
the way that the samp. namespace is used for other extensible=20
vocabularies in the document.

Mark

--=20
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
---561407174-106417562-1212571681=:909--

From owner-apps-samp@eso.org  Wed Jun  4 13:50:06 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0E977624196;
	Wed,  4 Jun 2008 13:50:06 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m54Bo34v011165
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 4 Jun 2008 13:50:03 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m54Bo3Hd011164
	for apps-samp-outgoing; Wed, 4 Jun 2008 13:50:03 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m54Bo2Nh011160
	for <apps-samp@ivoa.net>; Wed, 4 Jun 2008 13:50:02 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1720B1E4023
	for <apps-samp@ivoa.net>; Wed,  4 Jun 2008 13:52:22 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,589,1204498800"; 
   d="scan'208";a="7831387"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 04 Jun 2008 13:48:27 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K3rVB-0006Zn-00
	for apps-samp@ivoa.net; Wed, 04 Jun 2008 12:50:01 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K3rVB-0000RO-K8
	for apps-samp@ivoa.net; Wed, 04 Jun 2008 12:50:01 +0100
Date: Wed, 4 Jun 2008 12:50:01 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Message-id management revisited
In-Reply-To: <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 3 Jun 2008, Mike Fitzpatrick wrote:

>  app.status.progress           msgid,str       progress string
>  app.status.progress.percent   msgid,float     percentage completed (float)
>  app.status.progress.timeLeft  msgid,int       est. time remaining (sec)

oof.  These get us back into deep water.

Progress messages are a good idea, but...

As the messaging is currently set up, the recipient does not use the
same msgid as the sender does to identify a given message - the
sender has the sender-msg-id and the recipient has the hub-msg-id 
and they are probably not the same, as described in the Asynchronous
Call/Response part of the "Sending and Receiving Messages" section. 
So these progress messages won't work (the recipient won't know 
which message the sender is referring to) unless there is some 
mediation by the hub to match the recipient's msgid with the 
sender's one.  The same applies to any other MType which needs to
refer to a previous message (an abort MType springs to mind as 
another possibility).

Yes this is a consequence of the scheme in which hubs and senders
get to choose their own msg-ids which I argued for and Mike was,
at least initially, against - see the ISSUE: Message-id management
thread.

I can think of a lot of different ways this could be addressed, with
associated disadvantages.  Amongst other possibilities:

   1. sender generates single free-form msg-id
       - means that hub does not have control over ID form, so can't use
         it to avoid having to maintain state internally

   2. sender generates single msg-id with fixed form <client-id>-<msg-tag>
         (this was Mike's original proposal)
       - hub can avoid maintaining *essential* state, but if it wants to
         keep track of other per-message info (e.g. timestamp, checksum,
         ...) it will need to store it internally.  Also need to worry
         about what happens if the sender does not follow the requirement
         for how the id is generated - better to have an interface in
        which it's impossible to do the wrong thing.

   3. hub generates single free-form msg-id
         (this is like what happened in PLASTIC, but Doug raised the issue
          of eliminating unnecessary round trips)
       - has to return it to sender from call() method, meaning that
         message call (though not message notify) requires a round trip.
         Also means that sender does not have control over ID form,
         so sender can't use it to avoid maintaining state internally
         (less serious problem than for hub).

   4. hub provides hub-msg-id -> sender-msg-id translation method
       - OK but slightly messy

   5. receiveCall() method passes sender-msg-id as well as hub-msg-id
       - OK but slightly messy.  Doesn't sound so bad if you rename
         sender/hub-msg-id as sender/hub-msg-tag or something.

   6. send progress info as a variant of hub call reply() instead of via MType
       - confusing - better if reply() just does one thing

   7. send progress info via a new hub call progress() similar to reply()
            instead of via MType
       - messy and less extensible - might want to do something other
         than progress involving msg-ids.

   8. do nothing
       - can't transmit progress information

I think I'd favour, in order: 5, 3, 4.  Anyone else?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Jun  4 16:08:50 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 4C7E46242DA;
	Wed,  4 Jun 2008 16:08:50 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m54E8tYB027774
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 4 Jun 2008 16:08:55 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m54E8tXp027773
	for apps-samp-outgoing; Wed, 4 Jun 2008 16:08:55 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m54E8qYk027766
	for <apps-samp@ivoa.net>; Wed, 4 Jun 2008 16:08:52 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id D75341E4023
	for <apps-samp@ivoa.net>; Wed,  4 Jun 2008 16:11:11 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AskBABc/RkjRVcipc2dsb2JhbACCODWPFwEMAwQECQ8Flm+HFA
X-IronPort-AV: E=Sophos;i="4.27,589,1204498800"; 
   d="scan'208";a="7834810"
Received: from wf-out-1314.google.com ([209.85.200.169])
  by clavius.hq.eso.org with ESMTP; 04 Jun 2008 16:07:15 +0200
Received: by wf-out-1314.google.com with SMTP id 28so104174wff.21
        for <apps-samp@ivoa.net>; Wed, 04 Jun 2008 07:08:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:to
         :subject:cc:in-reply-to:mime-version:content-type:references;
        bh=Cc/neRpTrf5GxNdyNrC0fNZrYwolr5JdRS4/kqJFigU=;
        b=LM01c36ydgKkEutKVHDTAhzlHkgLxEk4GkiTMKjNikN0Pazb9jbtViQ7RYFd1LEtKV
         97tzoNBwX6QFWLQcp1/a1uAloY7BoAeSTJ/VKkmm3uGB+d03qfOySquwDov/13fpQjdi
         BC+jN7Sh39o/OABYEVbIi1SQJuOeoB3gZYKpE=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:to:subject:cc:in-reply-to:mime-version
         :content-type:references;
        b=LUX6OKNDB72a0pThKH5D+iibzVoK4kbbE/7AILfkrQczowRXcWGmDm6Ubs2Hww871g
         ee7WfmfVwCNx99segMHR2PlfFe8Nl6hh5LbmepjPfzwTvzKjl0rexibyxvhchGMy+Qny
         zShXhTTrgrn7aazqlmu7bv2ei0MgF7e9Deluw=
Received: by 10.142.78.10 with SMTP id a10mr4699671wfb.37.1212588529626;
        Wed, 04 Jun 2008 07:08:49 -0700 (PDT)
Received: by 10.142.87.6 with HTTP; Wed, 4 Jun 2008 07:08:49 -0700 (PDT)
Message-ID: <c04646670806040708l2b91dand16a03061ea69103@mail.gmail.com>
Date: Wed, 4 Jun 2008 10:08:49 -0400
From: "John Taylor" <jontayler@gmail.com>
To: "Mike Fitzpatrick" <fitz@noao.edu>
Subject: Re: Administrative MTypes
Cc: "Mark Taylor" <m.b.taylor@bristol.ac.uk>, apps-samp@ivoa.net
In-Reply-To: <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_3516_23337641.1212588529606"
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "John Taylor" <jontayler@gmail.com>

------=_Part_3516_23337641.1212588529606
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Wed, Jun 4, 2008 at 1:53 AM, Mike Fitzpatrick <fitz@noao.edu> wrote:

> Hi Guys,
>
>        The 'hub.event.stopping' was derived from the PLASTIC message
> of a similar name but I really think it could be just 'hub.event.shutdown'
> to be more explicit.  This would avoid confusion with the
> app.{starting,stopping} but I also agree that at least those two are
> application specific things that belong in the second doc.


I care little about the names used for the messages, but just for historical
background we used the present continuous tense since this gets fired off
when the hub is in the process of shutting down.



>
>
>        That said, I'd still like to have an 'app' class of messages
> since not every administrative message will be coming from the hub.
> My sense is that app.echo and app.isAlive really mean the same thing
> and could be just 'app.ping' or somesuch (after all, if an app isn't
> alive it would never respond, but then neither would any other message).


I'd agree with that.  I put the echo message in just for test purposes as
something I could send and not cause any side effects.  ping does the same
job.

John


>
>
>        My presentation slides left out a 'status' class of mtypes in
> part because the list was mixed with the idea that a response would be
> a message and have an mtype.  However, there were also mtypes that could
> be used to e.g. post a progress message giving completion percentage, time
> remaining, or just a free-form string to indicate progress or status.
> I could see where a status string might be used in some sort of logging
> pattern.  To come full circle, I don't see any reason why an app can't
> signal it's about to shutdown either (e.g. in some sort of onexit procedure
> before a crash).
>
> So, the list of admin mtypes I have now is:
>
>  hub.event.shutdown
>  hub.event.register
>  hub.event.unregister
>  hub.event.mtype
>  hub.event.metadata
>
>  app.ping
>  app.event.shutdown
>
>  app.status                    str             status string
>  app.status.progress           msgid,str       progress string
>  app.status.progress.percent   msgid,float     percentage completed (float)
>  app.status.progress.timeLeft  msgid,int       est. time remaining (sec)
>
>
> The progress mtypes need the msg-id to indicate progress on which
> originating request, I'm open to suggestions that app.status could just be
> a separate 'status' class.  Are there any other application events or
> actions we want to reserve for use in the spec?
>
>        Lastly, did we settle the question of whether users can extend
> the hub/app toplevel classes or are we saying e.g. that any app.* message
> is reserved for the spec?  Can anyone imagine a use-case where they
> implement a hub and want to define their own hub.* mtype for some
> particular reason?
>
>
> Cheers,
> -Mike
>



-- 
Google Pittsburgh is hiring!

------=_Part_3516_23337641.1212588529606
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<br><br><div class="gmail_quote">On Wed, Jun 4, 2008 at 1:53 AM, Mike Fitzpatrick &lt;<a href="mailto:fitz@noao.edu">fitz@noao.edu</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Guys,<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;The &#39;hub.event.stopping&#39; was derived from the PLASTIC message<br>
of a similar name but I really think it could be just &#39;hub.event.shutdown&#39;<br>
to be more explicit. &nbsp;This would avoid confusion with the<br>
app.{starting,stopping} but I also agree that at least those two are<br>
application specific things that belong in the second doc.</blockquote><div><br>I care little about the names used for the messages, but just for historical background we used the present continuous tense since this gets fired off when the hub is in the process of shutting down.&nbsp; <br>
<br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;That said, I&#39;d still like to have an &#39;app&#39; class of messages<br>
since not every administrative message will be coming from the hub.<br>
My sense is that app.echo and app.isAlive really mean the same thing<br>
and could be just &#39;app.ping&#39; or somesuch (after all, if an app isn&#39;t<br>
alive it would never respond, but then neither would any other message).</blockquote><div><br>I&#39;d agree with that.&nbsp; I put the echo message in just for test purposes as something I could send and not cause any side effects.&nbsp; ping does the same job.<br>
<br>John<br>&nbsp;</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;My presentation slides left out a &#39;status&#39; class of mtypes in<br>
part because the list was mixed with the idea that a response would be<br>
a message and have an mtype. &nbsp;However, there were also mtypes that could<br>
be used to e.g. post a progress message giving completion percentage, time<br>
remaining, or just a free-form string to indicate progress or status.<br>
I could see where a status string might be used in some sort of logging<br>
pattern. &nbsp;To come full circle, I don&#39;t see any reason why an app can&#39;t<br>
signal it&#39;s about to shutdown either (e.g. in some sort of onexit procedure<br>
before a crash).<br>
<br>
So, the list of admin mtypes I have now is:<br>
<br>
 &nbsp;hub.event.shutdown<br>
 &nbsp;hub.event.register<br>
 &nbsp;hub.event.unregister<br>
 &nbsp;hub.event.mtype<br>
 &nbsp;hub.event.metadata<br>
<br>
 &nbsp;app.ping<br>
 &nbsp;app.event.shutdown<br>
<br>
 &nbsp;app.status &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;str &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; status string<br>
 &nbsp;app.status.progress &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; msgid,str &nbsp; &nbsp; &nbsp; progress string<br>
 &nbsp;app.status.progress.percent &nbsp; msgid,float &nbsp; &nbsp; percentage completed (float)<br>
 &nbsp;app.status.progress.timeLeft &nbsp;msgid,int &nbsp; &nbsp; &nbsp; est. time remaining (sec)<br>
<br>
<br>
The progress mtypes need the msg-id to indicate progress on which<br>
originating request, I&#39;m open to suggestions that app.status could just be<br>
a separate &#39;status&#39; class. &nbsp;Are there any other application events or<br>
actions we want to reserve for use in the spec?<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Lastly, did we settle the question of whether users can extend<br>
the hub/app toplevel classes or are we saying e.g. that any app.* message<br>
is reserved for the spec? &nbsp;Can anyone imagine a use-case where they<br>
implement a hub and want to define their own hub.* mtype for some<br>
particular reason?<br>
<br>
<br>
Cheers,<br>
<font color="#888888">-Mike<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Google Pittsburgh is hiring!

------=_Part_3516_23337641.1212588529606--

From owner-apps-samp@eso.org  Wed Jun  4 17:54:30 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6CCAD6242C0;
	Wed,  4 Jun 2008 17:54:30 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m54Fsapw010936
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 4 Jun 2008 17:54:36 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m54FsacV010935
	for apps-samp-outgoing; Wed, 4 Jun 2008 17:54:36 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m54FsZ9M010931
	for <apps-samp@ivoa.net>; Wed, 4 Jun 2008 17:54:35 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 2EAF71E4023
	for <apps-samp@ivoa.net>; Wed,  4 Jun 2008 17:56:55 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,590,1204498800"; 
   d="scan'208";a="7837401"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 04 Jun 2008 17:52:59 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1K3vJl-0001Qm-97; Wed, 04 Jun 2008 16:54:29 +0100
In-Reply-To: <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <63AF1049-CC52-46CE-ADC1-B99D6A0B762E@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Message-id management revisited
Date: Wed, 4 Jun 2008 16:54:11 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>


Mark Taylor wrote:
> Mike Fitzpatrick wrote:
>>  app.status.progress           msgid,str       progress string
>>  app.status.progress.percent   msgid,float     percentage  
>> completed (float)
>>  app.status.progress.timeLeft  msgid,int       est. time remaining  
>> (sec)
>
> oof.  These get us back into deep water.
>
> Progress messages are a good idea, but... As the messaging is  
> currently set up, the recipient does not use the same msgid as the  
> sender does to identify a given message...

Ouch! Hadn't thought of that...

> I think I'd favour, in order: 5, 3, 4.  Anyone else?

I think I favour 8. Do nothing. That's a serious level of  
complication being bolted on for very little gain.

Al.

From owner-apps-samp@eso.org  Thu Jun  5 07:28:51 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6018F624196;
	Thu,  5 Jun 2008 07:28:51 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m555S9ui025036
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 5 Jun 2008 07:28:09 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m555S9BI025034
	for apps-samp-outgoing; Thu, 5 Jun 2008 07:28:09 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m555S6oW025029
	for <apps-samp@ivoa.net>; Thu, 5 Jun 2008 07:28:06 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 8D5211E4023
	for <apps-samp@ivoa.net>; Thu,  5 Jun 2008 07:30:26 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Ar4AAM4WR0jRVYT2eGdsb2JhbACSCAEMAwQGBxEDlwuGKA
X-IronPort-AV: E=Sophos;i="4.27,593,1204498800"; 
   d="scan'208";a="7849098"
Received: from an-out-0708.google.com ([209.85.132.246])
  by clavius.hq.eso.org with ESMTP; 05 Jun 2008 07:26:23 +0200
Received: by an-out-0708.google.com with SMTP id c36so94033ana.36
        for <apps-samp@ivoa.net>; Wed, 04 Jun 2008 22:27:55 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender
         :to:subject:cc:in-reply-to:mime-version:content-type
         :content-transfer-encoding:content-disposition:references
         :x-google-sender-auth;
        bh=o2Ln9NI3CWMHJiEw76TRDOCXOm3irSyEmiLPdkvR75w=;
        b=B8kcQOOg56lz+lE/fsCS7ThUnFBRCb9+TUHscxIh3GmoEBhpUCSwAR9AnOIvpqsyRs
         c5mTTpYknvsE+CgH1mDr3NaVHUx8dzZYfB15yKrZS8ZpPBEg4KGftY8QELLJC73B28Ey
         McquJ86d9E7ynlaKgp8UU2yOolPoo05hIryfc=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version
         :content-type:content-transfer-encoding:content-disposition
         :references:x-google-sender-auth;
        b=FdLAsTGmnSAHtijtzum3rmG8vHLoD5vKlEZdTAjKUkrcP3vZ6/H0KoRKXFTWZCEejp
         nZdKeuQIXCwUv+vbOv/RHU8G6I6Bpf+8LfMUvd8ACzpjBKkvUJexBtp8Az7tkNPIhIVX
         /ty6JScVWYztEdyjQo/7lFZrLzyO4eW1Hn/IU=
Received: by 10.100.47.13 with SMTP id u13mr1592635anu.56.1212643674940;
        Wed, 04 Jun 2008 22:27:54 -0700 (PDT)
Received: by 10.100.7.18 with HTTP; Wed, 4 Jun 2008 22:27:54 -0700 (PDT)
Message-ID: <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
Date: Wed, 4 Jun 2008 22:27:54 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: Message-id management revisited
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
	 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: b996c7670f47c9f2
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

> I can think of a lot of different ways this could be addressed, with
> associated disadvantages.  Amongst other possibilities:
>                     :
>  2. sender generates single msg-id with fixed form <client-id>-<msg-tag>
>        (this was Mike's original proposal)
>      - hub can avoid maintaining *essential* state, but if it wants to
>        keep track of other per-message info (e.g. timestamp, checksum,
>        ...) it will need to store it internally.  Also need to worry
>        about what happens if the sender does not follow the requirement
>        for how the id is generated - better to have an interface in
>       which it's impossible to do the wrong thing.

    This is still my first choice (surprised?).  Because:

    - If the sender/hub id strings are truly opaque as was initially
      argued, then there is no wrong way for a client to generate the ID, it's
      the hub that concatenates the values to form the final string.  The
      value of the hub creating a second (perhaps concatenated, perhaps
      not) opaque string as a separate ID is dubious (in general, in the way
      Mark intends to use it I think its a variation on this theme but does no
      harm).
    - If the final string might contain something useful like a checksum as
      was later argued, then why not let all apps in on the format so they can
      parse out the useful bits as they see fit.  We now have a case
where we want
      the original sender-id, is it a stretch to think we might later want the
      timestamp/checksum/whatever-the-hub-does later when we'll need to
      revisit this same issue?
    - I really don't see the harm in recommending a format for the id
string.  Is
      this really more onerous for the hub/client developer than specifying the
      hub methods or message format?


>  4. hub provides hub-msg-id -> sender-msg-id translation method
>      - OK but slightly messy

       Should there be a lack of unanimous epiphany regarding the above
argument, this would be my second choice.  This simply exposes a functionality
the Hub must already implement in order to handle a reply, and it's a really
small number of apps that would need this as a way to get the sender-id to
send a progress message.  The concern then is that it opens to door to
requiring similar methods to get other useful data from the id string
as mentioned
above.


>  8. do nothing
>      - can't transmit progress information

      Not happy with this at all -- progress dialogs are accepted as
good practice
in interface design and we can't assume there is only one long-running
job active
or that only one app requested it.

     Option 2 totally avoids round-trips to the hub  and lets all app
know what the
msgid is trying to convey; option 4 is acceptable where the number of apps
needing it is low and its use in the desktop-gui environment means there's no
real burden;  option 8 is something we might regret one day.

Cheers,
-Mike

From owner-apps-samp@eso.org  Thu Jun  5 10:43:20 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 506DA624196;
	Thu,  5 Jun 2008 10:43:20 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m558h8P8012483
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 5 Jun 2008 10:43:08 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m558h8tB012481
	for apps-samp-outgoing; Thu, 5 Jun 2008 10:43:08 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m558h7Na012474
	for <apps-samp@ivoa.net>; Thu, 5 Jun 2008 10:43:07 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 9C6841E4023
	for <apps-samp@ivoa.net>; Thu,  5 Jun 2008 10:45:27 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,594,1204498800"; 
   d="scan'208";a="7852542"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 05 Jun 2008 10:41:20 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K4B3i-0000Pb-00
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 09:42:58 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K4B3i-0002OK-4f
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 09:42:58 +0100
Date: Thu, 5 Jun 2008 09:42:58 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Hi Mike,

On Wed, 4 Jun 2008, Mike Fitzpatrick wrote:

>>  2. sender generates single msg-id with fixed form <client-id>-<msg-tag>
>>        (this was Mike's original proposal)
>>      - hub can avoid maintaining *essential* state, but if it wants to
>>        keep track of other per-message info (e.g. timestamp, checksum,
>>        ...) it will need to store it internally.  Also need to worry
>>        about what happens if the sender does not follow the requirement
>>        for how the id is generated - better to have an interface in
>>       which it's impossible to do the wrong thing.
>
>    This is still my first choice (surprised?).  Because:
>
>    - If the sender/hub id strings are truly opaque as was initially
>      argued, then there is no wrong way for a client to generate the ID, it's
>      the hub that concatenates the values to form the final string.  The

I understood that your original intention was for the sender to do 
the concatenation (hence your earlier concern about the sender 
needing to know its own client-id).  If the sender sends its part 
and the hub forms the actual message-id by concatenating it to the 
sender-id, then yes there is no wrong way to do it - that would 
be better, and would remove the second of my concerns above.

>      value of the hub creating a second (perhaps concatenated, perhaps
>      not) opaque string as a separate ID is dubious (in general, in the way
>      Mark intends to use it I think its a variation on this theme but does no
>      harm).
>    - If the final string might contain something useful like a checksum as
>      was later argued, then why not let all apps in on the format so they can
>      parse out the useful bits as they see fit.  We now have a case

The reason is that things like checksum/timestamp/whatever-I-think-up-
next-week are implementation details.  They are not things that I am
suggesting we formalise in the specification, but things which 
individual hub implementations may privately decide they want to encode.
So there is no public definition of such a format to let clients in on.

> where we want
>      the original sender-id, is it a stretch to think we might later want the
>      timestamp/checksum/whatever-the-hub-does later when we'll need to
>      revisit this same issue?
>    - I really don't see the harm in recommending a format for the id
> string.  Is
>      this really more onerous for the hub/client developer than specifying the
>      hub methods or message format?

It's not the onerosity(?) that I'm worried about, its removing the
ability to exploit the freedom to choose a format for 
implementation-specific purposes.

>
>>  4. hub provides hub-msg-id -> sender-msg-id translation method
>>      - OK but slightly messy
>
>       Should there be a lack of unanimous epiphany regarding the above
> argument, this would be my second choice.  This simply exposes a functionality
> the Hub must already implement in order to handle a reply, and it's a really
> small number of apps that would need this as a way to get the sender-id to
> send a progress message.  The concern then is that it opens to door to
> requiring similar methods to get other useful data from the id string
> as mentioned
> above.

OK then, if nobody else expresses an opinion (Al your voice is noted
but currently outvoted) let's go with this.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu Jun  5 11:01:29 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2B2D3624196;
	Thu,  5 Jun 2008 11:01:29 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5591VUc014539
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 5 Jun 2008 11:01:31 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5591VAa014538
	for apps-samp-outgoing; Thu, 5 Jun 2008 11:01:31 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5591VRa014534
	for <apps-samp@ivoa.net>; Thu, 5 Jun 2008 11:01:31 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 26D741E4023
	for <apps-samp@ivoa.net>; Thu,  5 Jun 2008 11:03:51 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,594,1204498800"; 
   d="scan'208";a="7852964"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 05 Jun 2008 10:59:52 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.3])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1K4BLZ-0005jA-7l; Thu, 05 Jun 2008 10:01:25 +0100
In-Reply-To: <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>  <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>  <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk> <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com> <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Message-id management revisited
Date: Thu, 5 Jun 2008 10:01:03 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

>>>  4. hub provides hub-msg-id -> sender-msg-id translation method
>>>      - OK but slightly messy
>>
>>       Should there be a lack of unanimous epiphany regarding the  
>> above
>> argument, this would be my second choice.  This simply exposes a  
>> functionality
>> the Hub must already implement in order to handle a reply, and  
>> it's a really
>> small number of apps that would need this as a way to get the  
>> sender-id to
>> send a progress message.  The concern then is that it opens to  
>> door to
>> requiring similar methods to get other useful data from the id string
>> as mentioned
>> above.
>
> OK then, if nobody else expresses an opinion (Al your voice is noted
> but currently outvoted) let's go with this.

Ok, such is life. But... Do you mean the above, option 4?

Up till now this hasn't been actually been functionality the Hub  
already had to implement. It merely had to generate a hub-msg-id that  
was resolvable (in some way) to the sender-msg-id. There was no  
requirement for the Hub to have to serialise this mapping.

For instance I did this,

       my $hub_msg_id = $public_id . "_" . "$msg_id";
       $hub_msg_id =~ s/msg-id://;
       $hub_msg_id =~ s/client-id:/msg-id:/;

where the public id is the $public_id of the originating app and the  
$msg_id was the sender-msg-id. Turning a $public_id = "client- 
d:dhgTjfv8jTYH7fg56kJL" and $msg_id = "msg-id:hhjYU6ttgR45dgHHcCvG"  
to this $hub_msg_id = "msg-id:dhgTjfv8jTYH7fg56kJL- 
hhjYU6ttgR45dgHHcCvG".

So when it got a reply( ) all I did was this,

    my ( $public_id, $msg_id) = split "_", $hub_msg_id;
    $public_id =~ s/msg-id:/client-id:/;
    $msg_id = "msg-id:" . $msg_id;

no state was necessary. Suddenly we're adding huge amounts of  
overhead to the Hub. It has to keep track of which message arrived  
from which sender, where it got dispatched to, it has to figure out  
when these expire (so it can clean out its backend cache of such  
things). Suddenly, there is all this overhead. I see absolutely no  
advantages of adding all this extra book work.

Al.

From owner-apps-samp@eso.org  Thu Jun  5 11:04:58 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id E9501624196;
	Thu,  5 Jun 2008 11:04:57 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5594wGQ014949
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 5 Jun 2008 11:04:58 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5594wrO014948
	for apps-samp-outgoing; Thu, 5 Jun 2008 11:04:58 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5594wai014944
	for <apps-samp@ivoa.net>; Thu, 5 Jun 2008 11:04:58 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 227751E4023
	for <apps-samp@ivoa.net>; Thu,  5 Jun 2008 11:07:18 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,594,1204498800"; 
   d="scan'208";a="7853067"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 05 Jun 2008 11:03:19 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K4BOz-0000Rl-00
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 10:04:57 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K4BOz-0002Qq-JX
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 10:04:57 +0100
Date: Thu, 5 Jun 2008 10:04:57 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.63.0806051000350.9328@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 5 Jun 2008, Mark Taylor wrote:

>>>  4. hub provides hub-msg-id -> sender-msg-id translation method
>>>      - OK but slightly messy
>>
>>       Should there be a lack of unanimous epiphany regarding the above
>> argument, this would be my second choice.  This simply exposes a 
>> functionality
>> the Hub must already implement in order to handle a reply, and it's a 
>> really
>> small number of apps that would need this as a way to get the sender-id to
>> send a progress message.  The concern then is that it opens to door to
>> requiring similar methods to get other useful data from the id string
>> as mentioned
>> above.
>
> OK then, if nobody else expresses an opinion (Al your voice is noted
> but currently outvoted) let's go with this.

on further thoughts, another option would be to provide this
hub-msg-id -> sender-msg-id translation facility via an administrative
MType which the hub MUST or SHOULD support.  This would avoid 
introducing clutter into the API itself, and provide a sensible
extensibility route for hubs which want to provide other useful 
data along similar lines.  I don't have strong feelings either way.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu Jun  5 11:38:34 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3092C624196;
	Thu,  5 Jun 2008 11:38:34 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m559cYmM018462
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 5 Jun 2008 11:38:34 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m559cYV8018461
	for apps-samp-outgoing; Thu, 5 Jun 2008 11:38:34 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m559cYeT018457
	for <apps-samp@ivoa.net>; Thu, 5 Jun 2008 11:38:34 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 21FFA1E4023
	for <apps-samp@ivoa.net>; Thu,  5 Jun 2008 11:40:54 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,594,1204498800"; 
   d="scan'208";a="7853734"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 05 Jun 2008 11:36:55 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K4BvV-0000Vu-00
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 10:38:33 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K4BvV-0002Ti-AQ
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 10:38:33 +0100
Date: Thu, 5 Jun 2008 10:38:33 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
 <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 5 Jun 2008, Alasdair Allan wrote:

>>>> 4. hub provides hub-msg-id -> sender-msg-id translation method
>>>>     - OK but slightly messy
>
> Ok, such is life. But... Do you mean the above, option 4?
>
> Up till now this hasn't been actually been functionality the Hub already had 
> to implement. It merely had to generate a hub-msg-id that was resolvable (in 
> some way) to the sender-msg-id. There was no requirement for the Hub to have 
> to serialise this mapping.
>
> For instance I did this,
>
>     my $hub_msg_id = $public_id . "_" . "$msg_id";
>     $hub_msg_id =~ s/msg-id://;
>     $hub_msg_id =~ s/client-id:/msg-id:/;
>
> where the public id is the $public_id of the originating app and the $msg_id 
> was the sender-msg-id. Turning a $public_id = "client-d:dhgTjfv8jTYH7fg56kJL" 
> and $msg_id = "msg-id:hhjYU6ttgR45dgHHcCvG" to this $hub_msg_id = 
> "msg-id:dhgTjfv8jTYH7fg56kJL-hhjYU6ttgR45dgHHcCvG".
>
> So when it got a reply( ) all I did was this,
>
>  my ( $public_id, $msg_id) = split "_", $hub_msg_id;
>  $public_id =~ s/msg-id:/client-id:/;
>  $msg_id = "msg-id:" . $msg_id;
>
> no state was necessary. Suddenly we're adding huge amounts of overhead to the 
> Hub. It has to keep track of which message arrived from which sender, where 
> it got dispatched to, it has to figure out when these expire (so it can clean 
> out its backend cache of such things). Suddenly, there is all this overhead. 
> I see absolutely no advantages of adding all this extra book work.

no - this requires no new state and no processing that you're not already
having to do.  The implementation of the new method I'm suggesting 
would, I think, be:

sub getSenderMsgId {
    my $self = shift;
    my $private_key = shift;
    my $hub_msg_id = shift;
    my ( $public_id, $msg_id ) = split "_", $hub_msg_id;
    $msg_id = "msg-id:" . $msg_id;
    return $msg_id;
}

(but note: if I understand correctly, your implementation would *seem* 
to require for correct operation that the msg-id generated by the 
sender starts with the string "msg-id:" - this is not good. 
I think it's also vulnerable to sender-msg-ids which contain underscores).

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu Jun  5 12:24:29 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 76B8E624196;
	Thu,  5 Jun 2008 12:24:29 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m55AOWWX025860
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 5 Jun 2008 12:24:32 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m55AOW7U025859
	for apps-samp-outgoing; Thu, 5 Jun 2008 12:24:32 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m55AOWVn025853
	for <apps-samp@ivoa.net>; Thu, 5 Jun 2008 12:24:32 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id E6CD51E4023
	for <apps-samp@ivoa.net>; Thu,  5 Jun 2008 12:26:51 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,594,1204498800"; 
   d="scan'208";a="7855273"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 05 Jun 2008 12:22:53 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.3])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1K4Cdz-0007Oq-72; Thu, 05 Jun 2008 11:24:31 +0100
In-Reply-To: <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>  <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>  <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk> <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com> <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk> <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk> <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Message-id management revisited
Date: Thu, 5 Jun 2008 11:24:09 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

> no - this requires no new state and no processing that you're not  
> already
> having to do.  The implementation of the new method I'm suggesting  
> would, I think, be:
>
> sub getSenderMsgId {
>    my $self = shift;
>    my $private_key = shift;
>    my $hub_msg_id = shift;
>    my ( $public_id, $msg_id ) = split "_", $hub_msg_id;
>    $msg_id = "msg-id:" . $msg_id;
>    return $msg_id;
> }

Okay, maybe I'm totally misunderstanding what's going on here, but I  
don't see why somebody that wants to make a status call on a process  
will know the hub-msg-id that got sent to the application. The  
originating application sends a message with a sender-msg-id, which  
gets pushed to the hub, which pushes it to the recipient with a new  
hub-msg-id. When the recipients wants to reply( ) it replies to the  
hub with the hub-msg-id, which forwards it onto the originiator with  
the sender-msg-id in the response. At no time does the originiating  
application know the hub-msg-id. So the only way for the originating  
application to make a status call is to ask the hub to ask the  
recipient about the message sender-msg-id. Which means the hub now  
has to keep state on the mappings between the sender-msg-id and the  
hub-msg-id, because the recipient only knows about the hub-msg-id tag.

Erm... why do we have seperate sender-msg-id and hub-msg-id anyway?  
Someone remind me? It seems to be adding a whole level of  
complication, and I can't remember what we're getting out of it?

> (but note: if I understand correctly, your implementation would  
> *seem* to require for correct operation that the msg-id generated  
> by the sender starts with the string "msg-id:" - this is not good.

Nope. The hub-msg-id will always have a msg-id: infront of it, but  
the regexp just removes the msg-id: which my clients stick infront of  
their id string. It doesn't require that it's there. If it isn't the  
regexp doesn't do anything.

>  I think it's also vulnerable to sender-msg-ids which contain  
> underscores

On the other hand this is true. I need to fix that.

Al.

From owner-apps-samp@eso.org  Thu Jun  5 14:41:13 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3EA59624196;
	Thu,  5 Jun 2008 14:41:13 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m55CfDwU009978
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 5 Jun 2008 14:41:13 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m55CfD4h009977
	for apps-samp-outgoing; Thu, 5 Jun 2008 14:41:13 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m55CfCS1009973
	for <apps-samp@ivoa.net>; Thu, 5 Jun 2008 14:41:12 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id D37051E4023
	for <apps-samp@ivoa.net>; Thu,  5 Jun 2008 14:43:32 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,595,1204498800"; 
   d="scan'208";a="7858776"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 05 Jun 2008 14:39:34 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K4EmF-0000pB-00
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 13:41:11 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K4EmF-0002il-Pe
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 13:41:11 +0100
Date: Thu, 5 Jun 2008 13:41:11 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0806051256570.10248@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
 <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
 <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
 <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 5 Jun 2008, Alasdair Allan wrote:

>> (but note: if I understand correctly, your implementation would *seem* to 
>> require for correct operation that the msg-id generated by the sender 
>> starts with the string "msg-id:" - this is not good.
>
> Nope. The hub-msg-id will always have a msg-id: infront of it, but the regexp 
> just removes the msg-id: which my clients stick infront of their id string. 
> It doesn't require that it's there. If it isn't the regexp doesn't do 
> anything.

Agreed the

    $hub_msg_id =~ s/msg-id://;

in your call() implementation is in itself harmless.  But when you 
reassemble the sender-msg-id in your reply() implementation you try 
to undo that step:

    $msg_id = "msg-id:" . $msg_id;

and if the original didn't start with "msg-id:" then the msg-id that
you pass back to the client using receiveResponse() will have the
wrong value.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu Jun  5 15:18:10 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3E9C4624196;
	Thu,  5 Jun 2008 15:18:10 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m55DIFru014540
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 5 Jun 2008 15:18:15 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m55DIFAX014539
	for apps-samp-outgoing; Thu, 5 Jun 2008 15:18:15 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m55DIEKr014535
	for <apps-samp@ivoa.net>; Thu, 5 Jun 2008 15:18:14 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id CE0681E4023
	for <apps-samp@ivoa.net>; Thu,  5 Jun 2008 15:20:34 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,595,1204498800"; 
   d="scan'208";a="7859957"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 05 Jun 2008 15:16:35 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.3])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1K4FM1-0001oT-6g; Thu, 05 Jun 2008 14:18:09 +0100
In-Reply-To: <Pine.LNX.4.63.0806051256570.10248@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>  <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>  <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk> <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com> <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk> <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk> <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk> <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk> <Pine.LNX.4.63.0806051256570.10248@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <082D2EEC-9224-4E95-A1B5-961BC2101333@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Message-id management revisited
Date: Thu, 5 Jun 2008 14:17:47 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

> But when you reassemble the sender-msg-id in your reply()  
> implementation you try to undo that step:
>
>    $msg_id = "msg-id:" . $msg_id;
>
> and if the original didn't start with "msg-id:" then the msg-id that
> you pass back to the client using receiveResponse() will have the
> wrong value.

Oops! You're right. Sorry. I'll fix that.

Al.

From owner-apps-samp@eso.org  Thu Jun  5 15:22:19 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6DC5A6242C6;
	Thu,  5 Jun 2008 15:22:19 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m55DMOnZ015073
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 5 Jun 2008 15:22:24 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m55DMOIr015072
	for apps-samp-outgoing; Thu, 5 Jun 2008 15:22:24 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m55DMOAi015067
	for <apps-samp@ivoa.net>; Thu, 5 Jun 2008 15:22:24 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 19E7D1E4023
	for <apps-samp@ivoa.net>; Thu,  5 Jun 2008 15:24:44 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,595,1204498800"; 
   d="scan'208";a="7860078"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 05 Jun 2008 15:20:45 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K4FQ7-0000tL-00
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 14:22:23 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K4FQ7-0002lh-9K
	for apps-samp@ivoa.net; Thu, 05 Jun 2008 14:22:23 +0100
Date: Thu, 5 Jun 2008 14:22:23 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
 <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
 <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
 <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 5 Jun 2008, Alasdair Allan wrote:

>> no - this requires no new state and no processing that you're not already
>> having to do.  The implementation of the new method I'm suggesting would, I
>> think, be:
>>
>> sub getSenderMsgId {
>>   my $self = shift;
>>   my $private_key = shift;
>>   my $hub_msg_id = shift;
>>   my ( $public_id, $msg_id ) = split "_", $hub_msg_id;
>>   $msg_id = "msg-id:" . $msg_id;
>>   return $msg_id;
>> }
>
> Okay, maybe I'm totally misunderstanding what's going on here, but I don't
> see why somebody that wants to make a status call on a process will know the
> hub-msg-id that got sent to the application. The originating application
> sends a message with a sender-msg-id, which gets pushed to the hub, which
> pushes it to the recipient with a new hub-msg-id. When the recipients wants
> to reply( ) it replies to the hub with the hub-msg-id, which forwards it onto
> the originiator with the sender-msg-id in the response. At no time does the
> originiating application know the hub-msg-id. So the only way for the
> originating application to make a status call is to ask the hub to ask the
> recipient about the message sender-msg-id. Which means the hub now has to
> keep state on the mappings between the sender-msg-id and the hub-msg-id,
> because the recipient only knows about the hub-msg-id tag.

I can't follow your logic here.  The sender knows the sender-msg-id 
because it selected it in the first place.  The receiver knows the 
hub-msg-id because it's delivered with the message, and given the
translation method above it can find out the sender-msg-id from that.
So the two ends can agree on a single identifier (the sender-msg-id)
which allows them to work out what message they are talking about.

Are you saying that the above getSenderMsgId() implementation
(which doesn't require any additional hub state) doesn't do what it 
says it does, or are you saying that this functionality is insufficient
to allow sender and recipient to agree on what message they are 
talking about?

> Erm... why do we have seperate sender-msg-id and hub-msg-id anyway? Someone
> remind me? It seems to be adding a whole level of complication, and I can't
> remember what we're getting out of it?

It is desirable for the hub to be the thing that generates the message id,
one reason being that this allows the hub to store state (at least sender,
but possibly other things) in the id and thus avoid having to store
internal per-message state.  If it was the client generating an 
opaque message id and passing it to the hub, then the hub would have to 
store state about who sent it until the response came back.

We were originally going to address this by having the hub generate
the message ID and pass it back to the sender as the return value of
the call() method.  However, Doug Tody didn't like this since it means
that the call() method itself requires a round trip from the sender
to the hub, which would otherwise not be necessary.

By allowing the sender and the hub both to contribute their part of
the message ID as in the current scheme, we get round these problems.
A fringe benefit is that the sender can use the same kind of tricks
to store per-message state in its part of the message ID (though what
state it's going to store there will be entirely application-dependent).

Thinking about the round-trip business however, I think it might be
a bit of a red herring.  If you're using call() as opposed to notify()
you are by definition interested in the response, and so you probably
want to know whether the call() itself is dispatched without error,
which means waiting for a round trip to complete in any case.
I think Doug's concerns might have been motivated by thinking about
firing off a large number of event-type messages using the Notification 
delivery pattern (no response required).  If we agree that, then we
could just have the (hub-)msg-id returned from the call() methods and
dispense with the sender-msg-id altogether.

Alternatively, to confuse matters further, here is another option 
to add to my earlier list, which I think might prove preferable:

   9. hub-msg-id is returned from existing call() methods

      The existing call methods

          void call(string recipient-id, string msg-id, map message)
          void callAll(string msg-id, map message)

      are left exactly the same (except I'm going to change the name of
      of one of the parameters for clarity), except that they now
      return the hub-msg-id:

          string hub-msg-id = call(string recipient-id, string sender-msg-id,
                                   map message)
          string hub-msg-id = callAll(string sender-msg-id, map message)

      Everything will work exactly as at present, except that senders
      which want to know the hub-msg-id (e.g. because they are expecting
      progress messages) will have to wait for the call() method to
      round trip.  Senders which don't care can dispatch the call()
      without waiting around for the return value as at present.


-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri Jun  6 02:20:15 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0D5E7624164;
	Fri,  6 Jun 2008 02:20:15 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m560K8YX000110
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 6 Jun 2008 02:20:08 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m560K87r000109
	for apps-samp-outgoing; Fri, 6 Jun 2008 02:20:08 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m560K7Wl000105
	for <apps-samp@ivoa.net>; Fri, 6 Jun 2008 02:20:08 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 2854D1E4023
	for <apps-samp@ivoa.net>; Fri,  6 Jun 2008 02:22:28 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AosCAI8fSEiSWAEPYWdsb2JhbACReRcFCAQUnkU
X-IronPort-AV: E=Sophos;i="4.27,598,1204498800"; 
   d="scan'208";a="7879973"
Received: from revere.aoc.nrao.edu ([146.88.1.15])
  by clavius.hq.eso.org with ESMTP; 06 Jun 2008 02:18:26 +0200
X-NRAO-Sekrit: 3C273
Received: from login.aoc.nrao.edu (paso.aoc.nrao.edu [146.88.1.12])
	by revere.aoc.nrao.edu (8.13.1/8.13.1/cv-ws-8.12) with ESMTP id m560Jo8L006421;
	Thu, 5 Jun 2008 18:19:50 -0600
Received: (from dtody@localhost)
	by login.aoc.nrao.edu (8.12.10/8.12.5) id m560Jmso010184;
	Thu, 5 Jun 2008 18:19:48 -0600 (MDT)
Date: Thu, 5 Jun 2008 18:19:46 -0600 (MDT)
From: Douglas Tody <dtody@nrao.edu>
X-X-Sender: dtody@ceres-ubuntu8
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
Message-ID: <alpine.DEB.1.00.0806051805050.6250@ceres-ubuntu8>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>  <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>  <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk> <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
User-Agent: Alpine 1.00 (DEB 882 2007-12-20)
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-MailScanner-Information: Please contact the postmaster@aoc.nrao.edu for more information
X-MailScanner-ID: m560Jo8L006421
X-MailScanner: Found to be clean
X-MailScanner-SpamCheck: not spam, SpamAssassin (not cached, score=-100,
	required 5, autolearn=disabled, USER_IN_WHITELIST -100.00)
X-MailScanner-From: dtody@aoc.nrao.edu
X-Spam-Status: No
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Douglas Tody <dtody@nrao.edu>

I have been trying to stay out of this endless discussion but see this
one is coming up again...

On Wed, 4 Jun 2008, Mike Fitzpatrick wrote:

> >  2. sender generates single msg-id with fixed form <client-id>-<msg-tag>
> >        (this was Mike's original proposal)
> >      - hub can avoid maintaining *essential* state, but if it wants to
> >        keep track of other per-message info (e.g. timestamp, checksum,
> >        ...) it will need to store it internally.  Also need to worry
> >        about what happens if the sender does not follow the requirement
> >        for how the id is generated - better to have an interface in
> >       which it's impossible to do the wrong thing.
> 
>     This is still my first choice (surprised?).  Because:

This was my original suggestion as well (long ago).  Since the
client has a unique client-id (returned by the hub at connect time)
it is trivial to generate a unique message-id, avoiding a round trip
to interact with the hub when sending a message, and automatically
ensuring that the client knows what any response messages refer to.
There is no need for the hub to keep track of message sequences
(whatever happened to that brag about the hub not trying to do
transactions etc.?)


On Thu, 5 Jun 2008, Alasdair Allan wrote:

> [...] no state was necessary. Suddenly we're adding huge amounts of
> overhead to the Hub. It has to keep track of which message arrived
> from which sender, where it got dispatched to, it has to figure out
> when these expire (so it can clean out its backend cache of such
> things). Suddenly, there is all this overhead. I see absolutely no
> advantages of adding all this extra book work.

Agree completely.  All the "hub" should be doing is delivering
messages, aside from any built-in services it provides on the side
for per-client property storage, naming services, or whatever.
The more complex and application-specific the semantics built into
the messaging core, the less useful it will be to clients that do
not fit the specific interaction pattern one has in mind initially.
Application specific interaction patterns can be layered upon a
general messaging core.

	- Doug

From owner-apps-samp@eso.org  Fri Jun  6 10:28:58 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B6BA26242C0;
	Fri,  6 Jun 2008 10:28:58 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m568T0C4008961
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 6 Jun 2008 10:29:00 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m568T0HP008953
	for apps-samp-outgoing; Fri, 6 Jun 2008 10:29:00 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m568T0W7008935
	for <apps-samp@ivoa.net>; Fri, 6 Jun 2008 10:29:00 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 883071E4023
	for <apps-samp@ivoa.net>; Fri,  6 Jun 2008 10:31:20 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,600,1204498800"; 
   d="scan'208";a="7885953"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 06 Jun 2008 10:27:18 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1K4XJj-0007fz-6x; Fri, 06 Jun 2008 09:28:59 +0100
In-Reply-To: <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>  <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>  <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk> <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com> <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk> <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk> <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk> <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk> <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk>
Cc: apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Message-id management revisited
Date: Fri, 6 Jun 2008 09:28:36 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

>> Okay, maybe I'm totally misunderstanding what's going on here, but  
>> I don't
>> see why somebody that wants to make a status call on a process  
>> will know the
>> hub-msg-id that got sent to the application. The originating  
>> application
>> sends a message with a sender-msg-id, which gets pushed to the  
>> hub, which
>> pushes it to the recipient with a new hub-msg-id. When the  
>> recipients wants
>> to reply( ) it replies to the hub with the hub-msg-id, which  
>> forwards it onto
>> the originiator with the sender-msg-id in the response. At no time  
>> does the
>> originiating application know the hub-msg-id. So the only way for the
>> originating application to make a status call is to ask the hub to  
>> ask the
>> recipient about the message sender-msg-id. Which means the hub now  
>> has to
>> keep state on the mappings between the sender-msg-id and the hub- 
>> msg-id,
>> because the recipient only knows about the hub-msg-id tag.
>
> I can't follow your logic here.  The sender knows the sender-msg-id  
> because it selected it in the first place.  The receiver knows the  
> hub-msg-id because it's delivered with the message, and given the  
> translation method above it can find out the sender-msg-id from that.
> So the two ends can agree on a single identifier (the sender-msg-id)
> which allows them to work out what message they are talking about.

Yes, but... it's the SENDER that is going to ask for updates from the  
receiver, not the receiver broadcasting updates to the sender isn't  
it? So the reciever is not the one that will ask! Although the  
reciever does indeed know the hub-msg-id as you've said above. The  
sender knows the sender-msg-id, not the hub-msg-id. But now the hub  
must know the mapping from the sender-msg-id to the hub-msg-id so  
that, when the sender sends out a message to ask for a status update  
from the reciever, it can tell it.

> Alternatively, to confuse matters further, here is another option  
> to add to my earlier list, which I think might prove preferable:
>
>   9. hub-msg-id is returned from existing call() methods
>
>      The existing call methods
>
>          void call(string recipient-id, string msg-id, map message)
>          void callAll(string msg-id, map message)
>
>      are left exactly the same (except I'm going to change the name of
>      of one of the parameters for clarity), except that they now
>      return the hub-msg-id:
>
>          string hub-msg-id = call(string recipient-id, string  
> sender-msg-id,
>                                   map message)
>          string hub-msg-id = callAll(string sender-msg-id, map  
> message)
>
>      Everything will work exactly as at present, except that senders
>      which want to know the hub-msg-id (e.g. because they are  
> expecting
>      progress messages) will have to wait for the call() method to
>      round trip.  Senders which don't care can dispatch the call()
>      without waiting around for the return value as at present.

Seems reasonable.

Al.

From owner-apps-samp@eso.org  Fri Jun  6 10:46:46 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id D5FB8624164;
	Fri,  6 Jun 2008 10:46:45 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m568kmvm012496
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 6 Jun 2008 10:46:48 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m568kmex012495
	for apps-samp-outgoing; Fri, 6 Jun 2008 10:46:48 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m568kl5X012491
	for <apps-samp@ivoa.net>; Fri, 6 Jun 2008 10:46:47 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 4655A1E4023
	for <apps-samp@ivoa.net>; Fri,  6 Jun 2008 10:49:08 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,600,1204498800"; 
   d="scan'208";a="7889946"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 06 Jun 2008 10:45:06 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K4Xaw-0002MT-00
	for apps-samp@ivoa.net; Fri, 06 Jun 2008 09:46:46 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K4Xaw-0004VI-K9
	for apps-samp@ivoa.net; Fri, 06 Jun 2008 09:46:46 +0100
Date: Fri, 6 Jun 2008 09:46:46 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0806060930410.17243@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
 <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
 <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
 <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
 <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk>
 <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Fri, 6 Jun 2008, Alasdair Allan wrote:

> Yes, but... it's the SENDER that is going to ask for updates from the 
> receiver, not the receiver broadcasting updates to the sender isn't it? So

What I took Mike's suggested progress MType to be was something sent by 
the recipient back to the sender indicating how progress was getting on,
so yes it is the receiver broadcasting updates to the sender.
But actually, it doesn't matter - in general we might want to send 
messages in both directions discussing a previously-sent message.

> the reciever is not the one that will ask! Although the reciever does indeed 
> know the hub-msg-id as you've said above. The sender knows the sender-msg-id, 
> not the hub-msg-id. But now the hub must know the mapping from the 
> sender-msg-id to the hub-msg-id so that, when the sender sends out a message 
> to ask for a status update from the reciever, it can tell it.

If the two ends were going to refer to a previous message using its
hub-msg-id, you would be right, and this would require a lot of extra
work by the hub.  However, the point is, if the two ends need to 
reference a previously sent message, they both use the sender-msg-id
instead - the sender has this already, and the recipient can find it
using the hub translation method I proposed before.  The implementation
of that method is easy (as I showed with reference to your code), 
because it's something that the hub has to know how to do in any case.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri Jun  6 17:57:06 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id CB3E96242D7;
	Fri,  6 Jun 2008 17:57:06 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m56FvCT7004788
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 6 Jun 2008 17:57:12 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m56FvCw2004787
	for apps-samp-outgoing; Fri, 6 Jun 2008 17:57:12 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m56FvCdU004783
	for <apps-samp@ivoa.net>; Fri, 6 Jun 2008 17:57:12 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id EB1591E4023
	for <apps-samp@ivoa.net>; Fri,  6 Jun 2008 17:59:32 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,601,1204498800"; 
   d="scan'208";a="7911540"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 06 Jun 2008 17:55:29 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K4eJT-0003CP-00
	for apps-samp@ivoa.net; Fri, 06 Jun 2008 16:57:11 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K4eJT-0005B2-4k
	for apps-samp@ivoa.net; Fri, 06 Jun 2008 16:57:11 +0100
Date: Fri, 6 Jun 2008 16:57:11 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <alpine.DEB.1.00.0806051805050.6250@ceres-ubuntu8>
Message-ID: <Pine.LNX.4.63.0806061605110.19690@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <alpine.DEB.1.00.0806051805050.6250@ceres-ubuntu8>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 5 Jun 2008, Douglas Tody wrote:

> I have been trying to stay out of this endless discussion but see this
> one is coming up again...
>
> On Wed, 4 Jun 2008, Mike Fitzpatrick wrote:
>
>>>  2. sender generates single msg-id with fixed form <client-id>-<msg-tag>
>>>        (this was Mike's original proposal)
>>>      - hub can avoid maintaining *essential* state, but if it wants to
>>>        keep track of other per-message info (e.g. timestamp, checksum,
>>>        ...) it will need to store it internally.  Also need to worry
>>>        about what happens if the sender does not follow the requirement
>>>        for how the id is generated - better to have an interface in
>>>       which it's impossible to do the wrong thing.
>>
>>     This is still my first choice (surprised?).  Because:
>
> This was my original suggestion as well (long ago).  Since the

I am arguing for something very similar to this: the only difference
is that instead of the msg-id form being fixed as <client-id>-<msg-tag>,
the hub can choose how it builds its msg-id from the <client-id> and
<msg-tag>.  The only additional complication that this causes is 
that *if* the sender needs to know the msg-id that the hub has generated
(and it is rare that it will - it's not required simply for matching
messages with responses) then it will have to get it from the hub, 
e.g. using a translation method or waiting for a round trip at 
send time.  As in the above scheme, the hub does not need to 
maintain any per-message state (except for synchronous messages, 
which is not what we're talking about here).

As it happens I've been writing a hub implementation today, and I 
find that I actually do want to store per-message information 
additional to the sender's <client-id> and the sender-generated 
<msg-tag>.  There are one or two additional bits of information 
I'd like to store:

    1. a flag saying whether the message was sent using the synchronous
       or asynchronous method, since the replies are handled differently

    2. (maybe) a sequence number for synchronous calls, so I can
       outdate the oldest pending synchronous calls if a limit
       on the number of simultaneous ones is reached

If we use the above suggestion of a fixed form <client-id>-<msg-tag>
for the msg-id, then I can't encode these bits of information in
the msg-id because there's nowhere to put them.  So either I now have
to maintain per-message state in the hub, or we should redefine 
the fixed form as something like 
"<client-id>-<msg-tag>-<is-synchronous>-<seq-number>".
The latter looks to me like it's getting too baroque to write in 
a standard - and other hub implementors might want to store different
information in any case.  That illustrates why I'm in favour of 
allowing the hub to choose the msg-id format.

> On Thu, 5 Jun 2008, Alasdair Allan wrote:
>
>> [...] no state was necessary. Suddenly we're adding huge amounts of
>> overhead to the Hub. It has to keep track of which message arrived
>> from which sender, where it got dispatched to, it has to figure out
>> when these expire (so it can clean out its backend cache of such
>> things). Suddenly, there is all this overhead. I see absolutely no
>> advantages of adding all this extra book work.
>
> Agree completely.  All the "hub" should be doing is delivering

I would agree completely too *if* the suggestion was to add huge amounts
of overhead to the hub or to require it to keep track of which messages 
arrive from where.  As I've tried to convince Alasdair earlier in
this thread, it is not!

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri Jun  6 19:13:17 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 75A286242C0;
	Fri,  6 Jun 2008 19:13:17 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m56HDOVJ012993
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 6 Jun 2008 19:13:24 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m56HDO5s012992
	for apps-samp-outgoing; Fri, 6 Jun 2008 19:13:24 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m56HDN0q012988
	for <apps-samp@ivoa.net>; Fri, 6 Jun 2008 19:13:23 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 389611E4023
	for <apps-samp@ivoa.net>; Fri,  6 Jun 2008 19:15:44 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ArYCAHMNSUiSWAEPYWdsb2JhbACRehcFCAQUnj0
X-IronPort-AV: E=Sophos;i="4.27,601,1204498800"; 
   d="scan'208";a="7913045"
Received: from revere.aoc.nrao.edu ([146.88.1.15])
  by clavius.hq.eso.org with ESMTP; 06 Jun 2008 19:11:39 +0200
X-NRAO-Sekrit: 3C273
Received: from login.aoc.nrao.edu (paso.aoc.nrao.edu [146.88.1.12])
	by revere.aoc.nrao.edu (8.13.1/8.13.1/cv-ws-8.12) with ESMTP id m56HCP56021945;
	Fri, 6 Jun 2008 11:12:25 -0600
Received: (from dtody@localhost)
	by login.aoc.nrao.edu (8.12.10/8.12.5) id m56HCMsc008330;
	Fri, 6 Jun 2008 11:12:22 -0600 (MDT)
Date: Fri, 6 Jun 2008 11:12:24 -0600 (MDT)
From: Douglas Tody <dtody@nrao.edu>
X-X-Sender: dtody@ceres-ubuntu8
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
cc: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <Pine.LNX.4.63.0806061605110.19690@andromeda.star.bris.ac.uk>
Message-ID: <alpine.DEB.1.00.0806061057120.6250@ceres-ubuntu8>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>  <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>  <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk> <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <alpine.DEB.1.00.0806051805050.6250@ceres-ubuntu8> <Pine.LNX.4.63.0806061605110.19690@andromeda.star.bris.ac.uk>
User-Agent: Alpine 1.00 (DEB 882 2007-12-20)
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-MailScanner-Information: Please contact the postmaster@aoc.nrao.edu for more information
X-MailScanner-ID: m56HCP56021945
X-MailScanner: Found to be clean
X-MailScanner-SpamCheck: not spam, SpamAssassin (not cached, score=-100,
	required 5, autolearn=disabled, USER_IN_WHITELIST -100.00)
X-MailScanner-From: dtody@aoc.nrao.edu
X-Spam-Status: No
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Douglas Tody <dtody@nrao.edu>

On Fri, 6 Jun 2008, Mark Taylor wrote:

> I am arguing for something very similar to this: the only difference
> is that instead of the msg-id form being fixed as <client-id>-<msg-tag>,
> the hub can choose how it builds its msg-id from the <client-id> and
> <msg-tag>.  The only additional complication that this causes is that *if* the
> sender needs to know the msg-id that the hub has generated
> (and it is rare that it will - it's not required simply for matching
> messages with responses) then it will have to get it from the hub, e.g. using
> a translation method or waiting for a round trip at send time.  As in the
> above scheme, the hub does not need to maintain any per-message state (except
> for synchronous messages, which is not what we're talking about here).

A simple solution might be to allow the messaging system to add
additional properties to message headers, which the client is required
to preserve if it responds to a message.  These would be private
to the messaging implementation; the spec merely says how they are
stored in the message.  I suspect this would be an important capability
to provide.  It would seem to cover the use-case you mention.

The client's message-id however, is merely a tag known to the client
which it may use to keep track of messages, for example to associate
an asynchronous response with a request.  There is probably no reason
to require a particular format for this: <client-id>-<msg-tag> is a
reasonable suggestion, but in general the format used might depend
upon the client messaging API.  The messaging system need not use this
property at all, it could instead be part of the application messaging
protocol.  (This is all sounding rather similar to email headers which
deal with both transport as well as arbitrary application-defined
semantics).

It is not clear that any state is required in the messaging system,
except to maintain information on open client connections, per-client
subscriptions, accounting statistics, and the like (ignoring state
associated with services which are bundled into the "hub").

	- Doug

From owner-apps-samp@eso.org  Mon Jun  9 12:26:34 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3B3E66242D5;
	Mon,  9 Jun 2008 12:26:34 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59AQZ6a023259
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 9 Jun 2008 12:26:35 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m59AQZnW023257
	for apps-samp-outgoing; Mon, 9 Jun 2008 12:26:35 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59AQYmS023252
	for <apps-samp@ivoa.net>; Mon, 9 Jun 2008 12:26:34 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 3E3A31E4023
	for <apps-samp@ivoa.net>; Mon,  9 Jun 2008 12:28:57 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,611,1204498800"; 
   d="scan'208";a="7983165"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 09 Jun 2008 12:24:43 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K5ea9-0006zU-00
	for apps-samp@ivoa.net; Mon, 09 Jun 2008 11:26:33 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K5ea9-0008EX-G7
	for apps-samp@ivoa.net; Mon, 09 Jun 2008 11:26:33 +0100
Date: Mon, 9 Jun 2008 11:26:33 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <alpine.DEB.1.00.0806061057120.6250@ceres-ubuntu8>
Message-ID: <Pine.LNX.4.63.0806091120320.31626@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <alpine.DEB.1.00.0806051805050.6250@ceres-ubuntu8>
 <Pine.LNX.4.63.0806061605110.19690@andromeda.star.bris.ac.uk>
 <alpine.DEB.1.00.0806061057120.6250@ceres-ubuntu8>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Fri, 6 Jun 2008, Douglas Tody wrote:

> A simple solution might be to allow the messaging system to add
> additional properties to message headers, which the client is required
> to preserve if it responds to a message.  These would be private
> to the messaging implementation; the spec merely says how they are
> stored in the message.  I suspect this would be an important capability
> to provide.  It would seem to cover the use-case you mention.
>
> The client's message-id however, is merely a tag known to the client
> which it may use to keep track of messages, for example to associate
> an asynchronous response with a request.  There is probably no reason
> to require a particular format for this: <client-id>-<msg-tag> is a
> reasonable suggestion, but in general the format used might depend
> upon the client messaging API.  The messaging system need not use this
> property at all, it could instead be part of the application messaging
> protocol.  (This is all sounding rather similar to email headers which
> deal with both transport as well as arbitrary application-defined
> semantics).

This is pretty much what we're doing, except that the additional
properties added by the messaging system are not (in the terms used
by the document) "inside the message", but they are transmitted 
alongside it.

> It is not clear that any state is required in the messaging system,
> except to maintain information on open client connections, per-client
> subscriptions, accounting statistics, and the like (ignoring state
> associated with services which are bundled into the "hub").

that's right.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon Jun  9 12:51:08 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 29B3E624197;
	Mon,  9 Jun 2008 12:51:08 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59Ap9W9025470
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 9 Jun 2008 12:51:09 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m59Ap9C3025469
	for apps-samp-outgoing; Mon, 9 Jun 2008 12:51:09 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59Ap9lE025465
	for <apps-samp@ivoa.net>; Mon, 9 Jun 2008 12:51:09 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id DA8AC1E4023
	for <apps-samp@ivoa.net>; Mon,  9 Jun 2008 12:53:31 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,612,1204498800"; 
   d="scan'208";a="7983602"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 09 Jun 2008 12:49:18 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K5exw-00073M-00
	for apps-samp@ivoa.net; Mon, 09 Jun 2008 11:51:08 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K5exw-0008GK-Iz
	for apps-samp@ivoa.net; Mon, 09 Jun 2008 11:51:08 +0100
Date: Mon, 9 Jun 2008 11:51:08 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0806091127200.31626@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
 <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
 <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
 <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
 <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk>
 <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Everyone,

We should draw this point to a conclusion, and then I'll post my
draft of the SAMP doc to this list for final comments before uploading
it to the IVOA document server as a Working Draft.

Alasdair has gone quiet for a few days, which I interpret as meaning
he is prepared to accept my argument (or at least my assertion) that
none of this will lead to any significant complication for hub 
implementations, and in particular that no per-message hub state 
or bookkeeping will be required.

My summary of the current state of the discussion is that my 
suggested option:

    4. hub provides hub-msg-id -> sender-msg-id translation method

is an acceptable compromise for everyone.  Alasdair and I are also
OK with

    9. hub-msg-id is returned from existing call() methods

(see last part of http://www.ivoa.net/forum/apps-samp/0806/0129.htm).
I think this is slightly tidier - Mike if you agree I will do 9, 
otherwise I will do 4.

I also suggest that I rephrase the wording and API description slightly, 
so that instead of "sender-msg-id" and "hub-msg-id" we talk instead 
about a "msg-tag" and a "msg-id".  I think this is less confusing and
makes more sense, since the hub-generated part is a unique identifier, 
but the sender-generated part is just a string which the sender 
associates with the message, which (according to how the sender 
wants to do it) may or may not be unique.

Having done this I can add Mike's suggested progress messages 
(see next post for more detail on this).

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon Jun  9 13:09:21 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 37251624181;
	Mon,  9 Jun 2008 13:09:21 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59B9Mo4027383
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 9 Jun 2008 13:09:22 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m59B9MbZ027382
	for apps-samp-outgoing; Mon, 9 Jun 2008 13:09:22 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59B9MGI027378
	for <apps-samp@ivoa.net>; Mon, 9 Jun 2008 13:09:22 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id A4F361E4023
	for <apps-samp@ivoa.net>; Mon,  9 Jun 2008 13:11:44 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,612,1204498800"; 
   d="scan'208";a="7983949"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 09 Jun 2008 13:07:30 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K5fFZ-000779-00
	for apps-samp@ivoa.net; Mon, 09 Jun 2008 12:09:21 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K5fFZ-0008Hc-AC
	for apps-samp@ivoa.net; Mon, 09 Jun 2008 12:09:21 +0100
Date: Mon, 9 Jun 2008 12:09:21 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Administrative MTypes
In-Reply-To: <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Mike,

On Tue, 3 Jun 2008, Mike Fitzpatrick wrote:

> So, the list of admin mtypes I have now is:
>
>  hub.event.shutdown
>  hub.event.register
>  hub.event.unregister
>  hub.event.mtype
>  hub.event.metadata
>
>  app.ping

I agree with all these.

>  app.event.shutdown

I'm not sure about this.  In most cases, other clients can just listen
for a hub.event.unregister message concerning the application in question.
I agree that there is a difference between an application saying that
it's actually going to shut down and saying it is just going to withdraw
from SAMP communications, but in most cases as far as other clients are
concerned these will amount to the same thing.  So I think I would
argue for withdrawing this from the official list of admin messages
in the spec.  But I don't insist on this if Mike or others feel strongly.

>  app.status                    str             status string

what is the use case for this one?  Is there supposed to be a list
of known statuses?

>  app.status.progress           msgid,str       progress string
>  app.status.progress.percent   msgid,float     percentage completed (float)
>  app.status.progress.timeLeft  msgid,int       est. time remaining (sec)

As I've said, I think a progress MType is a good idea.  However, I would
rather see this as a single MType (app.status.progress) with required
arguments msgid and progress string, and optional arguments giving
percentage completed and time remaining.  For one thing, something
like a GUI progress bar would probably want to show all of that
information (if it's available).  For another thing, with multiple
similar MTypes it becomes harder work to be reasonably sure that you
can interoperate - the sender would effectively need to send all
variants and the receiver would need to understand them all.
A single progress MType simplifies implementation at both ends.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Mon Jun  9 14:02:31 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 4C61E624181;
	Mon,  9 Jun 2008 14:02:31 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59C2V6x002475
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 9 Jun 2008 14:02:31 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m59C2VqV002474
	for apps-samp-outgoing; Mon, 9 Jun 2008 14:02:31 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59C2UnB002469
	for <apps-samp@ivoa.net>; Mon, 9 Jun 2008 14:02:30 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 456F41E4023
	for <apps-samp@ivoa.net>; Mon,  9 Jun 2008 14:04:53 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AkUCAFu4TEiCT8iYiGdsb2JhbACSCQEBAQ8gnB8
X-IronPort-AV: E=Sophos;i="4.27,612,1204498800"; 
   d="scan'208";a="7984914"
Received: from mailhost.u-strasbg.fr ([130.79.200.152])
  by clavius.hq.eso.org with ESMTP; 09 Jun 2008 14:00:39 +0200
Received: from vizir.u-strasbg.fr (vizir.u-strasbg.fr [130.79.128.13])
          by mailhost.u-strasbg.fr (8.14.2/jtpda-5.5pre1) with ESMTP id m59C2L7N019000
          ; Mon, 9 Jun 2008 14:02:21 +0200 (CEST)
Received: from newb6.u-strasbg.fr (localhost [127.0.0.1])
	by vizir.u-strasbg.fr (8.11.6+Sun/8.9.1) with ESMTP id m59C4IA21291;
	Mon, 9 Jun 2008 14:04:19 +0200 (MET DST)
Message-ID: <484D1C42.3F152810@newb6.u-strasbg.fr>
Date: Mon, 09 Jun 2008 14:04:18 +0200
From: Thomas Boch <boch@newb6.u-strasbg.fr>
Organization: CDS - Observatoire astronomique de Strasbourg
X-Mailer: Mozilla 4.7 [en] (X11; I; SunOS 5.7 sun4u)
X-Accept-Language: en
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
CC: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
	 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
	 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
	 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
	 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
	 <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
	 <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk>
	 <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk> <Pine.LNX.4.63.0806091127200.31626@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0 (mailhost.u-strasbg.fr [130.79.200.152]); Mon, 09 Jun 2008 14:02:21 +0200 (CEST)
X-Virus-Scanned: ClamAV 0.93/6668/Tue Apr  8 13:57:49 2008 on mr2.u-strasbg.fr
X-Virus-Status: Clean
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled
	version=3.2.4
X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on mr2.u-strasbg.fr
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Thomas Boch <boch@newb6.u-strasbg.fr>

Mark,

Thanks for the summary.

Option 9 (hub-msg-id returned from existing call() methods) is my first
choice as well, as it looks cleaner.

Thomas

From owner-apps-samp@eso.org  Mon Jun  9 14:16:54 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2551C624181;
	Mon,  9 Jun 2008 14:16:54 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59CGwWq004144
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 9 Jun 2008 14:16:58 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m59CGwSt004143
	for apps-samp-outgoing; Mon, 9 Jun 2008 14:16:58 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59CGwDC004139
	for <apps-samp@ivoa.net>; Mon, 9 Jun 2008 14:16:58 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id CA1971E4023
	for <apps-samp@ivoa.net>; Mon,  9 Jun 2008 14:19:20 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,612,1204498800"; 
   d="scan'208";a="7985210"
Received: from mercury.ex.ac.uk ([144.173.6.26])
  by clavius.hq.eso.org with ESMTP; 09 Jun 2008 14:15:06 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1K5gIz-0002zC-7y; Mon, 09 Jun 2008 13:16:57 +0100
In-Reply-To: <484D1C42.3F152810@newb6.u-strasbg.fr>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>  <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>  <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk> <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com> <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk> <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk> <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk> <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk> <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk> <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk> <Pine.LNX.4.63.0806091127200.31626@andromeda.star.bris.ac.uk> <484D1C42.3F152810@newb6.u-strasbg.fr>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <8395DB06-792C-4002-BCAB-8B327FFA5BFC@astro.ex.ac.uk>
Cc: Mark Taylor <m.b.taylor@bristol.ac.uk>, apps-samp@ivoa.net
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Message-id management revisited
Date: Mon, 9 Jun 2008 13:16:28 +0100
To: Thomas Boch <boch@newb6.u-strasbg.fr>
X-Mailer: Apple Mail (2.753)
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Alasdair Allan <aa@astro.ex.ac.uk>

> Option 9 (hub-msg-id returned from existing call() methods) is my  
> first
> choice as well, as it looks cleaner.

That would be my vote.

Al.

From owner-apps-samp@eso.org  Mon Jun  9 14:59:05 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 46879624181;
	Mon,  9 Jun 2008 14:59:05 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59CxA6S010256
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 9 Jun 2008 14:59:10 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m59CxARl010255
	for apps-samp-outgoing; Mon, 9 Jun 2008 14:59:10 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m59Cx9JF010235
	for <apps-samp@ivoa.net>; Mon, 9 Jun 2008 14:59:09 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 507A71E4105
	for <apps-samp@ivoa.net>; Mon,  9 Jun 2008 15:01:32 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAGrGTEib/RCV/2dsb2JhbACubQE
X-IronPort-AV: E=Sophos;i="4.27,613,1204498800"; 
   d="scan'208";a="7986049"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
  by clavius.hq.eso.org with ESMTP; 09 Jun 2008 14:56:44 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it [155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id m59CwMEZ002823
	for <apps-samp@ivoa.net>; Mon, 9 Jun 2008 14:58:27 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP id m59CwHe9019245
	for <apps-samp@ivoa.net>; Mon, 9 Jun 2008 14:58:19 +0200
Message-ID: <484D28E9.4090103@lambrate.inaf.it>
Date: Mon, 09 Jun 2008 14:58:17 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>  <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>  <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk> <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com> <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk> <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk> <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk> <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk> <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk> <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk> <Pine.LNX.4.63.0806091127200.31626@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0806091127200.31626@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Luigi Paioro <luigi@lambrate.inaf.it>

My 2 cents again: I vote 9.

Cheers,

   Luigi


Mark Taylor ha scritto:
> Everyone,
> 
> We should draw this point to a conclusion, and then I'll post my
> draft of the SAMP doc to this list for final comments before uploading
> it to the IVOA document server as a Working Draft.
> 
> Alasdair has gone quiet for a few days, which I interpret as meaning
> he is prepared to accept my argument (or at least my assertion) that
> none of this will lead to any significant complication for hub 
> implementations, and in particular that no per-message hub state or 
> bookkeeping will be required.
> 
> My summary of the current state of the discussion is that my suggested 
> option:
> 
>    4. hub provides hub-msg-id -> sender-msg-id translation method
> 
> is an acceptable compromise for everyone.  Alasdair and I are also
> OK with
> 
>    9. hub-msg-id is returned from existing call() methods
> 
> (see last part of http://www.ivoa.net/forum/apps-samp/0806/0129.htm).
> I think this is slightly tidier - Mike if you agree I will do 9, 
> otherwise I will do 4.
> 
> I also suggest that I rephrase the wording and API description slightly, 
> so that instead of "sender-msg-id" and "hub-msg-id" we talk instead 
> about a "msg-tag" and a "msg-id".  I think this is less confusing and
> makes more sense, since the hub-generated part is a unique identifier, 
> but the sender-generated part is just a string which the sender 
> associates with the message, which (according to how the sender wants to 
> do it) may or may not be unique.
> 
> Having done this I can add Mike's suggested progress messages (see next 
> post for more detail on this).
> 
> Mark
> 

-- 

Luigi Paioro

INAF - IASF Milano
Via Bassini 15, I-20133 Milano, Italy

Phone  (+39) 02 23 699 470
Fax    (+39) 02 26 660 17
Site   http://www.iasf-milano.inaf.it/

From owner-apps-samp@eso.org  Tue Jun 10 18:43:14 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id D5DEB624181;
	Tue, 10 Jun 2008 18:43:14 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AGhFn4002205
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 10 Jun 2008 18:43:15 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5AGhFQw002204
	for apps-samp-outgoing; Tue, 10 Jun 2008 18:43:15 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AGhEQe002200
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 18:43:14 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id EDF401E4023
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 18:45:37 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,618,1204498800"; 
   d="scan'208";a="8019554"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 10 Jun 2008 18:41:19 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K66oy-0002EE-00; Tue, 10 Jun 2008 17:35:44 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K66ov-0003HL-AU; Tue, 10 Jun 2008 17:35:41 +0100
Date: Tue, 10 Jun 2008 17:35:41 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Thomas Boch <boch@vizir.u-strasbg.fr>
cc: apps-samp@ivoa.net
Subject: Re: Message-id management revisited
In-Reply-To: <484D28E9.4090103@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0806101725430.12555@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806041048100.909@andromeda.star.bris.ac.uk>
 <8e768d0806042227m69835386y2d86d100155fe1dd@mail.gmail.com>
 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
 <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
 <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
 <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
 <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk>
 <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk>
 <Pine.LNX.4.63.0806091127200.31626@andromeda.star.bris.ac.uk>
 <484D28E9.4090103@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Mon, 9 Jun 2008, Luigi Paioro wrote:

> My 2 cents again: I vote 9.

this sounds like consensus then.  Thomas, could you regenerate the 
Synchronous and Asynchronous Call/Response cartoons to reflect the
change:


    Synchronous (just changes of some param names):

       Sender                      Hub                        Recipient
       ------                      ---                        ---------
               ----------->                   ----------->
           response = callAndWait()        receiveCall(msg-id)

                                              <----------
                                           reply(msg-id)

    Asynchronous:

       Sender                      Hub                        Recipient
       ------                      ---                        ---------
           (1)------------>              (2)-------------->
                    call(msg-tag)         receiveCall(msg-id)

              <-----------(3)               <-------------(4)
           receiveResonse(msg-tag)        reply(msg-id)

Possibly (1) in the asynch case should be labelled "msg-id = call(msg-tag)",
since that's what happens, but in most cases the msg-id will be ignored,
so I'd say it's probably best to do it as illustrated above for clarity.
But whichever you think best.

thanks

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Tue Jun 10 20:17:32 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2DFC5624166;
	Tue, 10 Jun 2008 20:17:32 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AIHXic011576
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 10 Jun 2008 20:17:33 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5AIHXCL011575
	for apps-samp-outgoing; Tue, 10 Jun 2008 20:17:33 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AIHWip011571
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 20:17:33 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 4741E1E4023
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 20:19:56 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvMAAMBhTkhA6bjvd2dsb2JhbACSEAEMAwQECREDmS6FPg
X-IronPort-AV: E=Sophos;i="4.27,618,1204498800"; 
   d="scan'208";a="8022547"
Received: from wr-out-0506.google.com ([64.233.184.239])
  by clavius.hq.eso.org with ESMTP; 10 Jun 2008 20:15:36 +0200
Received: by wr-out-0506.google.com with SMTP id 58so1638694wri.8
        for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 11:17:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender
         :to:subject:in-reply-to:mime-version:content-type
         :content-transfer-encoding:content-disposition:references
         :x-google-sender-auth;
        bh=TnVTtmAGluuCkUwr2iWAA9lQR7nTRySOPpbx1qnBH44=;
        b=o0tC4nwcz41dTWqwREAYF5Hd8Y8E5ozhY5jTTSfSLN9+BTBhyVjsMb88wdOqCbSiSX
         03v7pYckVmeqp1jxY8wquPQANWZRUJ3VggIZj8JoGPPzC1TXS0cJB7KUi0Y0f0F2L2a5
         KQxEFjTFmHfVWvjEyivq+7t358sXftLFWc6vE=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:in-reply-to:mime-version
         :content-type:content-transfer-encoding:content-disposition
         :references:x-google-sender-auth;
        b=OAo2ndgX6NM+9k5M9tBndENJ/T6vAQEnjBcclJs8sEbDfQFBBw4OUB20nqu52ld9A3
         9Mu6z79Ffw9bLhaEeptN7ecMu6+n8RLOCda3wbSIMnJZM6lDirZFc6tRlVyL59q12e6r
         s0aNwq1u9ZTOfgPwT3yDVoDP20Nby5wAFEYuA=
Received: by 10.100.41.1 with SMTP id o1mr5997546ano.10.1213121842986;
        Tue, 10 Jun 2008 11:17:22 -0700 (PDT)
Received: by 10.100.7.18 with HTTP; Tue, 10 Jun 2008 11:17:22 -0700 (PDT)
Message-ID: <8e768d0806101117p4e36b6e5rd8a3b8a40103b9c9@mail.gmail.com>
Date: Tue, 10 Jun 2008 11:17:22 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "SAMP Working Group" <apps-samp@ivoa.net>
Subject: Re: Message-id management revisited
In-Reply-To: <Pine.LNX.4.63.0806101725430.12555@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk>
	 <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
	 <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk>
	 <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0806091127200.31626@andromeda.star.bris.ac.uk>
	 <484D28E9.4090103@lambrate.inaf.it>
	 <Pine.LNX.4.63.0806101725430.12555@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: 56c19dd8d127e6de
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

    Maybe I'm just being unusually dense this week, but I'm still not sure what
problem option 9 is meant to address.

    For the original status mtype the intent was that the recipient
would occasionally
send a progress message to the sender saying what was going on.  To do this is
needs the sender-id (which it gets from the receiveCall() method) and then the
original sender-msg-tag so the sender will know which request is being updated
(it gets this from the hub translation method).  If the recipient also
does a reply()
they use the hub-msg-id and the hub takes care of finding the
sender-id and return-
ing the original sender-msg-tag.

     If I understand option 9, we now get rid of the translation
method and instead
give the sender the hub-msg-id?   So,  the sender now needs to know its
sender-msg-tag to handle a reply() *as well as* the associated hub-msg-id so it
can match up with a later status message?  (Note that status is one example,
the problem refers to any case where a message might refer to an earlier
request).  In Al's version where the sender asks for updates with a get.status
(or whatever), it would then need to send the hub-msg-id and require the
recipient to keep track of this as well (which is why the pattern
worked the other
way).

    My vote is moot at this point, but this seems like more work for the apps to
allow something simple.

    Note the original suggestion was that the final msg-id be simply a string
composed of what the sender creates plus what the hub wants to add.  This
appears to be how Mark is implementing it anyway, and there's nothing that
prevents him from adding flags for sync/asynch and such to the hub bit, but
we can keep state in the msg-id, avoid hub methods, multiple msg-id tracking,
and absolutely everyone has a trivial way to find the sender-msg-tag,
hub-msg-tag, and hub-msg-id.  What is so friggin' impossible about this!?

-Mike

From owner-apps-samp@eso.org  Tue Jun 10 21:14:27 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B1557624181;
	Tue, 10 Jun 2008 21:14:27 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AJEaIE020811
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 10 Jun 2008 21:14:36 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5AJEZd4020810
	for apps-samp-outgoing; Tue, 10 Jun 2008 21:14:35 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AJEXdk020798
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 21:14:33 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id AA78F1E410A
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 21:16:56 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvMAANBvTkjRVYT1d2dsb2JhbACSEAEMAwQECREDmVKFRg
X-IronPort-AV: E=Sophos;i="4.27,618,1204498800"; 
   d="scan'208";a="8023957"
Received: from an-out-0708.google.com ([209.85.132.245])
  by clavius.hq.eso.org with ESMTP; 10 Jun 2008 21:12:14 +0200
Received: by an-out-0708.google.com with SMTP id c36so558906ana.36
        for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 12:14:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender
         :to:subject:cc:in-reply-to:mime-version:content-type
         :content-transfer-encoding:content-disposition:references
         :x-google-sender-auth;
        bh=QSNy0P54cgopQvsSSce7A8ccQ7ECuu+9Egt3/qHm7ig=;
        b=CW2cZNGbQFjER1L5J8PvHxU44zTLCeyZTFlKjkLM8ZVMrsh2gV/zo4oFgEHHi/FzSm
         1+mrA9bLmFr/BkRZOtwyCj8DZy/xrlaupponWgIcUhhyJfcszco82kNADATzxHV9YP6J
         F7AypTkjO7SvDAt0YY0xyaZDz1Lw2lReS0vxY=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version
         :content-type:content-transfer-encoding:content-disposition
         :references:x-google-sender-auth;
        b=Breo+nfnEmbJar1I4wDzXOqU2Ry1wu4b2IVxmlzdItwmnrIpnvS6qJXVjVjhznu0LM
         EsElI0LWXXnTeIyWgbma1sSGyn69sp7qIXgviCHYtUi8R1X9SMsFy/cF+OXBv2MNLHID
         u9yckO/K6TaqIg1oCmC2iWBI6swfIs84AloKU=
Received: by 10.100.14.2 with SMTP id 2mr6049174ann.67.1213125249587;
        Tue, 10 Jun 2008 12:14:09 -0700 (PDT)
Received: by 10.100.7.18 with HTTP; Tue, 10 Jun 2008 12:14:09 -0700 (PDT)
Message-ID: <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
Date: Tue, 10 Jun 2008 12:14:09 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: Administrative MTypes
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
	 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: d46e5349f0069c85
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

On Mon, Jun 9, 2008 at 4:09 AM, Mark Taylor <m.b.taylor@bristol.ac.uk> wrote:

>>  app.event.shutdown
>
> .......  So I think I would
> argue for withdrawing this from the official list of admin messages
> in the spec.  But I don't insist on this if Mike or others feel strongly.

     I'm not sure I'd say I feel 'strongly' about it, but I do think this is
a valid mtype and keeping it does no harm.  Another use case that
may change your mind:  An app has become unresponsive for whatever
reason and so can't itself unregister or issue a shutdown, so after a
while the hub quits talking to it and issues an app.event.shutdown to
all the other clients on its behalf.


>
>>  app.status                    str             status string
>
> what is the use case for this one?  Is there supposed to be a list
> of known statuses?

No specific use case other than a general way to issue a status
string.  These might be used for debugging or logging, to broadcast
a loading/busy/done message, ......

>
>>  app.status.progress           msgid,str       progress string
>>  app.status.progress.percent   msgid,float     percentage completed
>> (float)
>>  app.status.progress.timeLeft  msgid,int       est. time remaining (sec)
>
> As I've said, I think a progress MType is a good idea.  However, I would
> rather see this as a single MType (app.status.progress) with required
> arguments msgid and progress string, and optional arguments giving
> percentage completed and time remaining.

    Percent and timeLeft are just two examples, one might also consider
'bytesDownloaded', 'filesRemaining', 'messagesHandled', etc.  Some of
these are likely to be application-specifc, the above hierarchy provides
a framework to hang these new mtypes on without later polluting the
list of optional args, and simply reserves the mtype for the types of
progress most apps would likely implement.  As with any mtype, at
least two apps would have to understand app.status.progress.frogsEaten
for it to be meaningful, the rest would ignore it.  I don't see where
interoperability is an issue.


-Mike

From owner-apps-samp@eso.org  Tue Jun 10 21:29:26 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 4A901624166;
	Tue, 10 Jun 2008 21:29:26 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AJTUgB022125
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 10 Jun 2008 21:29:30 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5AJTUtr022124
	for apps-samp-outgoing; Tue, 10 Jun 2008 21:29:30 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AJTRW7022107
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 21:29:27 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 560F01E4105
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 21:31:50 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Aj4BAFNzTkjRVcb4eWdsb2JhbACCPjWPHQEBCwMEBAkRmV6FQw
X-IronPort-AV: E=Sophos;i="4.27,619,1204498800"; 
   d="scan'208";a="8024225"
Received: from rv-out-0708.google.com ([209.85.198.248])
  by clavius.hq.eso.org with ESMTP; 10 Jun 2008 21:26:46 +0200
Received: by rv-out-0708.google.com with SMTP id b17so2595422rvf.48
        for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 12:28:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:to
         :subject:cc:in-reply-to:mime-version:content-type:references;
        bh=JhPL0eqc08k+jIi8HRDeO7/Ond+zlYIrSWfKE4uM8JI=;
        b=KqZmYVIXL3eZZkKguGQQkYPBlHiTQRqwjmGznaVJ+iIYp/6ev1AkYUq/w2czpPXdpf
         cTleIfvFQXMAQCa25ICGRJn1ZAuIa6yXkdL7nVg/epoLbk48OMXIVpQNe8BxYGPDooRg
         v+GwkFRdAXE3G8c3e1CqCIwhew6aDdLox6OWI=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:to:subject:cc:in-reply-to:mime-version
         :content-type:references;
        b=ZwLwXnqWvWNWaDd1WAN7qQx4v1ZnQtfIwzmHEc35bBrhtDu9w8cYIIH4tRM63g61d9
         GHpvz2ewvkyLUZMdqr1eWafuM9908Zkyx2OrM4vjI8v9XK0PUV+dsqJP+KReFw5bP45p
         Lb6OWAlc6pBOMAnrc4cu9n5NZdi3+/8wb17ec=
Received: by 10.141.168.7 with SMTP id v7mr3340330rvo.66.1213126115439;
        Tue, 10 Jun 2008 12:28:35 -0700 (PDT)
Received: by 10.141.152.4 with HTTP; Tue, 10 Jun 2008 12:28:35 -0700 (PDT)
Message-ID: <c04646670806101228o4c16ca98sb8077e17c2b06218@mail.gmail.com>
Date: Tue, 10 Jun 2008 12:28:35 -0700
From: "John Taylor" <jontayler@gmail.com>
To: "Mike Fitzpatrick" <fitz@noao.edu>
Subject: Re: Administrative MTypes
Cc: "Mark Taylor" <m.b.taylor@bristol.ac.uk>, apps-samp@ivoa.net
In-Reply-To: <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_4175_29055868.1213126115432"
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
	 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
	 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "John Taylor" <jontayler@gmail.com>

------=_Part_4175_29055868.1213126115432
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Tue, Jun 10, 2008 at 12:14 PM, Mike Fitzpatrick <fitz@noao.edu> wrote:

> On Mon, Jun 9, 2008 at 4:09 AM, Mark Taylor <m.b.taylor@bristol.ac.uk>
> wrote:
>
> >>  app.event.shutdown
> >
> > .......  So I think I would
> > argue for withdrawing this from the official list of admin messages
> > in the spec.  But I don't insist on this if Mike or others feel strongly.
>
>      I'm not sure I'd say I feel 'strongly' about it, but I do think this
> is
> a valid mtype and keeping it does no harm.  Another use case that
> may change your mind:  An app has become unresponsive for whatever
> reason and so can't itself unregister or issue a shutdown, so after a
> while the hub quits talking to it and issues an app.event.shutdown to
> all the other clients on its behalf.


Wouldn't it just issue an unregister in this situation (after all, the hub
doesn't know that the app has shut down, but it certainly can forcibly
unregister it)?

John

------=_Part_4175_29055868.1213126115432
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<br><br><div class="gmail_quote">On Tue, Jun 10, 2008 at 12:14 PM, Mike Fitzpatrick &lt;<a href="mailto:fitz@noao.edu">fitz@noao.edu</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Mon, Jun 9, 2008 at 4:09 AM, Mark Taylor &lt;<a href="mailto:m.b.taylor@bristol.ac.uk">m.b.taylor@bristol.ac.uk</a>&gt; wrote:<br>
<br>
&gt;&gt; &nbsp;app.event.shutdown<br>
&gt;<br>
&gt; ....... &nbsp;So I think I would<br>
<div class="Ih2E3d">&gt; argue for withdrawing this from the official list of admin messages<br>
&gt; in the spec. &nbsp;But I don&#39;t insist on this if Mike or others feel strongly.<br>
<br>
</div> &nbsp; &nbsp; I&#39;m not sure I&#39;d say I feel &#39;strongly&#39; about it, but I do think this is<br>
a valid mtype and keeping it does no harm. &nbsp;Another use case that<br>
may change your mind: &nbsp;An app has become unresponsive for whatever<br>
reason and so can&#39;t itself unregister or issue a shutdown, so after a<br>
while the hub quits talking to it and issues an app.event.shutdown to<br>
all the other clients on its behalf.</blockquote><div><br>Wouldn&#39;t it just issue an unregister in this situation (after all, the hub doesn&#39;t know that the app has shut down, but it certainly can forcibly unregister it)?<br>
<br>John<br></div></div>

------=_Part_4175_29055868.1213126115432--

From owner-apps-samp@eso.org  Tue Jun 10 21:44:58 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 27380624166;
	Tue, 10 Jun 2008 21:44:58 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AJj637023759
	for <apps-samp-outgoing@mercury.hq.eso.org>; Tue, 10 Jun 2008 21:45:06 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5AJj6BY023758
	for apps-samp-outgoing; Tue, 10 Jun 2008 21:45:06 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5AJj5FL023752
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 21:45:05 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 448351E4023
	for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 21:47:29 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AvMAANd2TkjRVYT7c2dsb2JhbACSEAEMAwQECQ8FmUKFQw
X-IronPort-AV: E=Sophos;i="4.27,619,1204498800"; 
   d="scan'208";a="8024593"
Received: from an-out-0708.google.com ([209.85.132.251])
  by clavius.hq.eso.org with ESMTP; 10 Jun 2008 21:43:09 +0200
Received: by an-out-0708.google.com with SMTP id c36so561344ana.36
        for <apps-samp@ivoa.net>; Tue, 10 Jun 2008 12:44:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender
         :to:subject:cc:in-reply-to:mime-version:content-type
         :content-transfer-encoding:content-disposition:references
         :x-google-sender-auth;
        bh=u5dYaCSNklRIgFADo+OhiFs30fFmSdqMbgt4CEK7eEk=;
        b=NwbiCoJ0nkip8fOMvDsiSZcj3v1axzTSmU0krXChN7VwTFreRkcZFd7wt5KJ7LUpkG
         OjCl5zu/RwQY9LqfoFCzkPRf9jw+mRxkRnM4gsNewKeyToVR7VZWHKN/BLTIURQ38+WS
         sUDauSZaxB34vpjgETMtFsEsKnZ7czpnb83h8=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version
         :content-type:content-transfer-encoding:content-disposition
         :references:x-google-sender-auth;
        b=otqDgm/QQCbhnWcPhEbcd0zinqRau1ERAx087/s9l1JeYeUgl3UidKXm+2e/COiFHG
         gBKiJxBLgIVX8ERXoQ/nXpvhDTTzz4Ep5Tk/M4HPAVSRiC2zENLw+Ml4OxfQhWp32YhE
         cHACp8rqiCRRA6LITz2+H7ypr2oHwUrPXeTCA=
Received: by 10.101.69.6 with SMTP id w6mr6096587ank.63.1213127099239;
        Tue, 10 Jun 2008 12:44:59 -0700 (PDT)
Received: by 10.100.7.18 with HTTP; Tue, 10 Jun 2008 12:44:59 -0700 (PDT)
Message-ID: <8e768d0806101244n22d0b841l19358bdd28c1b8e5@mail.gmail.com>
Date: Tue, 10 Jun 2008 12:44:59 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "John Taylor" <jontayler@gmail.com>
Subject: Re: Administrative MTypes
Cc: "Mark Taylor" <m.b.taylor@bristol.ac.uk>, apps-samp@ivoa.net
In-Reply-To: <c04646670806101228o4c16ca98sb8077e17c2b06218@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
	 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
	 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
	 <c04646670806101228o4c16ca98sb8077e17c2b06218@mail.gmail.com>
X-Google-Sender-Auth: 1302fb90baeb1446
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

On Tue, Jun 10, 2008 at 12:28 PM, John Taylor <jontayler@gmail.com> wrote:
> Wouldn't it just issue an unregister in this situation (after all, the hub
> doesn't know that the app has shut down, but it certainly can forcibly
> unregister it)?

You're probably right, it was a bad example.  The point is, unregistering and
shutting down are two distinct activities and mtypes are supposed to have
a clear meaning.  No doubt people will write apps that infer something has
shut down simply because it unregisters, but that isn't always true.

I claim app.event.shutdown has a clear and distinct meaning apart from the
unregister mtype, it serves an administrative function, and does no harm.
So, feeling more strongly about now as I apparently do, please leave it in.

-Mike

From owner-apps-samp@eso.org  Wed Jun 11 11:33:04 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6AFAF624166;
	Wed, 11 Jun 2008 11:33:04 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5B9X472004324
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 11 Jun 2008 11:33:04 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5B9X4YY004320
	for apps-samp-outgoing; Wed, 11 Jun 2008 11:33:04 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5B9X2Ew004311
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 11:33:02 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 67F081E4023
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 11:35:25 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,623,1204498800"; 
   d="scan'208";a="8039578"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 11 Jun 2008 11:31:04 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K6Mdl-0003V1-00; Wed, 11 Jun 2008 10:29:13 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K6Mdl-0004fI-67; Wed, 11 Jun 2008 10:29:13 +0100
Date: Wed, 11 Jun 2008 10:29:13 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Mike Fitzpatrick <fitz@noao.edu>
cc: SAMP Working Group <apps-samp@ivoa.net>
Subject: Re: Message-id management revisited
In-Reply-To: <8e768d0806101117p4e36b6e5rd8a3b8a40103b9c9@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806110959340.17708@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <Pine.LNX.4.63.0806050929400.8975@andromeda.star.bris.ac.uk> 
 <E95E6817-AD57-4A97-BB99-DA6D0949FD4F@astro.ex.ac.uk> 
 <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk> 
 <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk> 
 <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk> 
 <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk> 
 <Pine.LNX.4.63.0806091127200.31626@andromeda.star.bris.ac.uk> 
 <484D28E9.4090103@lambrate.inaf.it>  <Pine.LNX.4.63.0806101725430.12555@andromeda.star.bris.ac.uk>
 <8e768d0806101117p4e36b6e5rd8a3b8a40103b9c9@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 10 Jun 2008, Mike Fitzpatrick wrote:

>     If I understand option 9, we now get rid of the translation
> method and instead
> give the sender the hub-msg-id?   So,  the sender now needs to know its
> sender-msg-tag to handle a reply() *as well as* the associated hub-msg-id so it
> can match up with a later status message?  (Note that status is one example,

Yes.  If (and only if) a sender may want to send or receive progress-like 
messages later then this proposal means that it needs to store two 
strings rather than one.  I concede that that is more effort, but I 
wouldn't call it a significant burden.  The translation method idea 
is much the same but means that such a client would need to call 
an extra hub method to find the second one of those strings - which 
I'd say was more of a burden, though again not much.


>    Note the original suggestion was that the final msg-id be simply a string
> composed of what the sender creates plus what the hub wants to add.  This

No Mike, this was not your original suggestion:

On Wed, 4 Jun 2008, Mike Fitzpatrick wrote:

>>  2. sender generates single msg-id with fixed form <client-id>-<msg-tag>
>>        (this was Mike's original proposal)
>>      - hub can avoid maintaining *essential* state, but if it wants to
>>        keep track of other per-message info (e.g. timestamp, checksum,
>>        ...) it will need to store it internally.  Also need to worry
>>        about what happens if the sender does not follow the requirement
>>        for how the id is generated - better to have an interface in
>>       which it's impossible to do the wrong thing.
>
>    This is still my first choice (surprised?).  Because:

i.e. there is nothing in the msg-id which is "what the hub wants to add",
it is all chosen by the client in accordance with certain rules, 
and that means that the hub cannot use it to store custom state. 
As soon as the msg-id contains something that the hub wants to add 
the problem arises of how the sender finds out what that is.

> appears to be how Mark is implementing it anyway, and there's nothing that
> prevents him from adding flags for sync/asynch and such to the hub bit, but
> we can keep state in the msg-id, avoid hub methods, multiple msg-id tracking,
> and absolutely everyone has a trivial way to find the sender-msg-tag,
> hub-msg-tag, and hub-msg-id.  What is so friggin' impossible about this!?

What is so friggin' impossible is that if the hub is adding bytes of
its own choice to the msg-id, then the sender can't know what the
msg-id is without additional measures, e.g. 4 (sender-tag -> msg-id
translation method) or 9 (msg-id is returned from call() methods).

I want to avoid going backwards on this.  We already have Thomas, 
Alasdair, Luigi and me in favour of 9.  Mike, if you can find support 
among other participants for a different one of the existing proposals
(or some new one) on this topic, we can continue the debate, otherwise 
I am going to go ahead with 9.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Jun 11 11:58:59 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3DF56624166;
	Wed, 11 Jun 2008 11:58:59 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5B9x2E8006861
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 11 Jun 2008 11:59:02 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5B9x27s006860
	for apps-samp-outgoing; Wed, 11 Jun 2008 11:59:02 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5B9x1xw006856
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 11:59:01 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 71C721E4023
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 12:01:25 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,623,1204498800"; 
   d="scan'208";a="8040143"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 11 Jun 2008 11:56:57 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K6N2q-0003Yb-00; Wed, 11 Jun 2008 10:55:08 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K6N2q-0004hH-3r; Wed, 11 Jun 2008 10:55:08 +0100
Date: Wed, 11 Jun 2008 10:55:08 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Mike Fitzpatrick <fitz@noao.edu>
cc: apps-samp@ivoa.net
Subject: app.status
In-Reply-To: <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806111051100.18019@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Mike,

On Tue, 10 Jun 2008, Mike Fitzpatrick wrote:

>>>  app.status                    str             status string
>>
>> what is the use case for this one?  Is there supposed to be a list
>> of known statuses?
>
> No specific use case other than a general way to issue a status
> string.  These might be used for debugging or logging, to broadcast
> a loading/busy/done message, ......

It sounds like your intention here is for an MType which allows
a sender to inform recipients about its own status.  If so, 
wouldn't this be better named app.event.status?  app.status sounds 
to me more like it would be something a sender uses to enquire the 
status of a recipient.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Jun 11 12:10:49 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id EA779624181;
	Wed, 11 Jun 2008 12:10:48 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5BAAqWJ007972
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 11 Jun 2008 12:10:52 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5BAAqhn007971
	for apps-samp-outgoing; Wed, 11 Jun 2008 12:10:52 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5BAApwZ007967
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 12:10:51 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 62D491E4023
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 12:13:15 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,623,1204498800"; 
   d="scan'208";a="8040392"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 11 Jun 2008 12:08:54 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K6NEO-0003ap-00; Wed, 11 Jun 2008 11:07:04 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K6NEO-0004iG-Q5; Wed, 11 Jun 2008 11:07:04 +0100
Date: Wed, 11 Jun 2008 11:07:04 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Mike Fitzpatrick <fitz@noao.edu>
cc: apps-samp@ivoa.net
Subject: Re: Administrative MTypes
In-Reply-To: <8e768d0806101244n22d0b841l19358bdd28c1b8e5@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806111106320.18097@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk> 
 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com> 
 <c04646670806101228o4c16ca98sb8077e17c2b06218@mail.gmail.com>
 <8e768d0806101244n22d0b841l19358bdd28c1b8e5@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Tue, 10 Jun 2008, Mike Fitzpatrick wrote:

> I claim app.event.shutdown has a clear and distinct meaning apart from the
> unregister mtype, it serves an administrative function, and does no harm.
> So, feeling more strongly about now as I apparently do, please leave it in.

All right.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Jun 11 14:11:06 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 97C0B624181;
	Wed, 11 Jun 2008 14:11:06 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5BCBAec020547
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 11 Jun 2008 14:11:10 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5BCBA2x020546
	for apps-samp-outgoing; Wed, 11 Jun 2008 14:11:10 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5BCBAvF020542
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 14:11:10 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 339861E4023
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 14:13:34 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,624,1204498800"; 
   d="scan'208";a="8042800"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 11 Jun 2008 14:09:12 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K6PAT-0003pg-00
	for apps-samp@ivoa.net; Wed, 11 Jun 2008 13:11:09 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K6PAT-0004qf-8h
	for apps-samp@ivoa.net; Wed, 11 Jun 2008 13:11:09 +0100
Date: Wed, 11 Jun 2008 13:11:09 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: MType vocabulary design principles
In-Reply-To: <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

All,

the issue of what MType(s) to use for progress messages brings up 
a question with much wider applicability in designing the MType 
vocabulary.  I think that getting the design principles of that right 
will be important to maximise interoperability in practice. 
In my opinion if the MType vocabulary becomes too large or fine-grained 
it will be hard to recover the kind of interoperability for PLASTIC-like 
applications which PLASTIC has achieved.  Because of the importance 
of this I would urge application authors to consider the points 
raised here (and perhaps subsequently on this thread) and to 
contribute their views to the debate.

On Tue, 10 Jun 2008, Mike Fitzpatrick wrote:

> On Mon, Jun 9, 2008 at 4:09 AM, Mark Taylor <m.b.taylor@bristol.ac.uk> wrote:
>
>>>  app.status.progress           msgid,str       progress string
>>>  app.status.progress.percent   msgid,float     percentage completed
>>> (float)
>>>  app.status.progress.timeLeft  msgid,int       est. time remaining (sec)
>>
>> As I've said, I think a progress MType is a good idea.  However, I would
>> rather see this as a single MType (app.status.progress) with required
>> arguments msgid and progress string, and optional arguments giving
>> percentage completed and time remaining.
>
>    Percent and timeLeft are just two examples, one might also consider
> 'bytesDownloaded', 'filesRemaining', 'messagesHandled', etc.  Some of
> these are likely to be application-specifc, the above hierarchy provides
> a framework to hang these new mtypes on without later polluting the
> list of optional args, and simply reserves the mtype for the types of
> progress most apps would likely implement.  As with any mtype, at
> least two apps would have to understand app.status.progress.frogsEaten
> for it to be meaningful, the rest would ignore it.  I don't see where
> interoperability is an issue.

Having multiple different MTypes which do similar things leads to a 
tradeoff between interoperability and burden on the participants.
The basic problem is that if there is a (wide) choice of MTypes which 
might apply to the message you want to send, then there is a (serious) 
risk that the sender and the recipient will fail to agree on which 
one to use.  To cope robustly with this, clients at both ends have
to use all the variants, which is more work.

This is an example of a general question which is going to come up 
in relation to many other MType definitions, so it's worth some
discussion.  It's the question of whether it is better to "pollute"
the namespace of defined MTypes or the per-MType namespaces of 
(maybe optional) MType parameters.  More neutrally: for a related
set of functionality, is it better to handle semantic flexibility
by defining one MType with flexible optional parameters, or multiple
MTypes each with relatively constrained parameters.

Looking at these progress messages specifically, consider the 
situation from the sender's point of view.  If there is a set of 
related app.status.progress.* MTypes as you suggest, the sender 
could just do:

    notify( clientId, app.status.progress.percent( percent="50" ) );

however, if the recipient is only subscribed to 
app.status.progress.timeLeft then there is no information exchanged
and no interoperation.  In general there is the possibility, and 
indeed likelihood, that the MType the sender decides to send is 
not the same as the MType the potential receiver will decide 
to subscribe to.

So, to be safe, the sender really ought to do this:

    notify( clientId, app.status.progress( txt="50% done" ) );
    notify( clientId, app.status.progress.percent( percent="50") );
    notify( clientId, app.status.progress.timeLeft( timeLeft="96" ) );

or, better (because it reduces unnecessary traffic), this:

    if ( isSubscribed( clientId, app.status.progress ) )
        notify( clientId, app.status.progress( txt="50% done" ) );
    if ( isSubscribed( clientId, app.status.progress.percent ) )
        notify( clientId, app.status.progress.percent( percent="50" ) );
    if ( isSubscribed( clientId, app.status.progress.timeLeft ) )
        notify( clientId, app.status.progress.timeLeft( timeLeft="96" ) );

There are three problems with this:

    1. It's more coding effort for the sender
    2. The number of messages transmitted through the system may be
       higher than it needs to be
    3. It will still fail to transmit progress information if the
       recipient is only subscribed to, e.g.,
       app.status.progress.frogsEaten

In the alternative way of doing it, there is one MType named 
app.status.progress with a required parameter txt and documented
optional parameters percent and timeLeft.  Then I can write just

    notify( clientId, app.status.progress( txt="50% done",
                                           percent="50",
                                           timeLeft="96" ) );

or, better,

    if ( isSubscribed( clientId, app.status.progress ) )
       notify( clientId, app.status.progress( txt="50% done",
                                              percent="50",
                                              timeLeft="96" ) );

I can add on frogsEaten="23" and byteDownloaded="9999" parameters 
if I want.

This is easier to code, it means there is only one message sent per 
progress event thus reducing load on the messaging infrastructure and
recipient, and it guarantees that if both sides are interested in
progress information at all they will be able to communicate about it 
to some extent, even if it's only a text string (which in practice
can always be generated by a sender, and can nearly always be made
some use of by the recipient).


This specific case aside: when deciding how broadly defined 
specific MTypes should be (what goes in parameters and what warrants a
new MType) it will in general be necessary to look at the details
on a case by case basis.  But I would say that in most cases, 
because of the kinds of considerations I've outlined above,
it is better to keep to a small number of MTypes, and to handle 
semantic flexibility with (perhaps optional) parameters.  I suggest 
the following rules of thumb:

    1. If an application wants to perform some specific kind of
       interoperation with another, it should be clear which MType
       to use for that, rather than there being a selection of
       similar ones available which differ in detail.

    2. It's OK to define or use as many optional parameters as are
       useful for an MType as long as a recipient which ignores
       all the optional parameters can still stand a good chance
       of processing the message in a sensible fashion.

These arguments are most important when considering a PLASTIC-like
scenario in which applications are communicating with other 
applications which they may never have met before in a relatively 
uncontrolled environment.  However I don't believe that doing it the
way I am advocating will be disadvantageous even in more controlled
environments.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Wed Jun 11 17:32:27 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 5F340624166;
	Wed, 11 Jun 2008 17:32:27 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5BFWXLt020357
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 11 Jun 2008 17:32:33 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5BFWXbK020356
	for apps-samp-outgoing; Wed, 11 Jun 2008 17:32:33 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5BFWWk8020352
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 17:32:32 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 79B431E4023
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 17:34:56 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Al8BAJOMT0hA6bjpc2dsb2JhbACCPTWOW0MBDAMEBAkPBZgqhkM
X-IronPort-AV: E=Sophos;i="4.27,624,1204498800"; 
   d="scan'208";a="8047711"
Received: from wr-out-0506.google.com ([64.233.184.233])
  by clavius.hq.eso.org with ESMTP; 11 Jun 2008 17:30:33 +0200
Received: by wr-out-0506.google.com with SMTP id 58so1874639wri.8
        for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 08:32:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender
         :to:subject:cc:in-reply-to:mime-version:content-type:references
         :x-google-sender-auth;
        bh=+JM0lHoakGFIqv+fC74sgM74Qt4sWoji+Kr8y6pIFfU=;
        b=GhL+TliMSG3piKVR1+CmxQV2P2VnTIjRUnW/inWKW3zF/4zgsM644mai0wNF/dBJbg
         y2P+vIO48TKI/Lk/+JshqJ6WTdsY9rA6afr1xM6izDs0YnQ7MDT/PMjMoiVeHuIebvqL
         QxuuevVzC/9r97yoYdjCrABZYA1/0LI8KHRvo=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version
         :content-type:references:x-google-sender-auth;
        b=I8BGPOEsak/QAmrnV9i+x5ImBEAOu7duXDurH+oX3brwkoFBxbHSPAX8Fl1K5BJORi
         letd/qzcEF59U4lrMw1zsiFFlcSzy70sktWfZamgJKFiZupX/bRvFGwbKoVYtC4Fkyau
         PUGO1qJHT3SiqVK0AxxsFuaEWnjQoY6g6gttU=
Received: by 10.100.140.15 with SMTP id n15mr7805669and.110.1213198350860;
        Wed, 11 Jun 2008 08:32:30 -0700 (PDT)
Received: by 10.100.7.18 with HTTP; Wed, 11 Jun 2008 08:32:30 -0700 (PDT)
Message-ID: <8e768d0806110832s6d799a25p77abeaca352c65bc@mail.gmail.com>
Date: Wed, 11 Jun 2008 08:32:30 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: Message-id management revisited
Cc: "SAMP Working Group" <apps-samp@ivoa.net>
In-Reply-To: <Pine.LNX.4.63.0806110959340.17708@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_2739_1040160.1213198350845"
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <Pine.LNX.4.63.0806051008360.9328@andromeda.star.bris.ac.uk>
	 <8D314645-1472-498D-ADF5-6CAC264CF20D@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0806051341160.10248@andromeda.star.bris.ac.uk>
	 <804B08C4-1269-4B3E-9111-E6BBFD7FD39B@astro.ex.ac.uk>
	 <Pine.LNX.4.63.0806091127200.31626@andromeda.star.bris.ac.uk>
	 <484D28E9.4090103@lambrate.inaf.it>
	 <Pine.LNX.4.63.0806101725430.12555@andromeda.star.bris.ac.uk>
	 <8e768d0806101117p4e36b6e5rd8a3b8a40103b9c9@mail.gmail.com>
	 <Pine.LNX.4.63.0806110959340.17708@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: b9f46b30f74ef1b9
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

------=_Part_2739_1040160.1213198350845
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

> No Mike, this was not your original suggestion:

You're right, what you quote is your list of options.  I was referring to
the
first comment on 4/28 (and following discussions) when this hub-msg-id
thing first appeared in the doc:

   *** Introduction of sender-msg-id/hub-msg-id is a new, overly complex,
>        detail.  If the receiver gives back the same msg-id why does the hub
>        need to add anything to it?  If the the msg-id contains some bit of
>        identifying sender info it doesn't need any sort of mapping at all,
>        if the msg-id is a random string then this mapping stack is an
>        implementation detail.
>            I STRONGLY suggest we lay down a msg-id format or Hub respons-
>        ibilities in handling truly opaque id strings,
>



> I want to avoid going backwards on this.  We already have Thomas,
Alasdair,
> Luigi and me in favour of 9.  Mike, if you can find support among other
> participants for a different one of the existing proposals
> (or some new one) on this topic, we can continue the debate, otherwise I
am
> going to go ahead with 9.

Like I said, my vote was probably moot.

-Mike

------=_Part_2739_1040160.1213198350845
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<br><br><br>&gt; No Mike, this was not your original suggestion:<br><br>You&#39;re right, what you quote is your list of options. &nbsp;I was referring to the<br>first comment on 4/28 (and following discussions) when this hub-msg-id <br>
thing first appeared in the doc:<br><br><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"><div style="margin-left: 40px;"> &nbsp; &nbsp;*** Introduction of sender-msg-id/hub-msg-id is a new, overly complex,<br>
 &nbsp; &nbsp; &nbsp; &nbsp;detail. &nbsp;If the receiver gives back the same msg-id why does the hub<br> &nbsp; &nbsp; &nbsp; &nbsp;need to add anything to it? &nbsp;If the the msg-id contains some bit of<br> &nbsp; &nbsp; &nbsp; &nbsp;identifying sender info it doesn&#39;t need any sort of mapping at all,<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if the msg-id is a random string then this mapping stack is an<br> &nbsp; &nbsp; &nbsp; &nbsp;implementation detail. &nbsp;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;I STRONGLY suggest we lay down a msg-id format or Hub respons-<br> &nbsp; &nbsp; &nbsp; &nbsp;ibilities in handling truly opaque id strings,<br>
</div></blockquote><br><br><br>&gt; I want to avoid going backwards on this. &nbsp;We already have Thomas, Alasdair,<br>&gt; Luigi and me in favour of 9. &nbsp;Mike, if you can find support among other<br>&gt; participants for a different one of the existing proposals<br>
&gt; (or some new one) on this topic, we can continue the debate, otherwise I am<br>&gt; going to go ahead with 9.<br><br>Like I said, my vote was probably moot.<br><br>-Mike<br>

------=_Part_2739_1040160.1213198350845--

From owner-apps-samp@eso.org  Wed Jun 11 18:45:29 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 67E77624166;
	Wed, 11 Jun 2008 18:45:29 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5BGjVPb027939
	for <apps-samp-outgoing@mercury.hq.eso.org>; Wed, 11 Jun 2008 18:45:31 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5BGjVXE027938
	for apps-samp-outgoing; Wed, 11 Jun 2008 18:45:31 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5BGjVN6027933
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 18:45:31 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 234C41E4023
	for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 18:47:55 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AjYBACieT0hKfSydeWdsb2JhbACCPTaOW0MBAQsDBAQJEZhQhk0
X-IronPort-AV: E=Sophos;i="4.27,625,1204498800"; 
   d="scan'208";a="8049166"
Received: from yx-out-1718.google.com ([74.125.44.157])
  by clavius.hq.eso.org with ESMTP; 11 Jun 2008 18:43:31 +0200
Received: by yx-out-1718.google.com with SMTP id 36so330011yxh.18
        for <apps-samp@ivoa.net>; Wed, 11 Jun 2008 09:45:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:to
         :subject:cc:in-reply-to:mime-version:content-type:references;
        bh=IQ0lbAs99SC/mGm8psGtbkXrdgzFHevRNk2/Q8Hy7wU=;
        b=N5O+paG2Ht/HmPfULeHqKExIZPNDQOMdLunzH58Z17eRM/g3pC3k1iDstexc0Ln5Jr
         b2Q3YasPl/n0ewgxPrp6J1K5TRQ8mlgTktcEpaayuc0tn/nE2cIXd3JWoALNsRKR4BzQ
         8KUh9x8obGxNhd1jSVNl+yXaQLFu8Xr6jMG2U=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:to:subject:cc:in-reply-to:mime-version
         :content-type:references;
        b=orSAfT6iMR2anFXz78l8VTEgXLR0LtkSERDtuDBRZtDrSwKtJla9xOzLFdsXmJHwec
         HWRowu9iuTu3LUz75i4bjNNG+D80kKKjg0UR79IXNNbv3MGhsQ3Z8WHonedIgiqszS5i
         TH8aDGppy0ZoUfSw2IYFgkdUa/HyHVLYbiZnY=
Received: by 10.142.165.14 with SMTP id n14mr2756654wfe.335.1213202728120;
        Wed, 11 Jun 2008 09:45:28 -0700 (PDT)
Received: by 10.142.87.6 with HTTP; Wed, 11 Jun 2008 09:45:28 -0700 (PDT)
Message-ID: <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com>
Date: Wed, 11 Jun 2008 09:45:28 -0700
From: "John Taylor" <jontayler@gmail.com>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: MType vocabulary design principles
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_7212_11747147.1213202728128"
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
	 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
	 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
	 <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk>
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "John Taylor" <jontayler@gmail.com>

------=_Part_7212_11747147.1213202728128
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

It might be useful to think about when why we want separate MTypes at all.
With SAMP's  flexible named parameter passing we could in principle just
have one uber MType
analyze.this()
that just took different named parameters to indicate whether it's talking
about loading up a votable, processing an image or warning of an application
unregistering.  The reasons we define different MTypes for different jobs
are
* So that a sender can dispatch a message to an app and have some reasonable
expectation it will be acted on (particularly important if that sender is a
human) since the sender has declared an interest in it
* So that recipients don't have to be interrupted for messages they have no
intention or capability of acting on

In the example you give below of progress messages I'd say neither of these
apply.  I've declared I'm interested in progress messages.  Send me progress
messages.  I want to be interrupted by progress messages.  OK, if you send
me the progress in units of frogs I can't do anything useful with it, but
I'm sure you'll also supply the "fallback" parameter of a text string too,
so I'll use that.
*Please* use one MType for this.

John


On Wed, Jun 11, 2008 at 5:11 AM, Mark Taylor <m.b.taylor@bristol.ac.uk>
wrote:

> All,
>
> the issue of what MType(s) to use for progress messages brings up a
> question with much wider applicability in designing the MType vocabulary.  I
> think that getting the design principles of that right will be important to
> maximise interoperability in practice. In my opinion if the MType vocabulary
> becomes too large or fine-grained it will be hard to recover the kind of
> interoperability for PLASTIC-like applications which PLASTIC has achieved.
>  Because of the importance of this I would urge application authors to
> consider the points raised here (and perhaps subsequently on this thread)
> and to contribute their views to the debate.
>
> On Tue, 10 Jun 2008, Mike Fitzpatrick wrote:
>
>  On Mon, Jun 9, 2008 at 4:09 AM, Mark Taylor <m.b.taylor@bristol.ac.uk>
>> wrote:
>>
>>   app.status.progress           msgid,str       progress string
>>>>  app.status.progress.percent   msgid,float     percentage completed
>>>> (float)
>>>>  app.status.progress.timeLeft  msgid,int       est. time remaining (sec)
>>>>
>>>
>>> As I've said, I think a progress MType is a good idea.  However, I would
>>> rather see this as a single MType (app.status.progress) with required
>>> arguments msgid and progress string, and optional arguments giving
>>> percentage completed and time remaining.
>>>
>>
>>   Percent and timeLeft are just two examples, one might also consider
>> 'bytesDownloaded', 'filesRemaining', 'messagesHandled', etc.  Some of
>> these are likely to be application-specifc, the above hierarchy provides
>> a framework to hang these new mtypes on without later polluting the
>> list of optional args, and simply reserves the mtype for the types of
>> progress most apps would likely implement.  As with any mtype, at
>> least two apps would have to understand app.status.progress.frogsEaten
>> for it to be meaningful, the rest would ignore it.  I don't see where
>> interoperability is an issue.
>>
>
> Having multiple different MTypes which do similar things leads to a
> tradeoff between interoperability and burden on the participants.
> The basic problem is that if there is a (wide) choice of MTypes which might
> apply to the message you want to send, then there is a (serious) risk that
> the sender and the recipient will fail to agree on which one to use.  To
> cope robustly with this, clients at both ends have
> to use all the variants, which is more work.
>
> This is an example of a general question which is going to come up in
> relation to many other MType definitions, so it's worth some
> discussion.  It's the question of whether it is better to "pollute"
> the namespace of defined MTypes or the per-MType namespaces of (maybe
> optional) MType parameters.  More neutrally: for a related
> set of functionality, is it better to handle semantic flexibility
> by defining one MType with flexible optional parameters, or multiple
> MTypes each with relatively constrained parameters.
>
> Looking at these progress messages specifically, consider the situation
> from the sender's point of view.  If there is a set of related
> app.status.progress.* MTypes as you suggest, the sender could just do:
>
>   notify( clientId, app.status.progress.percent( percent="50" ) );
>
> however, if the recipient is only subscribed to
> app.status.progress.timeLeft then there is no information exchanged
> and no interoperation.  In general there is the possibility, and indeed
> likelihood, that the MType the sender decides to send is not the same as the
> MType the potential receiver will decide to subscribe to.
>
> So, to be safe, the sender really ought to do this:
>
>   notify( clientId, app.status.progress( txt="50% done" ) );
>   notify( clientId, app.status.progress.percent( percent="50") );
>   notify( clientId, app.status.progress.timeLeft( timeLeft="96" ) );
>
> or, better (because it reduces unnecessary traffic), this:
>
>   if ( isSubscribed( clientId, app.status.progress ) )
>       notify( clientId, app.status.progress( txt="50% done" ) );
>   if ( isSubscribed( clientId, app.status.progress.percent ) )
>       notify( clientId, app.status.progress.percent( percent="50" ) );
>   if ( isSubscribed( clientId, app.status.progress.timeLeft ) )
>       notify( clientId, app.status.progress.timeLeft( timeLeft="96" ) );
>
> There are three problems with this:
>
>   1. It's more coding effort for the sender
>   2. The number of messages transmitted through the system may be
>      higher than it needs to be
>   3. It will still fail to transmit progress information if the
>      recipient is only subscribed to, e.g.,
>      app.status.progress.frogsEaten
>
> In the alternative way of doing it, there is one MType named
> app.status.progress with a required parameter txt and documented
> optional parameters percent and timeLeft.  Then I can write just
>
>   notify( clientId, app.status.progress( txt="50% done",
>                                          percent="50",
>                                          timeLeft="96" ) );
>
> or, better,
>
>   if ( isSubscribed( clientId, app.status.progress ) )
>      notify( clientId, app.status.progress( txt="50% done",
>                                             percent="50",
>                                             timeLeft="96" ) );
>
> I can add on frogsEaten="23" and byteDownloaded="9999" parameters if I
> want.
>
> This is easier to code, it means there is only one message sent per
> progress event thus reducing load on the messaging infrastructure and
> recipient, and it guarantees that if both sides are interested in
> progress information at all they will be able to communicate about it to
> some extent, even if it's only a text string (which in practice
> can always be generated by a sender, and can nearly always be made
> some use of by the recipient).
>
>
> This specific case aside: when deciding how broadly defined specific MTypes
> should be (what goes in parameters and what warrants a
> new MType) it will in general be necessary to look at the details
> on a case by case basis.  But I would say that in most cases, because of
> the kinds of considerations I've outlined above,
> it is better to keep to a small number of MTypes, and to handle semantic
> flexibility with (perhaps optional) parameters.  I suggest the following
> rules of thumb:
>
>   1. If an application wants to perform some specific kind of
>      interoperation with another, it should be clear which MType
>      to use for that, rather than there being a selection of
>      similar ones available which differ in detail.
>
>   2. It's OK to define or use as many optional parameters as are
>      useful for an MType as long as a recipient which ignores
>      all the optional parameters can still stand a good chance
>      of processing the message in a sensible fashion.
>
> These arguments are most important when considering a PLASTIC-like
> scenario in which applications are communicating with other applications
> which they may never have met before in a relatively uncontrolled
> environment.  However I don't believe that doing it the
> way I am advocating will be disadvantageous even in more controlled
> environments.
>
> Mark
>
> --
> Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
> m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/<http://www.star.bris.ac.uk/%7Embt/>
>



-- 
Google Pittsburgh is hiring!

------=_Part_7212_11747147.1213202728128
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

It might be useful to think about when why we want separate MTypes at all.&nbsp; With SAMP&#39;s&nbsp; flexible named parameter passing we could in principle just have one uber MType<br>analyze.this()<br>that just took different named parameters to indicate whether it&#39;s talking about loading up a votable, processing an image or warning of an application unregistering.&nbsp; The reasons we define different MTypes for different jobs are<br>
* So that a sender can dispatch a message to an app and have some reasonable expectation it will be acted on (particularly important if that sender is a human) since the sender has declared an interest in it<br>* So that recipients don&#39;t have to be interrupted for messages they have no intention or capability of acting on<br>
<br>In the example you give below of progress messages I&#39;d say neither of these apply.&nbsp; I&#39;ve declared I&#39;m interested in progress messages.&nbsp; Send me progress messages.&nbsp; I want to be interrupted by progress messages.&nbsp; OK, if you send me the progress in units of frogs I can&#39;t do anything useful with it, but I&#39;m sure you&#39;ll also supply the &quot;fallback&quot; parameter of a text string too, so I&#39;ll use that.<br>
<i>Please</i> use one MType for this.<br><br>John<br><br><br><div class="gmail_quote">On Wed, Jun 11, 2008 at 5:11 AM, Mark Taylor &lt;<a href="mailto:m.b.taylor@bristol.ac.uk">m.b.taylor@bristol.ac.uk</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
All,<br>
<br>
the issue of what MType(s) to use for progress messages brings up a question with much wider applicability in designing the MType vocabulary. &nbsp;I think that getting the design principles of that right will be important to maximise interoperability in practice. In my opinion if the MType vocabulary becomes too large or fine-grained it will be hard to recover the kind of interoperability for PLASTIC-like applications which PLASTIC has achieved. &nbsp;Because of the importance of this I would urge application authors to consider the points raised here (and perhaps subsequently on this thread) and to contribute their views to the debate.<br>

<br>
On Tue, 10 Jun 2008, Mike Fitzpatrick wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Mon, Jun 9, 2008 at 4:09 AM, Mark Taylor &lt;<a href="mailto:m.b.taylor@bristol.ac.uk" target="_blank">m.b.taylor@bristol.ac.uk</a>&gt; wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

&nbsp;app.status.progress &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; msgid,str &nbsp; &nbsp; &nbsp; progress string<br>
&nbsp;app.status.progress.percent &nbsp; msgid,float &nbsp; &nbsp; percentage completed<br>
(float)<br>
&nbsp;app.status.progress.timeLeft &nbsp;msgid,int &nbsp; &nbsp; &nbsp; est. time remaining (sec)<br>
</blockquote>
<br>
As I&#39;ve said, I think a progress MType is a good idea. &nbsp;However, I would<br>
rather see this as a single MType (app.status.progress) with required<br>
arguments msgid and progress string, and optional arguments giving<br>
percentage completed and time remaining.<br>
</blockquote>
<br>
 &nbsp; Percent and timeLeft are just two examples, one might also consider<br>
&#39;bytesDownloaded&#39;, &#39;filesRemaining&#39;, &#39;messagesHandled&#39;, etc. &nbsp;Some of<br>
these are likely to be application-specifc, the above hierarchy provides<br>
a framework to hang these new mtypes on without later polluting the<br>
list of optional args, and simply reserves the mtype for the types of<br>
progress most apps would likely implement. &nbsp;As with any mtype, at<br>
least two apps would have to understand app.status.progress.frogsEaten<br>
for it to be meaningful, the rest would ignore it. &nbsp;I don&#39;t see where<br>
interoperability is an issue.<br>
</blockquote>
<br>
Having multiple different MTypes which do similar things leads to a tradeoff between interoperability and burden on the participants.<br>
The basic problem is that if there is a (wide) choice of MTypes which might apply to the message you want to send, then there is a (serious) risk that the sender and the recipient will fail to agree on which one to use. &nbsp;To cope robustly with this, clients at both ends have<br>

to use all the variants, which is more work.<br>
<br>
This is an example of a general question which is going to come up in relation to many other MType definitions, so it&#39;s worth some<br>
discussion. &nbsp;It&#39;s the question of whether it is better to &quot;pollute&quot;<br>
the namespace of defined MTypes or the per-MType namespaces of (maybe optional) MType parameters. &nbsp;More neutrally: for a related<br>
set of functionality, is it better to handle semantic flexibility<br>
by defining one MType with flexible optional parameters, or multiple<br>
MTypes each with relatively constrained parameters.<br>
<br>
Looking at these progress messages specifically, consider the situation from the sender&#39;s point of view. &nbsp;If there is a set of related app.status.progress.* MTypes as you suggest, the sender could just do:<br>
<br>
 &nbsp; notify( clientId, app.status.progress.percent( percent=&quot;50&quot; ) );<br>
<br>
however, if the recipient is only subscribed to app.status.progress.timeLeft then there is no information exchanged<br>
and no interoperation. &nbsp;In general there is the possibility, and indeed likelihood, that the MType the sender decides to send is not the same as the MType the potential receiver will decide to subscribe to.<br>
<br>
So, to be safe, the sender really ought to do this:<br>
<br>
 &nbsp; notify( clientId, app.status.progress( txt=&quot;50% done&quot; ) );<br>
 &nbsp; notify( clientId, app.status.progress.percent( percent=&quot;50&quot;) );<br>
 &nbsp; notify( clientId, app.status.progress.timeLeft( timeLeft=&quot;96&quot; ) );<br>
<br>
or, better (because it reduces unnecessary traffic), this:<br>
<br>
 &nbsp; if ( isSubscribed( clientId, app.status.progress ) )<br>
 &nbsp; &nbsp; &nbsp; notify( clientId, app.status.progress( txt=&quot;50% done&quot; ) );<br>
 &nbsp; if ( isSubscribed( clientId, app.status.progress.percent ) )<br>
 &nbsp; &nbsp; &nbsp; notify( clientId, app.status.progress.percent( percent=&quot;50&quot; ) );<br>
 &nbsp; if ( isSubscribed( clientId, app.status.progress.timeLeft ) )<br>
 &nbsp; &nbsp; &nbsp; notify( clientId, app.status.progress.timeLeft( timeLeft=&quot;96&quot; ) );<br>
<br>
There are three problems with this:<br>
<br>
 &nbsp; 1. It&#39;s more coding effort for the sender<br>
 &nbsp; 2. The number of messages transmitted through the system may be<br>
 &nbsp; &nbsp; &nbsp;higher than it needs to be<br>
 &nbsp; 3. It will still fail to transmit progress information if the<br>
 &nbsp; &nbsp; &nbsp;recipient is only subscribed to, e.g.,<br>
 &nbsp; &nbsp; &nbsp;app.status.progress.frogsEaten<br>
<br>
In the alternative way of doing it, there is one MType named app.status.progress with a required parameter txt and documented<br>
optional parameters percent and timeLeft. &nbsp;Then I can write just<br>
<br>
 &nbsp; notify( clientId, app.status.progress( txt=&quot;50% done&quot;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;percent=&quot;50&quot;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;timeLeft=&quot;96&quot; ) );<br>
<br>
or, better,<br>
<br>
 &nbsp; if ( isSubscribed( clientId, app.status.progress ) )<br>
 &nbsp; &nbsp; &nbsp;notify( clientId, app.status.progress( txt=&quot;50% done&quot;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; percent=&quot;50&quot;,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; timeLeft=&quot;96&quot; ) );<br>
<br>
I can add on frogsEaten=&quot;23&quot; and byteDownloaded=&quot;9999&quot; parameters if I want.<br>
<br>
This is easier to code, it means there is only one message sent per progress event thus reducing load on the messaging infrastructure and<br>
recipient, and it guarantees that if both sides are interested in<br>
progress information at all they will be able to communicate about it to some extent, even if it&#39;s only a text string (which in practice<br>
can always be generated by a sender, and can nearly always be made<br>
some use of by the recipient).<br>
<br>
<br>
This specific case aside: when deciding how broadly defined specific MTypes should be (what goes in parameters and what warrants a<br>
new MType) it will in general be necessary to look at the details<br>
on a case by case basis. &nbsp;But I would say that in most cases, because of the kinds of considerations I&#39;ve outlined above,<br>
it is better to keep to a small number of MTypes, and to handle semantic flexibility with (perhaps optional) parameters. &nbsp;I suggest the following rules of thumb:<br>
<br>
 &nbsp; 1. If an application wants to perform some specific kind of<br>
 &nbsp; &nbsp; &nbsp;interoperation with another, it should be clear which MType<br>
 &nbsp; &nbsp; &nbsp;to use for that, rather than there being a selection of<br>
 &nbsp; &nbsp; &nbsp;similar ones available which differ in detail.<br>
<br>
 &nbsp; 2. It&#39;s OK to define or use as many optional parameters as are<br>
 &nbsp; &nbsp; &nbsp;useful for an MType as long as a recipient which ignores<br>
 &nbsp; &nbsp; &nbsp;all the optional parameters can still stand a good chance<br>
 &nbsp; &nbsp; &nbsp;of processing the message in a sensible fashion.<br>
<br>
These arguments are most important when considering a PLASTIC-like<br>
scenario in which applications are communicating with other applications which they may never have met before in a relatively uncontrolled environment. &nbsp;However I don&#39;t believe that doing it the<br>
way I am advocating will be disadvantageous even in more controlled<br>
environments.<br>
<br>
Mark<br><font color="#888888">
<br>
-- <br>
Mark Taylor &nbsp; Astronomical Programmer &nbsp; Physics, Bristol University, UK<br>
<a href="mailto:m.b.taylor@bris.ac.uk" target="_blank">m.b.taylor@bris.ac.uk</a> +44-117-928-8776 <a href="http://www.star.bris.ac.uk/%7Embt/" target="_blank">http://www.star.bris.ac.uk/~mbt/</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Google Pittsburgh is hiring!

------=_Part_7212_11747147.1213202728128--

From owner-apps-samp@eso.org  Thu Jun 12 10:51:31 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id EE565624166;
	Thu, 12 Jun 2008 10:51:30 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5C8pXJn022669
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 12 Jun 2008 10:51:33 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5C8pXL3022668
	for apps-samp-outgoing; Thu, 12 Jun 2008 10:51:33 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5C8pWDY022664
	for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 10:51:32 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 3E3F71E4023
	for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 10:53:57 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,630,1204498800"; 
   d="scan'208";a="8064724"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 12 Jun 2008 10:49:32 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K6iWp-0005g7-00
	for apps-samp@ivoa.net; Thu, 12 Jun 2008 09:51:31 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K6iWp-0006oE-HX
	for apps-samp@ivoa.net; Thu, 12 Jun 2008 09:51:31 +0100
Date: Thu, 12 Jun 2008 09:51:31 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: MType vocabulary design principles
In-Reply-To: <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806120948520.26048@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk> 
 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com> 
 <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk>
 <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 11 Jun 2008, John Taylor wrote:

> unregistering.  The reasons we define different MTypes for different jobs
> are
> * So that a sender can dispatch a message to an app and have some reasonable
> expectation it will be acted on (particularly important if that sender is a
> human) since the sender has declared an interest in it
> * So that recipients don't have to be interrupted for messages they have no
> intention or capability of acting on

thanks John, those nicely sum up the other side of the coin from the
rules of thumb that I suggested.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu Jun 12 11:08:12 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B3B10624166;
	Thu, 12 Jun 2008 11:08:12 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5C98DDl024472
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 12 Jun 2008 11:08:13 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5C98D5K024471
	for apps-samp-outgoing; Thu, 12 Jun 2008 11:08:13 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5C98CEs024467
	for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 11:08:12 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 1937E1E4023
	for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 11:10:37 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AnQBANiDUEjRVYT5d2dsb2JhbACCOzeOZ0MBDAMEBAkRA5hDhjc
X-IronPort-AV: E=Sophos;i="4.27,630,1204498800"; 
   d="scan'208";a="8065034"
Received: from an-out-0708.google.com ([209.85.132.249])
  by clavius.hq.eso.org with ESMTP; 12 Jun 2008 11:06:11 +0200
Received: by an-out-0708.google.com with SMTP id c36so725890ana.36
        for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 02:08:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender
         :to:subject:cc:in-reply-to:mime-version:content-type:references
         :x-google-sender-auth;
        bh=TeCbyZn2V0G9bZZNeN8mK0sJp8nFdLvGzrYhqIzh5FA=;
        b=QS7Xqtbe9FLsisVWU0IR2LQ0TYQUzq0SD78TGmn8KDpLwUwXcvXHfyohW+M+NplZoV
         aj642jv8rFOxiY1eHKuDMqPXtiR/8VVxAI9oLAy3GdsvY7fHWJjlqr9tE6crRMAomV2A
         q9MKSlD5WSc8gr7jGUJ8utn+siHcuIRlCe1wE=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version
         :content-type:references:x-google-sender-auth;
        b=JzfYj06T6+hhjIAhKjf3gv4sMVCBhWNLDAB0s/+CGafs4I9XjvFQv4qJo0ai1zO5dp
         F0HnJqYQ2HGjCR9FjgfMHTOB1NOnnf475d9xpluRPK3QUlHeFADvJhe0OPhOX7sTfTxH
         FSRSvS4YBLH/Sv1ZVIvVQ5BEQGP4QwmHUEDy8=
Received: by 10.100.197.3 with SMTP id u3mr1552980anf.102.1213261690939;
        Thu, 12 Jun 2008 02:08:10 -0700 (PDT)
Received: by 10.100.7.18 with HTTP; Thu, 12 Jun 2008 02:08:10 -0700 (PDT)
Message-ID: <8e768d0806120208x52fef22di9c1527c708abb8f9@mail.gmail.com>
Date: Thu, 12 Jun 2008 02:08:10 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "John Taylor" <jontayler@gmail.com>
Subject: Re: MType vocabulary design principles
Cc: "Mark Taylor" <m.b.taylor@bristol.ac.uk>, apps-samp@ivoa.net
In-Reply-To: <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_7013_2291057.1213261690918"
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
	 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
	 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
	 <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk>
	 <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com>
X-Google-Sender-Auth: 124a29ec42b6b415
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

------=_Part_7013_2291057.1213261690918
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

I agree with John on this.

In the interest of generality I'd prefer a simple app.status mtype that asks
simply
to process a status message (Mark has a point about 'app.event.status', but
this
isn't really an event per se and we can define 'app.status' in the form of a
request (e.g. 'please process this status') if needed).  If we have just the
one mtype
defined to be a status string then senders can write what they like, and
receivers
who subscribe only need to support displaying it in some way.  If a sender
wants to
put it in terms of time/percent/frogs that's fine, but the receiver only
needs to
put up a string in a dialog and not care about the format.  Leave the
"*.percent"
to apps that want to display a progress bar as a GUI element to be worked
out
by themselves with an app-specific mtype.

Percent and timeLeft I think cover most cases, but if it means opening
mtypes to
arbitrary optional args I'd just as soon drop it for a common app.status
that says
you'll get a string to display/log/whatever.

-Mike

------=_Part_7013_2291057.1213261690918
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

I agree with John on this.<br><br>In the interest of generality I&#39;d prefer a simple app.status mtype that asks simply<br>to process a status message (Mark has a point about &#39;app.event.status&#39;, but this<br>isn&#39;t really an event per se and we can define &#39;app.status&#39; in the form of a<br>
request (e.g. &#39;please process this status&#39;) if needed).&nbsp; If we have just the one mtype<br>defined to be a status string then senders can write what they like, and receivers <br>who subscribe only need to support displaying it in some way.&nbsp; If a sender wants to<br>
put it in terms of time/percent/frogs that&#39;s fine, but the receiver only needs to <br>put up a string in a dialog and not care about the format.&nbsp; Leave the &quot;*.percent&quot;<br>to apps that want to display a progress bar as a GUI element to be worked out<br>
by themselves with an app-specific mtype.<br><br>Percent and timeLeft I think cover most cases, but if it means opening mtypes to<br>arbitrary optional args I&#39;d just as soon drop it for a common app.status that says <br>
you&#39;ll get a string to display/log/whatever.<br><br>-Mike<br><br><br><br><br>

------=_Part_7013_2291057.1213261690918--

From owner-apps-samp@eso.org  Thu Jun 12 17:47:30 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id D6457624181;
	Thu, 12 Jun 2008 17:47:30 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5CFlWHD011878
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 12 Jun 2008 17:47:32 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5CFlWDh011877
	for apps-samp-outgoing; Thu, 12 Jun 2008 17:47:32 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5CFlWsS011872
	for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 17:47:32 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id D0F191E401C
	for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 17:49:56 +0200 (CEST)
X-IronPort-AV: E=Sophos;i="4.27,631,1204498800"; 
   d="scan'208";a="8074296"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 12 Jun 2008 17:45:30 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K6p1P-0006X6-00
	for apps-samp@ivoa.net; Thu, 12 Jun 2008 16:47:31 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K6p1P-0007ad-5n
	for apps-samp@ivoa.net; Thu, 12 Jun 2008 16:47:31 +0100
Date: Thu, 12 Jun 2008 16:47:31 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: MType vocabulary design principles
In-Reply-To: <8e768d0806120208x52fef22di9c1527c708abb8f9@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806121625020.29079@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk> 
 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com> 
 <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk> 
 <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com>
 <8e768d0806120208x52fef22di9c1527c708abb8f9@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Thu, 12 Jun 2008, Mike Fitzpatrick wrote:

> I agree with John on this.
>
> In the interest of generality I'd prefer a simple app.status mtype that asks
> simply
> to process a status message (Mark has a point about 'app.event.status', but
> this
> isn't really an event per se and we can define 'app.status' in the form of a
> request (e.g. 'please process this status') if needed).  If we have just the
> one mtype
> defined to be a status string then senders can write what they like, and
> receivers
> who subscribe only need to support displaying it in some way.  If a sender
> wants to
> put it in terms of time/percent/frogs that's fine, but the receiver only
> needs to
> put up a string in a dialog and not care about the format.  Leave the
> "*.percent"
> to apps that want to display a progress bar as a GUI element to be worked
> out
> by themselves with an app-specific mtype.
>
> Percent and timeLeft I think cover most cases, but if it means opening
> mtypes to
> arbitrary optional args I'd just as soon drop it for a common app.status
> that says
> you'll get a string to display/log/whatever.

Mike,

I'm not sure if you're talking about the app.status or 
app.status.progress MTypes here; I think John was discussing only 
progress messages (as I was in the message he replied to) but you're 
talking about app.status above.  If you're saying that app.status 
and app.status.progress should be collapsed into a single message: 
I don't agree, because the app.progress MType(s) is talking about 
progress of a particular previously sent message, while the app.status 
one presumably concerns the status of the sending application as a whole.
These seem to require distinctively different behaviours - for instance
a client might be sending progress messages about two different previous
requests at the same time, and you wouldn't want them to get mixed up.

Unless you say different, since you're agreeing with John and he was
agreeing with me ... I'll assume that you're happy with something like
the following:

    MType:
       samp.app.status
    Parameters:
       txt: textual indication of status (REQUIRED)
    Return values:
       none
    Description:
       General purpose message to indicate application status.

    MType:
       samp.app.status.progress
    Parameters:
       msgid: message ID of a previously sent message (REQUIRED)
       txt: textual indication of progress (REQUIRED)
       percent: numerical percentage indication of progress (OPTIONAL)
       timeLeft: estimated time to completion in seconds (OPTIONAL)
    Return values:
       none
    Description:
       Reports progress on a previously sent message.

(though looking at this again, I'm more persuaded that these ought to
have a ".event." in their names, since if we wanted an MType to mean
"what is your status?" what would that be called?  However I don't insist
on that since as long as the definitions are right I'm not too bothered
about the names)

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Thu Jun 12 18:01:38 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0F565624181;
	Thu, 12 Jun 2008 18:01:38 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5CG1gk4013590
	for <apps-samp-outgoing@mercury.hq.eso.org>; Thu, 12 Jun 2008 18:01:42 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5CG1glF013589
	for apps-samp-outgoing; Thu, 12 Jun 2008 18:01:42 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from aeon.hq.eso.org (aeon.hq.eso.org [134.171.42.40])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5CG1fcj013585
	for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 18:01:41 +0200 (MEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by aeon.hq.eso.org (Postfix) with ESMTP id 5AAA41E401C
	for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 18:04:06 +0200 (CEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AnQBABvlUEjRVYT7c2dsb2JhbACCOzeOZkMBDAMEBAkPBZhDgw4
X-IronPort-AV: E=Sophos;i="4.27,631,1204498800"; 
   d="scan'208";a="8074586"
Received: from an-out-0708.google.com ([209.85.132.251])
  by clavius.hq.eso.org with ESMTP; 12 Jun 2008 17:59:39 +0200
Received: by an-out-0708.google.com with SMTP id c36so760071ana.36
        for <apps-samp@ivoa.net>; Thu, 12 Jun 2008 09:01:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=gamma;
        h=domainkey-signature:received:received:message-id:date:from:sender
         :to:subject:cc:in-reply-to:mime-version:content-type:references
         :x-google-sender-auth;
        bh=1ISDrRWA8Ccm2RxHe2rv0s4RMWFO+vljvTSLVVwyl6g=;
        b=sn5UUWRplocJ46o9Ql4KGs4Zg4B/jgc4ChGhwC8QdxEv/wOBnHeO5rJjTtFjoys3S0
         rsU117KxRG79jEChzGCq+TXTis0Lnh2e9nIJYdZg2sVExukafGwJFv7nUH1lW0BtFZpG
         jPbeXH1G2/0/Q5MdjJtOR4vgcEZN7JzegNvgE=
DomainKey-Signature: a=rsa-sha1; c=nofws;
        d=gmail.com; s=gamma;
        h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version
         :content-type:references:x-google-sender-auth;
        b=OPzK3kXhycgiyHgbDoCiiswoQ0SQxVnNScRa5Q7S9HRS8jXw0LNiX0bNIptWuDFgTz
         GW2OMIgsMm64ETEGmUtdiqvMxLrmcYiTsZGbMNcKBhy69JyO1t9TS3Y4c3wotV0UkgsN
         Bsg7oJJP6ioxW1uk7bIDIrbBSKO+Zuoa8LJYo=
Received: by 10.100.94.14 with SMTP id r14mr878311anb.158.1213286499161;
        Thu, 12 Jun 2008 09:01:39 -0700 (PDT)
Received: by 10.100.7.18 with HTTP; Thu, 12 Jun 2008 09:01:38 -0700 (PDT)
Message-ID: <8e768d0806120901i5e06a69fh316c121cf616c490@mail.gmail.com>
Date: Thu, 12 Jun 2008 09:01:38 -0700
From: "Mike Fitzpatrick" <fitz@noao.edu>
To: "Mark Taylor" <m.b.taylor@bristol.ac.uk>
Subject: Re: MType vocabulary design principles
Cc: apps-samp@ivoa.net
In-Reply-To: <Pine.LNX.4.63.0806121625020.29079@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_8906_19161333.1213286499159"
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>
	 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
	 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>
	 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>
	 <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk>
	 <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com>
	 <8e768d0806120208x52fef22di9c1527c708abb8f9@mail.gmail.com>
	 <Pine.LNX.4.63.0806121625020.29079@andromeda.star.bris.ac.uk>
X-Google-Sender-Auth: 6abfe841a6ceb797
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: "Mike Fitzpatrick" <fitz@noao.edu>

------=_Part_8906_19161333.1213286499159
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Blame the late night, I was referring to app.status.progress but was arguing
that
the percent/timeLeft be dropped as args.  Subscription to the mtype means
you
agree to display the string but it is up to the sender to decide whether to
format
a percentage or time remaining or frogs eaten.  The app.status is still a
generic status string but might not have a msgid associated with it.

-Mike

------=_Part_8906_19161333.1213286499159
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Blame the late night, I was referring to app.status.progress but was arguing that<br>the percent/timeLeft be dropped as args.&nbsp; Subscription to the mtype means you<br>agree to display the string but it is up to the sender to decide whether to format<br>
a percentage or time remaining or frogs eaten.&nbsp; The app.status is still a<br>generic status string but might not have a msgid associated with it.<br><br>-Mike<br><br><div class="gmail_quote"><br></div><br>

------=_Part_8906_19161333.1213286499159--

From owner-apps-samp@eso.org  Fri Jun 13 12:05:41 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 98A17624181;
	Fri, 13 Jun 2008 12:05:41 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DA5esj022486
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 13 Jun 2008 12:05:40 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5DA5edH022485
	for apps-samp-outgoing; Fri, 13 Jun 2008 12:05:40 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DA5dL0022481
	for <apps-samp@ivoa.net>; Fri, 13 Jun 2008 12:05:39 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAGnjUUib/RCV/2dsb2JhbACuHQ
X-IronPort-AV: E=Sophos;i="4.27,637,1204498800"; 
   d="scan'208";a="8091949"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
  by clavius.hq.eso.org with ESMTP; 13 Jun 2008 12:03:35 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it [155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id m5DA5LJ0009084
	for <apps-samp@ivoa.net>; Fri, 13 Jun 2008 12:05:26 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP id m5DA5GTk025373
	for <apps-samp@ivoa.net>; Fri, 13 Jun 2008 12:05:18 +0200
Message-ID: <4852465C.50701@lambrate.inaf.it>
Date: Fri, 13 Jun 2008 12:05:16 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: apps-samp@ivoa.net
Subject: Re: MType vocabulary design principles
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk>  <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>  <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk>  <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com>  <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk>  <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com> <8e768d0806120208x52fef22di9c1527c708abb8f9@mail.gmail.com> <Pine.LNX.4.63.0806121625020.29079@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0806121625020.29079@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Luigi Paioro <luigi@lambrate.inaf.it>

Dear Mark and all,

   I'm a bit confused concerning the meaning of samp.app.status and 
samp.app.status.progress MTypes and I think this comes from a more 
general misunderstanding on my part.

Just a few definitions to let me understand better:

When we talk about an application in practice we mean a persistent 
stateful object registered to the SAMP Hub. An application can support a 
set of MTypes sent using call or notify hub methods. From another point 
of view we can see a _call_ with a certain MType (I'm not considering 
the notifications now) as a call to a specific method belonging to a 
specific interface and supported by the persistent object (very similar 
to what happens in DBus).

An example:

If I perform a call to an application MyApp sending the MType app.echo 
(it is supposed to be supported) it is exactly the same to perform a 
call to MyApp.echo() method of a generic class that implements:

   Interface                    Interface                        Class
  +---------+             +--------------------+               +-------+
  | Samp  O |<--inherits--|       App        O |<--implements--| MyApp |
  +---------+             +--------------------+               +-------+
                          | +echo(txt: string) |
                          +--------------------+

isn't it? At least this is more or less what I would do if I had to 
build up an SAMP application at design level. Then, in my mind, I figure 
out the MType chain of words (xxx.yyy.zzzz) as a sort of interface 
inheritance (in UML terms) that ends with the operation name. The 
additional benefit of the MType system is that it allows an application 
to choose to implement only certain operations (methods) of certain 
interfaces among those defined in this mailing list (instead in Java 
when a class implements an interface it must implement all its methods).

This is just to explain my point of view (that could be completely 
wrong... but that's it).

Said this, I understand samp.app.status MType as an operation that 
returns an information on the application status (the status of the 
stateful persistent object registered to the Hub).

Since we get a msg-id (in general) only when we use the call hub method, 
we can intend such msg-id as a call-id, and in practice they are 
synonymous (am I wrong?). Then, what we want to trace with the 
samp.app.status.progress actually is the call status progress, not the 
application status progress (which means nothing).

Then I would rather have (two possibilities):

MType:
   samp.app.msg.status.progress or samp.app.call.status.progress
Parameters:
   msgid (or callid): message ID (or callid) of a previously sent message
                      (or of a previously operation called) (REQUIRED)
   txt: textual indication of progress (REQUIRED)
   percent: numerical percentage indication of progress (OPTIONAL)
   timeLeft: estimated time to completion in seconds (OPTIONAL)
Return values:
   none
Description:
   Reports progress on a previously sent message (or operation called).


Does it makes sense?

Luigi



>    MType:
>       samp.app.status
>    Parameters:
>       txt: textual indication of status (REQUIRED)
>    Return values:
>       none
>    Description:
>       General purpose message to indicate application status.
> 
>    MType:
>       samp.app.status.progress
>    Parameters:
>       msgid: message ID of a previously sent message (REQUIRED)
>       txt: textual indication of progress (REQUIRED)
>       percent: numerical percentage indication of progress (OPTIONAL)
>       timeLeft: estimated time to completion in seconds (OPTIONAL)
>    Return values:
>       none
>    Description:
>       Reports progress on a previously sent message.
> 
> (though looking at this again, I'm more persuaded that these ought to
> have a ".event." in their names, since if we wanted an MType to mean
> "what is your status?" what would that be called?  However I don't insist
> on that since as long as the definitions are right I'm not too bothered
> about the names)
> 
> Mark

From owner-apps-samp@eso.org  Fri Jun 13 12:30:42 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 80D7B624196;
	Fri, 13 Jun 2008 12:30:42 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DAUjxV024961
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 13 Jun 2008 12:30:45 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5DAUjUj024960
	for apps-samp-outgoing; Fri, 13 Jun 2008 12:30:45 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DAUjch024955
	for <apps-samp@ivoa.net>; Fri, 13 Jun 2008 12:30:45 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,637,1204498800"; 
   d="scan'208";a="8092467"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 13 Jun 2008 12:28:41 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K76YO-0000Im-00
	for apps-samp@ivoa.net; Fri, 13 Jun 2008 11:30:44 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K76YN-0001y7-Od
	for apps-samp@ivoa.net; Fri, 13 Jun 2008 11:30:43 +0100
Date: Fri, 13 Jun 2008 11:30:43 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: MType vocabulary design principles
In-Reply-To: <4852465C.50701@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0806131115570.7502@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk> 
 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com> 
 <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk> 
 <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com>
 <8e768d0806120208x52fef22di9c1527c708abb8f9@mail.gmail.com>
 <Pine.LNX.4.63.0806121625020.29079@andromeda.star.bris.ac.uk>
 <4852465C.50701@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Fri, 13 Jun 2008, Luigi Paioro wrote:

> Dear Mark and all,
>
>  I'm a bit confused concerning the meaning of samp.app.status and 
> samp.app.status.progress MTypes and I think this comes from a more general 
> misunderstanding on my part.

Luigi,

I don't think you are misunderstanding, I pretty much agree with 
your description of how this all works.  To clarify though, at the 
level of the protocol, the MTypes are opaque strings, so the progress of
a given message and its response through the system is not affected
by its structure (whether it's samp.app.status.progress or 
samp.app.msg.status.progress).  The only exception to this rule of
MType opaqueness at the protocol level is MType wildcarding if you 
want to subscribe to a subtree of MTypes at once.

However, the hierarchical structure of the MType vocabulary clearly
does serve a purpose for humans, which is to give a clue about which
MTypes mean what.  In the context of that fact:

> Then I would rather have (two possibilities):
>
> MType:
>  samp.app.msg.status.progress or samp.app.call.status.progress
> Parameters:
>  msgid (or callid): message ID (or callid) of a previously sent message
>                     (or of a previously operation called) (REQUIRED)
>  txt: textual indication of progress (REQUIRED)
>  percent: numerical percentage indication of progress (OPTIONAL)
>  timeLeft: estimated time to completion in seconds (OPTIONAL)
> Return values:
>  none
> Description:
>  Reports progress on a previously sent message (or operation called).

I agree with the spirit of this proposal - as you say, the progress
is progress of a message/call, and not of the application itself.
Using samp.app.status.progress for this would not actually break 
anything, but it is less clear than what you're suggesting.

Of your alternatives, I would favour samp.app.msg.status.progress,
or maybe just samp.msg.progress.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri Jun 13 15:51:42 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0E11B624181;
	Fri, 13 Jun 2008 15:51:42 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DDpivw015297
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 13 Jun 2008 15:51:44 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5DDpiAl015296
	for apps-samp-outgoing; Fri, 13 Jun 2008 15:51:44 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DDpicu015292
	for <apps-samp@ivoa.net>; Fri, 13 Jun 2008 15:51:44 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,638,1204498800"; 
   d="scan'208";a="8097041"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 13 Jun 2008 15:49:39 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K79gt-0000gx-00
	for apps-samp@ivoa.net; Fri, 13 Jun 2008 14:51:43 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K79gt-0002ML-4A; Fri, 13 Jun 2008 14:51:43 +0100
Date: Fri, 13 Jun 2008 14:51:43 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
cc: apps-samp@ivoa.net
Subject: Re: MType vocabulary design principles
In-Reply-To: <485274A9.1080908@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0806131451060.8893@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com> 
 <Pine.LNX.4.63.0806091151380.31626@andromeda.star.bris.ac.uk> 
 <8e768d0806101214sc025ca2k675c12c9c0c76743@mail.gmail.com> 
 <Pine.LNX.4.63.0806111111120.18097@andromeda.star.bris.ac.uk> 
 <c04646670806110945w46c88036r26b9ae867fa2339b@mail.gmail.com>
 <8e768d0806120208x52fef22di9c1527c708abb8f9@mail.gmail.com>
 <Pine.LNX.4.63.0806121625020.29079@andromeda.star.bris.ac.uk>
 <4852465C.50701@lambrate.inaf.it> <Pine.LNX.4.63.0806131115570.7502@andromeda.star.bris.ac.uk>
 <485274A9.1080908@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Fri, 13 Jun 2008, Luigi Paioro wrote:

> Actually samp.msg.progress fits perfectly my personal mental pattern and the 
> "philosophy" of my last mail... I would favour it :)

I will consider that two votes in favour then - anyone against?

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri Jun 13 16:07:03 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 3E9456242D7;
	Fri, 13 Jun 2008 16:07:03 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DE767i017066
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 13 Jun 2008 16:07:06 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5DE76H1017065
	for apps-samp-outgoing; Fri, 13 Jun 2008 16:07:06 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DE76UF017057
	for <apps-samp@ivoa.net>; Fri, 13 Jun 2008 16:07:06 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,638,1204498800"; 
   d="scan'208";a="8097509"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 13 Jun 2008 16:05:01 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K79vl-0000j4-00
	for apps-samp@ivoa.net; Fri, 13 Jun 2008 15:07:05 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K79vl-0002Ni-LS
	for apps-samp@ivoa.net; Fri, 13 Jun 2008 15:07:05 +0100
Date: Fri, 13 Jun 2008 15:07:05 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: Administrative MTypes
In-Reply-To: <c04646670806040708l2b91dand16a03061ea69103@mail.gmail.com>
Message-ID: <Pine.LNX.4.63.0806131502240.9112@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806031218040.26291@andromeda.star.bris.ac.uk> 
 <8e768d0806032253k3710d6cbt25948e4bb9aeb475@mail.gmail.com>
 <c04646670806040708l2b91dand16a03061ea69103@mail.gmail.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

On Wed, 4 Jun 2008, John Taylor wrote:

> On Wed, Jun 4, 2008 at 1:53 AM, Mike Fitzpatrick <fitz@noao.edu> wrote:
>>
>>        That said, I'd still like to have an 'app' class of messages
>> since not every administrative message will be coming from the hub.
>> My sense is that app.echo and app.isAlive really mean the same thing
>> and could be just 'app.ping' or somesuch (after all, if an app isn't
>> alive it would never respond, but then neither would any other message).
>
> I'd agree with that.  I put the echo message in just for test purposes as
> something I could send and not cause any side effects.  ping does the same
> job.

following this up belatedly - for consistency I plan (unless anyone
objects) to rename the Standard Profile hub method isAlive() to ping().
As Mike points out, ping is a less confusing label for this 
functionality.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From owner-apps-samp@eso.org  Fri Jun 13 20:04:59 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id DB74E624181;
	Fri, 13 Jun 2008 20:04:58 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DI514X009466
	for <apps-samp-outgoing@mercury.hq.eso.org>; Fri, 13 Jun 2008 20:05:01 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5DI51QP009465
	for apps-samp-outgoing; Fri, 13 Jun 2008 20:05:01 +0200 (MEST)
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5DI512D009461
	for <apps-samp@ivoa.net>; Fri, 13 Jun 2008 20:05:01 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,640,1204498800"; 
   d="scan'208";a="8102400"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
  by clavius.hq.eso.org with ESMTP; 13 Jun 2008 20:02:56 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1K7De0-0001AF-00
	for apps-samp@ivoa.net; Fri, 13 Jun 2008 19:05:00 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1K7De0-0002pA-AJ
	for apps-samp@ivoa.net; Fri, 13 Jun 2008 19:05:00 +0100
Date: Fri, 13 Jun 2008 19:05:00 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Latest SAMP doc version
Message-ID: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Mark Taylor <m.b.taylor@bristol.ac.uk>

Dear apps-samp,

I have attached the most recent version (13 June 2008) of the SAMP
document to the wiki page

    http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/SampProgress

This incorporates the decisions made at Trieste as well as discussions
since then on this list.  The Trieste version is also there for comparison.

A rough list of changes since Trieste follows at the end of this message.

If you have any comments on the current draft, please make them here.
However I would like to publish a copy as an IVOA Working Draft soon 
(I promised before the end of June) so I'm hoping that nothing too 
contentious will come up.  Of course WD status does not mean that 
this is set in stone - we can issue new WD versions in the future 
and of course make revisions before attempting to go to PR.

I am on holiday all next week - back 23 June.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/


Changes to SAMP doc since Trieste:
----------------------------------

Added "Status of this document" section.

Added "Extensible Vocabularies" section, and referenced it in some places
which allows removal of repeated text (repeatedly explained concepts)
elsewhere.

Moved "Registering with the hub" section to after
"Scalar type encodings" section.

Moved some text from "SAMP Data Types" section to
"Scalar type encodings" section.

Added "MType Subscriptions" section.  Moved MType BNF into this section
from section 5, and added wildcard description.

Split "Message and Response Encoding" section into two, and changed the
way that responses are encoded.

Added description of Synchronous Call/Response timouts to Sending and Receving
Messages section

Added a comment to warn about badly-behaved recipients who never reply
to calls.

The following hub API calls have changed:
    register() - now returns map
    declareMetadata() - name change
    declareSubscriptions() - name and argument change
    getSubscriptions() name and argument change
    getSubscribedClients() - return value change
    getHubID() - removed
    callAndWait() - timeout added
    call(), callAndWait() - now return msg-id
    reply() - argument change
    ping() - new name for isAlive()  (Standard Profile only)

The following client API calls have changed:
    receiveResponse() - argument change

Some argument names have changed in the documentation (msg-id -> msg-tag
in some cases, so that the same arg name always refers to the same thing).

Added better crossreferencing to hub/client API descriptions.

Several wording changes and typo fixes.

Some formatting and stylistic rationalisation.

MType section introductory text revised to match current scope of the section.

Added section "MType Vocabulary: Extensibility and Process"

Provide more careful documentation for core MTypes
    samp.hub.event.shutdown
    samp.hub.event.register
    samp.hub.event.unregister
    samp.hub.event.metadata
    samp.hub.event.subscriptions
    samp.app.ping
    samp.app.status           (should this be samp.app.event.status?)
    samp.app.event.shutdown
    samp.msg.progress         (should this be samp.msg.event.progress?)

Dropped list of other MTypes - to be included in supplementary document.

Filled in PLASTIC/SAMP changes appendix.

Delivery Pattern section updated to match agreed changes to msg-id/msg-tag
handling.

Add an example of a notifyAll() message to the Standard Profile
examples section.

From owner-apps-samp@eso.org  Mon Jun 16 10:20:53 2008
Return-Path: <owner-apps-samp@eso.org>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id F3340624196;
	Mon, 16 Jun 2008 10:20:52 +0200 (CEST)
Received: from mercury.hq.eso.org (localhost [127.0.0.1])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5G8KoCg011084
	for <apps-samp-outgoing@mercury.hq.eso.org>; Mon, 16 Jun 2008 10:20:50 +0200 (MEST)
Received: (from majordomo@localhost)
	by mercury.hq.eso.org (8.13.6+Sun/8.13.6/Submit) id m5G8KoMV011083
	for apps-samp-outgoing; Mon, 16 Jun 2008 10:20:50 +0200 (MEST)
Message-Id: <200806160820.m5G8KoMV011083@mercury.hq.eso.org>
X-Authentication-Warning: mercury.hq.eso.org: majordomo set sender to owner-apps-samp@eso.org using -f
Date: Fri, 13 Jun 2008 15:22:49 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
CC: apps-samp@ivoa.net
Subject: Re: MType vocabulary design principles
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Sender: owner-apps-samp@eso.org
Precedence: bulk
Reply-To: Luigi Paioro <luigi@lambrate.inaf.it>

> I don't think you are misunderstanding, I pretty much agree with your 
> description of how this all works.  To clarify though, at the level of 
> the protocol, the MTypes are opaque strings, so the progress of
> a given message and its response through the system is not affected
> by its structure (whether it's samp.app.status.progress or 
> samp.app.msg.status.progress).  The only exception to this rule of
> MType opaqueness at the protocol level is MType wildcarding if you want 
> to subscribe to a subtree of MTypes at once.

Thank you for the clarification.


> I agree with the spirit of this proposal - as you say, the progress
> is progress of a message/call, and not of the application itself.
> Using samp.app.status.progress for this would not actually break 
> anything, but it is less clear than what you're suggesting.
> 
> Of your alternatives, I would favour samp.app.msg.status.progress,
> or maybe just samp.msg.progress.
> 
> Mark
> 

Actually samp.msg.progress fits perfectly my personal mental pattern and
the "philosophy" of my last mail... I would favour it :)


Luigi

From apps-samp-bounces@ivoa.net  Fri Jun 27 16:00:33 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id AD50062418C;
	Fri, 27 Jun 2008 16:00:33 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5RE0ZhZ004634;
	Fri, 27 Jun 2008 16:00:35 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id BA528ECA38F;
	Fri, 27 Jun 2008 16:00:35 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id BF77CECA38F;
	Fri, 27 Jun 2008 16:00:33 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5RE0Xh5004628;
	Fri, 27 Jun 2008 16:00:33 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,715,1204498800"; 
   d="scan'208";a="8542746"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 27 Jun 2008 15:57:44 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KCEV7-0004li-00; Fri, 27 Jun 2008 15:00:33 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KCEV6-00063c-VX; Fri, 27 Jun 2008 15:00:32 +0100
Date: Fri, 27 Jun 2008 15:00:32 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net, IVOA Applications WG <apps@ivoa.net>
Subject: SAMP v1.0 WD published
In-Reply-To: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Dear apps and apps-samp,

On Fri, 13 Jun 2008, Mark Taylor wrote:

> I have attached the most recent version (13 June 2008) of the SAMP
> document to the wiki page
>
>   http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/SampProgress

As there have been no comments on the draft I posted to the apps-samp
list a couple of weeks ago, I assume everyone is happy - good.

The 1.0 WD is now available on the IVOA Docs page:

    http://www.ivoa.net/Documents/latest/SAMP.html

This is the same as the version on the wiki above except for the
author and editor lists, and some formatting changes including those
required to generate the HTML version alongside the PDF one.

It would be great to see people starting to implement this now,
or in the case of Alasdair and Thomas modifying their existing
implementations to match the 1.0 WD version.  I am working on a
hub, client toolkit and hub test suite in Java.  I hope to provide
an initial release of this fairly soon - if anyone is particularly
keen to get an early copy (the hub is working now) let me know,
otherwise I'll wait until it's a bit more documented and tested
before announcing it here.

Thanks to all participants for getting this far.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-bounces@ivoa.net  Fri Jun 27 16:00:34 2008
Return-Path: <apps-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id F07BF624197;
	Fri, 27 Jun 2008 16:00:33 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5RE0a5b004637;
	Fri, 27 Jun 2008 16:00:36 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 125DEECA3B3;
	Fri, 27 Jun 2008 16:00:36 +0200 (CEST)
X-Original-To: apps@pat.hq.eso.org
Delivered-To: apps@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id BF77CECA38F;
	Fri, 27 Jun 2008 16:00:33 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5RE0Xh5004628;
	Fri, 27 Jun 2008 16:00:33 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,715,1204498800"; 
   d="scan'208";a="8542746"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 27 Jun 2008 15:57:44 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KCEV7-0004li-00; Fri, 27 Jun 2008 15:00:33 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KCEV6-00063c-VX; Fri, 27 Jun 2008 15:00:32 +0100
Date: Fri, 27 Jun 2008 15:00:32 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net, IVOA Applications WG <apps@ivoa.net>
Subject: SAMP v1.0 WD published
In-Reply-To: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Applications Working Group - IVOA <apps.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps@ivoa.net>
List-Help: <mailto:apps-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=subscribe>
Errors-To: apps-bounces@ivoa.net

Dear apps and apps-samp,

On Fri, 13 Jun 2008, Mark Taylor wrote:

> I have attached the most recent version (13 June 2008) of the SAMP
> document to the wiki page
>
>   http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/SampProgress

As there have been no comments on the draft I posted to the apps-samp
list a couple of weeks ago, I assume everyone is happy - good.

The 1.0 WD is now available on the IVOA Docs page:

    http://www.ivoa.net/Documents/latest/SAMP.html

This is the same as the version on the wiki above except for the
author and editor lists, and some formatting changes including those
required to generate the HTML version alongside the PDF one.

It would be great to see people starting to implement this now,
or in the case of Alasdair and Thomas modifying their existing
implementations to match the 1.0 WD version.  I am working on a
hub, client toolkit and hub test suite in Java.  I hope to provide
an initial release of this fairly soon - if anyone is particularly
keen to get an early copy (the hub is working now) let me know,
otherwise I'll wait until it's a bit more documented and tested
before announcing it here.

Thanks to all participants for getting this far.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Mon Jun 30 12:44:55 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6E7C6624197;
	Mon, 30 Jun 2008 12:44:55 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5UAiu4d026404;
	Mon, 30 Jun 2008 12:44:56 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id CE424ECA356;
	Mon, 30 Jun 2008 12:44:56 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id B21A6EC81A1;
	Mon, 30 Jun 2008 12:44:54 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5UAis9G026395;
	Mon, 30 Jun 2008 12:44:54 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAM9VaEib/RCV/2dsb2JhbACvYgE
X-IronPort-AV: E=Sophos;i="4.27,727,1204498800"; 
   d="scan'208";a="8643596"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 30 Jun 2008 12:41:56 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m5UAiG0W019876; Mon, 30 Jun 2008 12:44:21 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m5UAi6na004744; Mon, 30 Jun 2008 12:44:11 +0200
Message-ID: <4868B8F6.8040504@lambrate.inaf.it>
Date: Mon, 30 Jun 2008 12:44:06 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: SAMP v1.0 WD published
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: apps-samp@ivoa.net, IVOA Applications WG <apps@ivoa.net>
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Dear Mark and all,

   as I told you during the last IVOA interop. meeting in Trieste, I've 
just implemented a Python SAMP hub and related client toolkit following 
the latest 1.0 WD. Even if it is still an alpha version and certainly 
needs further tests, you can download it here:

http://cosmos.iasf-milano.inaf.it/luigi/projects/vo/samp/sampy-1.0alpha.tar.gz

and look at the API doc here:

http://cosmos.iasf-milano.inaf.it/luigi/projects/vo/samp/apidoc/

The API doc contains an example of usage while the sampy-1.0alpha.tar.gz 
  contains also a client test script (client.py).

SAMPY implementation also provides some undocumented features I will 
show you in a next mail addressed to apps-samp@ivoa.net mailing list 
only (just to discuss them).

If you have any problem with SAMPY, please let me know.

Best regards,

   Luigi



Mark Taylor ha scritto:
> Dear apps and apps-samp,
> 
> On Fri, 13 Jun 2008, Mark Taylor wrote:
> 
>> I have attached the most recent version (13 June 2008) of the SAMP
>> document to the wiki page
>>
>>   http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/SampProgress
> 
> As there have been no comments on the draft I posted to the apps-samp
> list a couple of weeks ago, I assume everyone is happy - good.
> 
> The 1.0 WD is now available on the IVOA Docs page:
> 
>    http://www.ivoa.net/Documents/latest/SAMP.html
> 
> This is the same as the version on the wiki above except for the
> author and editor lists, and some formatting changes including those
> required to generate the HTML version alongside the PDF one.
> 
> It would be great to see people starting to implement this now,
> or in the case of Alasdair and Thomas modifying their existing
> implementations to match the 1.0 WD version.  I am working on a
> hub, client toolkit and hub test suite in Java.  I hope to provide
> an initial release of this fairly soon - if anyone is particularly
> keen to get an early copy (the hub is working now) let me know,
> otherwise I'll wait until it's a bit more documented and tested
> before announcing it here.
> 
> Thanks to all participants for getting this far.
> 
> Mark
> 

-- 

Luigi Paioro

INAF - IASF Milano
Via Bassini 15, I-20133 Milano, Italy

Phone  (+39) 02 23 699 470
Fax    (+39) 02 26 660 17
Site   http://www.iasf-milano.inaf.it/

From apps-bounces@ivoa.net  Mon Jun 30 12:44:55 2008
Return-Path: <apps-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id CBFA162419B;
	Mon, 30 Jun 2008 12:44:55 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5UAivJj026407;
	Mon, 30 Jun 2008 12:44:57 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 3F5B0ECA382;
	Mon, 30 Jun 2008 12:44:57 +0200 (CEST)
X-Original-To: apps@pat.hq.eso.org
Delivered-To: apps@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id B21A6EC81A1;
	Mon, 30 Jun 2008 12:44:54 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m5UAis9G026395;
	Mon, 30 Jun 2008 12:44:54 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAM9VaEib/RCV/2dsb2JhbACvYgE
X-IronPort-AV: E=Sophos;i="4.27,727,1204498800"; 
   d="scan'208";a="8643596"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 30 Jun 2008 12:41:56 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m5UAiG0W019876; Mon, 30 Jun 2008 12:44:21 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m5UAi6na004744; Mon, 30 Jun 2008 12:44:11 +0200
Message-ID: <4868B8F6.8040504@lambrate.inaf.it>
Date: Mon, 30 Jun 2008 12:44:06 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: SAMP v1.0 WD published
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: apps-samp@ivoa.net, IVOA Applications WG <apps@ivoa.net>
X-BeenThere: apps@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Applications Working Group - IVOA <apps.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps@ivoa.net>
List-Help: <mailto:apps-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=subscribe>
Errors-To: apps-bounces@ivoa.net

Dear Mark and all,

   as I told you during the last IVOA interop. meeting in Trieste, I've 
just implemented a Python SAMP hub and related client toolkit following 
the latest 1.0 WD. Even if it is still an alpha version and certainly 
needs further tests, you can download it here:

http://cosmos.iasf-milano.inaf.it/luigi/projects/vo/samp/sampy-1.0alpha.tar.gz

and look at the API doc here:

http://cosmos.iasf-milano.inaf.it/luigi/projects/vo/samp/apidoc/

The API doc contains an example of usage while the sampy-1.0alpha.tar.gz 
  contains also a client test script (client.py).

SAMPY implementation also provides some undocumented features I will 
show you in a next mail addressed to apps-samp@ivoa.net mailing list 
only (just to discuss them).

If you have any problem with SAMPY, please let me know.

Best regards,

   Luigi



Mark Taylor ha scritto:
> Dear apps and apps-samp,
> 
> On Fri, 13 Jun 2008, Mark Taylor wrote:
> 
>> I have attached the most recent version (13 June 2008) of the SAMP
>> document to the wiki page
>>
>>   http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/SampProgress
> 
> As there have been no comments on the draft I posted to the apps-samp
> list a couple of weeks ago, I assume everyone is happy - good.
> 
> The 1.0 WD is now available on the IVOA Docs page:
> 
>    http://www.ivoa.net/Documents/latest/SAMP.html
> 
> This is the same as the version on the wiki above except for the
> author and editor lists, and some formatting changes including those
> required to generate the HTML version alongside the PDF one.
> 
> It would be great to see people starting to implement this now,
> or in the case of Alasdair and Thomas modifying their existing
> implementations to match the 1.0 WD version.  I am working on a
> hub, client toolkit and hub test suite in Java.  I hope to provide
> an initial release of this fairly soon - if anyone is particularly
> keen to get an early copy (the hub is working now) let me know,
> otherwise I'll wait until it's a bit more documented and tested
> before announcing it here.
> 
> Thanks to all participants for getting this far.
> 
> Mark
> 

-- 

Luigi Paioro

INAF - IASF Milano
Via Bassini 15, I-20133 Milano, Italy

Phone  (+39) 02 23 699 470
Fax    (+39) 02 26 660 17
Site   http://www.iasf-milano.inaf.it/

From apps-samp-bounces@ivoa.net  Wed Jul  2 19:24:13 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A4AA562419B;
	Wed,  2 Jul 2008 19:24:13 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m62HOGTf027996;
	Wed, 2 Jul 2008 19:24:16 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 5AE49ECA38F;
	Wed,  2 Jul 2008 19:24:16 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 01B5DECA343
	for <apps-samp@pat.hq.eso.org>; Wed,  2 Jul 2008 19:24:15 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m62HOE8A027990
	for <apps-samp@ivoa.net>; Wed, 2 Jul 2008 19:24:14 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,738,1204498800"; 
   d="scan'208";a="8701184"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 02 Jul 2008 19:21:09 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KE63x-0006RI-00
	for apps-samp@ivoa.net; Wed, 02 Jul 2008 18:24:13 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KE63x-0001jv-Mc
	for apps-samp@ivoa.net; Wed, 02 Jul 2008 18:24:13 +0100
Date: Wed, 2 Jul 2008 18:24:13 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: SAMPY
In-Reply-To: <4868B8F6.8040504@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<4868B8F6.8040504@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Mon, 30 Jun 2008, Luigi Paioro wrote:

>  as I told you during the last IVOA interop. meeting in Trieste, I've just 
> implemented a Python SAMP hub and related client toolkit following the latest 
> 1.0 WD. Even if it is still an alpha version and certainly needs further 
> tests, you can download it here:
>
> http://cosmos.iasf-milano.inaf.it/luigi/projects/vo/samp/sampy-1.0alpha.tar.gz

Looks great Luigi.  I certainly haven't given it a thorough workout,
but initial tests show it cooperating happily with my java code.
I'll let you know about further results when I've got some.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Thu Jul  3 10:00:18 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 9458B62419B;
	Thu,  3 Jul 2008 10:00:18 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6380JSB015698;
	Thu, 3 Jul 2008 10:00:19 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id B6AACECA3B4;
	Thu,  3 Jul 2008 10:00:19 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id BB655ECA3A9
	for <apps-samp@pat.hq.eso.org>; Thu,  3 Jul 2008 10:00:17 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6380Hoe015695
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 10:00:17 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,742,1204498800"; 
   d="scan'208";a="8711116"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 03 Jul 2008 09:57:10 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m637xwH3031807
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 10:00:03 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m637xs2m011759
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 09:59:57 +0200
Message-ID: <486C86FA.6020900@lambrate.inaf.it>
Date: Thu, 03 Jul 2008 09:59:54 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: apps-samp@ivoa.net
Subject: SAMPY undocumented features
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Dear all,

   you should have received an e-mail where I announced the alpha 
release of SAMPY 1.0, a Python implementation of SAMP (Standard Profile) 
compliant with WD 1.0 (hub and client toolkit).

This implementation cames to life within the context of the OPTICON 
Network 3.2 (http://archive.eso.org/opticon/twiki/bin/view). In 
particular SAMP has been recently selected as the basic messaging system 
for the MIMA FASE prototype 
(http://cosmos.iasf-milano.inaf.it/trac/fase) - so far we used DBus.

Well, actually the candidate MIMA (and more in general FASE) messaging 
system requires more capabilities respect those currently provided by 
SAMP. This is the reason because I implemented SAMP by myself and added 
some new undocumented (advanced) features (I will add even others).

In this mail I will show you these advanced capabilities, so that you 
can try to use them (if you need them) or in case just comment whether 
they are really useful within the context of SAMP or not (I hope the 
former).

To outline better the reasons of these additional capabilities, let me 
show you our practical use case (or scenario). We have a server machine 
which is the sole host that has a set of data reduction programs 
installed. Whoever wants to use this reduction suite must login to this 
host with a specific user (the only provided with the right authorizations).

The different components of this reduction suite should communicate one 
with another using SAMP. The problem is that if more than one user are 
logged in at the same time, they connect with the same Hub sharing all 
the different client instances of the reduction suite... and we don't 
want this.

Then I've introduced a multi-instance starting mode, that is a way to 
allow multiple Hub instances running at the same time. In practice you 
launch SAMPY in multi-instance mode typing:

$ sampy.py --multi


What SAMPY does is to check whether the directory $HOME/.samp-1 exists 
($HOME or %USERPROFILE%) and if it doesn't then SAMPY creates it 
(.samp-1 means SAMP version 1). Then SAMPY starts a new Hub with a

$HOME/.samp-1/samp-hub-<PID>-<ID>

lock-file. <PID> is the process ID of the program that holds this Hub, 
and <ID> is an integer indicating an additional Hub ID for those 
programs which are able to spawn multiple Hubs (in my case it is a 
thread number).

 From the Hub side that's all. The clients, if not specified, try to 
connect with the single instance mode Hub (looking for $HOME/.samp 
lock-file). Otherwise, if specified, clients look for all the available 
Hubs (looking for $HOME/.samp and $HOME/.samp-1/samp-hub-* lock files), 
ask to the user which one s/he wants to connect with, and then they 
perform the connection.

Looking at the SAMPY API doc:

SAMPHubServer is provided with a mode parameter that accepts two values: 
SAMP_HUB_SINGLE_INSTANCE or SAMP_HUB_MULTIPLE_INSTANCE (the meaning is 
obvious).

SAMPHubProxy has an undocumented static method which is getRunningHubs() 
that returns a dictionary containing all the lock-file contents of the 
currently running hubs. SAMPHubProxy connect() method has also an 
additional undocumented parameter (hub_params) which accepts a 
dictionary containing the lock-file content of the hub chosen by the 
user. By the way... if you know the lock-file parameters of a remote 
hub, wherever it is, using this feature you can directly connect the 
client with it, thus remote connections are supported as well.


In order to simplify the selection of a specific Hub instance from the 
user side, I've also introduced the possibility to label each hub at 
startup:

$ sampy.py --multi --label=MyHub

Then this label is saved in the lock-file with the key name 
"samp.hub.label" and it is used by the client toolkit to provide the 
user with a readable Hub name (if "samp.hub.label" is missing then a 
default name is shown).

There are also other two additional keywords: "samp.hub.owner" and 
"samp.hub.owner_group" which are used to identify the user and the 
working group (they cannot be the UNIX user and group since all 
processes are owned by the same user) that owns the Hub.

Owner and group can be set using:

$ sampy.py --multi --label=MyHub --owner=luigi --group=mima

By the way, --label, --owner and --group options can be used also for 
the single instance mode.


Another additional SAMPY undocumented feature is the Hub instance timeout:

$ sampy.py --timeout=3600

This parameter allows to set up a Hub inactivity timeout after which the 
Hub automatically shuts down. This is very useful for those cases where 
the application that started the hub ends in an unexpected way (it 
crashes) or when someone just forgets to shut it down.

The MIMA team aims to introduce at least other two new capabilities, 
that is an authentication system and an activation system, but we are 
still working on this stuff.

If you have any comment, I'll be glad to receive it. Thank you in advance.


Luigi



-- 

Luigi Paioro

INAF - IASF Milano
Via Bassini 15, I-20133 Milano, Italy

Phone  (+39) 02 23 699 470
Fax    (+39) 02 26 660 17
Site   http://www.iasf-milano.inaf.it/

From apps-samp-bounces@ivoa.net  Thu Jul  3 11:00:09 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6A0616241A9;
	Thu,  3 Jul 2008 11:00:09 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6390A38021905;
	Thu, 3 Jul 2008 11:00:10 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id B5CFBECA3B8;
	Thu,  3 Jul 2008 11:00:10 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 2015AECA3B4
	for <apps-samp@pat.hq.eso.org>; Thu,  3 Jul 2008 11:00:08 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m63907Y3021868
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 11:00:08 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,742,1204498800"; 
   d="scan'208";a="8712168"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 03 Jul 2008 10:57:00 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m638xhJ3001086; Thu, 3 Jul 2008 10:59:48 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m638xbIE012365; Thu, 3 Jul 2008 10:59:41 +0200
Message-ID: <486C94F9.5010109@lambrate.inaf.it>
Date: Thu, 03 Jul 2008 10:59:37 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: SAMPY
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>	<4868B8F6.8040504@lambrate.inaf.it>
	<Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

> Looks great Luigi.  I certainly haven't given it a thorough workout,
> but initial tests show it cooperating happily with my java code.
> I'll let you know about further results when I've got some.
> 
> Mark


Great! :)

I take the opportunity of this mail to ask you all a thing concerning 
the protocol.

When a client performs a callAll(...) with a specific MType, then the 
Hub is responsible to deliver the related message to all the clients 
that subscribed to that MType (or related wildcards). And that's ok.

When a client wants to perform a call(...) or callAndWait(...) to a 
specific client with a certain MType, then, first of all, it _SHOULD_ 
verify whether that client is subscribed to that MType (or related 
wildcards) or not. But this practice is not explicitly stated (or at 
least I don't see it) in the document, and anyway _SHOULD_ (or even 
_MUST_) doesn't mean that a client will certainly do it.

So, what happens if a client performs a call(...) or callAndWait(...) to 
another client, sending an MType to which the recipient is not subscribed?

I see three possibilities:

1. The hub returns an empty msg-id;
2. The hub throws an error;
3. The recipient client returns a response with an error.


Presently my Hub doesn't support cases 1. and 2. but hopes in 3. Anyway 
this doesn't means this is the best solution.

What's your opinion?

Thanks in advance.


Luigi

From apps-samp-bounces@ivoa.net  Thu Jul  3 11:24:49 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 931C662419B;
	Thu,  3 Jul 2008 11:24:48 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m639On1C024698;
	Thu, 3 Jul 2008 11:24:49 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id D964CECA3B8;
	Thu,  3 Jul 2008 11:24:49 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 52BB3ECA37A
	for <apps-samp@pat.hq.eso.org>; Thu,  3 Jul 2008 11:24:48 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m639Omof024695
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 11:24:48 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,742,1204498800"; 
   d="scan'208";a="8712672"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 03 Jul 2008 11:21:40 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KEL3X-0007YO-00
	for apps-samp@ivoa.net; Thu, 03 Jul 2008 10:24:47 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KEL3X-00031F-4b
	for apps-samp@ivoa.net; Thu, 03 Jul 2008 10:24:47 +0100
Date: Thu, 3 Jul 2008 10:24:47 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: SAMPY
In-Reply-To: <486C94F9.5010109@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0807031002350.11498@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<4868B8F6.8040504@lambrate.inaf.it>
	<Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
	<486C94F9.5010109@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Thu, 3 Jul 2008, Luigi Paioro wrote:

> So, what happens if a client performs a call(...) or callAndWait(...) to 
> another client, sending an MType to which the recipient is not subscribed?
>
> I see three possibilities:
>
> 1. The hub returns an empty msg-id;
> 2. The hub throws an error;
> 3. The recipient client returns a response with an error.
>
>
> Presently my Hub doesn't support cases 1. and 2. but hopes in 3. Anyway this 
> doesn't means this is the best solution.
>
> What's your opinion?

I think the answer is 2 above - the client's call() or callAndWait()
should result in an error generated by the hub.

It shouldn't be 1, since clients might ignore the returned msg-id 
(in most cases it's not necessary since the msg-tag can be used instead
to match messages with replies).  In any case that approach wouldn't 
help for callAndWait.

It shouldn't be 3 - in general clients should be able to rely on the 
hub behaving properly even if other clients misbehave in some way; 
this is in line with the general philosophy that wherever possible 
the hub should work harder to make life easier for clients.  To put it 
another way hubs should be coded defensively.  So in this case a hub 
MUST never send a message to a recipient which has not subscribed 
to its MType.  In fact this is written explicitly in section 2.4 of
the spec:

   6. When the hub receives a message for relaying, pass it on to
      appropriate recipients which are subscribed to the message's
      MType. Broadcast messages are sent to all subscribed clients except
      the sender, messages with a specified recipient are sent to that
      recipient if it is subscribed.

A similar question arises with regard to the notify() operation.
It's less important here since the sender probably doesn't care
if the message got there or not, but I'd say that in this case
too an error should result if a notify() is sent to a recipient
which is not subscribed to the message in question.

Do you think this should be clarified in the hub method descriptions
(sec 3.11)?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Thu Jul  3 11:34:56 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 89C4762419B;
	Thu,  3 Jul 2008 11:34:56 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m639YvVm025706;
	Thu, 3 Jul 2008 11:34:57 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id D69DCECA3B8;
	Thu,  3 Jul 2008 11:34:57 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 1CBD9ECA328
	for <apps-samp@pat.hq.eso.org>; Thu,  3 Jul 2008 11:34:56 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m639Yues025700
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 11:34:56 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,742,1204498800"; 
   d="scan'208";a="8712836"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 03 Jul 2008 11:31:48 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m639YWsE002138; Thu, 3 Jul 2008 11:34:37 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m639YSd8012681; Thu, 3 Jul 2008 11:34:30 +0200
Message-ID: <486C9D24.20601@lambrate.inaf.it>
Date: Thu, 03 Jul 2008 11:34:28 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: SAMPY
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>	<4868B8F6.8040504@lambrate.inaf.it>	<Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>	<486C94F9.5010109@lambrate.inaf.it>
	<Pine.LNX.4.63.0807031002350.11498@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0807031002350.11498@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Thank you Mark.

Personally I think so, this should be clarified in sec 3.11.

Well, I'm going to update SAMPY... :)

Luigi


> I think the answer is 2 above - the client's call() or callAndWait()
> should result in an error generated by the hub.
> 
> It shouldn't be 1, since clients might ignore the returned msg-id (in 
> most cases it's not necessary since the msg-tag can be used instead
> to match messages with replies).  In any case that approach wouldn't 
> help for callAndWait.
> 
> It shouldn't be 3 - in general clients should be able to rely on the hub 
> behaving properly even if other clients misbehave in some way; this is 
> in line with the general philosophy that wherever possible the hub 
> should work harder to make life easier for clients.  To put it another 
> way hubs should be coded defensively.  So in this case a hub MUST never 
> send a message to a recipient which has not subscribed to its MType.  In 
> fact this is written explicitly in section 2.4 of
> the spec:
> 
>   6. When the hub receives a message for relaying, pass it on to
>      appropriate recipients which are subscribed to the message's
>      MType. Broadcast messages are sent to all subscribed clients except
>      the sender, messages with a specified recipient are sent to that
>      recipient if it is subscribed.
> 
> A similar question arises with regard to the notify() operation.
> It's less important here since the sender probably doesn't care
> if the message got there or not, but I'd say that in this case
> too an error should result if a notify() is sent to a recipient
> which is not subscribed to the message in question.
> 
> Do you think this should be clarified in the hub method descriptions
> (sec 3.11)?
> 
> Mark
> 

From apps-samp-bounces@ivoa.net  Thu Jul  3 16:45:33 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 4FE626241A9;
	Thu,  3 Jul 2008 16:45:33 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m63EjZk3001926;
	Thu, 3 Jul 2008 16:45:35 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 8FDABECA3D3;
	Thu,  3 Jul 2008 16:45:35 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 5B71EECA3D2
	for <apps-samp@pat.hq.eso.org>; Thu,  3 Jul 2008 16:45:33 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m63EjTEm001907
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 16:45:33 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,742,1204498800"; 
   d="scan'208";a="8721340"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 03 Jul 2008 16:42:25 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KEQ3w-0000PU-00
	for apps-samp@ivoa.net; Thu, 03 Jul 2008 15:45:32 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KEQ3v-0003sJ-Vu
	for apps-samp@ivoa.net; Thu, 03 Jul 2008 15:45:31 +0100
Date: Thu, 3 Jul 2008 15:45:31 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: SAMPY
In-Reply-To: <Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.63.0807031540040.14868@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<4868B8F6.8040504@lambrate.inaf.it>
	<Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Wed, 2 Jul 2008, Mark Taylor wrote:

> Looks great Luigi.  I certainly haven't given it a thorough workout,
> but initial tests show it cooperating happily with my java code.
> I'll let you know about further results when I've got some.

Hi Luigi,

I think there's a problem with calls from the sampy hub to clients.
For instance I am receiving the XML-RPC call samp.client.recieveNotification
with two parameters, which look like the application's public ID and
the message structure.  At sec 4.2, the specification says:

    3. All other hub and client methods take the private-key as
       their first argument.

so I think that you should be inserting the private-key as the first
argument of your receiveNotification calls from hub to client
(and possibly other hub to client calls too, I haven't checked these).

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Thu Jul  3 17:03:17 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id E618662419B;
	Thu,  3 Jul 2008 17:03:16 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m63F3Jnk005102;
	Thu, 3 Jul 2008 17:03:19 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 3D9A1ECA3EC;
	Thu,  3 Jul 2008 17:03:19 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 3D206ECA3DD
	for <apps-samp@pat.hq.eso.org>; Thu,  3 Jul 2008 17:03:18 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m63F35cq005023
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 17:03:18 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AhUBAEWHbEjRVcireGdsb2JhbACCdI8RQwEMAwQGBxEDmT2FVQE
X-IronPort-AV: E=Sophos;i="4.27,742,1204498800"; 
   d="scan'208";a="8722229"
Received: from wf-out-1314.google.com ([209.85.200.171])
	by clavius.hq.eso.org with ESMTP; 03 Jul 2008 17:00:08 +0200
Received: by wf-out-1314.google.com with SMTP id 27so930577wfd.21
	for <apps-samp@ivoa.net>; Thu, 03 Jul 2008 08:03:10 -0700 (PDT)
Received: by 10.142.177.5 with SMTP id z5mr21746wfe.248.1215097389358;
	Thu, 03 Jul 2008 08:03:09 -0700 (PDT)
Received: by 10.143.2.7 with HTTP; Thu, 3 Jul 2008 08:03:09 -0700 (PDT)
Message-ID: <c04646670807030803l24d794ech63aa65d424e04448@mail.gmail.com>
Date: Thu, 3 Jul 2008 11:03:09 -0400
From: "John Taylor" <jontayler@gmail.com>
To: "Luigi Paioro" <luigi@lambrate.inaf.it>
Subject: Re: SAMPY undocumented features
In-Reply-To: <486C86FA.6020900@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: multipart/alternative; 
	boundary="----=_Part_11811_3853949.1215097389341"
References: <486C86FA.6020900@lambrate.inaf.it>
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

------=_Part_11811_3853949.1215097389341
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Luigi,
Congratulations on creating SAMPY - I'm sure it will be very useful to the
community.

Regarding your multi-user use case, I don't pretend to fully understand it
but here's some questions and suggestions.
1) You have several users, but they must all log into the machine using the
same username?  Presumably there's some good reason for why you can't just
assign different usernames to your users?
2) If you are are using your own custom mtypes, there's no reason why you
couldn't pass a username parameter to disambiguate your users (and run a
single hub).  You could have  simple proxy apps that sit between the hub and
your actual datareduction programs to spawns instances as needed.

Keep up the good work,

John


-- 
Google Pittsburgh is hiring!


On Thu, Jul 3, 2008 at 3:59 AM, Luigi Paioro <luigi@lambrate.inaf.it> wrote:

> Dear all,
>
>  you should have received an e-mail where I announced the alpha release of
> SAMPY 1.0, a Python implementation of SAMP (Standard Profile) compliant with
> WD 1.0 (hub and client toolkit).
>
> This implementation cames to life within the context of the OPTICON Network
> 3.2 (http://archive.eso.org/opticon/twiki/bin/view). In particular SAMP
> has been recently selected as the basic messaging system for the MIMA FASE
> prototype (http://cosmos.iasf-milano.inaf.it/trac/fase) - so far we used
> DBus.
>
> Well, actually the candidate MIMA (and more in general FASE) messaging
> system requires more capabilities respect those currently provided by SAMP.
> This is the reason because I implemented SAMP by myself and added some new
> undocumented (advanced) features (I will add even others).
>
> In this mail I will show you these advanced capabilities, so that you can
> try to use them (if you need them) or in case just comment whether they are
> really useful within the context of SAMP or not (I hope the former).
>
> To outline better the reasons of these additional capabilities, let me show
> you our practical use case (or scenario). We have a server machine which is
> the sole host that has a set of data reduction programs installed. Whoever
> wants to use this reduction suite must login to this host with a specific
> user (the only provided with the right authorizations).
>
> The different components of this reduction suite should communicate one
> with another using SAMP. The problem is that if more than one user are
> logged in at the same time, they connect with the same Hub sharing all the
> different client instances of the reduction suite... and we don't want this.
>
> Then I've introduced a multi-instance starting mode, that is a way to allow
> multiple Hub instances running at the same time. In practice you launch
> SAMPY in multi-instance mode typing:
>
> $ sampy.py --multi
>
>
> What SAMPY does is to check whether the directory $HOME/.samp-1 exists
> ($HOME or %USERPROFILE%) and if it doesn't then SAMPY creates it (.samp-1
> means SAMP version 1). Then SAMPY starts a new Hub with a
>
> $HOME/.samp-1/samp-hub-<PID>-<ID>
>
> lock-file. <PID> is the process ID of the program that holds this Hub, and
> <ID> is an integer indicating an additional Hub ID for those programs which
> are able to spawn multiple Hubs (in my case it is a thread number).
>
> From the Hub side that's all. The clients, if not specified, try to connect
> with the single instance mode Hub (looking for $HOME/.samp lock-file).
> Otherwise, if specified, clients look for all the available Hubs (looking
> for $HOME/.samp and $HOME/.samp-1/samp-hub-* lock files), ask to the user
> which one s/he wants to connect with, and then they perform the connection.
>
> Looking at the SAMPY API doc:
>
> SAMPHubServer is provided with a mode parameter that accepts two values:
> SAMP_HUB_SINGLE_INSTANCE or SAMP_HUB_MULTIPLE_INSTANCE (the meaning is
> obvious).
>
> SAMPHubProxy has an undocumented static method which is getRunningHubs()
> that returns a dictionary containing all the lock-file contents of the
> currently running hubs. SAMPHubProxy connect() method has also an additional
> undocumented parameter (hub_params) which accepts a dictionary containing
> the lock-file content of the hub chosen by the user. By the way... if you
> know the lock-file parameters of a remote hub, wherever it is, using this
> feature you can directly connect the client with it, thus remote connections
> are supported as well.
>
>
> In order to simplify the selection of a specific Hub instance from the user
> side, I've also introduced the possibility to label each hub at startup:
>
> $ sampy.py --multi --label=MyHub
>
> Then this label is saved in the lock-file with the key name
> "samp.hub.label" and it is used by the client toolkit to provide the user
> with a readable Hub name (if "samp.hub.label" is missing then a default name
> is shown).
>
> There are also other two additional keywords: "samp.hub.owner" and
> "samp.hub.owner_group" which are used to identify the user and the working
> group (they cannot be the UNIX user and group since all processes are owned
> by the same user) that owns the Hub.
>
> Owner and group can be set using:
>
> $ sampy.py --multi --label=MyHub --owner=luigi --group=mima
>
> By the way, --label, --owner and --group options can be used also for the
> single instance mode.
>
>
> Another additional SAMPY undocumented feature is the Hub instance timeout:
>
> $ sampy.py --timeout=3600
>
> This parameter allows to set up a Hub inactivity timeout after which the
> Hub automatically shuts down. This is very useful for those cases where the
> application that started the hub ends in an unexpected way (it crashes) or
> when someone just forgets to shut it down.
>
> The MIMA team aims to introduce at least other two new capabilities, that
> is an authentication system and an activation system, but we are still
> working on this stuff.
>
> If you have any comment, I'll be glad to receive it. Thank you in advance.
>
>
> Luigi
>
>
>
> --
>
> Luigi Paioro
>
> INAF - IASF Milano
> Via Bassini 15, I-20133 Milano, Italy
>
> Phone  (+39) 02 23 699 470
> Fax    (+39) 02 26 660 17
> Site   http://www.iasf-milano.inaf.it/
>

------=_Part_11811_3853949.1215097389341
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Hi Luigi,<br>Congratulations on creating SAMPY - I&#39;m sure it will be very useful to the community.<br><br>Regarding your multi-user use case, I don&#39;t pretend to fully understand it but here&#39;s some questions and suggestions.<br>
1) You have several users, but they must all log into the machine using the same username?&nbsp; Presumably there&#39;s some good reason for why you can&#39;t just assign different usernames to your users?<br>2) If you are are using your own custom mtypes, there&#39;s no reason why you couldn&#39;t pass a username parameter  to disambiguate your users (and run a single hub).&nbsp; You could have&nbsp; simple proxy apps that sit between the hub and your actual datareduction programs to spawns instances as needed.<br>
<br>Keep up the good work,<br><br>John<br><br><br>-- <br>Google Pittsburgh is hiring!<br><br><br><div class="gmail_quote">On Thu, Jul 3, 2008 at 3:59 AM, Luigi Paioro &lt;<a href="mailto:luigi@lambrate.inaf.it">luigi@lambrate.inaf.it</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Dear all,<br>
<br>
 &nbsp;you should have received an e-mail where I announced the alpha release of SAMPY 1.0, a Python implementation of SAMP (Standard Profile) compliant with WD 1.0 (hub and client toolkit).<br>
<br>
This implementation cames to life within the context of the OPTICON Network 3.2 (<a href="http://archive.eso.org/opticon/twiki/bin/view" target="_blank">http://archive.eso.org/opticon/twiki/bin/view</a>). In particular SAMP has been recently selected as the basic messaging system for the MIMA FASE prototype (<a href="http://cosmos.iasf-milano.inaf.it/trac/fase" target="_blank">http://cosmos.iasf-milano.inaf.it/trac/fase</a>) - so far we used DBus.<br>

<br>
Well, actually the candidate MIMA (and more in general FASE) messaging system requires more capabilities respect those currently provided by SAMP. This is the reason because I implemented SAMP by myself and added some new undocumented (advanced) features (I will add even others).<br>

<br>
In this mail I will show you these advanced capabilities, so that you can try to use them (if you need them) or in case just comment whether they are really useful within the context of SAMP or not (I hope the former).<br>

<br>
To outline better the reasons of these additional capabilities, let me show you our practical use case (or scenario). We have a server machine which is the sole host that has a set of data reduction programs installed. Whoever wants to use this reduction suite must login to this host with a specific user (the only provided with the right authorizations).<br>

<br>
The different components of this reduction suite should communicate one with another using SAMP. The problem is that if more than one user are logged in at the same time, they connect with the same Hub sharing all the different client instances of the reduction suite... and we don&#39;t want this.<br>

<br>
Then I&#39;ve introduced a multi-instance starting mode, that is a way to allow multiple Hub instances running at the same time. In practice you launch SAMPY in multi-instance mode typing:<br>
<br>
$ sampy.py --multi<br>
<br>
<br>
What SAMPY does is to check whether the directory $HOME/.samp-1 exists ($HOME or %USERPROFILE%) and if it doesn&#39;t then SAMPY creates it (.samp-1 means SAMP version 1). Then SAMPY starts a new Hub with a<br>
<br>
$HOME/.samp-1/samp-hub-&lt;PID&gt;-&lt;ID&gt;<br>
<br>
lock-file. &lt;PID&gt; is the process ID of the program that holds this Hub, and &lt;ID&gt; is an integer indicating an additional Hub ID for those programs which are able to spawn multiple Hubs (in my case it is a thread number).<br>

<br>
>From the Hub side that&#39;s all. The clients, if not specified, try to connect with the single instance mode Hub (looking for $HOME/.samp lock-file). Otherwise, if specified, clients look for all the available Hubs (looking for $HOME/.samp and $HOME/.samp-1/samp-hub-* lock files), ask to the user which one s/he wants to connect with, and then they perform the connection.<br>

<br>
Looking at the SAMPY API doc:<br>
<br>
SAMPHubServer is provided with a mode parameter that accepts two values: SAMP_HUB_SINGLE_INSTANCE or SAMP_HUB_MULTIPLE_INSTANCE (the meaning is obvious).<br>
<br>
SAMPHubProxy has an undocumented static method which is getRunningHubs() that returns a dictionary containing all the lock-file contents of the currently running hubs. SAMPHubProxy connect() method has also an additional undocumented parameter (hub_params) which accepts a dictionary containing the lock-file content of the hub chosen by the user. By the way... if you know the lock-file parameters of a remote hub, wherever it is, using this feature you can directly connect the client with it, thus remote connections are supported as well.<br>

<br>
<br>
In order to simplify the selection of a specific Hub instance from the user side, I&#39;ve also introduced the possibility to label each hub at startup:<br>
<br>
$ sampy.py --multi --label=MyHub<br>
<br>
Then this label is saved in the lock-file with the key name &quot;samp.hub.label&quot; and it is used by the client toolkit to provide the user with a readable Hub name (if &quot;samp.hub.label&quot; is missing then a default name is shown).<br>

<br>
There are also other two additional keywords: &quot;samp.hub.owner&quot; and &quot;samp.hub.owner_group&quot; which are used to identify the user and the working group (they cannot be the UNIX user and group since all processes are owned by the same user) that owns the Hub.<br>

<br>
Owner and group can be set using:<br>
<br>
$ sampy.py --multi --label=MyHub --owner=luigi --group=mima<br>
<br>
By the way, --label, --owner and --group options can be used also for the single instance mode.<br>
<br>
<br>
Another additional SAMPY undocumented feature is the Hub instance timeout:<br>
<br>
$ sampy.py --timeout=3600<br>
<br>
This parameter allows to set up a Hub inactivity timeout after which the Hub automatically shuts down. This is very useful for those cases where the application that started the hub ends in an unexpected way (it crashes) or when someone just forgets to shut it down.<br>

<br>
The MIMA team aims to introduce at least other two new capabilities, that is an authentication system and an activation system, but we are still working on this stuff.<br>
<br>
If you have any comment, I&#39;ll be glad to receive it. Thank you in advance.<br>
<br>
<br>
Luigi<br>
<br>
<br>
<br>
-- <br>
<br>
Luigi Paioro<br>
<br>
INAF - IASF Milano<br>
Via Bassini 15, I-20133 Milano, Italy<br>
<br>
Phone &nbsp;(+39) 02 23 699 470<br>
Fax &nbsp; &nbsp;(+39) 02 26 660 17<br>
Site &nbsp; <a href="http://www.iasf-milano.inaf.it/" target="_blank">http://www.iasf-milano.inaf.it/</a><br>
</blockquote></div><br><br clear="all"><br><br>

------=_Part_11811_3853949.1215097389341--

From apps-samp-bounces@ivoa.net  Thu Jul  3 17:21:05 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 037506241A9;
	Thu,  3 Jul 2008 17:21:02 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m63FL4Q8008300;
	Thu, 3 Jul 2008 17:21:04 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 59205ECA3DE;
	Thu,  3 Jul 2008 17:21:04 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 9824EECA3CE
	for <apps-samp@pat.hq.eso.org>; Thu,  3 Jul 2008 17:21:03 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m63FL3D2008297
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 17:21:03 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAMSKbEib/RCV/2dsb2JhbACyIg
X-IronPort-AV: E=Sophos;i="4.27,742,1204498800"; 
   d="scan'208";a="8722871"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 03 Jul 2008 17:17:55 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m63FKhH6010686; Thu, 3 Jul 2008 17:20:48 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m63FKcA8014666; Thu, 3 Jul 2008 17:20:40 +0200
Message-ID: <486CEE46.80506@lambrate.inaf.it>
Date: Thu, 03 Jul 2008 17:20:38 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: SAMPY
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>	<4868B8F6.8040504@lambrate.inaf.it>	<Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0807031540040.14868@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0807031540040.14868@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

> Hi Luigi,
> 
> I think there's a problem with calls from the sampy hub to clients.
> For instance I am receiving the XML-RPC call 
> samp.client.recieveNotification
> with two parameters, which look like the application's public ID and
> the message structure.  At sec 4.2, the specification says:
> 
>    3. All other hub and client methods take the private-key as
>       their first argument.
> 
> so I think that you should be inserting the private-key as the first
> argument of your receiveNotification calls from hub to client
> (and possibly other hub to client calls too, I haven't checked these).
> 
> Mark

Hi Mark,

   well, you're right, sampy just sends two parameters: sender-id (which 
is the sender application public ID) and messages.

Reading the specification you mentioned actually it seems that I should 
also send a private-key... right, but... which private-key? The receiver 
private-key? This is useless... clients know their private-key. The 
sender private-key? Absolutely no, otherwise the clients reveal their 
hub/client communication secret code. The samp.hub-id? Maybe, just to 
let the client verify that the XML-RPC call actually is performed by the 
hub and not by an intruder. Am I right?

Thank you Mark for your testing.

Luigi

From apps-samp-bounces@ivoa.net  Thu Jul  3 17:30:06 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 72262624196;
	Thu,  3 Jul 2008 17:30:06 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m63FU8Ub009816;
	Thu, 3 Jul 2008 17:30:08 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id B659CECA3DA;
	Thu,  3 Jul 2008 17:30:08 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 42900EC8123
	for <apps-samp@pat.hq.eso.org>; Thu,  3 Jul 2008 17:30:07 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m63FU7F2009813
	for <apps-samp@ivoa.net>; Thu, 3 Jul 2008 17:30:07 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.27,742,1204498800"; 
   d="scan'208";a="8723182"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 03 Jul 2008 17:26:58 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KEQks-0000XD-00; Thu, 03 Jul 2008 16:29:54 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KEQkr-000436-W6; Thu, 03 Jul 2008 16:29:53 +0100
Date: Thu, 3 Jul 2008 16:29:53 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Luigi Paioro <luigi@lambrate.inaf.it>
Subject: Re: SAMPY
In-Reply-To: <486CEE46.80506@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0807031621460.15531@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<4868B8F6.8040504@lambrate.inaf.it>
	<Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0807031540040.14868@andromeda.star.bris.ac.uk>
	<486CEE46.80506@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Thu, 3 Jul 2008, Luigi Paioro wrote:

> Hi Mark,
>
>  well, you're right, sampy just sends two parameters: sender-id (which is 
> the sender application public ID) and messages.
>
> Reading the specification you mentioned actually it seems that I should also 
> send a private-key... right, but... which private-key? The receiver 
> private-key? This is useless... clients know their private-key. The sender 
> private-key? Absolutely no, otherwise the clients reveal their hub/client 
> communication secret code. The samp.hub-id? Maybe, just to let the client 
> verify that the XML-RPC call actually is performed by the hub and not by an 
> intruder. Am I right?

It should be the private-key of the client that the hub is calling.

This serves two purposes:

    1. since only the hub and the client know the private-key, it proves
       to the client that the call is coming from the hub and not from
       an intruder (the samp.hub-id is not sufficient for this, since
       other clients know it too)

    2. it's true that clients know their own private-key, but passing it
       in calls may be necessary if multiple clients are sharing the
       same XML-RPC server to handle callbacks.  In most cases each
       client will run its own XML-RPC server, but there might be
       situations where a single process wants to register as several
       different clients without running multiple different XML-RPC
       servers for some reason.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Fri Jul  4 11:01:46 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 66E27624196;
	Fri,  4 Jul 2008 11:01:46 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6491lfc014271;
	Fri, 4 Jul 2008 11:01:47 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id B323BECA3E1;
	Fri,  4 Jul 2008 11:01:47 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 93C4AECA353
	for <apps-samp@pat.hq.eso.org>; Fri,  4 Jul 2008 11:01:45 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6491jmB014268
	for <apps-samp@ivoa.net>; Fri, 4 Jul 2008 11:01:45 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAOyDbUib/RCV/2dsb2JhbACxGw
X-IronPort-AV: E=Sophos;i="4.30,301,1212357600"; 
   d="scan'208";a="8737067"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 04 Jul 2008 11:00:57 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m6491Gc3028952; Fri, 4 Jul 2008 11:01:21 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m6490wXH023661; Fri, 4 Jul 2008 11:01:14 +0200
Message-ID: <486DE6CA.9060104@lambrate.inaf.it>
Date: Fri, 04 Jul 2008 11:00:58 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: SAMPY
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<4868B8F6.8040504@lambrate.inaf.it>
	<Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0807031540040.14868@andromeda.star.bris.ac.uk>
	<486CEE46.80506@lambrate.inaf.it>
	<Pine.LNX.4.63.0807031621460.15531@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0807031621460.15531@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

> This serves two purposes:
> 
>    1. since only the hub and the client know the private-key, it proves
>       to the client that the call is coming from the hub and not from
>       an intruder (the samp.hub-id is not sufficient for this, since
>       other clients know it too)
> 
>    2. it's true that clients know their own private-key, but passing it
>       in calls may be necessary if multiple clients are sharing the
>       same XML-RPC server to handle callbacks.  In most cases each
>       client will run its own XML-RPC server, but there might be
>       situations where a single process wants to register as several
>       different clients without running multiple different XML-RPC
>       servers for some reason.
> 
> Mark


Mark,

   I've just updated sampy with the last bugs fixed. Now, it should be 
more compliant with SAMP specifics and interoperable with your Java 
implementation. It is not yet stable, but you can get it always at the 
same http address.

Thanks again for your aid.

Luigi

From apps-samp-bounces@ivoa.net  Fri Jul  4 15:56:14 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A37A2624196;
	Fri,  4 Jul 2008 15:56:14 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m64DuGBC013699;
	Fri, 4 Jul 2008 15:56:16 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id A9A94ECA3E7;
	Fri,  4 Jul 2008 15:56:16 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 68D2CEC8141
	for <apps-samp@pat.hq.eso.org>; Fri,  4 Jul 2008 15:56:15 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m64DuFkv013696
	for <apps-samp@ivoa.net>; Fri, 4 Jul 2008 15:56:15 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEANDIbUib/RCV/2dsb2JhbACwckE
X-IronPort-AV: E=Sophos;i="4.30,302,1212357600"; 
   d="scan'208";a="8742465"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 04 Jul 2008 15:55:26 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m64Du290003146; Fri, 4 Jul 2008 15:56:07 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m64DtuH3028486; Fri, 4 Jul 2008 15:55:59 +0200
Message-ID: <486E2BEC.4070300@lambrate.inaf.it>
Date: Fri, 04 Jul 2008 15:55:56 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: John Taylor <jontayler@gmail.com>
Subject: Re: SAMPY undocumented features
References: <486C86FA.6020900@lambrate.inaf.it>
	<c04646670807030803l24d794ech63aa65d424e04448@mail.gmail.com>
In-Reply-To: <c04646670807030803l24d794ech63aa65d424e04448@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: SAMP Working Group <apps-samp@ivoa.net>
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

> Hi Luigi,
> Congratulations on creating SAMPY - I'm sure it will be very useful to 
> the community.

Hi John, thanks.

I hope it will be useful. Anyway it has been done mainly for prototyping 
MIMA. Python is a good language for prototyping, but when one needs 
something with good performances, probably what s/he really needs is 
something written in Java (Mark's implementation for instance) or in a 
compiled language like C/C++. As a matter of fact, I think that the 
client toolkit is potentially more useful to the community.

> Regarding your multi-user use case, I don't pretend to fully understand 
> it but here's some questions and suggestions.
> 1) You have several users, but they must all log into the machine using 
> the same username?  Presumably there's some good reason for why you 
> can't just assign different usernames to your users?

Because it is easier. Such machine might be accessed by a number of 
users, and we don't want to multiply the authorization and configuration 
stuff.

Furthermore, at least in principle, a hub instance (in multi-instance 
mode) might also be accessed remotely, without actually performing an 
ssh access to the physical machine. It is quite simple to spawn 
multi-instance hubs using a proxy app daemon which is running owned by a 
service UNIX user. A remote hub could be used to launch (using a 
suitable client) the reduction suite, exploiting an activation service 
like those available in DBus, CORBA and Ice, for instance. Anyway we are 
still working on this stuff and the path is still long...

> 2) If you are are using your own custom mtypes, there's no reason why 
> you couldn't pass a username parameter to disambiguate your users (and 
> run a single hub).  You could have  simple proxy apps that sit between 
> the hub and your actual datareduction programs to spawns instances as 
> needed.

Yes, actually that was one of the options. Anyway we cannot be sure that 
in the future we won't even use standard mtypes, perhaps in order to 
communicate with external tools that support SAMP, and such a proxy, at 
first glance, looks to complicate a bit things. Multi-instance hubs I 
think is a simple and clean solution. Furthermore the multi-instance 
paradigm is closer to what happens in DBus (so far we used it), where 
you have a single system bus (which could be the normal single-instance 
hub) and you can have also multiple session buses (a multi-instance hub 
is quite similar to a session bus).


> Keep up the good work,
> 
> John

Thanks again.

Luigi

From apps-samp-bounces@ivoa.net  Mon Jul  7 11:04:20 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A1B14624195;
	Mon,  7 Jul 2008 11:04:20 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6794MrS003073;
	Mon, 7 Jul 2008 11:04:22 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id EF10AECA4BA;
	Mon,  7 Jul 2008 11:04:21 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id F234BECA339
	for <apps-samp@pat.hq.eso.org>; Mon,  7 Jul 2008 11:04:19 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6794J0G003070
	for <apps-samp@ivoa.net>; Mon, 7 Jul 2008 11:04:19 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,315,1212357600"; 
   d="scan'208";a="8813982"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 07 Jul 2008 11:03:22 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KFmdu-0006Eu-00
	for apps-samp@ivoa.net; Mon, 07 Jul 2008 10:04:18 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KFmdu-00019g-Cj
	for apps-samp@ivoa.net; Mon, 07 Jul 2008 10:04:18 +0100
Date: Mon, 7 Jul 2008 10:04:18 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: SAMPY undocumented features
In-Reply-To: <486E2BEC.4070300@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0807071001250.4409@andromeda.star.bris.ac.uk>
References: <486C86FA.6020900@lambrate.inaf.it>
	<c04646670807030803l24d794ech63aa65d424e04448@mail.gmail.com>
	<486E2BEC.4070300@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Fri, 4 Jul 2008, Luigi Paioro wrote:

>> Hi Luigi,
>> Congratulations on creating SAMPY - I'm sure it will be very useful to the 
>> community.
>
> Hi John, thanks.
>
> I hope it will be useful. Anyway it has been done mainly for prototyping 
> MIMA. Python is a good language for prototyping, but when one needs something 
> with good performances, probably what s/he really needs is something written 
> in Java (Mark's implementation for instance) or in a compiled language like 
> C/C++. As a matter of fact, I think that the client toolkit is potentially 
> more useful to the community.

It will be interesting to see, but my guess is that the hub code itself
will not be a CPU bottleneck, so that in principle one written in any
language would effectively do equally well.  Certainly our PLASTIC
experience has not included extremely high message throughput, so
we haven't explored this kind of area.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Mon Jul  7 12:14:16 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 1A9AE624195;
	Mon,  7 Jul 2008 12:14:16 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67AEHrD009763;
	Mon, 7 Jul 2008 12:14:17 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 9A056ECA332;
	Mon,  7 Jul 2008 12:14:17 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id BB047ECA30E
	for <apps-samp@pat.hq.eso.org>; Mon,  7 Jul 2008 12:14:16 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67AEGBH009757
	for <apps-samp@ivoa.net>; Mon, 7 Jul 2008 12:14:16 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,315,1212357600"; 
   d="scan'208";a="8815147"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 07 Jul 2008 12:13:19 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KFnjb-0006LR-00
	for apps-samp@ivoa.net; Mon, 07 Jul 2008 11:14:15 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KFnjb-0001Gw-LF
	for apps-samp@ivoa.net; Mon, 07 Jul 2008 11:14:15 +0100
Date: Mon, 7 Jul 2008 11:14:15 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: SAMPY undocumented features
In-Reply-To: <486C86FA.6020900@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0807071110040.4873@andromeda.star.bris.ac.uk>
References: <486C86FA.6020900@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Luigi,

On Thu, 3 Jul 2008, Luigi Paioro wrote:

> In this mail I will show you these advanced capabilities, so that you can try 
> to use them (if you need them) or in case just comment whether they are 
> really useful within the context of SAMP or not (I hope the former).
>
> To outline better the reasons of these additional capabilities, let me show 
> you our practical use case (or scenario). We have a server machine which is 
> the sole host that has a set of data reduction programs installed. Whoever 
> wants to use this reduction suite must login to this host with a specific 
> user (the only provided with the right authorizations).
>
> The different components of this reduction suite should communicate one with 
> another using SAMP. The problem is that if more than one user are logged in 
> at the same time, they connect with the same Hub sharing all the different 
> client instances of the reduction suite... and we don't want this.
>
> Then I've introduced a multi-instance starting mode, that is a way to allow
> multiple Hub instances running at the same time. In practice you launch
> SAMPY in multi-instance mode typing:
> 
> $ sampy.py --multi
> 
> 
> What SAMPY does is to check whether the directory $HOME/.samp-1 exists
> ($HOME or %USERPROFILE%) and if it doesn't then SAMPY creates it (.samp-1
> means SAMP version 1). Then SAMPY starts a new Hub with a
> 
> $HOME/.samp-1/samp-hub-<PID>-<ID>
> 
> lock-file. <PID> is the process ID of the program that holds this Hub, and
> <ID> is an integer indicating an additional Hub ID for those programs which
> are able to spawn multiple Hubs (in my case it is a thread number).

The extensions you've proposed to how your particular hub implementation
operates seem fine (also your optional hub timeout parameter).

> From the Hub side that's all. The clients, if not specified, try to connect
> with the single instance mode Hub (looking for $HOME/.samp lock-file).
> Otherwise, if specified, clients look for all the available Hubs (looking
> for $HOME/.samp and $HOME/.samp-1/samp-hub-* lock files), ask to the user
> which one s/he wants to connect with, and then they perform the connection.

I'm a bit concerned about the client operation however.  The behaviour
demanded from clients in the hub discovery phase is now different,
and more complicated, than that currently specified in the Standard
Profile part of the SAMP document.  I'm not sure exactly what you're
suggesting here, is it

    a) This altered hub discovery prescription will be used only by
       clients/hubs specific to the MIMA FASE environment (effectively
       defining a new Profile similar, but not identical to, the
       Standard Profile)
          - that would work OK, but it means that applications written
            only to conform to the Standard Profile written in the
            SAMP document will not be usable from this environment
            since they would look for the hub in the wrong place.
            This lack of interoperability seems like a bit of a shame,
            though depending on FASE's particular requirements maybe
            it doesn't really matter.

or

    b) You are proposing to extend the Standard Profile definition so
       that hub discovery works like this rather than as currently
       written.
          - I'm concerned that this makes it quite a bit more complicated
            for clients to implement than the existing prescription -
            especially the "ask the user which one s/he wants to
            interact with" part which effectively requires each application
            to invent and document some new user interaction.

In any case, I think I understand your requirements and they look 
reasonable - although the current SAMP document is phrased in terms 
of one hub per user per host with everything running on the same host 
it's been in the back of our minds that it ought to be possible 
to extend the framework to other scenarios in some way, though 
we (or at least I) have not given much thought to how this might work.

Clearly a single lockfile in a well-known per-user location of the
form we've written in the existing document won't work for your
multiple hubs per user per host scenario.
However, as I've indicated above I'm not totally convinced by the
details of the client-side procedure that SAMPY uses.
Getting the hub to write lockfiles in custom places according to 
implementation is OK, since the user can select which hub to use
for their particular requirements, but requiring the clients to look
in undocumented places is not, because clients may have been written
by third parties who did not know about the undocumented conventions.

So the question arises of how to tell clients where to find the hub.
The most straightforward way I can think of to do this is by using
environment variables.  Instead of simply looking in home-directory/.samp
for the lockfile we could say that

   1. if an environment variable SAMP_HUBFILE exists, use its contents
      as the location of a hub lockfile
   2. otherwise, the location of the hub lockfile is home-directory/.samp

Another possibility would be to pass hub discovery information directly
in environment variables (e.g. SAMP_SECRET, SAMP_HUB_XMLRPC_URL etc)

I'd be interested to know whether you think this would solve your 
use case, and your and anyone else's opinion
on whether this looks like a sensible way to go for generalising hub discovery, 
or whether Luigi's $HOME/.samp-1/samp-hub-* scheme is preferred, 
or whether we shouldn't be thinking about generalising hub discovery,
or whether anyone has a better idea.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Mon Jul  7 12:27:59 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 704CE624166;
	Mon,  7 Jul 2008 12:27:58 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67AS0YJ011145;
	Mon, 7 Jul 2008 12:28:00 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id ED46CECA34F;
	Mon,  7 Jul 2008 12:27:59 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 3A3DFEC8147
	for <apps-samp@pat.hq.eso.org>; Mon,  7 Jul 2008 12:27:59 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67ARxeZ011142
	for <apps-samp@ivoa.net>; Mon, 7 Jul 2008 12:27:59 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,315,1212357600"; 
   d="scan'208";a="8815375"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 07 Jul 2008 12:27:01 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KFnws-0006Mx-00
	for apps-samp@ivoa.net; Mon, 07 Jul 2008 11:27:58 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KFnws-0001IB-9J
	for apps-samp@ivoa.net; Mon, 07 Jul 2008 11:27:58 +0100
Date: Mon, 7 Jul 2008 11:27:58 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: SAMPY
In-Reply-To: <486C9D24.20601@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0807071126340.4873@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<4868B8F6.8040504@lambrate.inaf.it>
	<Pine.LNX.4.63.0807021820500.6667@andromeda.star.bris.ac.uk>
	<486C94F9.5010109@lambrate.inaf.it>
	<Pine.LNX.4.63.0807031002350.11498@andromeda.star.bris.ac.uk>
	<486C9D24.20601@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Thu, 3 Jul 2008, Luigi Paioro wrote:

> Personally I think so, this should be clarified in sec 3.11.

I've added the text

    "An error results if the recipient is not subscribed to the message's
     MType."

to the documentation of notify(), call(), and callAndWait().

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Mon Jul  7 15:35:26 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 5542D6242C0;
	Mon,  7 Jul 2008 15:35:19 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67DZLqt000630;
	Mon, 7 Jul 2008 15:35:21 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 5365EECA4B5;
	Mon,  7 Jul 2008 15:35:21 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 1C8B4ECA381;
	Mon,  7 Jul 2008 15:35:20 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67DZJKF000619;
	Mon, 7 Jul 2008 15:35:20 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,316,1212357600"; 
   d="scan'208";a="8818698"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 07 Jul 2008 15:34:22 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KFqs6-0000Gk-7I; Mon, 07 Jul 2008 14:35:14 +0100
In-Reply-To: <Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <A1E57028-0A05-41CE-B2F5-5ECF4307179A@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP v1.0 WD published
Date: Mon, 7 Jul 2008 14:34:11 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Cc: apps-samp@ivoa.net, IVOA Applications WG <apps@ivoa.net>
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net


Mark Taylor wrote:
> As there have been no comments on the draft I posted to the apps-samp
> list a couple of weeks ago, I assume everyone is happy - good.

Sorry, I've been rather ill the last few weeks...

> It would be great to see people starting to implement this now,
> or in the case of Alasdair and Thomas modifying their existing
> implementations to match the 1.0 WD version.

...I'm back to work on this now, so I should have a revised version  
of the Perl Hub and client test suite available this week (unless  
something comes up).
>


However looking at the WD I'm worried by the removal of getHubId( ).

I can't remember whether I argued for or against this, and I know  
that the hub-id is now returned on registration. However this means  
that if you have a client that needs to know the hub-id, the client  
(probably?) needs to keep some sort of state and can't just do a  
quick request to the Hub to find this out. This complicates clients.

Perhaps we should leave in getHubId( ) intact?

However I've got no strong feelings either way...

Al.

From apps-bounces@ivoa.net  Mon Jul  7 15:35:26 2008
Return-Path: <apps-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 082086241A9;
	Mon,  7 Jul 2008 15:35:19 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67DZLaL000627;
	Mon, 7 Jul 2008 15:35:21 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 152B5ECA381;
	Mon,  7 Jul 2008 15:35:21 +0200 (CEST)
X-Original-To: apps@pat.hq.eso.org
Delivered-To: apps@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 1C8B4ECA381;
	Mon,  7 Jul 2008 15:35:20 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67DZJKF000619;
	Mon, 7 Jul 2008 15:35:20 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,316,1212357600"; 
   d="scan'208";a="8818698"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 07 Jul 2008 15:34:22 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KFqs6-0000Gk-7I; Mon, 07 Jul 2008 14:35:14 +0100
In-Reply-To: <Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <A1E57028-0A05-41CE-B2F5-5ECF4307179A@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP v1.0 WD published
Date: Mon, 7 Jul 2008 14:34:11 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Cc: apps-samp@ivoa.net, IVOA Applications WG <apps@ivoa.net>
X-BeenThere: apps@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Applications Working Group - IVOA <apps.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps@ivoa.net>
List-Help: <mailto:apps-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=subscribe>
Errors-To: apps-bounces@ivoa.net


Mark Taylor wrote:
> As there have been no comments on the draft I posted to the apps-samp
> list a couple of weeks ago, I assume everyone is happy - good.

Sorry, I've been rather ill the last few weeks...

> It would be great to see people starting to implement this now,
> or in the case of Alasdair and Thomas modifying their existing
> implementations to match the 1.0 WD version.

...I'm back to work on this now, so I should have a revised version  
of the Perl Hub and client test suite available this week (unless  
something comes up).
>


However looking at the WD I'm worried by the removal of getHubId( ).

I can't remember whether I argued for or against this, and I know  
that the hub-id is now returned on registration. However this means  
that if you have a client that needs to know the hub-id, the client  
(probably?) needs to keep some sort of state and can't just do a  
quick request to the Hub to find this out. This complicates clients.

Perhaps we should leave in getHubId( ) intact?

However I've got no strong feelings either way...

Al.

From apps-samp-bounces@ivoa.net  Mon Jul  7 15:47:18 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id EBDB2624195;
	Mon,  7 Jul 2008 15:47:17 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67DlKh9001966;
	Mon, 7 Jul 2008 15:47:20 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 14C80ECA3A3;
	Mon,  7 Jul 2008 15:47:20 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id C6FB6ECA381
	for <apps-samp@pat.hq.eso.org>; Mon,  7 Jul 2008 15:47:18 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67DlI5E001963
	for <apps-samp@ivoa.net>; Mon, 7 Jul 2008 15:47:18 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,316,1212357600"; 
   d="scan'208";a="8818972"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 07 Jul 2008 15:46:20 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KFr3l-0006mp-00
	for apps-samp@ivoa.net; Mon, 07 Jul 2008 14:47:17 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KFr3l-0001y8-7D
	for apps-samp@ivoa.net; Mon, 07 Jul 2008 14:47:17 +0100
Date: Mon, 7 Jul 2008 14:47:17 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: SAMP v1.0 WD published
In-Reply-To: <A1E57028-0A05-41CE-B2F5-5ECF4307179A@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0807071442030.7544@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<A1E57028-0A05-41CE-B2F5-5ECF4307179A@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Mon, 7 Jul 2008, Alasdair Allan wrote:

> Sorry, I've been rather ill the last few weeks...
>
>> It would be great to see people starting to implement this now,
>> or in the case of Alasdair and Thomas modifying their existing
>> implementations to match the 1.0 WD version.
>
> ...I'm back to work on this now, so I should have a revised version of the 
> Perl Hub and client test suite available this week (unless something comes 
> up).

excellent (and hope you're fully recovered)

> However looking at the WD I'm worried by the removal of getHubId( ).
>
> I can't remember whether I argued for or against this, and I know that the 
> hub-id is now returned on registration. However this means that if you have a 
> client that needs to know the hub-id, the client (probably?) needs to keep 
> some sort of state and can't just do a quick request to the Hub to find this 
> out. This complicates clients.
>
> Perhaps we should leave in getHubId( ) intact?

I can't remember which way you voted, but we did have a vote on this
in Trieste and agreed to take it out in favour of returning that 
information from the registration call.

Yes the client now needs to keep some state if it's going to need the
hub ID later - but it's only one string per hub registration, and the
client already needs to keep at least one string per hub registration 
anyway (the private key) so I really don't think it counts as much in 
the way of complication.

> However I've got no strong feelings either way...

good!

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Mon Jul  7 18:58:02 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A29856242C0;
	Mon,  7 Jul 2008 18:58:02 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67Gw5Il023633;
	Mon, 7 Jul 2008 18:58:05 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 4492DECA4CC;
	Mon,  7 Jul 2008 18:58:05 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id A7E01ECA4C9
	for <apps-samp@pat.hq.eso.org>; Mon,  7 Jul 2008 18:58:04 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67Gw4QW023624
	for <apps-samp@ivoa.net>; Mon, 7 Jul 2008 18:58:04 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,317,1212357600"; 
   d="scan'208";a="8823384"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 07 Jul 2008 18:57:06 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KFu2N-0003Aj-9G; Mon, 07 Jul 2008 17:58:03 +0100
In-Reply-To: <Pine.LNX.4.63.0807071442030.7544@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<A1E57028-0A05-41CE-B2F5-5ECF4307179A@astro.ex.ac.uk>
	<Pine.LNX.4.63.0807071442030.7544@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <9BCFF25A-FDCB-49D7-A850-E11BC5DC8859@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP v1.0 WD published
Date: Mon, 7 Jul 2008 17:57:00 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Mark,

Alasdair Allan wrote:
> I can't remember whether I argued for or against this...

In your list of changes you have

* call(), callAndWait() - now returning msg-id

I'm presuming that should be "call(), callAll()"...?

In which case, how can callAll( ) return a single msg-id?

Surely each message generated by the Hub intended for each client  
will have a separate msg-id. Or are you arguing here for a single msg- 
id for all of the copies of the message passed on from the client by  
the Hub. In other words, messages going to different (end) clients  
(from the originating client, via the hub) all with the same id...?  
In which case I'd argue that's a bad thing...

Confused... can you tell me what's intended here? Previously this  
wasn't a constrain in the specification. Is this an oversight, an  
unintended consequence, or did you actually mean to do this?

Al.

From apps-samp-bounces@ivoa.net  Mon Jul  7 19:00:04 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6BD81624195;
	Mon,  7 Jul 2008 19:00:04 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67H07Mu023865;
	Mon, 7 Jul 2008 19:00:07 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 1595FECA4CB;
	Mon,  7 Jul 2008 19:00:07 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 49CE4ECA4C8
	for <apps-samp@pat.hq.eso.org>; Mon,  7 Jul 2008 19:00:04 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67H04km023851
	for <apps-samp@ivoa.net>; Mon, 7 Jul 2008 19:00:04 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,317,1212357600"; 
   d="scan'208";a="8823408"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 07 Jul 2008 18:59:05 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KFu4J-0003CM-9D; Mon, 07 Jul 2008 18:00:03 +0100
In-Reply-To: <9BCFF25A-FDCB-49D7-A850-E11BC5DC8859@astro.ex.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<A1E57028-0A05-41CE-B2F5-5ECF4307179A@astro.ex.ac.uk>
	<Pine.LNX.4.63.0807071442030.7544@andromeda.star.bris.ac.uk>
	<9BCFF25A-FDCB-49D7-A850-E11BC5DC8859@astro.ex.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <AC3ACDAF-F358-4D77-91F8-0E7399237262@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP v1.0 WD published
Date: Mon, 7 Jul 2008 17:59:01 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Cc: SAMP Working Group <apps-samp@ivoa.net>
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net


  Alasdair Allan wrote:
> In your list of changes you have
>
> * call(), callAndWait() - now returning msg-id
>
> I'm presuming that should be "call(), callAll()"...?
>
> In which case, how can callAll( ) return a single msg-id?

I'd happily accept callAll( ) returning a list of msg-ids and call()  
returning a string msg-id. But otherwise I'm rather unhappy here...

Al.

From apps-samp-bounces@ivoa.net  Mon Jul  7 19:12:30 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 16FD1624195;
	Mon,  7 Jul 2008 19:12:30 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67HCWVp025095;
	Mon, 7 Jul 2008 19:12:32 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id A157CECA4C9;
	Mon,  7 Jul 2008 19:12:32 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 14F0AECA3AA
	for <apps-samp@pat.hq.eso.org>; Mon,  7 Jul 2008 19:12:32 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67HCVNx025092
	for <apps-samp@ivoa.net>; Mon, 7 Jul 2008 19:12:32 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,317,1212357600"; 
   d="scan'208";a="8823636"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 07 Jul 2008 19:11:33 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KFuGM-0007A8-00; Mon, 07 Jul 2008 18:12:30 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KFuGL-0002Jm-UD; Mon, 07 Jul 2008 18:12:29 +0100
Date: Mon, 7 Jul 2008 18:12:29 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP v1.0 WD published
In-Reply-To: <9BCFF25A-FDCB-49D7-A850-E11BC5DC8859@astro.ex.ac.uk>
Message-ID: <Pine.LNX.4.63.0807071759470.8844@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<A1E57028-0A05-41CE-B2F5-5ECF4307179A@astro.ex.ac.uk>
	<Pine.LNX.4.63.0807071442030.7544@andromeda.star.bris.ac.uk>
	<9BCFF25A-FDCB-49D7-A850-E11BC5DC8859@astro.ex.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Mon, 7 Jul 2008, Alasdair Allan wrote:

> In your list of changes you have
>
> * call(), callAndWait() - now returning msg-id
>
> I'm presuming that should be "call(), callAll()"...?

thank you, yes I wrote the wrong thing and "call(), callAll()" is 
what I should have said.

> In which case, how can callAll( ) return a single msg-id?
>
> Surely each message generated by the Hub intended for each client will have a 
> separate msg-id. Or are you arguing here for a single msg-id for all of the 
> copies of the message passed on from the client by the Hub. In other words, 
> messages going to different (end) clients (from the originating client, via 
> the hub) all with the same id...? In which case I'd argue that's a bad 
> thing...

Yes, messages going to different end clients as a consequence of
the same callAll() call use the same msg-id.

> Confused... can you tell me what's intended here? Previously this wasn't a 
> constrain in the specification. Is this an oversight, an unintended 
> consequence, or did you actually mean to do this?

it's an unintended, but not unforseen, consequence.  I agree that it
is a constraint in that it means the hub re-uses message IDs.
I believe that it's harmless; it doesn't lead to unavoidable 
confusion, since any later reference to the message ID will also 
have access to the identity of the recipient, so can identify 
which of the sends with the same msg-id is being talked about.

Can you think of any particular use cases in which this behaviour
would cause problems?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Tue Jul  8 00:54:10 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 8863E6241A9;
	Tue,  8 Jul 2008 00:54:10 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67MsERW029843;
	Tue, 8 Jul 2008 00:54:14 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 2806DECA4D1;
	Tue,  8 Jul 2008 00:54:14 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 67554ECA36D
	for <apps-samp@pat.hq.eso.org>; Tue,  8 Jul 2008 00:54:13 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m67MsDTo029840
	for <apps-samp@ivoa.net>; Tue, 8 Jul 2008 00:54:13 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,318,1212357600"; 
   d="scan'208";a="8827927"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 08 Jul 2008 00:53:02 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.5])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KFzal-0007Hk-7r; Mon, 07 Jul 2008 23:53:55 +0100
In-Reply-To: <Pine.LNX.4.63.0807071759470.8844@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0806131857510.10825@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.63.0806271449050.23232@andromeda.star.bris.ac.uk>
	<A1E57028-0A05-41CE-B2F5-5ECF4307179A@astro.ex.ac.uk>
	<Pine.LNX.4.63.0807071442030.7544@andromeda.star.bris.ac.uk>
	<9BCFF25A-FDCB-49D7-A850-E11BC5DC8859@astro.ex.ac.uk>
	<Pine.LNX.4.63.0807071759470.8844@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <96D3DE13-ACAF-4881-B137-9D99166877B9@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP v1.0 WD published
Date: Mon, 7 Jul 2008 23:52:49 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753)
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net


Mark Taylor wrote:
> Alasdair Allan wrote:
>> ...can you tell me what's intended here? Previously this wasn't a  
>> constrain in the specification. Is this an oversight, an  
>> unintended consequence, or did you actually mean to do this?
>
> it's an unintended, but not unforseen, consequence.  I agree that  
> it is a constraint in that it means the hub re-uses message IDs. I  
> believe that it's harmless; it doesn't lead to unavoidable  
> confusion, since any later reference to the message ID will also  
> have access to the identity of the recipient, so can identify which  
> of the sends with the same msg-id is being talked about.
>
> Can you think of any particular use cases in which this behaviour  
> would cause problems?

Not off the top of my head, but architecturally the idea sort of  
doesn't feel right to me. Not sure I can come up with a valid reason  
for this one, but it just feels wrong.

Oh well...

Al.

From apps-samp-bounces@ivoa.net  Tue Jul  8 12:06:34 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 4AD88624195;
	Tue,  8 Jul 2008 12:06:34 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m68A6ZE5026921;
	Tue, 8 Jul 2008 12:06:35 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id CC2FDECA48F;
	Tue,  8 Jul 2008 12:06:35 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 5D1BBECA328
	for <apps-samp@pat.hq.eso.org>; Tue,  8 Jul 2008 12:06:34 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m68A6Y55026915
	for <apps-samp@ivoa.net>; Tue, 8 Jul 2008 12:06:34 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,322,1212357600"; 
   d="scan'208";a="8836982"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 08 Jul 2008 12:05:33 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KGA5h-0000rc-00
	for apps-samp@ivoa.net; Tue, 08 Jul 2008 11:06:33 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KGA5g-0003dQ-Pn
	for apps-samp@ivoa.net; Tue, 08 Jul 2008 11:06:32 +0100
Date: Tue, 8 Jul 2008 11:06:32 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Java SAMP kit pre-release
Message-ID: <Pine.LNX.4.63.0807081057150.13932@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Dear all,

although it is incomplete, undocumented and untested, I have made 
a pre-release copy of my Java SAMP kit available at

    ftp://andromeda.star.bris.ac.uk/pub/star/samp/

if anyone is interested.  It contains a hub, client toolkit and
some associated GUI components.  These are believed to be working
correctly, but are not properly tested and may well contain bugs.

This is really only intended for those who are playing around with
implementations and want something for testing with now - I will
announce a proper release (documented, tested and with more 
functionality and possibly changes to the existing API) on this
list sometime in the future - probably in a couple of weeks or
thereabouts.

Mark

--
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Tue Jul  8 14:58:36 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 5BC38624195;
	Tue,  8 Jul 2008 14:58:36 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m68CwaAL014126;
	Tue, 8 Jul 2008 14:58:36 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 22A4BECA50B;
	Tue,  8 Jul 2008 14:58:36 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 7F2E9ECA508
	for <apps-samp@pat.hq.eso.org>; Tue,  8 Jul 2008 14:58:34 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m68CwWfu014123
	for <apps-samp@ivoa.net>; Tue, 8 Jul 2008 14:58:32 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAMAAc0ib/RCV/2dsb2JhbACrLg
X-IronPort-AV: E=Sophos;i="4.30,323,1212357600"; 
   d="scan'208";a="8840005"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 08 Jul 2008 14:57:31 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m68CwBdO006791; Tue, 8 Jul 2008 14:58:16 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m68Cw3TK014014; Tue, 8 Jul 2008 14:58:08 +0200
Message-ID: <4873645B.1060001@lambrate.inaf.it>
Date: Tue, 08 Jul 2008 14:58:03 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: SAMPY undocumented features
References: <486C86FA.6020900@lambrate.inaf.it>
	<Pine.LNX.4.63.0807071110040.4873@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0807071110040.4873@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Hi Mark!

> I'm a bit concerned about the client operation however.  The behaviour
> demanded from clients in the hub discovery phase is now different,
> and more complicated, than that currently specified in the Standard
> Profile part of the SAMP document.  I'm not sure exactly what you're
> suggesting here, is it
> 
>    a) This altered hub discovery prescription will be used only by
>       clients/hubs specific to the MIMA FASE environment (effectively
>       defining a new Profile similar, but not identical to, the
>       Standard Profile)
>          - that would work OK, but it means that applications written
>            only to conform to the Standard Profile written in the
>            SAMP document will not be usable from this environment
>            since they would look for the hub in the wrong place.
>            This lack of interoperability seems like a bit of a shame,
>            though depending on FASE's particular requirements maybe
>            it doesn't really matter.
> 
> or
> 
>    b) You are proposing to extend the Standard Profile definition so
>       that hub discovery works like this rather than as currently
>       written.
>          - I'm concerned that this makes it quite a bit more complicated
>            for clients to implement than the existing prescription -
>            especially the "ask the user which one s/he wants to
>            interact with" part which effectively requires each application
>            to invent and document some new user interaction.

I'd like to discuss about b) and, in case, about a). A possible middle 
way is to foresee a basic hub/client behaviour (single hub and .samp 
lock-file) and an advanced hub/client behaviour (multiple hubs and ... 
whatever) in the Standard Profile, stating that the Basic Standard 
Profile support is mandatory for hub/client developers, while the 
Advanced Standard Profile support is optional. Thus, "ASP" clients are 
able to talk with "ASP" clients and with "BSP" clients, while "BSP" 
clients are able to talk with "BSP" clients and with "ASP" clients which 
are running using a basic profile. Honestly, whether this means that I'm 
suggesting to have another optional profile or to extend the standard 
one is not clear even to me...


> Clearly a single lockfile in a well-known per-user location of the
> form we've written in the existing document won't work for your
> multiple hubs per user per host scenario.

Yep...

> However, as I've indicated above I'm not totally convinced by the
> details of the client-side procedure that SAMPY uses.
> Getting the hub to write lockfiles in custom places according to 
> implementation is OK, since the user can select which hub to use
> for their particular requirements, but requiring the clients to look
> in undocumented places is not, because clients may have been written
> by third parties who did not know about the undocumented conventions.

This undocumented place should be such only for the time being, until it 
is not standardised.


> So the question arises of how to tell clients where to find the hub.
> The most straightforward way I can think of to do this is by using
> environment variables.  Instead of simply looking in home-directory/.samp
> for the lockfile we could say that
> 
>   1. if an environment variable SAMP_HUBFILE exists, use its contents
>      as the location of a hub lockfile
>   2. otherwise, the location of the hub lockfile is home-directory/.samp

This looks to be a good alternative and 1. actually is the solution 
adopted by the DBus community (more or less). It works well, but there 
are a couple of issues:

1. As far as I know an environment variable can be set only within a 
run-time process, that is it cannot be exported. So, when you launch a 
samp-hub daemon which set up the environment variables, such variables 
are valid only inside that process. A way to overcome this issue is to 
find a way to directly call the "setenv", "export" or whatever built-in 
shell function (which are even OS dependant). The DBus workaround is 
that dbus-launch program, once launched a session bus (the equivalent of 
a samp hub) prints out the values of the environment variable that 
should be manually set at shell level (check it out). A workaround to 
the workaround is to wrap dbus-launch with a bash program that parses 
the result of dbus-launch and calls export, setenv, etc... and this is 
what happens at Linux start-up level (more or less).

2. Supposing that 1. is not an issue, then you can have only one hub 
reachable per terminal (shell), since the environment variable are valid 
only inside the terminal process (for the same reasons above). If an 
application running on a S1 shell wants to connect with the hub started 
in shell S2, then I must setup manually the SAMP env. variables reading 
them from S2 and copying them in S1. I did it for DBus and it was really 
boring. Then I wrapped dbus-launch with a bash program that wrote down 
the connection information in files like those proposed for SAMP, and I 
also coded a client tool-kit that simplified things. I didn't find a 
better way.


> I'd be interested to know whether you think this would solve your use 
> case, and your and anyone else's opinion
> on whether this looks like a sensible way to go for generalising hub 
> discovery, or whether Luigi's $HOME/.samp-1/samp-hub-* scheme is 
> preferred, or whether we shouldn't be thinking about generalising hub 
> discovery,
> or whether anyone has a better idea.

$HOME/.samp-1/samp-hub-* scheme is not perfect and does not simplifies 
client developers' life, this is sure. For instance, a problem with this 
scheme is that if a hub dies then its lock-file remains there forever. 
I'm still convinced it is a reasonable solution, but I'm also sure that 
with your (you and the mailing list) contribution it can be certainly 
improved.


A general comment. It is sensible to keep as simple as possible the 
client side in SAMP, but however simple it could be I think that SAMP 
will be widely adopted only if the SAMP community will be able to 
provide a large set of client toolkits, at least for all the most common 
languages.
One year ago I tried to talk about PLASTIC and DBus/MIMA to my 
colleagues which are a little astronomers and a little developers 
(mainly astronomers). Talking about PLASTIC, I must say that it was 
quite difficult to convince them that the creation of an XML-RPC 
connection with a PLASTIC hub or the creation an XML-RPC server for 
client purposes and the related stuff wasn't so hard to do as it seemed 
(even in Python). Well, as a result I had to implement a Python PLASTIC 
module that simplified even more those operations (perhaps you remember 
PYSTIC). A very simple client API specific for Python developers was 
much more charming for them, and it was adopted (even if for small things).

Said this, I think that we could complicate a bit SAMP at client level 
without worry too much, as long as the SAMP community is willing to 
produce client libraries (modules, packages or whatever) for different 
languages, that can be used by the broader community to easily interface 
their applications, scripts, programs or whatever with a SAMP Hub.


Ciao,

   Luigi






From apps-samp-bounces@ivoa.net  Tue Jul  8 21:56:10 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 4726F624195;
	Tue,  8 Jul 2008 21:56:10 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m68JuD85001320;
	Tue, 8 Jul 2008 21:56:13 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 5E7B9EC811C;
	Tue,  8 Jul 2008 21:56:13 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 0B54CEC8114;
	Tue,  8 Jul 2008 21:56:12 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m68JuBAS001314;
	Tue, 8 Jul 2008 21:56:11 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,326,1212357600"; 
	d="scan'208,49,50,63?gz'208,49,50,63,50?pl'208,49,50,63,50?pm'208,49,50,63,50";
	a="8851377"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 08 Jul 2008 21:55:09 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.5])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KGJIH-0005wC-7e; Tue, 08 Jul 2008 20:56:10 +0100
In-Reply-To: <1E005B12-8E1A-4675-B2BC-29F4CE58F8F7@astro.ex.ac.uk>
References: <0342C5F0-EF78-4035-9AE2-16E9ED28AEA4@astro.ex.ac.uk>
	<1E005B12-8E1A-4675-B2BC-29F4CE58F8F7@astro.ex.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: multipart/mixed; boundary=Apple-Mail-18-1016495626
Message-Id: <B0CD3DBA-C639-4244-995E-2EC63011E72A@astro.ex.ac.uk>
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: SAMP Perl Hub (Alpha Release)
Date: Tue, 8 Jul 2008 20:54:56 +0100
To: SAMP Working Group <apps-samp@ivoa.net>,
        Applications Working Group <apps@ivoa.net>
X-Mailer: Apple Mail (2.753)
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net


--Apple-Mail-18-1016495626
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	delsp=yes;
	format=flowed

All,

I've just brought my Perl Hub and test clients into line with the  
post-Trieste Working Draft document Mark pushed to the list at the  
tail end of June. Both the Perl Hub and the clients have been tested  
with Mark's Java SAMP kit pre-release and Luigi's SAMPY alpha 1 release.

ftp://andromeda.star.bris.ac.uk/pub/star/samp/samp_export.zip
http://cosmos.iasf-milano.inaf.it/luigi/projects/vo/samp/ 
sampy-1.0alpha.tar.gz

The Perl Hub currently lacks callAndWait( ) functionality, I'll be  
adding that in this week, but should in all other ways meet the 1.0  
WD and be interoperable with the other emerging toolkits.

The code is available from the following URLs,

http://www.babilim.co.uk/software/perl-samp-hub-alpha3.tar.gz
http://www.babilim.co.uk/software/perl-samp-clients-alpha3.tar.gz

and is released under the GPL.

Apart from a quick update towards the end of the week to add  
callAndWait( ), which will be tagged alpha4, this will be the last  
'initial' release. After this I'll take some time to clean up the  
code, add some documentation, and make the client toolkit a bit more  
pleasant to use before making a 'first' release.

However if you want to get your feet dirty ahead of that, you'll need  
the following Perl modules installed: XMLRPC::Lite (part of the  
SOAP::Lite module), XML::Simple, DateTime, File::Spec, Carp,  
Data::Dumper, Getopt::Long, Socket, Net::Domain, POSIX and Errno.  
Depending on your version of Perl some (but not all) of these will  
ship with the core distribution. The rest can be obtained from CPAN  
(http://search.cpan.org/). I think I've caught all the dependancies,  
but if you notice any I haven't listed any let me know I've forgotten  
them.

As with my initial release of the prototype SAMP Hub back at the  
start of May the code comes with no guarantees except there will be  
horrendous bugs. There is no documentation. Many of the Perl modules  
have inline POD, however most of it didn't keep up with the pace of  
development so it's out of date. However, once you install the  
additional modules, open up a terminal window and start the Hub as  
follows,

% tar -zxvf perl-samp-hub-alpha3.tar.gz
% cd perl-samp-hub-alpha3/
% ./samp_hub.pl

you can put the Hub through its paces by opening up two more terminal  
windows and running the testbed clients. You should start the  
listener client in all cases,

% tar -zxvf perl-samp-clients-alpha3.tar.gz
% cd perl-samp-clients-alpha3/
% ./listener_client.pl

this is the test client that listens for notify( ) and call( )'s from  
the Hub.

In the second window you can either start the client that exercises  
the notify( ) method, or the other than exercises the call( ) method. So

% cd perl-samp-clients-alpha3/
% ./callAll_test.pl

or

% cd perl-samp-clients-alpha3/
% ./notifyAll_test.pl

These two clients have a heart beat which will dispatch a call or a  
notification periodically. The first heartbeat will happen 15 seconds  
(or so) after the client has completed its registering with the Hub.

Cheers,
Al.






--Apple-Mail-18-1016495626
Content-Transfer-Encoding: base64
Content-Type: application/x-gzip;
	x-unix-mode=0644;
	name=perl-samp-clients-alpha3.tar.gz
Content-Disposition: attachment;
	filename=perl-samp-clients-alpha3.tar.gz

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
4MDB3wr/D1JhS7QA4AEA

--Apple-Mail-18-1016495626
Content-Transfer-Encoding: base64
Content-Type: application/x-gzip;
	x-unix-mode=0644;
	name=perl-samp-hub-alpha3.tar.gz
Content-Disposition: attachment;
	filename=perl-samp-hub-alpha3.tar.gz

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
AwcOHDhw4MCBAwcOHDhwMAD+H8qN+J0A4AEA

--Apple-Mail-18-1016495626--

From apps-bounces@ivoa.net  Tue Jul  8 21:56:10 2008
Return-Path: <apps-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 7E1E16241A9;
	Tue,  8 Jul 2008 21:56:10 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m68JuDU9001323;
	Tue, 8 Jul 2008 21:56:13 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 9201AEC811C;
	Tue,  8 Jul 2008 21:56:13 +0200 (CEST)
X-Original-To: apps@pat.hq.eso.org
Delivered-To: apps@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 0B54CEC8114;
	Tue,  8 Jul 2008 21:56:12 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m68JuBAS001314;
	Tue, 8 Jul 2008 21:56:11 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,326,1212357600"; 
	d="scan'208,49,50,63?gz'208,49,50,63,50?pl'208,49,50,63,50?pm'208,49,50,63,50";
	a="8851377"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 08 Jul 2008 21:55:09 +0200
Received: from babilim.plus.com ([80.229.219.1] helo=[192.168.1.5])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KGJIH-0005wC-7e; Tue, 08 Jul 2008 20:56:10 +0100
In-Reply-To: <1E005B12-8E1A-4675-B2BC-29F4CE58F8F7@astro.ex.ac.uk>
References: <0342C5F0-EF78-4035-9AE2-16E9ED28AEA4@astro.ex.ac.uk>
	<1E005B12-8E1A-4675-B2BC-29F4CE58F8F7@astro.ex.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: multipart/mixed; boundary=Apple-Mail-18-1016495626
Message-Id: <B0CD3DBA-C639-4244-995E-2EC63011E72A@astro.ex.ac.uk>
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: SAMP Perl Hub (Alpha Release)
Date: Tue, 8 Jul 2008 20:54:56 +0100
To: SAMP Working Group <apps-samp@ivoa.net>,
        Applications Working Group <apps@ivoa.net>
X-Mailer: Apple Mail (2.753)
X-BeenThere: apps@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Applications Working Group - IVOA <apps.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps@ivoa.net>
List-Help: <mailto:apps-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=subscribe>
Errors-To: apps-bounces@ivoa.net


--Apple-Mail-18-1016495626
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	delsp=yes;
	format=flowed

All,

I've just brought my Perl Hub and test clients into line with the  
post-Trieste Working Draft document Mark pushed to the list at the  
tail end of June. Both the Perl Hub and the clients have been tested  
with Mark's Java SAMP kit pre-release and Luigi's SAMPY alpha 1 release.

ftp://andromeda.star.bris.ac.uk/pub/star/samp/samp_export.zip
http://cosmos.iasf-milano.inaf.it/luigi/projects/vo/samp/ 
sampy-1.0alpha.tar.gz

The Perl Hub currently lacks callAndWait( ) functionality, I'll be  
adding that in this week, but should in all other ways meet the 1.0  
WD and be interoperable with the other emerging toolkits.

The code is available from the following URLs,

http://www.babilim.co.uk/software/perl-samp-hub-alpha3.tar.gz
http://www.babilim.co.uk/software/perl-samp-clients-alpha3.tar.gz

and is released under the GPL.

Apart from a quick update towards the end of the week to add  
callAndWait( ), which will be tagged alpha4, this will be the last  
'initial' release. After this I'll take some time to clean up the  
code, add some documentation, and make the client toolkit a bit more  
pleasant to use before making a 'first' release.

However if you want to get your feet dirty ahead of that, you'll need  
the following Perl modules installed: XMLRPC::Lite (part of the  
SOAP::Lite module), XML::Simple, DateTime, File::Spec, Carp,  
Data::Dumper, Getopt::Long, Socket, Net::Domain, POSIX and Errno.  
Depending on your version of Perl some (but not all) of these will  
ship with the core distribution. The rest can be obtained from CPAN  
(http://search.cpan.org/). I think I've caught all the dependancies,  
but if you notice any I haven't listed any let me know I've forgotten  
them.

As with my initial release of the prototype SAMP Hub back at the  
start of May the code comes with no guarantees except there will be  
horrendous bugs. There is no documentation. Many of the Perl modules  
have inline POD, however most of it didn't keep up with the pace of  
development so it's out of date. However, once you install the  
additional modules, open up a terminal window and start the Hub as  
follows,

% tar -zxvf perl-samp-hub-alpha3.tar.gz
% cd perl-samp-hub-alpha3/
% ./samp_hub.pl

you can put the Hub through its paces by opening up two more terminal  
windows and running the testbed clients. You should start the  
listener client in all cases,

% tar -zxvf perl-samp-clients-alpha3.tar.gz
% cd perl-samp-clients-alpha3/
% ./listener_client.pl

this is the test client that listens for notify( ) and call( )'s from  
the Hub.

In the second window you can either start the client that exercises  
the notify( ) method, or the other than exercises the call( ) method. So

% cd perl-samp-clients-alpha3/
% ./callAll_test.pl

or

% cd perl-samp-clients-alpha3/
% ./notifyAll_test.pl

These two clients have a heart beat which will dispatch a call or a  
notification periodically. The first heartbeat will happen 15 seconds  
(or so) after the client has completed its registering with the Hub.

Cheers,
Al.






--Apple-Mail-18-1016495626
Content-Transfer-Encoding: base64
Content-Type: application/x-gzip;
	x-unix-mode=0644;
	name=perl-samp-clients-alpha3.tar.gz
Content-Disposition: attachment;
	filename=perl-samp-clients-alpha3.tar.gz

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
4MDB3wr/D1JhS7QA4AEA

--Apple-Mail-18-1016495626
Content-Transfer-Encoding: base64
Content-Type: application/x-gzip;
	x-unix-mode=0644;
	name=perl-samp-hub-alpha3.tar.gz
Content-Disposition: attachment;
	filename=perl-samp-hub-alpha3.tar.gz

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
AwcOHDhw4MCBAwcOHDhwMAD+H8qN+J0A4AEA

--Apple-Mail-18-1016495626--

From apps-samp-bounces@ivoa.net  Wed Jul  9 10:06:01 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 688C1624195;
	Wed,  9 Jul 2008 10:06:01 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69862nV027969;
	Wed, 9 Jul 2008 10:06:02 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 9459BECA32B;
	Wed,  9 Jul 2008 10:06:02 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 00E27EC8197
	for <apps-samp@pat.hq.eso.org>; Wed,  9 Jul 2008 10:06:01 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69860sA027966
	for <apps-samp@ivoa.net>; Wed, 9 Jul 2008 10:06:00 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAEgOdEib/RCV/2dsb2JhbACwMA
X-IronPort-AV: E=Sophos;i="4.30,330,1212357600"; 
   d="scan'208";a="8860347"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 09 Jul 2008 10:04:57 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m6985nY7024568
	for <apps-samp@ivoa.net>; Wed, 9 Jul 2008 10:05:54 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m6985iHY024071
	for <apps-samp@ivoa.net>; Wed, 9 Jul 2008 10:05:47 +0200
Message-ID: <48747158.9020101@lambrate.inaf.it>
Date: Wed, 09 Jul 2008 10:05:44 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: SAMP Working Group <apps-samp@ivoa.net>
Subject: Client ping
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Dear all,

   the pre-Trieste working draft foresaw that a callable client had to 
implement a samp.client.ping() method (as it still happens for the hub). 
In the last draft, this method has been substituted with an 
administrative client message "samp.app.ping".
   This message could be used by the hub to test whether the registered 
callable clients are still alive or died in an unpredictable way. If a 
client dies and doesn't respond to a "samp.app.ping" message, then it 
can be removed from the list of registered clients.
   Anyway a callable client is not supposed to be subscribed to a ping 
message and then there can be situations where a callable client which 
is not subscribed to a ping message can remain as registered with the 
hub forever, even if it died.
   A possible way to overcome this problem is the introduction of a 
client inactivity timeout, something very similar to the usual 
connection or session timeout in the common client/server model. If a 
client remains inactive for more that a specified time, then it is 
automatically unregistered.
   This is applicable to every client, even if they are not callable, so 
it is a more general solution respect the ping message test.

   What do you think about this proposal?


Regards,

   Luigi

From apps-samp-bounces@ivoa.net  Wed Jul  9 13:25:34 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 71FCF624195;
	Wed,  9 Jul 2008 13:25:34 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69BPa1M028183;
	Wed, 9 Jul 2008 13:25:36 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 29AD2ECA356;
	Wed,  9 Jul 2008 13:25:36 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 3683BEC81BA
	for <apps-samp@pat.hq.eso.org>; Wed,  9 Jul 2008 13:25:34 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69BPYme028180
	for <apps-samp@ivoa.net>; Wed, 9 Jul 2008 13:25:34 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,331,1212357600"; 
   d="scan'208";a="8864104"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 09 Jul 2008 13:24:30 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KGXnX-0003oF-00; Wed, 09 Jul 2008 12:25:23 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KGXnW-0006fW-Pk; Wed, 09 Jul 2008 12:25:22 +0100
Date: Wed, 9 Jul 2008 12:25:22 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Luigi Paioro <luigi@lambrate.inaf.it>
Subject: Re: Client ping
In-Reply-To: <48747158.9020101@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0807091212350.25537@andromeda.star.bris.ac.uk>
References: <48747158.9020101@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: SAMP Working Group <apps-samp@ivoa.net>
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Wed, 9 Jul 2008, Luigi Paioro wrote:

>  A possible way to overcome this problem is the introduction of a client 
> inactivity timeout, something very similar to the usual connection or session 
> timeout in the common client/server model. If a client remains inactive for 
> more that a specified time, then it is automatically unregistered.
>  This is applicable to every client, even if they are not callable, so it is 
> a more general solution respect the ping message test.
>
>  What do you think about this proposal?

Luigi,

This kind of timeout-based unregistration may be reasonable behaviour 
in some circumstances for a hub, but in other circumstances one can 
imagine that clients might want to stay connected to a hub for a 
long time without doing anything.

In my opinion it's OK for hub implementations to forcibly unregister 
inactive clients (perhaps based on some user configuration for what 
length of inactivity should be tolerated) if they choose to. 
But I don't think that the standard should mandate that this should 
or must happen.

It may be worth having a new MType (samp.hub.disconnect?) which the hub 
sends to an application to inform it that it is being forcibly 
unregistered and no further communication is welcome. In most cases 
(if the client has disappeared in any case) this message will go 
unheard by its intended recipient, but there may be other occasions
on which a hub wishes to forcibly disconnect a client.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Wed Jul  9 13:59:35 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 67A47624195;
	Wed,  9 Jul 2008 13:59:35 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69BxbLe001284;
	Wed, 9 Jul 2008 13:59:37 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 3671CECA36F;
	Wed,  9 Jul 2008 13:59:37 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 04386EC8193;
	Wed,  9 Jul 2008 13:59:36 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69BxZWV001281;
	Wed, 9 Jul 2008 13:59:35 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,331,1212357600"; 
   d="scan'208";a="8864682"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 09 Jul 2008 13:58:32 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KGYKd-0000Ov-6r; Wed, 09 Jul 2008 12:59:35 +0100
In-Reply-To: <B0CD3DBA-C639-4244-995E-2EC63011E72A@astro.ex.ac.uk>
References: <0342C5F0-EF78-4035-9AE2-16E9ED28AEA4@astro.ex.ac.uk>
	<1E005B12-8E1A-4675-B2BC-29F4CE58F8F7@astro.ex.ac.uk>
	<B0CD3DBA-C639-4244-995E-2EC63011E72A@astro.ex.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <DA6FFECF-0120-49C1-B285-8F7AF68C4B5C@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP Perl Hub (Alpha Release)
Date: Wed, 9 Jul 2008 12:58:26 +0100
To: SAMP Working Group <apps-samp@ivoa.net>,
        Applications Working Group <apps@ivoa.net>
X-Mailer: Apple Mail (2.753)
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net


Alasdair Allan wrote:
> I've just brought my Perl Hub and test clients into line with the  
> post-Trieste Working Draft document Mark pushed to the list at the  
> tail end of June. Both the Perl Hub and the clients have been  
> tested with Mark's Java SAMP kit pre-release and Luigi's SAMPY  
> alpha 1 release.
>
> The code is available from the following URLs,
>
> http://www.babilim.co.uk/software/perl-samp-hub-alpha3.tar.gz
> http://www.babilim.co.uk/software/perl-samp-clients-alpha3.tar.gz
>
> and is released under the GPL.

The Hub is now available as a binary for x86_64 Linux and OSX, just  
download the relevant zip file from the URL below, unzip and run it.  
There should be no external dependancies, the sticky lump should  
include everything you need. See,

http://www.babilim.co.uk/software/perl-samp-hub-alpha3-x86_64.zip

and

http://www.babilim.co.uk/software/perl-samp-hub-alpha3-macosx.zip

This is the first time I've generally distributed Perl code in this  
fashion, so I'd be interested in knowing how people get on with it,  
and how divergent the architectures get before it stops working  
entirely. Theoretically at least, the OSX binary should work under  
Tiger and Leopard.

Cheers,
Al.


From apps-bounces@ivoa.net  Wed Jul  9 13:59:35 2008
Return-Path: <apps-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A05426241A9;
	Wed,  9 Jul 2008 13:59:35 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69Bxb32001288;
	Wed, 9 Jul 2008 13:59:37 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 7176EECA373;
	Wed,  9 Jul 2008 13:59:37 +0200 (CEST)
X-Original-To: apps@pat.hq.eso.org
Delivered-To: apps@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 04386EC8193;
	Wed,  9 Jul 2008 13:59:36 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69BxZWV001281;
	Wed, 9 Jul 2008 13:59:35 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,331,1212357600"; 
   d="scan'208";a="8864682"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 09 Jul 2008 13:58:32 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KGYKd-0000Ov-6r; Wed, 09 Jul 2008 12:59:35 +0100
In-Reply-To: <B0CD3DBA-C639-4244-995E-2EC63011E72A@astro.ex.ac.uk>
References: <0342C5F0-EF78-4035-9AE2-16E9ED28AEA4@astro.ex.ac.uk>
	<1E005B12-8E1A-4675-B2BC-29F4CE58F8F7@astro.ex.ac.uk>
	<B0CD3DBA-C639-4244-995E-2EC63011E72A@astro.ex.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <DA6FFECF-0120-49C1-B285-8F7AF68C4B5C@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: SAMP Perl Hub (Alpha Release)
Date: Wed, 9 Jul 2008 12:58:26 +0100
To: SAMP Working Group <apps-samp@ivoa.net>,
        Applications Working Group <apps@ivoa.net>
X-Mailer: Apple Mail (2.753)
X-BeenThere: apps@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Applications Working Group - IVOA <apps.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps@ivoa.net>
List-Help: <mailto:apps-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=subscribe>
Errors-To: apps-bounces@ivoa.net


Alasdair Allan wrote:
> I've just brought my Perl Hub and test clients into line with the  
> post-Trieste Working Draft document Mark pushed to the list at the  
> tail end of June. Both the Perl Hub and the clients have been  
> tested with Mark's Java SAMP kit pre-release and Luigi's SAMPY  
> alpha 1 release.
>
> The code is available from the following URLs,
>
> http://www.babilim.co.uk/software/perl-samp-hub-alpha3.tar.gz
> http://www.babilim.co.uk/software/perl-samp-clients-alpha3.tar.gz
>
> and is released under the GPL.

The Hub is now available as a binary for x86_64 Linux and OSX, just  
download the relevant zip file from the URL below, unzip and run it.  
There should be no external dependancies, the sticky lump should  
include everything you need. See,

http://www.babilim.co.uk/software/perl-samp-hub-alpha3-x86_64.zip

and

http://www.babilim.co.uk/software/perl-samp-hub-alpha3-macosx.zip

This is the first time I've generally distributed Perl code in this  
fashion, so I'd be interested in knowing how people get on with it,  
and how divergent the architectures get before it stops working  
entirely. Theoretically at least, the OSX binary should work under  
Tiger and Leopard.

Cheers,
Al.


From apps-samp-bounces@ivoa.net  Wed Jul  9 14:09:51 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 46E35624195;
	Wed,  9 Jul 2008 14:09:51 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69C9rmZ002362;
	Wed, 9 Jul 2008 14:09:53 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 282B1ECA353;
	Wed,  9 Jul 2008 14:09:53 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 8017CEC81A4
	for <apps-samp@pat.hq.eso.org>; Wed,  9 Jul 2008 14:09:51 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69C9pfg002359
	for <apps-samp@ivoa.net>; Wed, 9 Jul 2008 14:09:51 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,331,1212357600"; 
   d="scan'208";a="8864859"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 09 Jul 2008 14:08:47 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KGYUZ-0000Xh-6g
	for apps-samp@ivoa.net; Wed, 09 Jul 2008 13:09:51 +0100
Mime-Version: 1.0 (Apple Message framework v753)
In-Reply-To: <Pine.LNX.4.63.0807091212350.25537@andromeda.star.bris.ac.uk>
References: <48747158.9020101@lambrate.inaf.it>
	<Pine.LNX.4.63.0807091212350.25537@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <2A07327A-47D8-4722-9C39-5AB93C52F070@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Client ping
Date: Wed, 9 Jul 2008 13:08:42 +0100
To: SAMP Working Group <apps-samp@ivoa.net>
X-Mailer: Apple Mail (2.753)
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net


Mark Taylor wrote:
> Luigi Paioro wrote:
>> What do you think about this proposal?
>
> In my opinion it's OK for hub implementations to forcibly  
> unregister inactive clients (perhaps based on some user  
> configuration for what length of inactivity should be tolerated) if  
> they choose to. But I don't think that the standard should mandate  
> that this should or must happen.

I'd agree with that, seems like something for Hub authors rather than  
standardisation.

Al.

From apps-samp-bounces@ivoa.net  Wed Jul  9 14:39:32 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 998B3624195;
	Wed,  9 Jul 2008 14:39:32 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69CdYg3005588;
	Wed, 9 Jul 2008 14:39:34 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 84B94ECA34F;
	Wed,  9 Jul 2008 14:39:34 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 4D33CEC81A4
	for <apps-samp@pat.hq.eso.org>; Wed,  9 Jul 2008 14:39:33 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m69CdXdJ005585
	for <apps-samp@ivoa.net>; Wed, 9 Jul 2008 14:39:33 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEALtOdEib/RCV/2dsb2JhbACwCQ
X-IronPort-AV: E=Sophos;i="4.30,331,1212357600"; 
   d="scan'208";a="8865585"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 09 Jul 2008 14:38:09 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m69CcfSM031390; Wed, 9 Jul 2008 14:38:46 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m69Ccb4b026277; Wed, 9 Jul 2008 14:38:39 +0200
Message-ID: <4874B14C.40805@lambrate.inaf.it>
Date: Wed, 09 Jul 2008 14:38:36 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>, Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: Client ping
References: <48747158.9020101@lambrate.inaf.it>
	<Pine.LNX.4.63.0807091212350.25537@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0807091212350.25537@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: SAMP Working Group <apps-samp@ivoa.net>
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Mark and Alasdair,

> In my opinion it's OK for hub implementations to forcibly unregister 
> inactive clients (perhaps based on some user configuration for what 
> length of inactivity should be tolerated) if they choose to. But I don't 
> think that the standard should mandate that this should or must happen.

OK

> It may be worth having a new MType (samp.hub.disconnect?) which the hub 
> sends to an application to inform it that it is being forcibly 
> unregistered and no further communication is welcome. In most cases (if 
> the client has disappeared in any case) this message will go unheard by 
> its intended recipient, but there may be other occasions
> on which a hub wishes to forcibly disconnect a client.

I agree with you, samp.hub.disconnect (or samp.hub.event.disconnect? I'm 
a bit confused concerning the use of "event") looks to be quite useful 
for all those cases where a hub wishes to disconnect a client (for any 
reason).


Luigi

From apps-samp-bounces@ivoa.net  Mon Jul 14 14:46:31 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 6E8D562419B;
	Mon, 14 Jul 2008 14:46:31 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6ECkX7w022608;
	Mon, 14 Jul 2008 14:46:33 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 6500EECA380;
	Mon, 14 Jul 2008 14:46:33 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id A7ADCEC8123;
	Mon, 14 Jul 2008 14:46:32 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6ECkWgG022605;
	Mon, 14 Jul 2008 14:46:32 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAKXnekib/RCV/2dsb2JhbACpLAE
X-IronPort-AV: E=Sophos;i="4.30,359,1212357600"; 
   d="scan'208";a="8994991"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 14 Jul 2008 14:45:12 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m6ECkKm5015484; Mon, 14 Jul 2008 14:46:25 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m6ECk9vB007737; Mon, 14 Jul 2008 14:46:15 +0200
Message-ID: <487B4A91.7000208@lambrate.inaf.it>
Date: Mon, 14 Jul 2008 14:46:09 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: SAMP Working Group <apps-samp@ivoa.net>,
        IVOA Applications WG <apps@ivoa.net>
Subject: SAMPy alpha 2 release
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Dear all,

   a new release of my SAMP Python implementation is now available. 
SAMPy alpha 2 is still an alpha release, but a lot of bugs have been 
fixed and it seems to be rather stable now. It has been also tested with 
Mark's and Alasdair's implementations:

ftp://andromeda.star.bris.ac.uk/pub/star/samp/
http://www.babilim.co.uk/software/perl-samp-hub-alpha3.tar.gz
http://www.babilim.co.uk/software/perl-samp-clients-alpha3.tar.gz

and it results fully interoperable. The code and API documentation are 
available here:

http://cosmos.iasf-milano.inaf.it/luigi/projects/vo/samp/

following "sampy-1.0alpha2" directory or "latest" directory (the 
previous release is still available but deprecated).

I have added a README file and a ChangeLog in order to document better 
how to use sampy hub and describe the changes applied.

Please, pay attention to the API which is slightly changed (and now more 
documented)!

If you have any problem with SAMPy alpha 2, please let me know.

Thanks.


Best regards,

   Luigi


-- 

Luigi Paioro

INAF - IASF Milano
Via Bassini 15, I-20133 Milano, Italy

Phone  (+39) 02 23 699 470
Fax    (+39) 02 26 660 17
Site   http://www.iasf-milano.inaf.it/

From apps-bounces@ivoa.net  Mon Jul 14 14:46:31 2008
Return-Path: <apps-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id A2AFC6241AB;
	Mon, 14 Jul 2008 14:46:31 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6ECkXTc022611;
	Mon, 14 Jul 2008 14:46:33 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 939D3ECA380;
	Mon, 14 Jul 2008 14:46:33 +0200 (CEST)
X-Original-To: apps@pat.hq.eso.org
Delivered-To: apps@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id A7ADCEC8123;
	Mon, 14 Jul 2008 14:46:32 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6ECkWgG022605;
	Mon, 14 Jul 2008 14:46:32 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApoEAKXnekib/RCV/2dsb2JhbACpLAE
X-IronPort-AV: E=Sophos;i="4.30,359,1212357600"; 
   d="scan'208";a="8994991"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 14 Jul 2008 14:45:12 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m6ECkKm5015484; Mon, 14 Jul 2008 14:46:25 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m6ECk9vB007737; Mon, 14 Jul 2008 14:46:15 +0200
Message-ID: <487B4A91.7000208@lambrate.inaf.it>
Date: Mon, 14 Jul 2008 14:46:09 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.14 (X11/20080421)
MIME-Version: 1.0
To: SAMP Working Group <apps-samp@ivoa.net>,
        IVOA Applications WG <apps@ivoa.net>
Subject: SAMPy alpha 2 release
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
X-BeenThere: apps@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Applications Working Group - IVOA <apps.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps@ivoa.net>
List-Help: <mailto:apps-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=subscribe>
Errors-To: apps-bounces@ivoa.net

Dear all,

   a new release of my SAMP Python implementation is now available. 
SAMPy alpha 2 is still an alpha release, but a lot of bugs have been 
fixed and it seems to be rather stable now. It has been also tested with 
Mark's and Alasdair's implementations:

ftp://andromeda.star.bris.ac.uk/pub/star/samp/
http://www.babilim.co.uk/software/perl-samp-hub-alpha3.tar.gz
http://www.babilim.co.uk/software/perl-samp-clients-alpha3.tar.gz

and it results fully interoperable. The code and API documentation are 
available here:

http://cosmos.iasf-milano.inaf.it/luigi/projects/vo/samp/

following "sampy-1.0alpha2" directory or "latest" directory (the 
previous release is still available but deprecated).

I have added a README file and a ChangeLog in order to document better 
how to use sampy hub and describe the changes applied.

Please, pay attention to the API which is slightly changed (and now more 
documented)!

If you have any problem with SAMPy alpha 2, please let me know.

Thanks.


Best regards,

   Luigi


-- 

Luigi Paioro

INAF - IASF Milano
Via Bassini 15, I-20133 Milano, Italy

Phone  (+39) 02 23 699 470
Fax    (+39) 02 26 660 17
Site   http://www.iasf-milano.inaf.it/

From apps-samp-bounces@ivoa.net  Mon Jul 14 17:18:39 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id E133C62419B;
	Mon, 14 Jul 2008 17:18:38 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6EFIfhF009099;
	Mon, 14 Jul 2008 17:18:41 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 3E36BECA380;
	Mon, 14 Jul 2008 17:18:41 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 1A31EECA369
	for <apps-samp@pat.hq.eso.org>; Mon, 14 Jul 2008 17:18:40 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6EFIdZt009093
	for <apps-samp@ivoa.net>; Mon, 14 Jul 2008 17:18:40 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.30,359,1212357600"; 
   d="scan'208";a="8998187"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 14 Jul 2008 17:17:20 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KIPp1-0006v2-00
	for apps-samp@ivoa.net; Mon, 14 Jul 2008 16:18:39 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KIPp1-0004Yl-0p
	for apps-samp@ivoa.net; Mon, 14 Jul 2008 16:18:39 +0100
Date: Mon, 14 Jul 2008 16:18:39 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: chmod 600 equivalent for MS Windows
Message-ID: <Pine.LNX.4.63.0807141609150.17488@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

If there's anyone out there who knows about Microsoft Windows,

(I'm hoping Luigi might, since he was able to answer about %USERPROFILE%)

I'm writing Java code which should ensure that the .samp lockfile
cannot be read by anyone other than the owner of that file.
Although there is a method

    java.io.File.setReadable()

in Java which can do the trick, it is only available from Java 1.6,
and I'd like to provide a fallback for earlier JVMs.

On Un*x I can call out to the OS and invoke a command like:

    Runtime.exec( new String[] { "chmod", "600", filename } );

Does anybody know if this is possible for some/any/all versions of
MS Windows, and if so, how I should phrase the command?

thanks

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Mon Jul 14 17:21:41 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 7CBBA62419B;
	Mon, 14 Jul 2008 17:21:41 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6EFLh9p009462;
	Mon, 14 Jul 2008 17:21:43 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id CF98BECA380;
	Mon, 14 Jul 2008 17:21:43 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id AF23BECA369
	for <apps-samp@pat.hq.eso.org>; Mon, 14 Jul 2008 17:21:42 +0200 (CEST)
Received: from forth.hq.eso.org (forth.hq.eso.org [134.171.45.18])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6EFLgbF009459;
	Mon, 14 Jul 2008 17:21:42 +0200 (MEST)
Received: from [134.171.30.52] (nb012146.ads.eso.org [134.171.30.52])
	(authenticated bits=0)
	by forth.hq.eso.org (8.12.8/8.12.8) with ESMTP id m6EEtEGv001169
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT);
	Mon, 14 Jul 2008 16:55:14 +0200
Message-ID: <487B6F06.4050600@eso.org>
Date: Mon, 14 Jul 2008 17:21:42 +0200
From: Bruno Rino <brino@eso.org>
User-Agent: Thunderbird 2.0.0.14 (Windows/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: chmod 600 equivalent for MS Windows
References: <Pine.LNX.4.63.0807141609150.17488@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0807141609150.17488@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

on a windows command prompt,

attrib -R filename

does the trick

Cheers,
Bruno

On 14/07/2008 17:18, Mark Taylor wrote:
> If there's anyone out there who knows about Microsoft Windows,
>
> (I'm hoping Luigi might, since he was able to answer about %USERPROFILE%)
>
> I'm writing Java code which should ensure that the .samp lockfile
> cannot be read by anyone other than the owner of that file.
> Although there is a method
>
>    java.io.File.setReadable()
>
> in Java which can do the trick, it is only available from Java 1.6,
> and I'd like to provide a fallback for earlier JVMs.
>
> On Un*x I can call out to the OS and invoke a command like:
>
>    Runtime.exec( new String[] { "chmod", "600", filename } );
>
> Does anybody know if this is possible for some/any/all versions of
> MS Windows, and if so, how I should phrase the command?
>
> thanks
>
> Mark
>

From apps-samp-bounces@ivoa.net  Mon Jul 14 18:18:48 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id B22B662419B;
	Mon, 14 Jul 2008 18:18:48 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6EGIpnf015413;
	Mon, 14 Jul 2008 18:18:51 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 3F832ECA38C;
	Mon, 14 Jul 2008 18:18:51 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 1AAC6ECA34F
	for <apps-samp@pat.hq.eso.org>; Mon, 14 Jul 2008 18:18:50 +0200 (CEST)
Received: from clyde.hq.eso.org (clyde.hq.eso.org [134.171.45.17])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6EGIn9o015410;
	Mon, 14 Jul 2008 18:18:49 +0200 (MEST)
Received: from [134.171.30.52] (nb012146.ads.eso.org [134.171.30.52])
	(authenticated bits=0)
	by clyde.hq.eso.org (8.12.8/8.12.8) with ESMTP id m6EFqtKh000671
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT);
	Mon, 14 Jul 2008 17:52:55 +0200
Message-ID: <487B7C69.20408@eso.org>
Date: Mon, 14 Jul 2008 18:18:49 +0200
From: Bruno Rino <brino@eso.org>
User-Agent: Thunderbird 2.0.0.14 (Windows/20080421)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: chmod 600 equivalent for MS Windows
References: <Pine.LNX.4.63.0807141609150.17488@andromeda.star.bris.ac.uk>
	<487B6F06.4050600@eso.org>
In-Reply-To: <487B6F06.4050600@eso.org>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

hum... maybe I should read my mails better.

What you're looking for should this command:
CACLS filename /G %USERNAME%:F

Note that this kind of permissions can only be set on NTFS (i.e. it 
cannot be set on FAT filesystems).

Cheers,
Bruno


On 14/07/2008 17:21, Bruno Rino wrote:
> on a windows command prompt,
>
> attrib -R filename
>
> does the trick
>
> Cheers,
> Bruno
>
> On 14/07/2008 17:18, Mark Taylor wrote:
>> If there's anyone out there who knows about Microsoft Windows,
>>
>> (I'm hoping Luigi might, since he was able to answer about 
>> %USERPROFILE%)
>>
>> I'm writing Java code which should ensure that the .samp lockfile
>> cannot be read by anyone other than the owner of that file.
>> Although there is a method
>>
>>    java.io.File.setReadable()
>>
>> in Java which can do the trick, it is only available from Java 1.6,
>> and I'd like to provide a fallback for earlier JVMs.
>>
>> On Un*x I can call out to the OS and invoke a command like:
>>
>>    Runtime.exec( new String[] { "chmod", "600", filename } );
>>
>> Does anybody know if this is possible for some/any/all versions of
>> MS Windows, and if so, how I should phrase the command?
>>
>> thanks
>>
>> Mark
>>
>
>

From apps-bounces@ivoa.net  Thu Jul 31 15:28:08 2008
Return-Path: <apps-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 06FC0624228;
	Thu, 31 Jul 2008 15:28:08 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6VDSBq1015214;
	Thu, 31 Jul 2008 15:28:11 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id B6B1FECA369;
	Thu, 31 Jul 2008 15:28:11 +0200 (CEST)
X-Original-To: apps@pat.hq.eso.org
Delivered-To: apps@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 0C12FEC8113;
	Thu, 31 Jul 2008 15:28:10 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6VDS98J015211;
	Thu, 31 Jul 2008 15:28:09 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.31,286,1215381600"; 
   d="scan'208";a="9428388"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 31 Jul 2008 15:25:56 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KOYCP-0000Kh-00; Thu, 31 Jul 2008 14:28:09 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KOYCO-00040O-MY; Thu, 31 Jul 2008 14:28:08 +0100
Date: Thu, 31 Jul 2008 14:28:08 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net, IVOA Applications WG <apps@ivoa.net>
Subject: JSAMP v0.1
Message-ID: <Pine.LNX.4.63.0807311419260.15357@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Applications Working Group - IVOA <apps.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps@ivoa.net>
List-Help: <mailto:apps-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps>,
	<mailto:apps-request@ivoa.net?subject=subscribe>
Errors-To: apps-bounces@ivoa.net

Dear SAMPers,

This is to announce the initial public relase of JSAMP, a Java toolkit
for Simple Applications Messaging Protocol.  It contains classes 
which Java application developers can use to SAMPify their applications, 
a hub implementation suitable for standalone or embedded use, and a 
hub test suite, which I hope the authors of other hub implementations 
will use to check their hubs.  It also contains some diagnostic tools 
such as a graphical hub monitor which will probably be of use 
to anyone working with SAMP, even in languages other than Java.

I believe the toolkit to be reasonably complete, robust and and 
well-documented (but tell me if you find different!)

See

    http://deployer.astrogrid.org/software/jsamp/index.html

for documentation and downloads.  Any feedback is welcome.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Thu Jul 31 15:28:08 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 53EB96242C0;
	Thu, 31 Jul 2008 15:28:08 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6VDSC6E015217;
	Thu, 31 Jul 2008 15:28:12 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id EECFBECA3CF;
	Thu, 31 Jul 2008 15:28:11 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 0C12FEC8113;
	Thu, 31 Jul 2008 15:28:10 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m6VDS98J015211;
	Thu, 31 Jul 2008 15:28:09 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.31,286,1215381600"; 
   d="scan'208";a="9428388"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 31 Jul 2008 15:25:56 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KOYCP-0000Kh-00; Thu, 31 Jul 2008 14:28:09 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KOYCO-00040O-MY; Thu, 31 Jul 2008 14:28:08 +0100
Date: Thu, 31 Jul 2008 14:28:08 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net, IVOA Applications WG <apps@ivoa.net>
Subject: JSAMP v0.1
Message-ID: <Pine.LNX.4.63.0807311419260.15357@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Dear SAMPers,

This is to announce the initial public relase of JSAMP, a Java toolkit
for Simple Applications Messaging Protocol.  It contains classes 
which Java application developers can use to SAMPify their applications, 
a hub implementation suitable for standalone or embedded use, and a 
hub test suite, which I hope the authors of other hub implementations 
will use to check their hubs.  It also contains some diagnostic tools 
such as a graphical hub monitor which will probably be of use 
to anyone working with SAMP, even in languages other than Java.

I believe the toolkit to be reasonably complete, robust and and 
well-documented (but tell me if you find different!)

See

    http://deployer.astrogrid.org/software/jsamp/index.html

for documentation and downloads.  Any feedback is welcome.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Fri Aug  1 12:02:40 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 7A31662418B;
	Fri,  1 Aug 2008 12:02:40 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71A2huO010656;
	Fri, 1 Aug 2008 12:02:43 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 3D20AEC8141;
	Fri,  1 Aug 2008 12:02:43 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id C3EF3EC8129
	for <apps-samp@pat.hq.eso.org>; Fri,  1 Aug 2008 12:02:41 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71A2fOh010648
	for <apps-samp@ivoa.net>; Fri, 1 Aug 2008 12:02:41 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.31,292,1215381600"; 
   d="scan'208";a="9445750"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 01 Aug 2008 12:00:19 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KOrT0-0002Qd-00
	for apps-samp@ivoa.net; Fri, 01 Aug 2008 11:02:34 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KOrSy-00087M-JV
	for apps-samp@ivoa.net; Fri, 01 Aug 2008 11:02:32 +0100
Date: Fri, 1 Aug 2008 11:02:32 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: String character range
Message-ID: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Hallo all.

while writing the hub tests, I have come across a problem with the
definition of the SAMP string data type.  Section 3.3 of the SAMP
doc defines a string as:

     "a scalar value consisting of a sequence of characters;
      each character may be in the range 0x01-0x7f"

Section 2.2 of the XML specification meanwhile 
(http://www.w3.org/TR/2006/REC-xml-20060816/#charsets) has the following
BNF production for characters allowed in an XML document:

    [2] Char  ::=  #x9 | #xA | #xD | [#x20-#xD7FF]
                 | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

                            /* any Unicode character, excluding the
                               surrogate blocks, FFFE, and FFFF. */

(I do not understand the comment here - as far as I can see Unicode
does include the other control characters in the range #x0-#x1f.
Oh well).

What this means is that there are legal SAMP strings (ones containing
any character in the ranges 0x01-0x08, 0x0B, 0x0C, 0x0E-0x1F) which
cannot be transmitted as an XML-RPC <string> element.  This means
that either the definition of a SAMP string, or the prescription for
transmitting SAMP strings in XML-RPC messages in the Standard Profile,
must be modified to avoid inconsistency.

I think the possibilities are as follows:

    1. Encode all SAMP strings as <base64> elements when transmitting
       over XML-RPC.

    2. Allow SAMP strings to be transmitted as either <string> or
       <base64> elements when transmitting over XML-RPC (the latter
       case being required only if the string contains un-XML
       characters).

    3. Define some escaping convention for un-XML characters, e.g.
       \u001f for character 31.

    4. Change the SAMP string definition so that only XML-friendly
       characters are allowed.

Both (1) and (2) would entail significant extra complication 
(base64 decoding required) for Standard Profile clients, and (2) would 
additionally make debugging harder (it's nice that you can see what's 
in a SAMP/XML-RPC message just by looking).  (3) would make life a bit 
more complicated than now for clients, but not that much.  The existing
legal range 0x01-0x7f for SAMP string characters was in any case just 
intended to be a range of characters which would be sufficient for 
'normal' strings, while excluding non-printable ones (i.e. ones which 
would likely cause problems for some transport types), and it looks 
like I decided on a range that was too wide for that purpose.

So I suggest that we do (4).  I think we do need at least one line-break
character, though the need for both 0xA and 0x0D may be moot, as is the
need for 0x09 (tab).  So I suggest that we change the definition of
a SAMP string in sec 3.3 to one of:

   4a. "a scalar value consisting of a sequence of characters;
        each character may be in the range 0x20-0x7f or one of
        the special characters 0x09 (tab), 0x0A (line feed) or
        0x0d (carriage return)"

or

   4b. "a scalar value consisting of a sequence of characters;
        each character may be in the range 0x20-0x7f or the
        line break character 0x0a"

(4b) might be more rigorous since it obviates the possibility of 
confusion when transforming between OSs (Windows and *nix), but
since SAMP usage will probably mostly be intra-OS this might cause
more trouble than it's worth - also, I bet that Windows-based 
implementations would routinely violate this in any case
(see Goldfarb's First Law of Text Processing) so probably 4a is
better.

Comments/agreements/disagreements?

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Fri Aug  1 16:00:30 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2A7556241A6;
	Fri,  1 Aug 2008 16:00:30 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71E0YwA003662;
	Fri, 1 Aug 2008 16:00:34 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id F116CECA35D;
	Fri,  1 Aug 2008 16:00:33 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 3B0DAECA341
	for <apps-samp@pat.hq.eso.org>; Fri,  1 Aug 2008 16:00:33 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71E0XC5003659
	for <apps-samp@ivoa.net>; Fri, 1 Aug 2008 16:00:33 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Ah8FAL+zkkiSWAEPYWdsb2JhbACLIIZ1FwUIBBSeVA
X-IronPort-AV: E=Sophos;i="4.31,293,1215381600"; 
   d="scan'208";a="9450395"
Received: from revere.aoc.nrao.edu ([146.88.1.15])
	by clavius.hq.eso.org with ESMTP; 01 Aug 2008 15:58:15 +0200
X-NRAO-Sekrit: 3C273
Received: from gygax.aoc.nrao.edu (gygax.aoc.nrao.edu [146.88.1.42])
	by revere.aoc.nrao.edu (8.13.1/8.13.1/cv-ws-8.12) with ESMTP id
	m71Dx6DL025011; Fri, 1 Aug 2008 07:59:06 -0600
Received: from localhost (localhost [[UNIX: localhost]])
	by gygax.aoc.nrao.edu (8.13.8/8.13.8/Submit) id m71Dx5l4018934;
	Fri, 1 Aug 2008 07:59:05 -0600
Date: Fri, 1 Aug 2008 07:58:53 -0600 (MDT)
From: Doug Tody <dtody@nrao.edu>
X-X-Sender: dtody@localhost.localdomain
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-MailScanner-Information: Please contact the postmaster@aoc.nrao.edu for more
	information
X-MailScanner-ID: m71Dx6DL025011
X-MailScanner: Found to be clean
X-MailScanner-SpamCheck: not spam, SpamAssassin (not cached, score=-100,
	required 5, autolearn=disabled, NRAO_HEADER_PRESENT -100.00)
X-MailScanner-From: dtody@aoc.nrao.edu
X-Spam-Status: No
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Fri, 1 Aug 2008, Mark Taylor wrote:
> What this means is that there are legal SAMP strings (ones containing
> any character in the ranges 0x01-0x08, 0x0B, 0x0C, 0x0E-0x1F) which
> cannot be transmitted as an XML-RPC <string> element.  This means
> that either the definition of a SAMP string, or the prescription for
> transmitting SAMP strings in XML-RPC messages in the Standard Profile,
> must be modified to avoid inconsistency.
> 
> I think the possibilities are as follows:
> 
>    1. Encode all SAMP strings as <base64> elements when transmitting
>       over XML-RPC.
> 
>    2. Allow SAMP strings to be transmitted as either <string> or
>       <base64> elements when transmitting over XML-RPC (the latter
>       case being required only if the string contains un-XML
>       characters).
> 
>    3. Define some escaping convention for un-XML characters, e.g.
>       \u001f for character 31.
> 
>    4. Change the SAMP string definition so that only XML-friendly
>       characters are allowed.

Why not just enclose character data in CDATA sections when they pass
through XML?  This is the mechanism XML provides for pass through
of arbitrary data (also encoding individual chars such as &lt;).

If message content is separated from transport encoding, this sort of
thing would happen automatically at the encode/decode level.  If the
transport is XML and one uses the XML mechanisms and an XML library,
this might happen automatically in any case.

	- Doug

From apps-samp-bounces@ivoa.net  Fri Aug  1 16:18:29 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id BFDE26241A6;
	Fri,  1 Aug 2008 16:18:29 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71EIX8u005640;
	Fri, 1 Aug 2008 16:18:33 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id B8160ECA35D;
	Fri,  1 Aug 2008 16:18:33 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 96D30EC8126
	for <apps-samp@pat.hq.eso.org>; Fri,  1 Aug 2008 16:18:32 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71EIWR3005634
	for <apps-samp@ivoa.net>; Fri, 1 Aug 2008 16:18:32 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.31,293,1215381600"; 
   d="scan'208";a="9450774"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 01 Aug 2008 16:16:16 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KOvSR-0002tL-00; Fri, 01 Aug 2008 15:18:15 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KOvSN-00009k-Pj; Fri, 01 Aug 2008 15:18:11 +0100
Date: Fri, 1 Aug 2008 15:18:11 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Doug Tody <dtody@nrao.edu>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
Message-ID: <Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Fri, 1 Aug 2008, Doug Tody wrote:

> Why not just enclose character data in CDATA sections when they pass
> through XML?  This is the mechanism XML provides for pass through
> of arbitrary data (also encoding individual chars such as &lt;).

That's what I thought at first, but the characters with Unicode code 
points 0x01-0x08, 0x0B, 0x0C, 0x0E-0x1F are not permitted *at all* 
in an XML document.  CDATA sections provide for escaping characters 
such as '<' and '&' which might be interpreted as XML markup, but 
that is not the problem here.  See productions [18] - [21] in the 
XML spec (http://www.w3.org/TR/2006/REC-xml-20060816/ sec 2.7).

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Fri Aug  1 16:33:16 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id DFD77624228;
	Fri,  1 Aug 2008 16:33:15 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71EXKLl007361;
	Fri, 1 Aug 2008 16:33:20 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id EA157ECA35D;
	Fri,  1 Aug 2008 16:33:19 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 6C64AEC8123
	for <apps-samp@pat.hq.eso.org>; Fri,  1 Aug 2008 16:33:18 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71EXIeD007348
	for <apps-samp@ivoa.net>; Fri, 1 Aug 2008 16:33:18 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Ah8FAPS7kkiSWAEPYWdsb2JhbACLIIZ1FwUIBBSeNQ
X-IronPort-AV: E=Sophos;i="4.31,293,1215381600"; 
   d="scan'208";a="9451060"
Received: from revere.aoc.nrao.edu ([146.88.1.15])
	by clavius.hq.eso.org with ESMTP; 01 Aug 2008 16:31:00 +0200
X-NRAO-Sekrit: 3C273
Received: from gygax.aoc.nrao.edu (gygax.aoc.nrao.edu [146.88.1.42])
	by revere.aoc.nrao.edu (8.13.1/8.13.1/cv-ws-8.12) with ESMTP id
	m71EWAEv004898; Fri, 1 Aug 2008 08:32:10 -0600
Received: from localhost (localhost [[UNIX: localhost]])
	by gygax.aoc.nrao.edu (8.13.8/8.13.8/Submit) id m71EWAZB019654;
	Fri, 1 Aug 2008 08:32:10 -0600
Date: Fri, 1 Aug 2008 08:32:04 -0600 (MDT)
From: Doug Tody <dtody@nrao.edu>
X-X-Sender: dtody@localhost.localdomain
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.64.0808010826290.29047@localhost.localdomain>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-MailScanner-Information: Please contact the postmaster@aoc.nrao.edu for more
	information
X-MailScanner-ID: m71EWAEv004898
X-MailScanner: Found to be clean
X-MailScanner-SpamCheck: not spam, SpamAssassin (not cached, score=-100,
	required 5, autolearn=disabled, NRAO_HEADER_PRESENT -100.00)
X-MailScanner-From: dtody@aoc.nrao.edu
X-Spam-Status: No
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Right.  Probably what is allowable in string data should be restricted
as you suggest.  Other byte data is binary data (although it may
contain printable characters) and would want to be hex encoded or
whatever to be transmitted as text.  In any case you may still need
to process character data further for an XML (or other) transport,
even if character data is in the range allowable for strings.


On Fri, 1 Aug 2008, Mark Taylor wrote:

> On Fri, 1 Aug 2008, Doug Tody wrote:
> 
> > Why not just enclose character data in CDATA sections when they pass
> > through XML?  This is the mechanism XML provides for pass through
> > of arbitrary data (also encoding individual chars such as &lt;).
> 
> That's what I thought at first, but the characters with Unicode code points
> 0x01-0x08, 0x0B, 0x0C, 0x0E-0x1F are not permitted *at all* in an XML
> document.  CDATA sections provide for escaping characters such as '<' and '&'
> which might be interpreted as XML markup, but that is not the problem here.
> See productions [18] - [21] in the XML spec
> (http://www.w3.org/TR/2006/REC-xml-20060816/ sec 2.7).
> 
> 

From apps-samp-bounces@ivoa.net  Fri Aug  1 16:33:43 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 23FED6241A6;
	Fri,  1 Aug 2008 16:33:43 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71EXlKt007457;
	Fri, 1 Aug 2008 16:33:47 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 3ACBFECA3B6;
	Fri,  1 Aug 2008 16:33:47 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 0A823ECA35D
	for <apps-samp@pat.hq.eso.org>; Fri,  1 Aug 2008 16:33:46 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71EXj2h007442
	for <apps-samp@ivoa.net>; Fri, 1 Aug 2008 16:33:45 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApsEAPS7kkjBkoYU/2dsb2JhbACLIKVm
X-IronPort-AV: E=Sophos;i="4.31,293,1215381600"; 
   d="scan'208";a="9451068"
Received: from sagan.laeff.inta.es ([193.146.134.20])
	by clavius.hq.eso.org with ESMTP; 01 Aug 2008 16:31:29 +0200
Received: from tomonaga.laeff.inta.es (tomonaga.laeff.inta.es [192.168.130.15])
	by sagan.laeff.inta.es (8.14.0/8.14.0) with ESMTP id m71EXcrX014958;
	Fri, 1 Aug 2008 16:33:38 +0200 (CEST)
Received: from hypatia.laeff.inta.es (hypatia.laeff.inta.es [192.168.130.154])
	by tomonaga.laeff.inta.es (8.14.0/8.14.0) with ESMTP id
	m71EXcnp011141; Fri, 1 Aug 2008 16:33:38 +0200 (CEST)
Date: Fri, 1 Aug 2008 16:33:38 +0200 (CEST)
From: Carlos Rodrigo Blanco <crb@laeff.inta.es>
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED;
	BOUNDARY="-1463772542-1007196003-1217601218=:24732"
X-SMTP-Vilter-Version: 1.3.6
X-Spamd-Symbols: ALL_TRUSTED
X-SMTP-Vilter-Spam-Backend: spamd
X-Spam-Score: -1.4
X-Spam-Threshold: 5.0
X-Spam-Probability: -0.3
X-Its-A-Nuisance: This is spam
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---1463772542-1007196003-1217601218=:24732
Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8BIT

Hi

I'm sorry that I don't know much about unicode encoding and 
I feel quite ashamed of showing this ignorance, but I wonder 
what happens with latin characters and so.

If I have to write, for instance, some author name in a xml 
document that includes some latin character (like ñ), is 
that allowed?

Carlos

> On Fri, 1 Aug 2008, Doug Tody wrote:
>
>> Why not just enclose character data in CDATA sections when they pass
>> through XML?  This is the mechanism XML provides for pass through
>> of arbitrary data (also encoding individual chars such as &lt;).
>
> That's what I thought at first, but the characters with Unicode code points 
> 0x01-0x08, 0x0B, 0x0C, 0x0E-0x1F are not permitted *at all* in an XML 
> document.  CDATA sections provide for escaping characters such as '<' and '&' 
> which might be interpreted as XML markup, but that is not the problem here. 
> See productions [18] - [21] in the XML spec 
> (http://www.w3.org/TR/2006/REC-xml-20060816/ sec 2.7).
>
>
---1463772542-1007196003-1217601218=:24732--

From apps-samp-bounces@ivoa.net  Fri Aug  1 16:46:24 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2A2086241A6;
	Fri,  1 Aug 2008 16:46:24 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71EkSFu009109;
	Fri, 1 Aug 2008 16:46:28 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 49AFDEC8141;
	Fri,  1 Aug 2008 16:46:28 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 05958EC8136
	for <apps-samp@pat.hq.eso.org>; Fri,  1 Aug 2008 16:46:27 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71EkQID009104
	for <apps-samp@ivoa.net>; Fri, 1 Aug 2008 16:46:26 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.31,293,1215381600"; 
   d="scan'208";a="9451285"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 01 Aug 2008 16:44:10 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KOvta-0002wi-00; Fri, 01 Aug 2008 15:46:18 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KOvtZ-0000DC-L8; Fri, 01 Aug 2008 15:46:17 +0100
Date: Fri, 1 Aug 2008 15:46:17 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Doug Tody <dtody@nrao.edu>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.64.0808010826290.29047@localhost.localdomain>
Message-ID: <Pine.LNX.4.63.0808011541380.731@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010826290.29047@localhost.localdomain>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Fri, 1 Aug 2008, Doug Tody wrote:

> whatever to be transmitted as text.  In any case you may still need
> to process character data further for an XML (or other) transport,
> even if character data is in the range allowable for strings.

if you mean escaping markup (in XML using CDATA sections or entity 
references, or similar for other transports) - sure.  And as you say, 
that is the sort of thing which will ought normally to be handled 
by library code at some level, and does not require specific 
discussion in the standard.

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Fri Aug  1 17:15:30 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 628786241A6;
	Fri,  1 Aug 2008 17:15:30 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71FFYJ1012177;
	Fri, 1 Aug 2008 17:15:34 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 8B5DDEC8141;
	Fri,  1 Aug 2008 17:15:34 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 0E12BEC8136
	for <apps-samp@pat.hq.eso.org>; Fri,  1 Aug 2008 17:15:33 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71FFWT5012171
	for <apps-samp@ivoa.net>; Fri, 1 Aug 2008 17:15:32 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.31,293,1215381600"; 
   d="scan'208";a="9451748"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 01 Aug 2008 17:13:16 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KOwLi-000300-00; Fri, 01 Aug 2008 16:15:22 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KOwLh-0000LK-Dy; Fri, 01 Aug 2008 16:15:21 +0100
Date: Fri, 1 Aug 2008 16:15:21 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Carlos Rodrigo Blanco <crb@laeff.inta.es>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
Message-ID: <Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-561407174-1546374430-1217603721=:731"
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

---561407174-1546374430-1217603721=:731
Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: QUOTED-PRINTABLE

On Fri, 1 Aug 2008, Carlos Rodrigo Blanco wrote:

> Hi
>
> I'm sorry that I don't know much about unicode encoding and I feel quite=
=20
> ashamed of showing this ignorance, but I wonder what happens with latin=
=20
> characters and so.
>
> If I have to write, for instance, some author name in a xml document that=
=20
> includes some latin character (like =F1), is that allowed?

Writing it in an XML document - no problem.  XML, and Unicode on which
it is based, is very capable at representing almost any character
from almost any language you can think of (and a lot more).

As far as SAMP goes: that character looks to me like code point 0xf1,=20
from the Latin-1 Supplement code block.  So you could not send it=20
using either the existing definition for a SAMP string or the=20
proposal (4) that I am suggesting.  If we used a variant of my=20
suggestion (3):

   3. Define some escaping convention for un-XML characters, e.g. \u001f
      for character 31.

with the intention that this escaping mechanism could be used for
any 8-bit character it would be possible to transmit this kind of=20
non-7-bit Latin character.  However, characters with the 8th bit=20
set might cause problems for certain other transports and language=20
environments.  I must admit apart from RFC-822 mail-type contexts=20
I can't think of what these might be, but I'd be inclined to steer=20
clear of non-7-bit characters just in case.  However, if others=20
(e.g. with less Anglo-Saxon prejudices) think that it's an important=20
requirement to permit transmission of characters like this within
SAMP we could take that on board.  We could even in principle say=20
that this escaping mechanism could be used to specify any Unicode=20
character - but I think that would definitely be a bad idea as it=20
would effectively restrict use of the protocol to languages with=20
Unicode support, which excludes quite a lot.

Mark

--=20
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
---561407174-1546374430-1217603721=:731--

From apps-samp-bounces@ivoa.net  Fri Aug  1 18:26:06 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 2B6086241A6;
	Fri,  1 Aug 2008 18:26:06 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71GQAIn019083;
	Fri, 1 Aug 2008 18:26:10 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 9CC27ECA350;
	Fri,  1 Aug 2008 18:26:10 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id B7D8EEC8143
	for <apps-samp@pat.hq.eso.org>; Fri,  1 Aug 2008 18:26:09 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71GQ9EG019080
	for <apps-samp@ivoa.net>; Fri, 1 Aug 2008 18:26:09 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: ApsEALzVkkib/RCV/2dsb2JhbACLIKUw
X-IronPort-AV: E=Sophos;i="4.31,294,1215381600"; 
   d="scan'208";a="9455525"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 01 Aug 2008 18:23:52 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m71GPi3d023369; Fri, 1 Aug 2008 18:25:49 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m71GPaCI008353; Fri, 1 Aug 2008 18:25:41 +0200
Message-ID: <48933900.4070202@lambrate.inaf.it>
Date: Fri, 01 Aug 2008 18:25:36 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.16 (X11/20080707)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: String character range
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: SAMP Working Group <apps-samp@ivoa.net>
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Hi.

I find that your suggestion below is a good compromise. I would split it 
in two points:

1. At SAMP protocol definition level we might define that "string" can 
accept any sequence of 0X01-0x7f characters adding the escape convention 
for any printable Unicode char out of the specified range (so it is 
general).

2. At Standard Profile level I would put more constraints, limiting the 
charset to the XML range and introducing the escape convention for the 
other unsupported chars.

Is it reasonable?

Luigi


> As far as SAMP goes: that character looks to me like code point 0xf1, 
> from the Latin-1 Supplement code block.  So you could not send it using 
> either the existing definition for a SAMP string or the proposal (4) 
> that I am suggesting.  If we used a variant of my suggestion (3):
> 
>   3. Define some escaping convention for un-XML characters, e.g. \u001f
>      for character 31.
> 
> with the intention that this escaping mechanism could be used for
> any 8-bit character it would be possible to transmit this kind of 
> non-7-bit Latin character.  However, characters with the 8th bit set 
> might cause problems for certain other transports and language 
> environments.  I must admit apart from RFC-822 mail-type contexts I 
> can't think of what these might be, but I'd be inclined to steer clear 
> of non-7-bit characters just in case.  However, if others (e.g. with 
> less Anglo-Saxon prejudices) think that it's an important requirement to 
> permit transmission of characters like this within
> SAMP we could take that on board.  We could even in principle say that 
> this escaping mechanism could be used to specify any Unicode character - 
> but I think that would definitely be a bad idea as it would effectively 
> restrict use of the protocol to languages with Unicode support, which 
> excludes quite a lot.
> 
> Mark

From apps-samp-bounces@ivoa.net  Fri Aug  1 22:54:56 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 714CB6241A6;
	Fri,  1 Aug 2008 22:54:56 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71Kt2QH014035;
	Fri, 1 Aug 2008 22:55:02 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 57FC0ECA3D8;
	Fri,  1 Aug 2008 22:55:02 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 2F026ECA34A
	for <apps-samp@pat.hq.eso.org>; Fri,  1 Aug 2008 22:55:01 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m71Kt0hv014016
	for <apps-samp@ivoa.net>; Fri, 1 Aug 2008 22:55:01 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: Ah8FAAQVk0iSWAEPYWdsb2JhbACLH4Z1FwUIBBSddg
X-IronPort-AV: E=Sophos;i="4.31,295,1215381600"; 
   d="scan'208";a="9460768"
Received: from revere.aoc.nrao.edu ([146.88.1.15])
	by clavius.hq.eso.org with ESMTP; 01 Aug 2008 22:52:42 +0200
X-NRAO-Sekrit: 3C273
Received: from dropbox.aoc.nrao.edu (dropbox.aoc.nrao.edu [146.88.1.13])
	by revere.aoc.nrao.edu (8.13.1/8.13.1/cv-ws-8.12) with ESMTP id
	m71Kr6v8007077; Fri, 1 Aug 2008 14:53:07 -0600
Received: from oak.aoc.nrao.edu (oak.aoc.nrao.edu [146.88.3.215])
	by dropbox.aoc.nrao.edu (8.13.1/8.13.1/smtp-gateway) with ESMTP id
	m71Kr6w8019858; Fri, 1 Aug 2008 14:53:06 -0600
Date: Fri, 1 Aug 2008 14:53:06 -0600 (MDT)
From: Doug Tody <dtody@nrao.edu>
X-X-Sender: dtody@oak
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.64.0808011435250.20102@oak>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1192509072-1217623986=:20102"
X-MailScanner-Information: Please contact the postmaster@aoc.nrao.edu for more
	information
X-MailScanner-ID: m71Kr6v8007077
X-MailScanner: Found to be clean
X-MailScanner-SpamCheck: not spam, SpamAssassin (not cached, score=-100,
	required 5, autolearn=disabled, NRAO_HEADER_PRESENT -100.00)
X-MailScanner-From: dtody@nrao.edu
X-Spam-Status: No
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323328-1192509072-1217623986=:20102
Content-Type: TEXT/PLAIN; charset=X-UNKNOWN
Content-Transfer-Encoding: QUOTED-PRINTABLE

Hey Mark -

I agree with your sentiment that string data which we want to
manipulate in any language or environment should be simple; if
necessary a separate datatype could be declared for representing
e.g. general Unicode encoded text.

What about UTF-8 though?  This is backwards compatible with ASCII
but allows any Unicode character to be represented using multi-byte
sequences - if there are no funny characters it is the same as ASCII.
This is much like your escape sequence proposal, but is a widely used
standard.  XML has mandatory support for UTF-8 (almost any XML document
one sees is UTF-8 encoded) so there should be no problems there.

I suspect that if some old ASCII-oriented code got a UTF-8 encoded
string containing multi-byte Unicode characters it would print these
oddly, however it would probably still work (things like the null
test for end of string etc. still work normally for UTF-8).  There
would be no problem for the usual case of simple ASCII text.

=09- Doug


On Fri, 1 Aug 2008, Mark Taylor wrote:

> On Fri, 1 Aug 2008, Carlos Rodrigo Blanco wrote:
>=20
> > Hi
> >=20
> > I'm sorry that I don't know much about unicode encoding and I feel quit=
e
> > ashamed of showing this ignorance, but I wonder what happens with latin
> > characters and so.
> >=20
> > If I have to write, for instance, some author name in a xml document th=
at
> > includes some latin character (like =F1), is that allowed?
>=20
> Writing it in an XML document - no problem.  XML, and Unicode on which
> it is based, is very capable at representing almost any character
> from almost any language you can think of (and a lot more).
>=20
> As far as SAMP goes: that character looks to me like code point 0xf1, fro=
m the
> Latin-1 Supplement code block.  So you could not send it using either the
> existing definition for a SAMP string or the proposal (4) that I am
> suggesting.  If we used a variant of my suggestion (3):
>=20
>   3. Define some escaping convention for un-XML characters, e.g. \u001f
>      for character 31.
>=20
> with the intention that this escaping mechanism could be used for
> any 8-bit character it would be possible to transmit this kind of non-7-b=
it
> Latin character.  However, characters with the 8th bit set might cause
> problems for certain other transports and language environments.  I must =
admit
> apart from RFC-822 mail-type contexts I can't think of what these might b=
e,
> but I'd be inclined to steer clear of non-7-bit characters just in case.
> However, if others (e.g. with less Anglo-Saxon prejudices) think that it'=
s an
> important requirement to permit transmission of characters like this with=
in
> SAMP we could take that on board.  We could even in principle say that th=
is
> escaping mechanism could be used to specify any Unicode character - but I
> think that would definitely be a bad idea as it would effectively restric=
t use
> of the protocol to languages with Unicode support, which excludes quite a=
 lot.
>=20
> Mark
>=20
> --=20
> Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
> m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
--8323328-1192509072-1217623986=:20102--

From apps-samp-bounces@ivoa.net  Mon Aug  4 09:59:36 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id F34C1624228;
	Mon,  4 Aug 2008 09:59:35 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m747xcJl005358;
	Mon, 4 Aug 2008 09:59:38 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 1FF3CECA34A;
	Mon,  4 Aug 2008 09:59:38 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id D71FFEC8143
	for <apps-samp@pat.hq.eso.org>; Mon,  4 Aug 2008 09:59:36 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m747xahC005352
	for <apps-samp@ivoa.net>; Mon, 4 Aug 2008 09:59:36 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.31,303,1215381600"; 
   d="scan'208";a="9511261"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 04 Aug 2008 09:57:11 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KPuyK-0006T7-00; Mon, 04 Aug 2008 08:59:16 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KPuyJ-0003XV-GG; Mon, 04 Aug 2008 08:59:15 +0100
Date: Mon, 4 Aug 2008 08:59:15 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Doug Tody <dtody@nrao.edu>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.64.0808011435250.20102@oak>
Message-ID: <Pine.LNX.4.63.0808040836270.13515@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011435250.20102@oak>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Fri, 1 Aug 2008, Doug Tody wrote:

> Hey Mark -
>
> I agree with your sentiment that string data which we want to
> manipulate in any language or environment should be simple; if
> necessary a separate datatype could be declared for representing
> e.g. general Unicode encoded text.
>
> What about UTF-8 though?  This is backwards compatible with ASCII
> but allows any Unicode character to be represented using multi-byte
> sequences - if there are no funny characters it is the same as ASCII.
> This is much like your escape sequence proposal, but is a widely used
> standard.  XML has mandatory support for UTF-8 (almost any XML document
> one sees is UTF-8 encoded) so there should be no problems there.

Hi Doug,

you're right, UTF-8 does look like a better solution than the \uxxxx
escaping mechanism (borrowed from Java) that I suggested as far as 
transmitting things like accented letters and characters from non-Latin 
alphabets.  However, it doesn't solve the problem which started this
thread off, since you still won't be able to include characters in
the ranges excluded by the XML Char definition; those are simply 
not permitted in an XML document, regardless of encoding (and in any
case the UTF-8 encoding of 0x1f is the single byte 0x1f).

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Mon Aug  4 12:09:19 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 44A2E624228;
	Mon,  4 Aug 2008 12:09:19 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m74A9MiI017114;
	Mon, 4 Aug 2008 12:09:22 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 07561ECA353;
	Mon,  4 Aug 2008 12:09:22 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 4C0C6EC8112
	for <apps-samp@pat.hq.eso.org>; Mon,  4 Aug 2008 12:09:20 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m74A9KvE017104
	for <apps-samp@ivoa.net>; Mon, 4 Aug 2008 12:09:20 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.31,304,1215381600"; 
   d="scan'208";a="9513157"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 04 Aug 2008 12:06:54 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1) id 1KPx09-0006lh-00
	for apps-samp@ivoa.net; Mon, 04 Aug 2008 11:09:17 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KPx08-0003kc-VA
	for apps-samp@ivoa.net; Mon, 04 Aug 2008 11:09:16 +0100
Date: Mon, 4 Aug 2008 11:09:16 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: apps-samp@ivoa.net
Subject: Re: String character range
In-Reply-To: <48933900.4070202@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0808040904340.13515@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
	<48933900.4070202@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

On Fri, 1 Aug 2008, Luigi Paioro wrote:

> Hi.
>
> I find that your suggestion below is a good compromise. I would split it in 
> two points:
>
> 1. At SAMP protocol definition level we might define that "string" can accept 
> any sequence of 0X01-0x7f characters adding the escape convention for any 
> printable Unicode char out of the specified range (so it is general).
>
> 2. At Standard Profile level I would put more constraints, limiting the 
> charset to the XML range and introducing the escape convention for the other 
> unsupported chars.
>
> Is it reasonable?

Luigi,

that is a reasonable way to go for permitting transmission of Unicode
characters.  However, any kind of escaping does introduce a fair 
amount of fiddly complication to handle all cases, both in the 
standard and at the client end.

In the standard we have to say exactly what counts as a unicode
escape, which characters it is permitted/required for, and make sure
that there is some mechanism for escaping the escape (so for 
instance if you want to send a string that looks like the ASCII
"\u001f" rather than the Unicode character at code point 0x1f,
there has to be a way of doing that which will not be misunderstood).

At the client end, for reading strings at least, implementors will have 
to make sure that they take account of all of these things in order
to decode a string acquired from the SAMP transport (XML-RPC in the 
case of the Standard Profile).  Not hard in Unicode-aware languages 
which use the same escaping mechanism as SAMP does for Unicode 
characters (Java, Python); not too hard in languages designed for
text manipulation (Perl); probably quite a drag in certain other
languages which do not fall into these categories (C, FORTRAN, IDL) -
I'd guess at least 10-20 lines of code just for string decoding
(though in many cases quite likely client implementations would
treat it as normal ASCII and work 99% of the time, behaving
incorrectly in mostly-not-very-catastrophic ways 1%).  Of course
the best that languages with no Unicode support can do in any case
if they encounter non-ASCII Unicode characters is probably to 
replace them with a "?" or something.

If we reckon that transmission of 
(a) control characters (everything between 0x01 and 0x1f) and
(b) non-7-bit-ASCII characters (Unicode beyond 0x7f)
is a requirement for what we're doing here, OK, let's draft a revised
definition of the SAMP string data type which is capable of doing 
all this and clients will have to do the extra work if they want 
to behave correctly.

My feeling is it would be better to restrict what can be sent in a
SAMP string to something that is going to be easy to implement in all 
sensible languages/transports (probably 0x09, 0x0a, 0x0d, 0x20-0x7f),
so that both the standard, and the requirements on clients, stay 
as simple as possible.  If specific requirements for sending full 
Unicode strings arise, we could mark these on a per-MType basis
and come up with a convention along the lines of the SAMP int and
SAMP float already defined in Section 3.4.

Which of these is best depends on how important the requirement to
be able to send Unicode and control characters is.  My vote is 
not very.  Can we have a show of hands?

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Mon Aug  4 13:13:05 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id BF877624228;
	Mon,  4 Aug 2008 13:13:04 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m74BD7EH022571;
	Mon, 4 Aug 2008 13:13:07 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id D2481ECA358;
	Mon,  4 Aug 2008 13:13:07 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 5EE79EC8143
	for <apps-samp@pat.hq.eso.org>; Mon,  4 Aug 2008 13:13:06 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m74BD6TT022559
	for <apps-samp@ivoa.net>; Mon, 4 Aug 2008 13:13:06 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.31,304,1215381600"; 
   d="scan'208";a="9514256"
Received: from mercury.ex.ac.uk ([144.173.6.26])
	by clavius.hq.eso.org with ESMTP; 04 Aug 2008 13:10:28 +0200
Received: from muttley.astro.ex.ac.uk ([144.173.229.16])
	by mercury.ex.ac.uk with esmtpsa (Exim 4.68/mail:587)
	id 1KPxzh-00060J-7Q; Mon, 04 Aug 2008 12:12:53 +0100
In-Reply-To: <Pine.LNX.4.63.0808040904340.13515@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
	<48933900.4070202@lambrate.inaf.it>
	<Pine.LNX.4.63.0808040904340.13515@andromeda.star.bris.ac.uk>
Mime-Version: 1.0 (Apple Message framework v753.1)
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed
Message-Id: <E52D7DC2-97B3-4DA9-A2D6-D48D2B7A74AF@astro.ex.ac.uk>
Content-Transfer-Encoding: 7bit
From: Alasdair Allan <aa@astro.ex.ac.uk>
Subject: Re: String character range
Date: Mon, 4 Aug 2008 12:12:37 +0100
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-Mailer: Apple Mail (2.753.1)
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net


Mark Taylor wrote:
> Not hard in Unicode-aware languages which use the same escaping  
> mechanism as SAMP does for Unicode characters (Java, Python); not  
> too hard in languages designed for text manipulation (Perl);

Actually Perl is Unicode native as well, has been since Perl 5.8, see

http://search.cpan.org/~jhi/perl-5.8.0/pod/perluniintro.pod

> Which of these is best depends on how important the requirement to  
> be able to send Unicode and control characters is.  My vote is not  
> very.  Can we have a show of hands?

Over SAMP? My vote is not very.

Al.

From apps-samp-bounces@ivoa.net  Mon Aug  4 16:29:28 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 50CA3624228;
	Mon,  4 Aug 2008 16:29:28 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m74ETW4U013024;
	Mon, 4 Aug 2008 16:29:32 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 3D676ECA362;
	Mon,  4 Aug 2008 16:29:32 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 99CC7ECA353
	for <apps-samp@pat.hq.eso.org>; Mon,  4 Aug 2008 16:29:30 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m74ETU7t013021
	for <apps-samp@ivoa.net>; Mon, 4 Aug 2008 16:29:30 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AtsKAEevlkib/RCV/2dsb2JhbACKaKRG
X-IronPort-AV: E=Sophos;i="4.31,304,1215381600"; 
   d="scan'208";a="9518292"
Received: from helios.lambrate.inaf.it ([155.253.16.149])
	by clavius.hq.eso.org with ESMTP; 04 Aug 2008 16:27:04 +0200
Received: from antigone.lambrate.inaf.it (antigone.lambrate.inaf.it
	[155.253.16.143])
	by helios.lambrate.inaf.it (8.13.1/8.13.1/SuSE Linux 0.7) with ESMTP id
	m74ET52W016207; Mon, 4 Aug 2008 16:29:10 +0200
Received: from [127.0.0.1] (localhost [127.0.0.1])
	by antigone.lambrate.inaf.it (8.13.8/8.13.4/SuSE Linux 0.7) with ESMTP
	id m74ESxgx005305; Mon, 4 Aug 2008 16:29:02 +0200
Message-ID: <4897122B.7040004@lambrate.inaf.it>
Date: Mon, 04 Aug 2008 16:28:59 +0200
From: Luigi Paioro <luigi@lambrate.inaf.it>
Organization: INAF - IASF Milano
User-Agent: Thunderbird 2.0.0.16 (X11/20080707)
MIME-Version: 1.0
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: String character range
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>	<48933900.4070202@lambrate.inaf.it>
	<Pine.LNX.4.63.0808040904340.13515@andromeda.star.bris.ac.uk>
In-Reply-To: <Pine.LNX.4.63.0808040904340.13515@andromeda.star.bris.ac.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new
Cc: SAMP Working Group <apps-samp@ivoa.net>
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Hi!

I think that Unicode chars would be rarely sent, and control chars never 
at all. Probably in the 99% of the cases ASCII charset with the 
limitations you indicated is enough, so I don't have a strong position 
respect the Unicode support.

Anyway I've thought to Dough's suggestion regarding UTF-8 and I've 
looked here and there for what string encoding mechanism adopt other RPC 
systems like ZeroC's Ice and DBus (I've also looked for CORBA encoding, 
but I didn't succeed). Well, DBus and Ice, either use UTF-8 (with no 
limitations). I've not looked at the other RPC systems (there are a 
plethora) but those are my favourite (along with XML-RPC and SOAP of 
course) and so I've looked there.

Now, suppose that in the far far future, a perverted guy decides to 
implement SAMP using a different profile, for instance using Ice as wire 
protocol (in principle it should be possible) instead of XML-RPC. It 
would be a shame if such an implementation inherited the limitations 
coming from the XML limits. In my opinion the limits should be put at 
implementation and language level, not at protocol level... it should be 
as general (and flexible) as possible.

So, why not follow Dough's suggestion and specify at SAMP protocol 
definition level that the strings serialization is in UTF-8 (in 
general), and specify at Standard Profile level that not all the UTF-8 
chars are allowed but only those supported by XML?


Luigi

> 
> My feeling is it would be better to restrict what can be sent in a
> SAMP string to something that is going to be easy to implement in all 
> sensible languages/transports (probably 0x09, 0x0a, 0x0d, 0x20-0x7f),
> so that both the standard, and the requirements on clients, stay as 
> simple as possible.  If specific requirements for sending full Unicode 
> strings arise, we could mark these on a per-MType basis
> and come up with a convention along the lines of the SAMP int and
> SAMP float already defined in Section 3.4.
> 
> Which of these is best depends on how important the requirement to
> be able to send Unicode and control characters is.  My vote is not 
> very.  Can we have a show of hands?
> 

From apps-samp-bounces@ivoa.net  Mon Aug  4 18:05:20 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id C30F3624228;
	Mon,  4 Aug 2008 18:05:20 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m74G5PNn023068;
	Mon, 4 Aug 2008 18:05:25 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 34438ECA379;
	Mon,  4 Aug 2008 18:05:25 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 6FE42ECA377
	for <apps-samp@pat.hq.eso.org>; Mon,  4 Aug 2008 18:05:24 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m74G5Os3023065
	for <apps-samp@ivoa.net>; Mon, 4 Aug 2008 18:05:24 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AokLAIzFlkiSWAEPWmdsb2JhbACKaIZMARYNBJ10
X-IronPort-AV: E=Sophos;i="4.31,305,1215381600"; 
   d="scan'208";a="9520304"
Received: from revere.aoc.nrao.edu ([146.88.1.15])
	by clavius.hq.eso.org with ESMTP; 04 Aug 2008 18:02:57 +0200
X-NRAO-Sekrit: 3C273
Received: from dropbox.aoc.nrao.edu (dropbox.aoc.nrao.edu [146.88.1.13])
	by revere.aoc.nrao.edu (8.13.1/8.13.1/cv-ws-8.12) with ESMTP id
	m74G49bs012323; Mon, 4 Aug 2008 10:04:09 -0600
Received: from oak.aoc.nrao.edu (oak.aoc.nrao.edu [146.88.3.215])
	by dropbox.aoc.nrao.edu (8.13.1/8.13.1/smtp-gateway) with ESMTP id
	m74G48lW031107; Mon, 4 Aug 2008 10:04:08 -0600
Date: Mon, 4 Aug 2008 10:04:08 -0600 (MDT)
From: Doug Tody <dtody@nrao.edu>
X-X-Sender: dtody@oak
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.63.0808040836270.13515@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.64.0808040957420.20102@oak>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011435250.20102@oak>
	<Pine.LNX.4.63.0808040836270.13515@andromeda.star.bris.ac.uk>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-MailScanner-Information: Please contact the postmaster@aoc.nrao.edu for more
	information
X-MailScanner-ID: m74G49bs012323
X-MailScanner: Found to be clean
X-MailScanner-SpamCheck: not spam, SpamAssassin (not cached, score=-100,
	required 5, autolearn=disabled, NRAO_HEADER_PRESENT -100.00)
X-MailScanner-From: dtody@nrao.edu
X-Spam-Status: No
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Hi Mark -

Sure, I agree that the range of allowable chars should be restricted
as you suggest.   My suggestion is to specify UTF-8, restricted as
has been discussed for 7-bit chars, but allowing UTF-8 encoded chars
to pass through.  That would seem to do it and we still have simple
ASCII virtually all of the time so I don't think this will break
legacy code.  If at some point full up unicode is needed (eg 16 bit
chars), that should be a different data type.

	- Doug


On Mon, 4 Aug 2008, Mark Taylor wrote:

> On Fri, 1 Aug 2008, Doug Tody wrote:
> 
> > Hey Mark -
> > 
> > I agree with your sentiment that string data which we want to
> > manipulate in any language or environment should be simple; if
> > necessary a separate datatype could be declared for representing
> > e.g. general Unicode encoded text.
> > 
> > What about UTF-8 though?  This is backwards compatible with ASCII
> > but allows any Unicode character to be represented using multi-byte
> > sequences - if there are no funny characters it is the same as ASCII.
> > This is much like your escape sequence proposal, but is a widely used
> > standard.  XML has mandatory support for UTF-8 (almost any XML document
> > one sees is UTF-8 encoded) so there should be no problems there.
> 
> Hi Doug,
> 
> you're right, UTF-8 does look like a better solution than the \uxxxx
> escaping mechanism (borrowed from Java) that I suggested as far as
> transmitting things like accented letters and characters from non-Latin
> alphabets.  However, it doesn't solve the problem which started this
> thread off, since you still won't be able to include characters in
> the ranges excluded by the XML Char definition; those are simply not permitted
> in an XML document, regardless of encoding (and in any
> case the UTF-8 encoding of 0x1f is the single byte 0x1f).
> 
> Mark
> 
> -- 
> Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
> m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
> 

From apps-samp-bounces@ivoa.net  Tue Aug 19 13:31:41 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 632E2624228;
	Tue, 19 Aug 2008 13:31:41 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m7JBVgtb012223;
	Tue, 19 Aug 2008 13:31:42 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 9DBF3ECA346;
	Tue, 19 Aug 2008 13:31:42 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 6B644ECA31E
	for <apps-samp@pat.hq.eso.org>; Tue, 19 Aug 2008 13:31:41 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m7JBVfn3012220
	for <apps-samp@ivoa.net>; Tue, 19 Aug 2008 13:31:41 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.32,235,1217800800"; 
   d="scan'208";a="9859788"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 19 Aug 2008 13:28:28 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KVPQR-0006mD-00; Tue, 19 Aug 2008 12:30:59 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KVPQQ-0005hX-Bo; Tue, 19 Aug 2008 12:30:58 +0100
Date: Tue, 19 Aug 2008 12:30:58 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Luigi Paioro <luigi@lambrate.inaf.it>
Subject: Re: String character range
In-Reply-To: <4897122B.7040004@lambrate.inaf.it>
Message-ID: <Pine.LNX.4.63.0808191208560.21798@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
	<48933900.4070202@lambrate.inaf.it>
	<Pine.LNX.4.63.0808040904340.13515@andromeda.star.bris.ac.uk>
	<4897122B.7040004@lambrate.inaf.it>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: SAMP Working Group <apps-samp@ivoa.net>
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Luigi, Doug and others,

sorry I've let this one go cold, I got sidetracked by something else.

On Mon, 4 Aug 2008, Luigi Paioro wrote:
> I think that Unicode chars would be rarely sent, and control chars never at 
> all. Probably in the 99% of the cases ASCII charset with the limitations you 
> indicated is enough, so I don't have a strong position respect the Unicode 
> support.
>
> Anyway I've thought to Dough's suggestion regarding UTF-8 and I've looked 
> here and there for what string encoding mechanism adopt other RPC systems 
> like ZeroC's Ice and DBus (I've also looked for CORBA encoding, but I didn't 
> succeed). Well, DBus and Ice, either use UTF-8 (with no limitations). I've 
> not looked at the other RPC systems (there are a plethora) but those are my 
> favourite (along with XML-RPC and SOAP of course) and so I've looked there.
>
> Now, suppose that in the far far future, a perverted guy decides to implement 
> SAMP using a different profile, for instance using Ice as wire protocol (in 
> principle it should be possible) instead of XML-RPC. It would be a shame if 
> such an implementation inherited the limitations coming from the XML limits. 
> In my opinion the limits should be put at implementation and language level, 
> not at protocol level... it should be as general (and flexible) as possible.
>
> So, why not follow Dough's suggestion and specify at SAMP protocol definition 
> level that the strings serialization is in UTF-8 (in general), and specify at 
> Standard Profile level that not all the UTF-8 chars are allowed but only 
> those supported by XML?

This is a coherent suggestion and it could be done.  However in my 
opinion it's not the best way to go.  While making the protocol as
general and flexible as possible sounds like a good thing, the price
that you pay is a reduction in interoperability.  If the protocol
says that SAMP strings can only ever contain characters 0xA, 0xD and 
0x20-7F (or whatever) then you know that if you can handle those 
characters then you can definitely interoperate with anyone else
speaking the protocol.  If the protocol says that any UTF-8 character
is permitted then someone trying to write middleware that does
translation between the far future perverted Ice-based profile and the
current Standard Profile will have a problem.  Is that kind of 
middleware something we're going to need?  I don't know.  But in 
weighing up how we ought to plan for unknown future evolutions,
I would rather err on the side of safety than of flexibility.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Tue Aug 19 15:21:14 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id 0A157624228;
	Tue, 19 Aug 2008 15:21:14 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m7JDLFEs023648;
	Tue, 19 Aug 2008 15:21:15 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id 72067ECA384;
	Tue, 19 Aug 2008 15:21:15 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id 0F48FECA38F
	for <apps-samp@pat.hq.eso.org>; Tue, 19 Aug 2008 15:21:14 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m7JDKwQb023571
	for <apps-samp@ivoa.net>; Tue, 19 Aug 2008 15:21:13 +0200 (MEST)
X-IronPort-AV: E=Sophos;i="4.32,235,1217800800"; 
   d="scan'208";a="9861958"
Received: from sol.star.bris.ac.uk ([137.222.58.39])
	by clavius.hq.eso.org with ESMTP; 19 Aug 2008 15:18:01 +0200
Received: from andromeda.star.bris.ac.uk ([137.222.58.155])
	by sol.star.bris.ac.uk with esmtp (Exim 3.35 #1)
	id 1KVR8q-0006zv-00; Tue, 19 Aug 2008 14:20:56 +0100
Received: from mbt (helo=localhost)
	by andromeda.star.bris.ac.uk with local-esmtp (Exim 4.43)
	id 1KVR8p-0005sH-BK; Tue, 19 Aug 2008 14:20:55 +0100
Date: Tue, 19 Aug 2008 14:20:55 +0100 (BST)
From: Mark Taylor <m.b.taylor@bristol.ac.uk>
X-X-Sender: mbt@andromeda.star.bris.ac.uk
To: Doug Tody <dtody@nrao.edu>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.64.0808040957420.20102@oak>
Message-ID: <Pine.LNX.4.63.0808191404520.22499@andromeda.star.bris.ac.uk>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011435250.20102@oak>
	<Pine.LNX.4.63.0808040836270.13515@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808040957420.20102@oak>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Cc: apps-samp@ivoa.net
X-BeenThere: apps-samp@ivoa.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: "Simple Applications Messaging Protocol \(Apps WG\) - IVOA"
	<apps-samp.ivoa.net>
List-Unsubscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=unsubscribe>
List-Post: <mailto:apps-samp@ivoa.net>
List-Help: <mailto:apps-samp-request@ivoa.net?subject=help>
List-Subscribe: <http://www.eso.org/lists/listinfo/apps-samp>,
	<mailto:apps-samp-request@ivoa.net?subject=subscribe>
Errors-To: apps-samp-bounces@ivoa.net

Doug,

On Mon, 4 Aug 2008, Doug Tody wrote:

> Sure, I agree that the range of allowable chars should be restricted
> as you suggest.   My suggestion is to specify UTF-8, restricted as
> has been discussed for 7-bit chars, but allowing UTF-8 encoded chars
> to pass through.  That would seem to do it and we still have simple
> ASCII virtually all of the time so I don't think this will break
> legacy code.  If at some point full up unicode is needed (eg 16 bit
> chars), that should be a different data type.

I am slightly against this, since it reduces the simplicity of what's
going on.  In practice, as you say, I think the amount of problematic
behaviour that defining SAMP string content as UTF-8 would cause would 
be very small.  But I've had to go to the Unicode web site and read 
the UTF-8 FAQs to convince myself that this is the case.  Sloppy 
programmers who don't carefully read the spec and treat the byte 
stream as if it's ASCII will be fine >99% of the time.  But some 
burden will be imposed on careful programmers who want to make sure 
that the UTF-8 is treated properly, especially if they are working 
on platforms which are not Unicode-aware.  If non-Latin character 
transmission is in the category "essential" or even "nice to have" 
I'd say this is a price worth paying.  If it's just "because we can" 
I'd say it's not.  Responses so far to my question:

On Mon, 4 Aug 2008, Mark Taylor wrote:

> Which of these is best depends on how important the requirement to be
> able to send Unicode and control characters is. My vote is not very.
> Can we have a show of hands?

suggest to me that this is in the "because we can" category.  But if 
people believe that non-Latin character transmission is something
that we really ought to have in SAMP strings, then I'd go along with
this suggestion.

Mark

-- 
Mark Taylor   Astronomical Programmer   Physics, Bristol University, UK
m.b.taylor@bris.ac.uk +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/

From apps-samp-bounces@ivoa.net  Tue Aug 19 17:53:10 2008
Return-Path: <apps-samp-bounces@ivoa.net>
X-Original-To: vomail@fiction.hq.eso.org
Delivered-To: vomail@fiction.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by fiction.hq.eso.org (ESO maildrop) with ESMTP id DF19D624229;
	Tue, 19 Aug 2008 17:53:09 +0200 (CEST)
Received: from pat.hq.eso.org (pat.hq.eso.org [134.171.42.15])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m7JFrB8I010986;
	Tue, 19 Aug 2008 17:53:11 +0200 (MEST)
Received: from pat.hq.eso.org (localhost [127.0.0.1])
	by pat.hq.eso.org (Postfix) with ESMTP id BC973ECA37A;
	Tue, 19 Aug 2008 17:53:11 +0200 (CEST)
X-Original-To: apps-samp@pat.hq.eso.org
Delivered-To: apps-samp@pat.hq.eso.org
Received: from mercury.hq.eso.org (mercury.hq.eso.org [134.171.7.20])
	by pat.hq.eso.org (Postfix) with ESMTP id F0849ECA365
	for <apps-samp@pat.hq.eso.org>; Tue, 19 Aug 2008 17:53:10 +0200 (CEST)
Received: from oren.hq.eso.org (oren.hq.eso.org [134.171.42.43])
	by mercury.hq.eso.org (8.13.6+Sun/8.12.10) with ESMTP id m7JFrA6u010979
	for <apps-samp@ivoa.net>; Tue, 19 Aug 2008 17:53:10 +0200 (MEST)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: AtsHAB2JqkiSWAEPVWdsb2JhbACSBwEWBQgGE5wQHAEJhXk/gVg
X-IronPort-AV: E=Sophos;i="4.32,236,1217800800"; 
   d="scan'208";a="9865147"
Received: from revere.aoc.nrao.edu ([146.88.1.15])
	by clavius.hq.eso.org with ESMTP; 19 Aug 2008 17:49:56 +0200
X-NRAO-Sekrit: 3C273
Received: from dropbox.aoc.nrao.edu (dropbox.aoc.nrao.edu [146.88.1.13])
	by revere.aoc.nrao.edu (8.13.1/8.13.1/cv-ws-8.12) with ESMTP id
	m7JFq6Lh027357; Tue, 19 Aug 2008 09:52:06 -0600
Received: from oak.aoc.nrao.edu (oak.aoc.nrao.edu [146.88.3.215])
	by dropbox.aoc.nrao.edu (8.13.1/8.13.1/smtp-gateway) with ESMTP id
	m7JFq5sB020518; Tue, 19 Aug 2008 09:52:05 -0600
Date: Tue, 19 Aug 2008 09:52:05 -0600 (MDT)
From: Doug Tody <dtody@nrao.edu>
X-X-Sender: dtody@oak
To: Mark Taylor <m.b.taylor@bristol.ac.uk>
Subject: Re: String character range
In-Reply-To: <Pine.LNX.4.63.0808191404520.22499@andromeda.star.bris.ac.uk>
Message-ID: <Pine.LNX.4.64.0808190944400.6820@oak>
References: <Pine.LNX.4.63.0807311636490.25401@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808010753280.29047@localhost.localdomain>
	<Pine.LNX.4.63.0808011504390.523@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011629160.24732@hypatia.laeff.inta.es>
	<Pine.LNX.4.63.0808011559350.731@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808011435250.20102@oak>
	<Pine.LNX.4.63.0808040836270.13515@andromeda.star.bris.ac.uk>
	<Pine.LNX.4.64.0808040957420.20102@oak>
	<Pine.LNX.4.63.08081914
