<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div dir="ltr">Hi Christian,</div><div dir="ltr"><br></div><div dir="ltr">that sound promising! Thanks a lot!</div><div dir="ltr"><br></div><div dir="ltr">Regards&nbsp;</div><div dir="ltr">Andreas</div><div dir="ltr"><br><blockquote type="cite">Am 30.10.2019 um 18:08 schrieb Christian Wirth &lt;christian.wirth@oracle.com&gt;:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr">
  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  
  
    <p>Hi Andreas,</p>
    <p>there is now a solution to your problem. You can use "Target type
      mapping" [1] to specify you want that custom conversion in your
      code. <br>
    </p>
    <p>Find below some pseudo-code how to do that. You will want to
      fine-tune that to your usecase (not use allowAllAccess; not use
      HostAccess.ALL; maybe include additional types). A more lengthy
      discussion you will find in <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_graalvm_graaljs_issues_94&d=DwMFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=CUkXBxBNT_D5N6HMJ5T9Z6rmvNKYsqupcbk72K0lcoQ&m=QDH4yTDf6_X1L-NnUysBORTB4HfQlZodg6jN1LSjlRQ&s=4rAXxxifK7XO3PuO7r7eUvtylX7JMskord9rsg5iQGk&e=">https://github.com/graalvm/graaljs/issues/94</a>.
      I'll also add an example of this to our FAQ in <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_graalvm_graaljs_blob_master_docs_user_FAQ.md&d=DwMFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=CUkXBxBNT_D5N6HMJ5T9Z6rmvNKYsqupcbk72K0lcoQ&m=QDH4yTDf6_X1L-NnUysBORTB4HfQlZodg6jN1LSjlRQ&s=qQ9-uMEIJ4yARwvPhnxboFzrkzfGrDD8dsvnYIIS3yo&e=">https://github.com/graalvm/graaljs/blob/master/docs/user/FAQ.md</a>
      and/or our NashornMigrationGuide.md.<br>
    </p>
    <p>Best,<br>
      Christian</p>
    <p>[1] <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__www.graalvm.org_sdk_javadoc_org_graalvm_polyglot_HostAccess.Builder.html-23targetTypeMapping-2Djava.lang.Class-2Djava.lang.Class-2Djava.util.function.Predicate-2Djava.util.function.Function-2D&d=DwMFaQ&c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&r=CUkXBxBNT_D5N6HMJ5T9Z6rmvNKYsqupcbk72K0lcoQ&m=QDH4yTDf6_X1L-NnUysBORTB4HfQlZodg6jN1LSjlRQ&s=S_9ww96cdW4vf9UPkCP5afELBbry3SsCVq2rjDcqZRM&e=">https://www.graalvm.org/sdk/javadoc/org/graalvm/polyglot/HostAccess.Builder.html#targetTypeMapping-java.lang.Class-java.lang.Class-java.util.function.Predicate-java.util.function.Function-</a></p>
    <p><br>
      Context context =
