<%@page contentType="text/html;charset=UTF-8" pageEncoding="ISO-8859-1" session="true"%>
<%@page errorPage="AdminException.jsp"%>
<%@page import="com.fujitsu.iflow.model.workflow.Dashboard"%>
<%@page import="com.fujitsu.iflow.model.workflow.KPIDefStruct"%>
<%@page import="com.fujitsu.iflow.model.bpm.BPMSession"%>
<%@page import="java.util.Collection"%>
<%@page import="java.util.Hashtable"%>
<%@page import="com.fujitsu.iflow.model.util.QuickForm"%>
<%!
    String[] allTemplates = null;
    String[] allActivities = null;
    KPIDefStruct kpiDefStruct = null;
    boolean updateKPI = false;
%>
<%
    request.setCharacterEncoding("UTF-8");request.getParameterNames(); //Need dummy call for WL9.1
    BPMSession bps = (BPMSession) session.getAttribute("BPMSession");
    if (bps == null) {
        %><jsp:include page="PasswordPanel.jsp" flush="true"/><%
        return;
    }

    // stop access of this page, if the logged in user is not a Administrator
    bps.getAdmin();

    String addKPI = request.getParameter("AddKPI");
    if(addKPI != null && addKPI.equals("Add KPI"))
    {
        updateKPI = false;
        session.setAttribute("opnToPerform",null);
        session.setAttribute("AddKPI",addKPI);
    }
    kpiDefStruct = (KPIDefStruct)session.getAttribute("KPIDefStruct");
    String opnPerform = (String)session.getAttribute("opnToPerform");
    if(opnPerform != null && opnPerform.equals("Change"))
        updateKPI = true;
    else
        updateKPI = false;
    Dashboard dash = bps.getDashboard();
    Hashtable allTemplHash = dash.getAllTemplates();
    session.setAttribute("AllTemplates",allTemplHash);
    Collection allTemplLabel = allTemplHash.values();
    allTemplates = (String[])allTemplLabel.toArray(new String[allTemplLabel.size()+1]);
    allTemplates[allTemplLabel.size()] = "--- No Process Instance ---";
    String selectedTemplName = null;
    long procDefId = 0;
    if(updateKPI && kpiDefStruct != null)
    {
        procDefId = kpiDefStruct.getProcessDefinitionId();
        selectedTemplName = (String)allTemplHash.get(new Long(procDefId));
    }
    String initThresholdTemplate = "--- No Process Instance ---";
    String criticThreholdTemplate = "--- No Process Instance ---";
    if(updateKPI && kpiDefStruct != null)
    {
        long initThreshProcId = kpiDefStruct.getThresholds()[0].processDefinitionId;
        if(initThreshProcId == 0)
            initThresholdTemplate = "--- No Process Instance ---";
        else
            initThresholdTemplate = (String)allTemplHash.get(new Long(initThreshProcId));

        long criticThreshProcId = kpiDefStruct.getThresholds()[1].processDefinitionId;
        if(criticThreshProcId == 0)
            criticThreholdTemplate = "--- No Process Instance ---";
        else
            criticThreholdTemplate = (String)allTemplHash.get(new Long(criticThreshProcId));
    }
    Hashtable allActHash = dash.getAllActivities(procDefId);
    session.setAttribute("AllActivities",allActHash);
    session.setAttribute("Dashboard",dash);
    Collection allActLabel = allActHash.values();
    allActivities = (String[])allActLabel.toArray(new String[allActLabel.size()]);
    String selectedActName = null;
    if(updateKPI && kpiDefStruct != null && kpiDefStruct.getKpiScope() == 2)
    {
        long actDefId = kpiDefStruct.getActivityDefinitionId();
        selectedActName = (String)allActHash.get(new Long(actDefId));
    }
    String valUnit = "minutes waiting";
    if(kpiDefStruct != null)
    {
        if(kpiDefStruct.getKpiMeasure() == 0)
            valUnit="minutes waiting";
        if(kpiDefStruct.getKpiMeasure() == 1)
            valUnit="waiting";
        if(kpiDefStruct.getKpiMeasure() == 2)
            valUnit="minutes average cycle time";
    }
%>
<%!
    private
    long
    convertToMins(long timeVal)
    {
        // return the value in minutes
        return (timeVal/1000)/60;
    }
%>

<html>
<head>
<title>Interstage Business Process Manager | Add KPIs </title>
<jsp:include page="StyleSheet.jsp" flush="true"/>
<script language="javascript" src="styles/clockscripts.js"></script>
<script>
    function enableControls(isNew)
    {
        if(isNew == "Process")
        {
            document.AddKPISettingsForm.ProcessList.disabled = false;
            document.AddKPISettingsForm.ActivityList.disabled = true;
        }
        if(isNew == "Activity")
        {
            document.AddKPISettingsForm.ProcessList.disabled = false;
            document.AddKPISettingsForm.ActivityList.disabled = false;
            document.AddKPISettingsForm.ProcessListChanged.value = "true";
            if(validateInput(document.AddKPISettingsForm.Target.value) &&
               validateInput(document.AddKPISettingsForm.InitialThreshold.value) &&
               validateInput(document.AddKPISettingsForm.CriticalThreshold.value) &&
               validateInput(document.AddKPISettingsForm.InitialAlarmFrequency.value) &&
               validateInput(document.AddKPISettingsForm.CriticalAlarmFrequency.value))
            {
                document.AddKPISettingsForm.submit();
            }
        }
        if(isNew == "System")
        {
            document.AddKPISettingsForm.ProcessList.disabled = true;
            document.AddKPISettingsForm.ActivityList.disabled = true;
            if(document.AddKPISettingsForm.Measure[2].checked == true)
            {
                checkMeasure("AvgCycleTime")
                document.AddKPISettingsForm.Measure[0].checked=true;
                checkMeasure("WaitTime")
            }
        }
    }
    function checkMeasure(isNew)
    {
        if(isNew == "WaitTime")
        {
            document.AddKPISettingsForm.TargetLabel.value="minutes waiting";
            document.AddKPISettingsForm.InitialThresholdLabel.value="minutes waiting";
            document.AddKPISettingsForm.CriticalThresholdLabel.value="minutes waiting";
        }
        if(isNew == "AmountWaiting")
        {
            document.AddKPISettingsForm.TargetLabel.value="waiting";
            document.AddKPISettingsForm.InitialThresholdLabel.value="waiting";
            document.AddKPISettingsForm.CriticalThresholdLabel.value="waiting";
        }
        if(isNew == "AvgCycleTime")
        {
            if(document.AddKPISettingsForm.KPIScope[0].checked == true)
            {
                alert("Measure 'Average Cycle Time' option is not availiable for Scope 'System'.")
                document.AddKPISettingsForm.Measure[2].checked=false;
                if(document.AddKPISettingsForm.TargetLabel.value == "minutes waiting")
                    document.AddKPISettingsForm.Measure[0].checked=true;
                if(document.AddKPISettingsForm.TargetLabel.value == "waiting")
                    document.AddKPISettingsForm.Measure[1].checked=true;
                return false;
            }
            document.AddKPISettingsForm.TargetLabel.value="minutes average cycle time";
            document.AddKPISettingsForm.InitialThresholdLabel.value="minutes average cycle time";
            document.AddKPISettingsForm.CriticalThresholdLabel.value="minutes average cycle time";
        }
    }

    function chkBoxClick()
    {
        if(document.AddKPISettingsForm.Display.checked == true)
        {
            document.AddKPISettingsForm.Display.value = "0";
        }
        else
        {
            document.AddKPISettingsForm.Display.value = "1";
        }
    }
    function selChanged()
    {
        document.AddKPISettingsForm.ProcessListChanged.value = "true";
        if(validateInput(document.AddKPISettingsForm.Target.value) &&
           validateInput(document.AddKPISettingsForm.InitialThreshold.value) &&
           validateInput(document.AddKPISettingsForm.CriticalThreshold.value) &&
           validateInput(document.AddKPISettingsForm.InitialAlarmFrequency.value) &&
           validateInput(document.AddKPISettingsForm.CriticalAlarmFrequency.value))
        {
            document.AddKPISettingsForm.submit();
        }
    }
    function validateInput(inputVal)
    {
        if(inputVal=="" || isNaN(inputVal) || inputVal < 0)
        {
            alert("Specify only Integer and non-negative values to following input fields - \nTarget, Threshold Values and Alarm Frequencies for Initial and Critical Thresholds.")
            return false;
        }
        else if(inputVal.indexOf(".") > 0)
        {
            alert("Specify only Integer and non-negative values to following input fields - \nTarget, Threshold Values and Alarm Frequencies for Initial and Critical Thresholds.")
            return false;
        }
        else
        {
            return true;
        }
    }
    function validateThreshold()
    {
        var target = parseInt(document.AddKPISettingsForm.Target.value);
        var initThresh = parseInt(document.AddKPISettingsForm.InitialThreshold.value);
        var criticThreh = parseInt(document.AddKPISettingsForm.CriticalThreshold.value);
        var satisfy = "false";
        if((target < initThresh) && (initThresh < criticThreh))
        {
            satisfy = "true";
        }
        else if ((target > initThresh) && (initThresh > criticThreh))
        {
            satisfy = "true";
        }
        else
        {
            satisfy = "false";
        }

        if(satisfy == "true")
        {
            if(validateInput(document.AddKPISettingsForm.InitialAlarmFrequency.value) &&
               validateInput(document.AddKPISettingsForm.CriticalAlarmFrequency.value) &&
               validateInput(document.AddKPISettingsForm.Target.value) &&
               validateInput(document.AddKPISettingsForm.InitialThreshold.value) &&
               validateInput(document.AddKPISettingsForm.CriticalThreshold.value))
            document.AddKPISettingsForm.submit();

        }
        else
            alert("Initial and Critical threshold values are out of range with respect to Target Value.\nThese threshold values must follow either of the following conditions, \nTarget > Initial Threshold > Critical Threshold OR Target < Initial Threshold < Critical Threshold");
    }