Context.newBuilder("js").allowAllAccess(true).allowHostAccess(getHostAccess()).build();<br>
      <br>
      &nbsp;&nbsp;&nbsp; private HostAccess getHostAccess() {<br>
      &nbsp; &nbsp; &nbsp; &nbsp; HostAccess.Builder builder =
      HostAccess.newBuilder(HostAccess.ALL);<br>
      &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; builder.targetTypeMapping(String.class, Integer.class,
      null, (v) -&gt; parseInt(v));<br>
      &nbsp;&nbsp; &nbsp; &nbsp;&nbsp; return builder.build();<br>
      &nbsp;&nbsp;&nbsp; }<br>
      <br>
      &nbsp;&nbsp;&nbsp; private int parseInt(String input) {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Integer.parseInt(input);<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (Exception ex) {<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0; //TODO should not fail silently<br>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
      &nbsp;&nbsp;&nbsp; }<br>
    </p>
    <p><br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">Am 29.10.2019 um 13:13 schrieb Andreas
      Mueller:<br>
    </div>
    <blockquote type="cite" cite="mid:B448A6EB-A390-4BFA-8F9C-B8A28DFF6505@iit.de">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      Hi,
      <div class=""><br class="">
      </div>
      <div class="">I just wanted to ask if there was any change
        meanwhile?&nbsp;</div>
      <div class=""><br class="">
      </div>
      <div class="">I understand your arguments but it is a real pain to
        convert a huge number of JS scripts to cast it to the
        corresponding Java type. This prevents us to switch to GraalVM.&nbsp;</div>
      <div class=""><br class="">
      </div>
      <div class="">Thanks,</div>
      <div class="">Andreas</div>
      <div class=""><br class="">
        <div class="">--&nbsp;<br class="">
          Andreas Mueller<br class="">
          IIT Software GmbH<br class="">
          <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.swiftmq.com&amp;d=DwMFaQ&amp;c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&amp;r=V2rW9Bb4RXGagEjJPJ7OhMWUid7VzLtEMOH5cLmS8dw&amp;m=zenR0rlRfS2eOcu2DvpgYMGFuufo57cWv5zeDfJfndw&amp;s=UuzNObx0M8twLhJye4cigfutTdU18WjwA2OE8RAaDSM&amp;e=" class="" moz-do-not-send="true">http://www.swiftmq.com</a><br class="">
          <br class="">
          <span><div>&lt;swiftmq_logo_positiv.png&gt;</div></span><br class="">
        </div>
        <br class="">
        <blockquote type="cite" class="">On 6. Sep 2018, at 18:29,
          Andreas Mueller &lt;<a href="mailto:am@iit.de" class="" moz-do-not-send="true">am@iit.de</a>&gt; wrote:<br class="">
          <br class="">
          Hi Christian,<br class="">
          <br class="">
          thanks for the explanation.<br class="">
          <br class="">
          Look here (last section):<br class="">
          <br class="">
          <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/javascript.html" class="" moz-do-not-send="true">https://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_guide/javascript.html</a><br class="">
          <br class="">
          Regards&nbsp;<br class="">
          Andreas&nbsp;<br class="">
          <br class="">
          Am 06.09.2018 um 15:47 schrieb Christian Wirth
          <a class="moz-txt-link-rfc2396E" href="mailto:christian.wirth@oracle.com">&lt;christian.wirth@oracle.com&gt;</a>:<br class="">
          <br class="">
          <blockquote type="cite" class="">Hi Andreas,<br class="">
            <br class="">
            thanks for keeping persistent on that matter.<br class="">
            <br class="">
            &gt; Actually I don’t need this graaljs “feature” at all.
            ;-)<br class="">
            <br class="">
            In fact you would; you need a new Graal.js/Truffle feature
            that&nbsp;converts the value for you. From a Java perspective,
            you are&nbsp;providing a wrong data type according to the&nbsp;method
            signature. You&nbsp;trust JavaScript to convert correctly,
            according to some defined&nbsp;(?) semantics of selecting the
            right method and right conversion.<br class="">
            <br class="">
            The reason why we don't have this by default is two fold:
            first,&nbsp;we try to provide something that works across more
            languages, not&nbsp;just JS between Java; and secondly, we&nbsp;think
            such a feature can&nbsp;cause way more trouble than it solves,
            especially if you go as far&nbsp;as String =&gt; int conversions.<br class="">
            <br class="">
            But yes, I acknowledge that this feature could simplify
            the&nbsp;migration from Nashorn to Graal.js, especially if you
            don't have&nbsp;an API on either side that does that already and
            you&nbsp;cannot&nbsp;introduce such API.<br class="">
            <br class="">
            &gt; can’t you just act like Nashorn<br class="">
            <br class="">
            Are you aware of any documentation (outside source code)
            that&nbsp;describes Nashorn's semantics on this, that your code
            depends on?&nbsp;In what order (of target data types) do&nbsp;you
            expect we try to&nbsp;convert to, if ambiguous - especially when
            methods with more than&nbsp;one arguments are involved? We have
            seen behavior that is&nbsp;dependent on the&nbsp;ordering of method
            definitions in the Java class&nbsp;file; that is something we
            cannot easily support. We have seen&nbsp;errors arise from JS
            code trusting its numeric data is int, while&nbsp;it was double
            (or the other way round) unexpectedly; that's not&nbsp;something
            we can solve automatically in the engine.&nbsp;<br class="">
            <br class="">
            We are still working on providing better compatibility. One
            of&nbsp;the next improvements will be to explicitly select
            which&nbsp;method+signature you want to call&nbsp;(<a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_graalvm_graaljs_issues_37&amp;d=DwQFaQ&amp;c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&amp;r=V2rW9Bb4RXGagEjJPJ7OhMWUid7VzLtEMOH5cLmS8dw&amp;m=zenR0rlRfS2eOcu2DvpgYMGFuufo57cWv5zeDfJfndw&amp;s=hpeXue5n_zc8jBsh9pyXcqtYPwNxzPfxQPuXTuD-jwY&amp;e=" moz-do-not-send="true">https://github.com/graalvm/graaljs/issues/37</a>).
            This won't solve&nbsp;the problem of conversion, but allows to
            mitigate the issue of&nbsp;seemingly random selection of methods
            that&nbsp;are called. Feel free&nbsp;to file any issues you come
            across in our Github Issue tracker; we&nbsp;can prioritize issues
            of high interest.<br class="">
            <br class="">
            Note that the Nashorn Compatibility Mode is not something
            we&nbsp;would encourage you to use on the long run. It helps you
            to&nbsp;migrate more easily now, but with it enabled, you&nbsp;might
            miss newer&nbsp;features of Graal.js/GraalVM, or run into
            compatibility issues in&nbsp;your JS code (JSAdapter has been
            superseded by ES6's Proxy, that&nbsp;JS Strings are in
            fact&nbsp;java.lang.Strings is an implementation&nbsp;detail that
            might not be correct forever, etc.).<br class="">
            <br class="">
            Best,<br class="">
            Christian<br class="">
            <br class="">
            <br class="">
            <br class="">
            <br class="">
            <br class="">
            <br class="">
            Am 06.09.2018 um 14:20 schrieb Andreas&nbsp;Mueller:<br class="">
            <blockquote type="cite" cite="mid:A0CA4089-1A8A-4994-BD7F-4EFF5501FC5F@iit.de" class="">Hi,<br class="">
              <br class="">
              I’ve tested the latest graalvm release and I’m
              still&nbsp;getting an exception due to lossy conversion.<br class="">
              <br class="">
              Actually I have a JS var that contains a String but&nbsp;is an
              int and the Java method call is int. I know that
              graaljs&nbsp;is restrictive here but can’t you just act like
              Nashorn when in&nbsp;Nashorn compatibility mode?<br class="">
              <br class="">
              I mean I know that I pass a String containing an int&nbsp;so I
              am responsible for that. Actually I don’t need this
              graaljs&nbsp;“feature” at all. ;-)<br class="">
              <br class="">
              Thanks,<br class="">
              Andreas<br class="">
              <br class="">
              --&nbsp;<br class="">
              Andreas Mueller<br class="">
              IIT Software GmbH<br class="">
              <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.swiftmq.com&amp;d=DwQFaQ&amp;c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&amp;r=V2rW9Bb4RXGagEjJPJ7OhMWUid7VzLtEMOH5cLmS8dw&amp;m=zenR0rlRfS2eOcu2DvpgYMGFuufo57cWv5zeDfJfndw&amp;s=UuzNObx0M8twLhJye4cigfutTdU18WjwA2OE8RAaDSM&amp;e=" moz-do-not-send="true">http://www.swiftmq.com</a><br class="">
              <br class="">
              &lt;swiftmq_logo_positiv.png&gt;<br class="">
              <br class="">
              <br class="">
              <blockquote type="cite" class="">On 22 Jun 2018, at
                20:34,&nbsp;Andreas Mueller <a class="moz-txt-link-rfc2396E" href="mailto:am@iit.de">&lt;am@iit.de&gt;</a> wrote:<br class="">
                <br class="">
                Hi Christian,<br class="">
                <br class="">
                <blockquote type="cite" class="">Did you try if it
                  worked if&nbsp;you annotated it? Or is your code (or
                  relevant parts of it)&nbsp;open-source so we can run it
                  ourselves?<br class="">
                </blockquote>
                <br class="">
                I didn’t test it yet. It’s not open source either (the
                scripts&nbsp;are under Apache 2 but the SwiftMQ is not).&nbsp;<br class="">
                <br class="">
                The scripts are using a SwiftMQ Stream Interface (the
                Java&nbsp;part provided by SwiftMQ). The intention is to use
                any JSR 223&nbsp;available scripting engine so that scripts
                (SwiftMQ&nbsp;Steeams)&nbsp;can be written in JS, Groovy, Scala,
                Python etc. We have only&nbsp;tested (and implemented it) in
                JS. So I can add annotattions&nbsp;but would rather
                appreciated if you don’t&nbsp;require them at all.<br class="">
                <br class="">
                Javadoc of the Stream Interface, FYI (sometimes we just
                use a&nbsp;Runnable as the callback interface):<br class="">
                <br class="">
                <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.swiftmq.com_products_router_swiftlets_sys-5Fstreams_si_javadoc_index.html&amp;d=DwQFaQ&amp;c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&amp;r=V2rW9Bb4RXGagEjJPJ7OhMWUid7VzLtEMOH5cLmS8dw&amp;m=zenR0rlRfS2eOcu2DvpgYMGFuufo57cWv5zeDfJfndw&amp;s=6HbGvcUl7MYIx3jlkj_SbRTvVqkR79D6_Vv5eLC5uUY&amp;e=" moz-do-not-send="true">http://www.swiftmq.com/products/router/swiftlets/sys_streams/si/javadoc/index.html</a><br class="">
                <br class="">
                <br class="">
                <blockquote type="cite" class="">&gt; What we need is in
                  fact&nbsp;a Nashorn replacement as a scripting engine as
                  part of the&nbsp;JDK<br class="">
                  &gt; or as a plugin into the JDK by adding it to
                  the&nbsp;classpath.<br class="">
                  <br class="">
                  Executing Graal JavaScript on a stock JDK is
                  possible&nbsp;already (without Graal as optimizing
                  compiler), and we are&nbsp;working on a fully-performant
                  solution for JDK 11&nbsp;(with&nbsp;Graal). Graal JavaScript
                  tries to be closely&nbsp;compatible to Nashorn, but it is
                  unrealistic that it ever&nbsp;provides 100% compatibility.
                  Feedback like yours helps us&nbsp;understand&nbsp;what users
                  care about most.<br class="">
                </blockquote>
                <br class="">
                We have a lot of scripts we can test again GraalVM,
                no&nbsp;problem. Just post it when you have a new release and
                I’ll&nbsp;give it a try.<br class="">
                <br class="">
                <blockquote type="cite" class=""><br class="">
                  &gt; Nashorn’s performance is ok for us but an
                  increase&nbsp;would be much<br class="">
                  &gt; appreciated. Are there plans to provide that?<br class="">
                  <br class="">
                  Graal JavaScript is significantly faster than Nashorn
                  on&nbsp;most peak performance benchmarks (often orders of
                  magnitude&nbsp;faster). But please note the difference:
                  Nashorn&nbsp;always compiles the JavaScript code it
                  executes to bytecode.&nbsp;Graal JavaScript requires Graal
                  as optimizing compiler to&nbsp;achive good performance. The
                  setup you are&nbsp;testing right&nbsp;now does not include
                  Graal, so in your case, JavaScript is&nbsp;only
                  interpreted, thus you will experience a
                  performance&nbsp;impact.<br class="">
                </blockquote>
                <br class="">
                Interpreted is not an option for us.<br class="">
                <br class="">
                Thanks,<br class="">
                Andreas<br class="">
                --&nbsp;<br class="">
                Andreas Mueller<br class="">
                IIT Software GmbH<br class="">
                <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.swiftmq.com&amp;d=DwQFaQ&amp;c=RoP1YumCXCgaWHvlZYR8PZh8Bv7qIrMUB65eapI_JnE&amp;r=V2rW9Bb4RXGagEjJPJ7OhMWUid7VzLtEMOH5cLmS8dw&amp;m=zenR0rlRfS2eOcu2DvpgYMGFuufo57cWv5zeDfJfndw&amp;s=UuzNObx0M8twLhJye4cigfutTdU18WjwA2OE8RAaDSM&amp;e=" moz-do-not-send="true">http://www.swiftmq.com</a><br class="">
                <br class="">
                &lt;swiftmq_logo_positiv.png&gt;<br class="">
                <br class="">
                <br class="">
                <br class="">
                IIT Software GmbH<br class="">
                Falkenhorst 11, 48155 Münster, Germany<br class="">
                Phone: +49 (0)251 39 72 99 00<br class="">
                Managing Director: Andreas Müller<br class="">
                District Court: Amtsgericht Münster, HRB 16294<br class="">
                VAT-No: DE199945912<br class="">
                <br class="">
                This e-mail may contain confidential and/or
                privileged&nbsp;information. If you are not the intended
                recipient (or have&nbsp;received this e-mail in error) please
                notify the&nbsp;sender&nbsp;immediately and destroy this e-mail.
                Any unauthorized&nbsp;copying, disclosure or distribution of
                the material in this&nbsp;e-mail is strictly forbidden.<br class="">
                _______________________________________________<br class="">
                GraalVM-Users mailing list<br class="">
                <a class="moz-txt-link-abbreviated" href="mailto:GraalVM-Users@oss.oracle.com">GraalVM-Users@oss.oracle.com</a><br class="">
                <a class="moz-txt-link-freetext" href="https://oss.oracle.com/mailman/listinfo/graalvm-users">https://oss.oracle.com/mailman/listinfo/graalvm-users</a><br class="">
              </blockquote>
              <br class="">
              <br class="">
              <br class="">
              <br class="">
              IIT Software GmbH<br class="">
              Falkenhorst 11, 48155 Münster, Germany<br class="">
              Phone: +49 (0)251 39 72 99 00<br class="">
              Managing Director: Andreas Müller<br class="">
              District Court: Amtsgericht Münster, HRB 16294<br class="">
              VAT-No: DE199945912<br class="">
              <br class="">
              This e-mail may contain confidential and/or privileged
              information. If you are not the intended recipient (or
              have received this e-mail in error) please notify the
              sender&nbsp;immediately and destroy this e-mail. Any
              unauthorized copying, disclosure or distribution of the
              material in this e-mail is strictly forbidden.<br class="">
            </blockquote>
            <br class="">
          </blockquote>
          <br class="">
          <br class="">
          IIT Software GmbH<br class="">
          Falkenhorst 11, 48155 Münster, Germany<br class="">
          Phone: +49 (0)251 39 72 99 00<br class="">
          Managing Director: Andreas Müller<br class="">
          District Court: Amtsgericht Münster, HRB 16294<br class="">
          VAT-No: DE199945912<br class="">
          <br class="">
          This e-mail may contain confidential and/or privileged
          information. If you are not the intended recipient (or have
          received this e-mail in error) please notify the
          sender&nbsp;immediately and destroy this e-mail. Any unauthorized
          copying, disclosure or distribution of the material in this
          e-mail is strictly forbidden.<br class="">
          _______________________________________________<br class="">
          GraalVM-Users mailing list<br class="">
          <a class="moz-txt-link-abbreviated" href="mailto:GraalVM-Users@oss.oracle.com">GraalVM-Users@oss.oracle.com</a><br class="">
          <a class="moz-txt-link-freetext" href="https://oss.oracle.com/mailman/listinfo/graalvm-users">https://oss.oracle.com/mailman/listinfo/graalvm-users</a><br class="">
        </blockquote>
        <br class="">
      </div>
      <br>
      <br>
      <hr>
      IIT&nbsp;Software&nbsp;GmbH<br>
      Falkenhorst&nbsp;11,&nbsp;48155&nbsp;Münster,&nbsp;Germany<br>
      Phone:&nbsp;+49&nbsp;(0)251&nbsp;39&nbsp;72&nbsp;99&nbsp;00<br>
      Managing&nbsp;Director:&nbsp;Andreas&nbsp;Müller<br>
      District&nbsp;Court:&nbsp;Amtsgericht&nbsp;Münster,&nbsp;HRB&nbsp;16294<br>
      VAT-No:&nbsp;DE199945912<br>
      <br>
This&nbsp;e-mail&nbsp;may&nbsp;contain&nbsp;confidential&nbsp;and/or&nbsp;privileged&nbsp;information.&nbsp;If&nbsp;you&nbsp;are&nbsp;not&nbsp;the&nbsp;intended&nbsp;recipient&nbsp;(or&nbsp;have&nbsp;received&nbsp;this&nbsp;e-mail&nbsp;in&nbsp;error)&nbsp;please&nbsp;notify&nbsp;the&nbsp;sender&nbsp;immediately&nbsp;and&nbsp;destroy&nbsp;this&nbsp;e-mail.&nbsp;Any&nbsp;unauthorized&nbsp;copying,&nbsp;disclosure&nbsp;or&nbsp;distribution&nbsp;of&nbsp;the&nbsp;material&nbsp;in&nbsp;this&nbsp;e-mail&nbsp;is&nbsp;strictly&nbsp;forbidden.<br>
    </blockquote>
  

</div></blockquote><BR />
<BR />
<HR />
IIT&nbsp;Software&nbsp;GmbH<BR />
Falkenhorst&nbsp;11,&nbsp;48155&nbsp;Münster,&nbsp;Germany<BR />
Phone:&nbsp;+49&nbsp;(0)251&nbsp;39&nbsp;72&nbsp;99&nbsp;00<BR />
Managing&nbsp;Director:&nbsp;Andreas&nbsp;Müller<BR />
District&nbsp;Court:&nbsp;Amtsgericht&nbsp;Münster,&nbsp;HRB&nbsp;16294<BR />
VAT-No:&nbsp;DE199945912<BR />
<BR />
This&nbsp;e-mail&nbsp;may&nbsp;contain&nbsp;confidential&nbsp;and/or&nbsp;privileged&nbsp;information.&nbsp;If&nbsp;you&nbsp;are&nbsp;not&nbsp;the&nbsp;intended&nbsp;recipient&nbsp;(or&nbsp;have&nbsp;received&nbsp;this&nbsp;e-mail&nbsp;in&nbsp;error)&nbsp;please&nbsp;notify&nbsp;the&nbsp;sender&nbsp;immediately&nbsp;and&nbsp;destroy&nbsp;this&nbsp;e-mail.&nbsp;Any&nbsp;unauthorized&nbsp;copying,&nbsp;disclosure&nbsp;or&nbsp;distribution&nbsp;of&nbsp;the&nbsp;material&nbsp;in&nbsp;this&nbsp;e-mail&nbsp;is&nbsp;strictly&nbsp;forbidden.<BR />
</body></html>