</script>
</head>
<body class="bodyClass">
<%
    session.setAttribute("TabIndex","3");
%>
<jsp:include page="Header.jsp" flush="true"/>
<form name="AddKPISettingsForm" enctype="multipart/form-data" method="get" action="<%= response.encodeURL("SaveKPIAction.jsp") %>">
<input type="hidden" name="ProcessListChanged" value="false">
<!--begin table 1-->
    <TABLE border="0" cellpadding=0 cellspacing=0 width="90%" align="center"><tr><td align="right" height="35" valign="top">
    <TABLE border="0" cellpadding=0 cellspacing=0>
        <tr>
            <td align="right">
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr background="images/buttons/com_button_bg.gif">
                    <td width="15"><img src="images/buttons/but_save.gif"></td>
                    <td background="images/buttons/com_button_bg.gif" nowrap><a href="javascript:validateThreshold();">
                    <div align="center" class="buttonlink"> Save</div></a></td>
                    <td width="9"><div align="right"><img src="images/buttons/com_button_right.gif" width="9" height="24"></div></td>
                  </tr>
                </table>

        </td><td>&nbsp;</td><td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr background="images/buttons/com_button_bg.gif">
                    <td width="15"><img src="images/buttons/cancel.gif"></td>
                    <td background="images/buttons/com_button_bg.gif" nowrap><a href="KPISettings.jsp">
                    <div align="center" class="buttonlink"> Cancel</div></a></td>
                    <td width="9"><div align="right"><img src="images/buttons/com_button_right.gif" width="9" height="24"></div></td>
                  </tr>
                </table>
    </td></tr></table>
    </td></tr></table>

<table width="90%" border="0" cellpadding="0" cellspacing="0" align="center">
  <tr><td bgcolor="#CCCCCC">
    <TABLE bgcolor="#CCCCCC" border="0" cellpadding="4" cellspacing="1" class="tableClass" width="100%" align="center">
        <COL WIDTH="20%">
        <td class="headrow" colspan="2" bgcolor="#EEEEEE" style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#FFFFFF', endColorStr='#6699CC', gradientType='1')"><font color="#000000" size="2">Add KPI</font></td>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> KPI Name </td>
         <%
            String kpiName = "KPI Wait time";
            if(kpiDefStruct != null && updateKPI)
                kpiName = kpiDefStruct.getName();
         %>
         <td><INPUT TYPE="text" NAME="KPIName" VALUE="<%= kpiName %>" size="80"></td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Target </td>
         <%
            long target = 2;
            if(kpiDefStruct != null && updateKPI)
            {
                target = kpiDefStruct.getTargetValue();
                if(kpiDefStruct.getKpiMeasure() != 1)
                    target = convertToMins(kpiDefStruct.getTargetValue());
            }
         %>
         <td><INPUT TYPE="text" NAME="Target" onBlur="validateInput(this.value)" VALUE="<%= target %>" size="50">
            <INPUT TYPE="text" NAME="TargetLabel" readonly VALUE="<%= valUnit %>" size="24">
         </td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Display </td>
         <%
            String chkValue ="";
            if(kpiDefStruct != null && updateKPI)
            {
                if(kpiDefStruct.getKpiDisplay() == 0)
                    chkValue="checked";
            }
            int displayVal = 1;
            if(kpiDefStruct != null)
                displayVal = kpiDefStruct.getKpiDisplay();
         %>
         <td><INPUT TYPE="checkbox" NAME="Display" VALUE="<%= displayVal %>" onclick="chkBoxClick()" <%= chkValue %> > Don't Display</td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> KPI Scope </td>
         <%
            String chkScopeValue ="checked";
            String chkProcessVal = "";
            String chkActivityVal= "";
            if(kpiDefStruct != null && updateKPI)
            {
                if(kpiDefStruct.getKpiScope() == 0)
                {
                    chkScopeValue="checked";
                    chkProcessVal="";
                    chkActivityVal="";
                }
                if(kpiDefStruct.getKpiScope() == 1)
                {
                    chkScopeValue="";
                    chkProcessVal="checked";
                    chkActivityVal="";
                }
                if(kpiDefStruct.getKpiScope() == 2)
                {
                    chkScopeValue="";
                    chkProcessVal="";
                    chkActivityVal="checked";
                }
            }
         %>
         <td><INPUT TYPE="radio" NAME="KPIScope" VALUE="System" onclick="enableControls(this.value)" <%= chkScopeValue %> >System
         <INPUT TYPE="radio" NAME="KPIScope" VALUE="Process" onclick="enableControls(this.value)" <%= chkProcessVal %> >Process Instance
         <INPUT TYPE="radio" NAME="KPIScope" VALUE="Activity" onclick="enableControls(this.value)" <%= chkActivityVal %> >Activity</td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Process Definition</td>
         <%
            String procList = "disabled";
            String actList = "disabled";
            if(kpiDefStruct != null && updateKPI)
            {
                if(kpiDefStruct.getKpiScope() == 1)
                    procList = "";
                if(kpiDefStruct.getKpiScope() == 2)
                {
                    actList="";
                    procList = "";
                }
            }

         %>
         <td><SELECT NAME="ProcessList" onChange="selChanged()" <%= procList %> >
        <%
            for(int i=0; i<allTemplates.length; i++)
            {
                String select = "";
                if(updateKPI && selectedTemplName != null)
                {
                    if(selectedTemplName.equals(allTemplates[i]))
                        select = "selected";
                }
        %>
                <OPTION VALUE="<%= allTemplates[i] %>" <%= select %>><% QuickForm.writeHtml(out, allTemplates[i]); %>
        <%
            }
        %>
            </SELECT>
         </td>
         </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Activity </td>
         <td><SELECT NAME="ActivityList" <%= actList %> >
        <%
            for(int i=0; i<allActivities.length; i++)
            {
                String select = "";
                if(updateKPI && selectedActName != null)
                {
                    if(selectedActName.equals(allActivities[i]))
                        select = "selected";
                }
        %>
                <OPTION VALUE="<%=allActivities[i] %>" <%= select %>><% QuickForm.writeHtml(out,allActivities[i]); %>
        <%
            }
        %>
            </SELECT>
         </td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Measure </td>
         <%
            String wait = "checked";
            String amtWait = "";
            String avgTime = "";
            if(kpiDefStruct != null && updateKPI)
            {
                if(kpiDefStruct.getKpiMeasure() == 0)
                {
                    wait = "checked";
                    amtWait = "";
                    avgTime = "";
                }
                if(kpiDefStruct.getKpiMeasure() == 1)
                {
                    wait = "";
                    amtWait = "checked";
                    avgTime = "";
                }
                if(kpiDefStruct.getKpiMeasure() == 2)
                {
                    wait = "";
                    amtWait = "";
                    avgTime = "checked";
                }
            }
         %>
         <td><INPUT TYPE="radio" NAME="Measure" VALUE="WaitTime" onclick="checkMeasure(this.value)" <%= wait %> > Wait Time
         <INPUT TYPE="radio" NAME="Measure" VALUE="AmountWaiting" onclick="checkMeasure(this.value)" <%= amtWait %> > Amount Waiting
         <INPUT TYPE="radio" NAME="Measure" VALUE="AvgCycleTime" onclick="checkMeasure(this.value)" <%= avgTime %> > Average Cycle Time</td>
        </tr>
       </TABLE>
    </td>
    </tr></table>
    <!-- end table1 and begin 2--><br>
        <TABLE bgcolor="#CCCCCC" border="0" cellpadding="4" cellspacing="1" class="tableClass" width="90%" align="center">
        <COL WIDTH="20%">
        <td class="headrow" colspan="2" bgcolor="#EEEEEE" style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#FFFFFF', endColorStr='#6699CC', gradientType='1')"><font color="#000000" size="2">Initial Threshold</font></td>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Threshold Value </td>
         <%
            long initThresh = 3;
            if(kpiDefStruct != null && updateKPI)
            {
                initThresh = kpiDefStruct.getThresholds()[0].thresholdValue;
                if(kpiDefStruct.getKpiMeasure() != 1)
                    initThresh = convertToMins(kpiDefStruct.getThresholds()[0].thresholdValue);
            }
         %>
         <td><INPUT TYPE="text" NAME="InitialThreshold" onBlur="validateInput(this.value)" VALUE="<%= initThresh %>" SIZE="50">
            <INPUT TYPE="text" NAME="InitialThresholdLabel" readonly VALUE="<%= valUnit %>" SIZE="24">
         </td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Alarm Frequency (mins) </td>
         <%
            long initAlarmFreq = 1;
            if(kpiDefStruct != null && updateKPI)
            {
                initAlarmFreq = convertToMins(kpiDefStruct.getThresholds()[0].alarmFrequency);
            }
         %>
         <td><INPUT TYPE="text" NAME="InitialAlarmFrequency" onBlur="validateInput(this.value)" VALUE="<%= initAlarmFreq %>" SIZE="80"></td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Start Process Instance List </td>
         <td><SELECT NAME="AlertListProcessInit">
        <%
            for(int i=0; i<allTemplates.length; i++)
            {
                String select = "";
        if(initThresholdTemplate.equals(allTemplates[i]))
                 select = "selected";
        %>
                <OPTION VALUE="<%=allTemplates[i] %>" <%= select %>><% QuickForm.writeHtml(out, allTemplates[i]); %>
        <%
            }
        %>
            </SELECT>
         </td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Description </td>
         <%
            String initMessage = "Initial Threshold Alert Message";
            if(kpiDefStruct != null && updateKPI)
            {
                initMessage = kpiDefStruct.getThresholds()[0].description;
            }
         %>
         <td><TEXTAREA NAME="AlertMessageInitial" cols="62" rows="5"><%= initMessage %></TEXTAREA></td>
        </tr>
        </TABLE>
    <!-- end tabel 2 begin 3--><br>
       <TABLE bgcolor="#CCCCCC" border="0" cellpadding="4" cellspacing="1" class="tableClass" width="90%" align="center">
        <COL WIDTH="20%">
        <td colspan="2" class="headrow" style="filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr='#FFFFFF', endColorStr='#6699CC', gradientType='1')"><font color="#000000" size="2">Critical Threshold</font></td>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Threshold Value </td>
         <%
            long criticThresh = 5;
            if(kpiDefStruct != null && updateKPI)
            {
                criticThresh = kpiDefStruct.getThresholds()[1].thresholdValue;
                if(kpiDefStruct.getKpiMeasure() != 1)
                    criticThresh = convertToMins(kpiDefStruct.getThresholds()[1].thresholdValue);
            }
         %>
         <td><INPUT TYPE="text" NAME="CriticalThreshold" onBlur="validateInput(this.value)" VALUE="<%= criticThresh %>" SIZE="50">
            <INPUT TYPE="text" NAME="CriticalThresholdLabel" readonly VALUE="<%= valUnit %>" SIZE="24">
         </td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Alarm Frequency (mins) </td>
         <%
            long criticAlarmFreq = 1;
            if(kpiDefStruct != null && updateKPI)
            {
                criticAlarmFreq = convertToMins(kpiDefStruct.getThresholds()[1].alarmFrequency);
            }
         %>
         <td><INPUT TYPE="text" NAME="CriticalAlarmFrequency" onBlur="validateInput(this.value)" VALUE="<%= criticAlarmFreq %>" SIZE="80"></td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Start Process Instance List </td>
         <td><SELECT NAME="AlertListProcessCritic">
        <%
            for(int i=0; i<allTemplates.length; i++)
            {
                String select = "";
            if(criticThreholdTemplate.equals(allTemplates[i]))
           select = "selected";
        %>
                <OPTION VALUE="<%=allTemplates[i] %>" <%= select %>><% QuickForm.writeHtml(out, allTemplates[i]); %>
        <%
            }
        %>
            </SELECT>
         </td>
        </tr>
        <tr bgcolor="#FFFFFF">
         <td class="prompt" valign="top"> Description </td>
         <%
            String criticMessage = "Critical Threshold Alert Message";
            if(kpiDefStruct != null && updateKPI)
            {
                criticMessage = kpiDefStruct.getThresholds()[1].description;
            }
         %>
         <td><TEXTAREA NAME="AlertMessageCritical" cols="62" rows="5"><%= criticMessage %></TEXTAREA></td>
        </tr>
       </TABLE>
<br>
    <TABLE border="0" cellpadding=0 cellspacing=0 width="90%" align="center"><tr><td align="right">
        <TABLE border="0" cellpadding=0 cellspacing=0>
        <tr>
            <td align="right">
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr background="images/buttons/com_button_bg.gif">
                    <td width="15"><img src="images/buttons/but_save.gif"></td>
                    <td background="images/buttons/com_button_bg.gif" nowrap><a href="javascript:validateThreshold();">
                    <div align="center" class="buttonlink"> Save</div></a></td>
                    <td width="9"><div align="right"><img src="images/buttons/com_button_right.gif" width="9" height="24"></div></td>
                  </tr>
                </table>

        </td><td>&nbsp;</td><td>
                <table border="0" cellspacing="0" cellpadding="0">
                  <tr background="images/buttons/com_button_bg.gif">
                    <td width="15"><img src="images/buttons/cancel.gif"></td>
                    <td background="images/buttons/com_button_bg.gif" nowrap><a href="KPISettings.jsp">
                    <div align="center" class="buttonlink"> Cancel</div></a></td>
                    <td width="9"><div align="right"><img src="images/buttons/com_button_right.gif" width="9" height="24"></div></td>
                  </tr>
                </table>
        </td></tr></table>
    </td></tr></table>

<br><br><br>
</form>
</body>
</html>

