text:
Chemicals & Resources›
Shaving preparations: sales value in the United Kingdom (UK) 2010-2021
Published by Lucía Fernández, Aug 25, 2022
This statistic shows the sales value of pre-shave, shaving and after-shave preparations based on PRODCOM estimates in the United Kingdom (UK) between 2010 and 2021. In 2021, the sales value of these products reached approximately 18.7 million pounds, an increase from the previous year.
Sales value of pre-shave, shaving and after-shave preparations in the United Kingdom between 2010 and 2021 (in 1,000 GBP)
Value in thousand British pounds
* Provisional data.
PRODCOM estimates are calculated from responses to the PRODCOM survey of manufacturing industries.
Pre-shave, shaving and after-shave preparations excluding shaving soap in blocks.
Men's grooming and cosmetics market in the United Kingdom (UK)
Barber: average prices in the United Kingdom (UK) 2017
Men's grooming market value in the United Kingdom (UK) 2007-2017
Barber: average visit frequency in the United Kingdom (UK) 2017
Average monthly spend on men's grooming products by males in the UK 2018
Statistics on " Male grooming in the United Kingdom (UK) "
Grooming products used by males in the United Kingdom (UK) 2018
Male hair and beauty treatment costs in the United Kingdom (UK) 2012-2017
Male skincare market value in the United Kingdom (UK) 2017, by product type
Men's facial skincare market value in Great Britain 2010-2021
Leading face cream brands for men in Great Britain 2018-2020, by number of users
Frequency of face creams and lotions usage for men in Great Britain 2020
Shaving soap market value in Great Britain 2010-2021
Brands of refillable razors for men in Great Britain 2018-2020, by number of users
Leading brands of disposable razors for men in Great Britain 2020, by number of users
Leading 'disposable razor' brands among men in GB 2021, by number of users
Frequency of hair removal product usage by men in Great Britain 2015-2020
Leading 'Shaving Foam, Gel & Cream' brands among men in GB 2021, by number of users
Frequency of men using 'Shaving Foam, Gel & Cream' in GB 2021
Men's fragrance sales value in Great Britain 2010-2021
Leading 'Anti-Perspirants & Body Spray Deodorants' brands among men in GB 2021, by number of users
Frequency of anti-perspirants usage by men in Great Britain 2015-2020
Brands of hair styling products for men in Great Britain 2018-2020, by number of user
Leading 'Shampoos And Conditioners' brands among men in GB 2021, by number of users
Frequency of hair styling product usage by men in Great Britain 2015-2020
Frequency of men using 'Shampoos And Conditioners' in GB 2021
Use of tanning products and services among men in the UK 2015-2016, by type
Body hair removal among young British males 2016-2018, by area
Leading reasons for male skincare use in the United Kingdom (UK) 2016
Personal care: attitudes among males in the United Kingdom (UK) 2016
Statistics on Male grooming in the United Kingdom (UK)
Premium Statistic Men's grooming market value in the United Kingdom (UK) 2007-2017
Premium Statistic Grooming products used by males in the United Kingdom (UK) 2018
Basic Statistic Male hair and beauty treatment costs in the United Kingdom (UK) 2012-2017
Premium Statistic Barber: average visit frequency in the United Kingdom (UK) 2017
Premium Statistic Barber: average prices in the United Kingdom (UK) 2017
Premium Statistic Male skincare market value in the United Kingdom (UK) 2017, by product type
Premium Statistic Men's facial skincare market value in Great Britain 2010-2021
Premium Statistic Leading face cream brands for men in Great Britain 2018-2020, by number of users
Premium Statistic Frequency of face creams and lotions usage for men in Great Britain 2020
Premium Statistic Shaving soap market value in Great Britain 2010-2021
Premium Statistic Brands of refillable razors for men in Great Britain 2018-2020, by number of users
Premium Statistic Leading brands of disposable razors for men in Great Britain 2020, by number of users
Premium Statistic Leading 'disposable razor' brands among men in GB 2021, by number of users
Premium Statistic Frequency of hair removal product usage by men in Great Britain 2015-2020
Premium Statistic Leading 'Shaving Foam, Gel & Cream' brands among men in GB 2021, by number of users
Premium Statistic Frequency of men using 'Shaving Foam, Gel & Cream' in GB 2021
Premium Statistic Shaving preparations: sales value in the United Kingdom (UK) 2010-2021
Hair and body products
Premium Statistic Men's fragrance sales value in Great Britain 2010-2021
Premium Statistic Leading 'Anti-Perspirants & Body Spray Deodorants' brands among men in GB 2021, by number of users
Premium Statistic Frequency of anti-perspirants usage by men in Great Britain 2015-2020
Premium Statistic Brands of hair styling products for men in Great Britain 2018-2020, by number of user
Premium Statistic Leading 'Shampoos And Conditioners' brands among men in GB 2021, by number of users
Premium Statistic Frequency of hair styling product usage by men in Great Britain 2015-2020
Premium Statistic Frequency of men using 'Shampoos And Conditioners' in GB 2021
Premium Statistic Use of tanning products and services among men in the UK 2015-2016, by type
Basic Statistic Body hair removal among young British males 2016-2018, by area
Premium Statistic Leading reasons for male skincare use in the United Kingdom (UK) 2016
Premium Statistic Personal care: attitudes among males in the United Kingdom (UK) 2016
Premium Statistic Average monthly spend on men's grooming products by males in the UK 2018
Premium Statistic Beauty and skin care preparations: sales value in the United Kingdom (UK) 2010-2021
Basic Statistic Carbonates: sales value in the United Kingdom (UK) 2010-2018
Basic Statistic Eye make-up preparations: sales value in the United Kingdom (UK) 2010-2019
Premium Statistic Artists' colors: sales value in the United Kingdom (UK) 2010-2021
Basic Statistic Ammonium based disinfectants: sales value in the United Kingdom (UK) 2010-2021
Premium Statistic Polycarbonates sales value in the United Kingdom (UK) 2010-2021
Premium Statistic Iron oxides & hydroxides: dye and pigment sales value in the UK 2010-2017
Premium Statistic Ammonium nitrate mixtures: sales value in the United Kingdom (UK) 2010-2014
Premium Statistic Inorganic based metal oxides: dye and pigment sales value in the UK 2010-2017
Basic Statistic Polypropylene monofilament: sales value in the United Kingdom (UK) 2011-2018
Basic Statistic Metal surface preparations: sales value in the United Kingdom (UK) 2010-2018
Premium Statistic Mixtures of odoriferous substances: sales value in the United Kingdom (UK) 2010-2021
Premium Statistic Benzoic acid: sales value in the United Kingdom (UK) 2010-2017
Premium Statistic Propan-1-ol and propan-2-ol: sales value in the United Kingdom (UK) 2010-2021
Premium Statistic Calcium carbonate: sales value in the United Kingdom (UK) 2010-2013
Premium Statistic Hanwha Chemical's global sales revenue 2014-2019
Basic Statistic Turnover of the electronic & optical manufacturing industry in Spain 2011-2020
Premium Statistic Hanwha Chemical's basic materials quarterly sales revenue Q1 2017-Q2 2019
Premium Statistic Lotte Chemical's gross profit 2014-2021
Premium Statistic Sales volume of chemicals from Sasol Limited 2017-2020
Beauty and skin care preparations: sales value in the United Kingdom (UK) 2010-2021
Carbonates: sales value in the United Kingdom (UK) 2010-2018
Eye make-up preparations: sales value in the United Kingdom (UK) 2010-2019
Artists' colors: sales value in the United Kingdom (UK) 2010-2021
Ammonium based disinfectants: sales value in the United Kingdom (UK) 2010-2021
Polycarbonates sales value in the United Kingdom (UK) 2010-2021
Iron oxides & hydroxides: dye and pigment sales value in the UK 2010-2017
Ammonium nitrate mixtures: sales value in the United Kingdom (UK) 2010-2014
Inorganic based metal oxides: dye and pigment sales value in the UK 2010-2017
Polypropylene monofilament: sales value in the United Kingdom (UK) 2011-2018
Metal surface preparations: sales value in the United Kingdom (UK) 2010-2018
Mixtures of odoriferous substances: sales value in the United Kingdom (UK) 2010-2021
Benzoic acid: sales value in the United Kingdom (UK) 2010-2017
Propan-1-ol and propan-2-ol: sales value in the United Kingdom (UK) 2010-2021
Calcium carbonate: sales value in the United Kingdom (UK) 2010-2013
Hanwha Chemical's global sales revenue 2014-2019
Turnover of the electronic & optical manufacturing industry in Spain 2011-2020
Hanwha Chemical's basic materials quarterly sales revenue Q1 2017-Q2 2019
Lotte Chemical's gross profit 2014-2021
Sales volume of chemicals from Sasol Limited 2017-2020
Men's grooming and cosmetics market in the United Kingdom (UK) Cosmetics Industry in the U.S. Cosmetics Consumer Behavior in the U.S. Natural and organic cosmetics in Europe
Office for National Statistics (UK). (August 23, 2022). Sales value of pre-shave, shaving and after-shave preparations in the United Kingdom between 2010 and 2021 (in 1,000 GBP) [Graph]. In Statista. Retrieved January 28, 2023, from https://www.statista.com/statistics/331794/pre-shave-shaving-after-shave-preparations-sales-value-in-the-united-kingdom-uk/
Office for National Statistics (UK). "Sales value of pre-shave, shaving and after-shave preparations in the United Kingdom between 2010 and 2021 (in 1,000 GBP)." Chart. August 23, 2022. Statista. Accessed January 28, 2023. https://www.statista.com/statistics/331794/pre-shave-shaving-after-shave-preparations-sales-value-in-the-united-kingdom-uk/
Office for National Statistics (UK). (2022). Sales value of pre-shave, shaving and after-shave preparations in the United Kingdom between 2010 and 2021 (in 1,000 GBP). Statista. Statista Inc.. Accessed: January 28, 2023. https://www.statista.com/statistics/331794/pre-shave-shaving-after-shave-preparations-sales-value-in-the-united-kingdom-uk/
Office for National Statistics (UK). "Sales Value of Pre-shave, Shaving and After-shave Preparations in The United Kingdom between 2010 and 2021 (in 1,000 Gbp)." Statista, Statista Inc., 23 Aug 2022, https://www.statista.com/statistics/331794/pre-shave-shaving-after-shave-preparations-sales-value-in-the-united-kingdom-uk/
Office for National Statistics (UK), Sales value of pre-shave, shaving and after-shave preparations in the United Kingdom between 2010 and 2021 (in 1,000 GBP) Statista, https://www.statista.com/statistics/331794/pre-shave-shaving-after-shave-preparations-sales-value-in-the-united-kingdom-uk/ (last visited January 28, 2023)
Sales value of pre-shave, shaving and after-shave preparations in the United Kingdom between 2010 and 2021 (in 1,000 GBP) [Graph], Office for National Statistics (UK), August 23, 2022. [Online]. Available: https://www.statista.com/statistics/331794/pre-shave-shaving-after-shave-preparations-sales-value-in-the-united-kingdom-uk/


text:
Q: Drag and Drop from one TreeView Control to another I could not find any proper solution on Google and I would like to know whether there is a possible solution for my intention.
I would like 2 TreeView Controls to interact with each other.
The user should be able to drag an element from the left side and drop it into the right hand side TreeView control.
The elements on the left side which have been moved should go away from the left hand side TreeView control and should be visible on the right TreeView. Whether it will become a child of the element which the user highligthed or being a sibbling is not so relevant as of know because first question to be answered would be whether it is possible.

What I have so far is module1:
Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long

Public Function PixelsPerInch(Par As Integer) As Double
    Dim hDC As Long
    Dim lDotsPerInch As Long

    hDC = GetDC(0)
    lDotsPerInch = GetDeviceCaps(hDC, Par)
    PixelsPerInch = lDotsPerInch
    ReleaseDC 0, hDC
End Function

Public Sub createPopUp()
    Dim oComBar As CommandBar

    On Error Resume Next
    Application.CommandBars("PopUp").Delete
    Set oComBar = CommandBars.Add(Name:="PopUp", Position:=msoBarPopup, Temporary:=True)
    createMenueButton "Neues Unterelement einfügen", 462
    createMenueButton "Element kopieren", 19
    createMenueButton "Element ausschneiden", 21
    createMenueButton "Element einfügen", 22
    createMenueButton "Element löschen (mit Unterelementen)", 464
    createMenueButton "Element löschen (ohne Unterelemente)", 464
End Sub

Private Sub createMenueButton(strButText As String, iFaceId As Integer)
    Dim oBut As CommandBarButton
    Set oBut = Application.CommandBars("PopUp").Controls.Add()
    oBut.FaceId = iFaceId
    oBut.Caption = strButText
    Set oBut = Nothing
End Sub

...and the code inside the Form:
'    Necessary libraries to be activated:
''    - Microsoft Forms x.0 Objekt Library
''    - Microsoft Windows Common Controls x.0 (SPx)

'    Für ausgewählten Node (Drag and Drop)
Private oSelectedNode As MSComctlLib.Node

Private Sub TreeView1_LostFocus()
    ' Verlassen des TreeViews -> Kein Highlighting
    Set TreeView1.DropHighlight = Nothing
End Sub

Private Sub TreeView1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
    ' Hier wird vor dem Drag and Drop sichergestellt, dass der Selected Item auch der aktuell ausgewählte Node ist
    ' MouseDown wird vor dem Drag and Drop Event ausgeführt

    ' TreeView1.HitTest verlangt in VBA (vermutl. abweichend zu VB) die x und y Koordinate in TWIPS (Twentieth of an Inch Point) also 1 / 1400 Zoll
    ' http://de.wikipedia.org/wiki/Twip
    Dim XFactor As Double, YFactor As Double
    ' Ermittlung der PPI (PixelPerInch) auf dem Client Rechner
    ' Entspricht im Normalfall den DPI Einstellungen: Desktop -> rechte Maustaste -> Eigenschaften -> Allgemein
    ' 90 = Vertikal  88 = Horizontal
    XFactor = PixelsPerInch(88)
    YFactor = PixelsPerInch(90)
    Set oSelectedNode = TreeView1.HitTest(x * 1440 / XFactor, y * 1440 / YFactor)
    Set TreeView1.DropHighlight = oSelectedNode
    Set TreeView1.SelectedItem = oSelectedNode
End Sub

Private Sub TreeView1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
    ' Popup Menü im TreeView bei klick auf Rechte Maustaste
    Dim oNode As MSComctlLib.Node
    Dim XFactor As Double, YFactor As Double

    If Button <> vbKeyRButton Then Exit Sub
    '    Procedere wie beschrieben
    XFactor = PixelsPerInch(88)
    YFactor = PixelsPerInch(90)
    Set oNode = TreeView1.HitTest(x * 1440 / XFactor, y * 1440 / YFactor)
    '    Kein Node -> kein Popup
    If oNode Is Nothing Then Exit Sub
    '    Popup abhängig von dem gewählten Node:
    CommandBars("PopUp").Controls("Element ausschneiden").Enabled = Not oNode.Parent Is Nothing
    CommandBars("PopUp").Controls("Element löschen (mit Unterelementen)").Enabled = Not oNode.Parent Is Nothing
    CommandBars("PopUp").Controls("Element löschen (ohne Unterelemente)").Enabled = Not oNode.Parent Is Nothing
    CommandBars("PopUp").ShowPopup
End Sub

Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
    '    Hier wird das Drag and Drop durchgeführt
    Dim oNodeNewPosition As MSComctlLib.Node
    Dim XFactor As Double, YFactor As Double

    '    Verschieben des Root-Elements soll nicht möglich sein
    If oSelectedNode.Parent Is Nothing Then Exit Sub
    '    Procedere wie beschrieben
    XFactor = PixelsPerInch(88)
    YFactor = PixelsPerInch(90)
    Set oNodeNewPosition = TreeView1.HitTest(x * 1440 / XFactor, y * 1440 / YFactor)
    '    Cycle verhindern (Drag and Drop auf gleiche Position)
    If oSelectedNode = oNodeNewPosition Then Exit Sub
    If Not oNodeNewPosition Is Nothing Then
        Set oSelectedNode.Parent = oNodeNewPosition
    End If
End Sub

Private Sub TreeView1_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
    '    Higlighting für das Element über das der "Drag" gerade ist
    Dim oNode As MSComctlLib.Node
    Dim XFactor As Double, YFactor As Double

    '    Procedere wie beschrieben
    XFactor = PixelsPerInch(88)
    YFactor = PixelsPerInch(90)
    Set oNode = TreeView1.HitTest(x * 1440 / XFactor, y * 1440 / YFactor)
    If oNode Is Nothing Then Exit Sub
    Set TreeView1.DropHighlight = oNode
End Sub

Public Sub fillTreeView()
    '    TreeView mit Testdaten füllen

    Dim oNode As MSComctlLib.Node
    TreeView1.LineStyle = tvwRootLines
    TreeView1.Nodes.Clear
    Set oNode = TreeView1.Nodes.Add(, , , "AP0: RootElement")
    Set oNode = TreeView1.Nodes.Add(1, tvwChild, , "AP1: Entwicklung")
    Set oNode = TreeView1.Nodes.Add(1, tvwChild, , "AP2: Test")
    Set oNode = TreeView1.Nodes.Add(3, tvwChild, , "AP21: Test Struktur")
    Set oNode = TreeView1.Nodes.Add(2, tvwChild, , "AP12: Entwicklung Software")
    Set oNode = TreeView1.Nodes.Add(3, tvwChild, , "AP22: Test Verhalten")
    For Each oNode In TreeView1.Nodes
        oNode.EnsureVisible
    Next
    TreeView1.OLEDragMode = ccOLEDragAutomatic
    TreeView1.OLEDropMode = ccOLEDropManual
End Sub

Private Sub UserForm_Click()

End Sub

Private Sub UserForm_Initialize()

    Dim i       As Long
    Dim ii      As Long
    Dim iii     As Long

    ' TreeView mit ein paar Parent- und Child-
    ' Elementen füllen
    With Me.TreeView1
        For i = 1 To 5
            ' Hauptknoten (Parent-Nodes)
            .Nodes.Add , tvwFirst, "MainNode_" & i, _
                "MainNode_" & i

            For ii = 1 To 10
                ' Unterkonten (Child-Nodes)
                Me.TreeView1.Nodes.Add "MainNode_" & i, _
                    tvwChild, "Child_" & i & "_" & ii, _
                    "Child_" & i & "_" & ii

                ' Und Unter-Unterknoten
                For iii = 1 To 5
                    Me.TreeView1.Nodes.Add "Child_" & i & "_" & ii, _
                        tvwChild, "Child_" & i & "_" & ii & "_" & iii, _
                        "Child_" & i & "_" & ii & "_" & iii
                Next iii
            Next ii
        Next i

        .OLEDragMode = ccOLEDragAutomatic
        .OLEDropMode = ccOLEDropManual
    End With

 With Me.TreeView2
    For i = 1 To 5
        ' Hauptknoten (Parent-Nodes)
        .Nodes.Add , tvwFirst, "MainNode_" & i, _
            "MainNode_" & i

        For ii = 1 To 10
            ' Unterkonten (Child-Nodes)
            Me.TreeView2.Nodes.Add "MainNode_" & i, _
                tvwChild, "Child_" & i & "_" & ii, _
                "Child_" & i & "_" & ii

            ' Und Unter-Unterknoten
            For iii = 1 To 5
                Me.TreeView2.Nodes.Add "Child_" & i & "_" & ii, _
                    tvwChild, "Child_" & i & "_" & ii & "_" & iii, _
                    "Child_" & i & "_" & ii & "_" & iii
            Next iii
        Next ii
    Next i

    .OLEDragMode = ccOLEDragAutomatic
    .OLEDropMode = ccOLEDropManual
End With

End Sub

credits to AndiGast from http://www.office-loesung.de/ftopic280909_0_0_asc.php
(german website)

redpajama_set_name: RedPajamaStackExchange


text:
package coyote.commons;

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.JarURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.StringTokenizer;

/**
 * Collection of utilities to assist working with URIs.
 */
public class UriUtil {

  /** a map of scheme/protocol names to port numbers */
  private static final HashMap<String, Integer> portMap = new HashMap<String, Integer>();

  /** a map of scheme/protocol names to udp-only port numbers */
  private static final HashMap<String, Integer> udpMap = new HashMap<String, Integer>();

  static {
    // Setup the protocol lookup entries for official and well-known ports
    UriUtil.addPort( "applix", 999 ); // UDP
    UriUtil.addPort( "biff", 512 );
    UriUtil.addPort( "bootpc", 68 );
    UriUtil.addPort( "bootps", 67 );
    UriUtil.addPort( "cadlock2", 1000 ); // UDP
    UriUtil.addPort( "chargen", 19 );
    UriUtil.addPort( "courier", 530 ); // experimental
    UriUtil.addPort( "csnet-ns", 105 );
    UriUtil.addPort( "cvc", 1495 ); // Network Console
    UriUtil.addPort( "cvc_hostd", 442 ); // Network Console
    UriUtil.addPort( "cvspserver", 2401 ); // CVS pserver
    UriUtil.addPort( "daytime", 13 );
    UriUtil.addPort( "discard", 9 );
    UriUtil.addPort( "domain", 53 );
    UriUtil.addPort( "dtspc", 6112 ); // CDE subprocess control
    UriUtil.addPort( "echo", 7 );
    UriUtil.addPort( "eklogin", 2105 ); // Kerberos encrypted rlogin
    UriUtil.addPort( "exec", 512 );
    UriUtil.addPort( "finger", 79 );
    UriUtil.addPort( "fs", 7100 ); // Font server
    UriUtil.addPort( "ftp", 21 );
    UriUtil.addPort( "ftp-data", 20 );
    UriUtil.addPort( "hostnames", 101 );
    UriUtil.addPort( "http", 80 );
    UriUtil.addPort( "https", 443 );
    UriUtil.addPort( "imap", 143 );
    UriUtil.addPort( "ingreslock", 1524 );
    UriUtil.addPort( "iso-tsap", 102 );
    UriUtil.addPort( "kerberos", 750 ); // Kerberos key server
    UriUtil.addPort( "kerberos-adm", 749 ); // Kerberos V5 Administration
    UriUtil.addPort( "klogin", 543 ); // Kerberos authenticated rlogin
    UriUtil.addPort( "krb5_prop", 754 ); // Kerberos V5 KDC propogation
    UriUtil.addPort( "kshell", 544 ); // Kerberos authenticated remote shell
    UriUtil.addPort( "ldap", 389 );
    UriUtil.addPort( "ldaps", 636 );
    UriUtil.addPort( "link", 87 );
    UriUtil.addPort( "listen", 2766 ); // System V listener port
    UriUtil.addPort( "loadav", 750 ); // UDP
    UriUtil.addPort( "lockd", 4045 ); // NFS lock daemon/manager
    UriUtil.addPort( "login", 513 );
    UriUtil.addPort( "mail", 25 );
    UriUtil.addPort( "mailto", 25 );
    UriUtil.addPort( "mobile-ip", 434 ); // Mobile-IP
    UriUtil.addPort( "monitor", 561 ); // experimental
    UriUtil.addPort( "name", 42 );
    UriUtil.addPort( "netbios-dgm", 138 ); // NETBIOS Datagram Service
    UriUtil.addPort( "netbios-ns", 137 ); // NETBIOS Name Service
    UriUtil.addPort( "netbios-ssn", 139 ); // NETBIOS Session Service
    UriUtil.addPort( "netstat", 15 );
    UriUtil.addPort( "new-rwho", 550 ); // experimental
    UriUtil.addPort( "news", 144 ); // Window System
    UriUtil.addPort( "nfsd", 2049 ); // NFS server daemon (cots)
    UriUtil.addPort( "nntp", 119 ); // Network News Transfer
    UriUtil.addPort( "notify", 773 ); // UDP
    UriUtil.addPort( "ntp", 123 ); // Network Time Protocol
    UriUtil.addPort( "ock", 1000 ); // UDP
    UriUtil.addPort( "pcserver", 600 ); // ECD Integrated PC board srvr
    UriUtil.addPort( "pop", 110 ); // De-facto POP protocol of choice
    UriUtil.addPort( "pop-2", 109 ); // Post Office
    UriUtil.addPort( "pop2", 109 );
    UriUtil.addPort( "pop3", 110 );
    UriUtil.addPort( "printer", 515 ); // line printer spooler
    UriUtil.addPort( "puprouter", 999 ); // UDP
    UriUtil.addPort( "ripng", 521 );
    UriUtil.addPort( "rje", 77 );
    UriUtil.addPort( "rlogin", 513 );
    UriUtil.addPort( "rlp", 39 ); // UDP Resource Location Protocol RFC 887.
    UriUtil.addPort( "rmonitor", 560 ); // experimental
    UriUtil.addPort( "route", 520 );
    UriUtil.addPort( "rxe", 761 ); // UDP
    UriUtil.addPort( "secureid", 124 ); // UDP
    UriUtil.addPort( "shell", 514 ); // no passwords used
    UriUtil.addPort( "slp", 427 ); // Service Location Protocol, V2
    UriUtil.addPort( "smtp", 25 );
    UriUtil.addPort( "ssh", 22 ); // Secure SHell
    UriUtil.addPort( "sunrpc", 111 );
    UriUtil.addPort( "supdup", 95 );
    UriUtil.addPort( "syslog", 514 );
    UriUtil.addPort( "systat", 11 );
    UriUtil.addPort( "talk", 517 );
    UriUtil.addPort( "tcpmux", 1 );
    UriUtil.addPort( "tell", 754 ); // UDP
    UriUtil.addPort( "telnet", 23 );
    UriUtil.addPort( "tftp", 69 );
    UriUtil.addPort( "time", 37 );
    UriUtil.addPort( "ufsd", 1008 ); // UFS-aware server
    UriUtil.addPort( "uucp", 540 ); // uucp daemon
    UriUtil.addPort( "uucp-path", 117 );
    UriUtil.addPort( "vsinet", 996 ); // UDP
    UriUtil.addPort( "who", 513 );
    UriUtil.addPort( "whois", 43 );
    UriUtil.addPort( "wins", 42 ); // UDP Host Name Server - Microsoft WINS
    UriUtil.addPort( "www", 80 );
    UriUtil.addPort( "www-ldap-gw", 1760 ); // HTTP to LDAP gateway
    UriUtil.addPort( "x400", 103 ); // ISO Mail
    UriUtil.addPort( "x400-snd", 104 );

    // Add the UDP-only protocols
    UriUtil.addUdpPort( "applix", 999 ); // UDP
    UriUtil.addUdpPort( "cadlock2", 1000 ); // UDP
    UriUtil.addUdpPort( "kerberos", 750 ); // Kerberos key server
    UriUtil.addUdpPort( "loadav", 750 ); // UDP
    UriUtil.addUdpPort( "notify", 773 ); // UDP
    UriUtil.addUdpPort( "ock", 1000 ); // UDP
    UriUtil.addUdpPort( "puprouter", 999 ); // UDP
    UriUtil.addUdpPort( "rlp", 39 ); // UDP Resource Location Protocol RFC 887.
    UriUtil.addUdpPort( "rxe", 761 ); // UDP
    UriUtil.addUdpPort( "secureid", 124 ); // UDP
    UriUtil.addUdpPort( "tell", 754 ); // UDP
    UriUtil.addUdpPort( "vsinet", 996 ); // UDP
    UriUtil.addUdpPort( "wins", 42 ); // UDP Host Name Server - Microsoft WINS

    UriUtil.addUdpPort( "mbus", 7943 ); // UDP Micro Bus
  }

  /**
   * Adds a protocol scheme name mapping to a port.
   *
   * @param scheme the scheme portion of a URI/URL that the lookup should use
   * @param port the port number to map to that scheme
   */
  private static void addPort( final String scheme, final int port ) {
    UriUtil.portMap.put( scheme.toLowerCase(), new Integer( port ) );
  }

  /**
   * Adds a UDP-only protocol scheme name mapping to a port.
   *
   * @param scheme the scheme portion of a URI/URL that the lookup should use
   * @param port the port number to map to that scheme
   */
  private static void addUdpPort( final String scheme, final int port ) {
    UriUtil.udpMap.put( scheme.toLowerCase(), new Integer( port ) );
  }

  /**
   * Method clone
   *
   * @param uri
   *
   * @return TODO Complete Documentation
   */
  public static URI clone( final URI uri ) {
    URI retval = null;

    try {
      retval = new URI( uri.toString() );
    } catch ( final URISyntaxException e ) {
      // should always work
      // e.printStackTrace();
    }

    return retval;
  }

  /**
   * Method clone
   *
   * @param url
   *
   * @return TODO Complete Documentation
   */
  public static URL clone( final URL url ) {
    URL retval = null;

    try {
      retval = new URL( url.toString() );
    } catch ( final MalformedURLException e ) {
      // should always work
      // e.printStackTrace();
    }

    return retval;
  }

  /**
   * Return the given query string as a HashMap.
   *
   * @param content the string containing the encoded parameters
   *
   * @return HashMap of query parameters. (Will never be null)
   */
  public static HashMap decodeQuery( final String content ) {
    final HashMap retval = new HashMap();
    UriUtil.queryToMap( content, retval );

    return retval;

  }

  /**
   * Decode String with % encoding.
   *
   * @param encoded
   * @return Decoded string
   */
  public static String decodeString( final String encoded ) {
    final int len = encoded.length();
    final byte[] bytes = new byte[len];
    final char[] characters = encoded.toCharArray();
    int n = 0;
    boolean noDecode = true;

    for ( int i = 0; i < len; i++ ) {
      final char c = characters[i];

      if ( c > 0xff ) {
        throw new IllegalArgumentException( "illegal character at position " + i + " (>255)" );
      }

      byte b = (byte)( 0xff & c );

      if ( c == '+' ) {
        noDecode = false;
        b = (byte)' ';
      } else {
        if ( ( c == '%' ) && ( ( i + 2 ) < len ) ) {
          noDecode = false;
          b = (byte)( 0xff & Integer.parseInt( encoded.substring( i + 1, i + 3 ), 16 ) );
          i += 2;
        }
      }

      bytes[n++] = b;
    }

    if ( noDecode ) {
      return encoded;
    }

    return new String( bytes, 0, n );
  }

  /**
   * Perform URL encoding.
   *
   * @param string
   * @return encoded string.
   */
  public static String encodeString( final String string ) {
    byte[] bytes = null;
    bytes = string.getBytes();

    final int len = bytes.length;
    final byte[] encoded = new byte[bytes.length * 3];
    int n = 0;
    boolean noEncode = true;

    for ( int i = 0; i < len; i++ ) {
      final byte b = bytes[i];

      if ( b == ' ' ) {
        noEncode = false;
        encoded[n++] = (byte)'+';
      } else {
        if ( ( ( b >= 'a' ) && ( b <= 'z' ) ) || ( ( b >= 'A' ) && ( b <= 'Z' ) ) || ( ( b >= '0' ) && ( b <= '9' ) ) ) {
          encoded[n++] = b;
        } else {
          noEncode = false;
          encoded[n++] = (byte)'%';

          byte nibble = (byte)( ( b & 0xf0 ) >> 4 );

          if ( nibble >= 10 ) {
            encoded[n++] = (byte)( 'A' + nibble - 10 );
          } else {
            encoded[n++] = (byte)( '0' + nibble );
          }

          nibble = (byte)( b & 0xf );

          if ( nibble >= 10 ) {
            encoded[n++] = (byte)( 'A' + nibble - 10 );
          } else {
            encoded[n++] = (byte)( '0' + nibble );
          }
        }
      }
    }

    if ( noEncode ) {
      return string;
    }

    return new String( encoded, 0, n );
  }

  /**
   * Return a file reference for the given URI if it is a file or jar URI
   *
   * @param uri the URI to process
   *
   * @return the file path portion of the URI or null if it is not a FILE or JAR URI
   */
  public static File getFile( final URI uri ) {
    if ( uri == null ) {
      return null;
    }

    if ( UriUtil.isFile( uri ) || UriUtil.isJar( uri ) ) {
      return new File( UriUtil.getFilePath( uri ) );
    }

    return null;

  }

  /**
   * Return a file reference for the given URL
   *
   * @param url
   *
   * @return TODO Complete Documentation
   */
  public static File getFile( final URL url ) {
    try {
      return UriUtil.getFile( new URI( url.toString() ) );
    } catch ( final URISyntaxException e ) {
      // should never happen since URL is a subset of URI
      System.err.println( "Could not convert '" + url.toString() + "' to a URI" );
      e.printStackTrace();
    }

    return null;
  }

  /**
   * This returns a path suitable for the local file system
   *
   * @param uri the URI to process
   *
   * @return a path suitable for the local file system
   */
  public static String getFilePath( final URI uri ) {
    if ( uri == null ) {
      return null;
    }

    final StringBuffer buffer = new StringBuffer();

    if ( uri.getScheme().equalsIgnoreCase( "jar" ) ) {
      try {
        String retval = null;

        if ( uri.getSchemeSpecificPart().toLowerCase().startsWith( "file" ) ) {
          final URI furi = new URI( uri.getSchemeSpecificPart() );

          // recursive call to get the file path
          retval = UriUtil.getFilePath( furi );

          if ( retval != null ) {
            final int ptr = retval.indexOf( '!' );

            if ( ptr > -1 ) {
              retval = retval.substring( 0, ptr );
            }
          }

          if ( ( retval != null ) && ( retval.length() > 0 ) ) {
            return retval;
          }

          return null;
        } else {
          return new File( uri.getSchemeSpecificPart() ).getAbsolutePath();
        }
      } catch ( final Exception e ) {
        System.err.println( "File reference within jar URI is invalid: " + e.getMessage() );
      }
    } else if ( uri.getScheme().equalsIgnoreCase( "file" ) ) {
      if ( uri.getAuthority() != null ) {
        buffer.append( uri.getAuthority() );
      }
    }

    // get the path from the URI
    buffer.append( uri.getPath() );

    // Windows drive specifiers don't need the root '/'
    if ( ( buffer.charAt( 2 ) == ':' ) && ( buffer.charAt( 0 ) == '/' ) ) {
      buffer.delete( 0, 1 );
    }

    // return a normalize the path
    return normalizePath( buffer.toString() );

  }

  /**
   * Remove duplicate file separators, remove relation dots and correct all
   * non-platform specific file separators to those of the current platform.
   *
   * @param path The path to normalize
   *
   * @return The normalized path
   */
  public static String normalizePath( String path ) {
    path = normalizeSlashes( path );
    path = removeRelations( path );

    return path;
  }

  /**
   * Replace all the file separator characters (either '/' or '\') with the
   * proper file separator for this platform.
   *
   * @param path the path to process
   *
   * @return string representing the normalized path for this platform
   */
  public static String normalizeSlashes( String path ) {
    if ( path == null ) {
      return null;
    } else {
      path = path.replace( '/', File.separatorChar );
      path = path.replace( '\\', File.separatorChar );

      return path;
    }
  }

  /**
   * Remove the current and parent directory relation references from the given
   * path string.
   *
   *
Takes a string like "\home\work\bin\..\lib" and returns a
   * path like "\home\work\lib"
   *
   * @param path The representative path with possible relational dot notation
   *
   * @return The representative path without the dots
   */
  public static String removeRelations( final String path ) {
    if ( path == null ) {
      return null;
    } else if ( path.length() == 0 ) {
      return path;
    } else {
      // Break the path into tokens and skip any '.' tokens
      final StringTokenizer st = new StringTokenizer( path, "/\\" );
      final String[] tokens = new String[st.countTokens()];

      int i = 0;

      while ( st.hasMoreTokens() ) {
        final String token = st.nextToken();

        if ( ( token != null ) && ( token.length() > 0 ) && !token.equals( "." ) ) {
          // if there is a reference to the parent, then just move back to the
          // previous token in the list, which is this tokens parent
          if ( token.equals( ".." ) ) {
            if ( i > 0 ) {
              tokens[--i] = null;
            }
          } else {
            tokens[i++] = token;
          }
        }
      }

      // Start building the new path from the tokens
      final StringBuffer retval = new StringBuffer();

      // If the original path started with a file separator, then make sure the
      // return value starts the same way
      if ( ( path.charAt( 0 ) == '/' ) || ( path.charAt( 0 ) == '\\' ) ) {
        retval.append( File.separatorChar );
      }

      // For each token in the path
      if ( tokens.length > 0 ) {
        for ( i = 0; i < tokens.length; i++ ) {
          if ( tokens[i] != null ) {
            retval.append( tokens[i] );
          }

          // if there is another token on the list, use the platform-specific
          // file separator as a delimiter in the return value
          if ( ( i + 1 < tokens.length ) && ( tokens[i + 1] != null ) ) {
            retval.append( File.separatorChar );
          }
        }
      }

      if ( ( path.charAt( path.length() - 1 ) == '/' ) || ( ( path.charAt( path.length() - 1 ) == '\\' ) && ( retval.charAt( retval.length() - 1 ) != File.separatorChar ) ) ) {
        retval.append( File.separatorChar );
      }

      return retval.toString();
    }
  }

  /**
   * Return just the host portion of the URI if applicable.
   *
   * @param uri The URI to parse
   *
   * @return The host portion of the authority.
   */
  public static String getHost( final URI uri ) {
    String retval = uri.getHost();

    // The most common reason for getHost failure is that a port was not
    // defined in the URI making it hard for the URI class to figure out which
    // part of the authority is the host portion. We assume anything infront of
    // the colon is the host.
    if ( ( retval == null ) && ( uri.getAuthority() != null ) ) {
      // The authority is usually in the form of XXXX:999 as in "myhost:-1"
      final String text = uri.getAuthority();
      final int ptr = text.indexOf( ':' );

      if ( ptr > -1 ) {
        // just return the host portion
        retval = text.substring( 0, ptr );
      }
    }

    return retval;
  }

  /**
   * Get the address of the host.
   *
   *
NOTE: This may take a long time as it will perform a DNS lookup
   * which can take several seconds!
   *
   *
   * @param uri
   *
   * @return The InetAddress of the host specified in the URI. Will return null
   *         if DNS lookup fails, if the URI reference is null or if no host is
   *         specified in the URI.
   */
  public static InetAddress getHostAddress( final URI uri ) {
    if ( uri != null ) {
      final String host = uri.getHost();

      if ( host != null ) {
        try {
          return InetAddress.getByName( host );
        } catch ( final Exception exception ) {}
      }
    }

    return null;
  }

  /**
   * Method getPassword
   *
   * @param uri
   *
   * @return TODO Complete Documentation
   */
  public static String getPassword( final URI uri ) {
    String retval = null;

    if ( uri != null ) {
      final String userInfo = uri.getUserInfo();

      if ( ( userInfo != null ) && ( userInfo.length() > 0 ) ) {
        if ( userInfo.indexOf( ':' ) > -1 ) {
          retval = userInfo.substring( userInfo.indexOf( ':' ) + 1 );
        }

        if ( ( retval != null ) && ( retval.length() > 0 ) ) {
          return retval;
        }
      }
    }

    return retval;
  }

  /**
   * Method getPort
   *
   * @param scheme
   *
   * @return TODO Complete Documentation
   */
  public static int getPort( final String scheme ) {
    if ( UriUtil.portMap.containsKey( scheme.toLowerCase() ) ) {
      return ( (Integer)UriUtil.portMap.get( scheme.toLowerCase() ) ).intValue();
    }

    return 0;
  }

  /**
   * Return the port specified by the given URI.
   *
   *
If there is no port specified in the URI, this code will attempt to
   * determine the port based upon the scheme portion of the argument URI.
   *
   * @param uri The URI to parse
   *
   * @return The port specified or implied by the URI, or 0 (zero) if the URI
   *         could not be determined. Note that it is possible that the URI did
   *         specify a port of zero, so don't assume a return value of zero
   *         indicates no port was specified.
   */
  public static int getPort( final URI uri ) {
    if ( uri.getPort() < 0 ) {
      return UriUtil.getPort( uri.getScheme() );
    }

    return uri.getPort();
  }

  /**
   * Return the port specified by the uri as a string.
   *
   * @param uri
   * @return TODO Complete Documentation
   */
  public static String getPortString( final URI uri ) {
    String retval = null;

    if ( uri.getPort() < 0 ) {
      return retval;
    }

    retval = Integer.toString( uri.getPort() );

    return retval;
  }

  /**
   * Determine the TCP URI to use when constructing a javax.net.SocketFactory
   * and a javax.net.ServerSocketFactory.
   *
   *
If the protocol of the URI is "https", (case insensitive) then
   * a new URI will be returned with "ssl" as the protocol, the same
   * hostname and port, but with the rest blank.
   *
   * @param uri
   *
   * @return TODO Complete Documentation
   */
  public static URI getTCPURI( final URI uri ) {
    URI retval = null;

    try {
      final String scheme = uri.getScheme();

      if ( scheme != null ) {
        if ( scheme.equalsIgnoreCase( "https" ) || scheme.equalsIgnoreCase( "tls" ) ) {
          retval = new URI( "ssl://" + uri.getHost() + ":" + uri.getPort() );
        } else {
          retval = new URI( "tcp://" + uri.getHost() + ":" + uri.getPort() );
        }
      }
    } catch ( final URISyntaxException e ) {
      // e.printStackTrace();
    }

    return retval;
  }

  /**
   * Method getUser
   *
   * @param uri
   *
   * @return TODO Complete Documentation
   */
  public static String getUser( final URI uri ) {
    String retval = null;

    if ( uri != null ) {
      final String userInfo = uri.getUserInfo();

      if ( ( userInfo != null ) && ( userInfo.length() > 0 ) ) {
        final int ptr = userInfo.indexOf( ':' );

        if ( ptr > -1 ) {
          if ( ptr > 0 ) {
            // return is everything up to the delimiter
            retval = userInfo.substring( 0, userInfo.indexOf( ':' ) );
          } else {
            // empty field - return null instead of an empty string
            return retval;
          }
        } else {
          retval = userInfo;
        }

        if ( ( retval != null ) && ( retval.length() > 0 ) ) {
          return retval;
        }
      }
    }

    return retval;
  }

  /**
   * Returns a Hashtable of name-value pairs from the query portion of the
   * given URI.
   *
   *
This method will always return a hashtable even if the URI does not
   * contain a query string. In such cases, the Hashtable will be empty.
   *
   * @param uri The HTTP query string to parse
   *
   * @return a hashtable whose values are String[]s and keys are parameter name
   *         Strings.
   */
  public static Hashtable getParametersAsHashtable( URI uri ) {
    if ( uri.getQuery() != null ) {
      return getParametersAsHashtable( uri.getQuery() );
    }

    return new Hashtable();
  }

  /**
   * Read a query string and return a hashtable containing an array of value
   * strings keyed by parameter name.
   *
   *
This method will always return a hashtable even if the URI does not
   * contain a query string. In such cases, the Hashtable will be empty.
   *
   *
Before parsing the query string, a check is made to determine if the
   * query delimiter exists in the string. If one does, only the data after the
   * LAST occurence of the '?' is parsed.
   *
   * @param query The HTTP query string to parse
   *
   * @return a hashtable whose values are String[]s and keys are parameter name
   *         Strings.
   */
  public static Hashtable getParametersAsHashtable( String query ) {
    String data = query;

    // Make sure the data does not contain the Question mark
    if ( data.indexOf( '?' ) > -1 ) {
      // Just use the last query string
      data = query.substring( query.lastIndexOf( '?' ) + 1 );
    }

    // Create a new String parser
    StringParser parser = new StringParser( data, "=&" );

    Hashtable retval = new Hashtable();

    String name = null;
    String value = null;

    try {
      while ( !parser.eof() ) {
        name = decodeString( parser.readToken() ).trim();

        // Handle ?name where there is no value for the named parameter
        if ( !parser.eof() ) {
          int i = parser.readChar();

          if ( i == '=' ) {
            // check for null value
            int next = parser.peek();

            if ( next == '&' ) {
              // apparently we read PARAMETER=& so "PARAMETER" has been defined,
              // but there is no value as the next character is a name-value
              // delimiter. Assume an empty value and not a null value as the
              // name would not be given unless some kind of value is implied.
              value = "";
            } else {
              // Decode everything until the next name-value delimiter or EOF
              value = decodeString( parser.readToDelimiter( "&" ) ).trim();
            }

            // as long as we are not at the end of out data stream...
            if ( !parser.eof() ) {
              // ...read past(consume) the name-value delimiter
              parser.read();
            }
          }
        } else {
          // Oops! parameter ended prematurely, assigning empty string ''
          value = "";
        }

        // Add it to our array
        String array[] = (String[])retval.get( name );

        if ( array == null ) {
          // This is the first occurence of the named parameter
          retval.put( name, new String[] { value } );
        } else {
          // This is a subsequent occurence of the named parameter
          retval.put( name, ArrayUtil.addElement( array, value ) );
        }
      }
    } catch ( IOException ioe ) {
      // Log.warn( "Error parsing query parameters: " + ioe.getMessage() );
      // Log.debug( "Error parsing query parameters at " + parser.getPosition() );
    }

    return retval;
  }

  /**
   * Method hasLocalHost
   *
   * @param uri
   * @return TODO Complete Documentation
   */
  public static boolean hasLocalHost( final URI uri ) {
    // Get the host part of the URI
    final String host = uri.getHost();

    // No host implies a local (relative) URI
    if ( host == null ) {
      return true;
    } else {
      // Try to see if the host is one of the standard names
      if ( host.equalsIgnoreCase( "localhost" ) || host.equals( "127.0.0.1" ) || host.equals( "0.0.0.0" ) ) {
        return true;
      } else {
        // the obvious hostnames have been tested, now try to match addresses
        try {
          final InetAddress laddr = InetAddress.getLocalHost();
          final String localHostAddress = laddr.getHostAddress();

          if ( localHostAddress == null ) {
            // Could not determine the accress of this host, assume no match
            return false;
          } else {
            // Attempt to resolve the dotted-quad address of the host
            InetAddress haddr = null;
            String hostAddress = null;

            try {
              haddr = InetAddress.getByName( host );
              hostAddress = haddr.getHostAddress();
            } catch ( final Throwable t ) {
              return false;
            }

            if ( hostAddress != null ) {
              // one last check
              if ( hostAddress.equals( "127.0.0.1" ) || host.equals( "0.0.0.0" ) ) {
                return true;
              } else {
                // Match the two IP addresses
                return hostAddress.equalsIgnoreCase( localHostAddress );
              }
            }
          }
        } catch ( final UnknownHostException ignore ) {}
      }
    }

    // Defaults to false
    return false;
  }

  /**
   * Is the URI representing a file??
   *
   * @param uri the URI to process
   *
   * @return true if the URI is representing a file, false otherwise
   */
  public static boolean isFile( final URI uri ) {
    if ( ( uri != null ) && ( uri.getScheme() != null ) ) {
      return uri.getScheme().equalsIgnoreCase( "file" );
    }

    return false;
  }

  /**
   * Is the URL representing a file??
   *
   * @param url
   * @return True if the URL is representing a file
   */
  public static boolean isFile( final URL url ) {
    if ( ( url != null ) && ( url.getProtocol() != null ) ) {
      return url.getProtocol().equalsIgnoreCase( "file" );
    }

    return false;
  }

  /**
   * Is the URI representing a JAR file?
   *
   * @param uri the URI to process
   *
   * @return true if the URI is representing a JAR file, false otherwise
   */
  public static boolean isJar( final URI uri ) {
    if ( ( uri != null ) && ( uri.getScheme() != null ) ) {
      return uri.getScheme().equalsIgnoreCase( "jar" );
    }

    return false;
  }

  /**
   * Is the URL representing a JAR file??
   *
   *
   * @param url
   * @return True if the URL is representing a JAR file
   */
  public static boolean isJar( final URL url ) {
    if ( ( url != null ) && ( url.getProtocol() != null ) ) {
      return url.getProtocol().equalsIgnoreCase( "jar" );
    }

    return false;
  }

  /**
   * Returns if the scheme can represent a TCP service.
   *
   *
This only returns true of is UDP returns false, as there is a very
   * short list of schemes that are UDP-only. This means that a scheme of 'dns'
   * wil return true as it is not a UDP-only service and can translate to a TCP
   * port.
   *
   * @param uri
   * @return TODO Complete Documentation
   */
  public static boolean isTcp( final URI uri ) {
    if ( ( uri != null ) && ( uri.getScheme() != null ) ) {
      return ( UriUtil.portMap.containsKey( uri.getScheme() ) && !UriUtil.udpMap.containsKey( uri.getScheme() ) );
    }

    return false;
  }

  /**
   * Is the URI representing a UDP-only scheme?
   *
   *
If the URI starts with UDP or one of the other of a short list of
   * schemes that represent a UDP-only service, then this will return true.
   *
   * @param uri
   *
   * @return True if the URI represents a UDP scheme, false otherwise or if URL
   *         is null.
   */
  public static boolean isUdp( final URI uri ) {
    if ( ( uri != null ) && ( uri.getScheme() != null ) ) {
      return ( uri.getScheme().equalsIgnoreCase( "udp" ) || UriUtil.udpMap.containsKey( uri.getScheme().toLowerCase() ) );
    }

    return false;
  }

  /**
   * Provide a no-exception throwing URI creation convenience method.
   *
   *
This is handy for use in declarations and other static contexts where a
   * null check is fine for checking for a valid URI or URI syntax.
   *
   *
 Consider:

   * if( UriUtil.parse( text ) != null )
   * {
   *   System.out.println( "The text '" + text + "' represents a valid URI" );
   * }
   *
 As opposed to:

   * try
   * {
   *   new URI( text );
   *   System.out.println( "The text '" + text + "' represents a valid URI" );
   * }
   * catch( URISyntaxException use )
   * {
   *   // ignore
   * }
   *

   *
   *
   * @param text The text to parse into a URI
   *
   * @return The URI object created from the text or null if the text could not
   *         be parsed into a valid URI.
   */
  public static URI parse( final String text ) {
    URI retval = null;

    try {
      retval = new URI( text );
    } catch ( final URISyntaxException use ) {
      // Ignore and return null
    }

    return retval;
  }

  /**
   * Decoded parameters to a HashMap.
   *
   * @param query the string containing the encoded parameters
   * @param map The hashmap to populate with the query
   */
  public static void queryToMap( final String query, final HashMap map ) {
    if ( map != null ) {
      synchronized( map ) {
        String token;
        String name;
        String value;
        final StringTokenizer tokenizer = new StringTokenizer( query, "&", false );

        while ( ( tokenizer.hasMoreTokens() ) ) {
          token = tokenizer.nextToken();

          // breaking it at the "=" sign
          int i = token.indexOf( '=' );

          if ( i < 0 ) {
            name = UriUtil.decodeString( token );
            value = "";
          } else {
            name = UriUtil.decodeString( token.substring( 0, i++ ) );

            if ( i >= token.length() ) {
              value = "";
            } else {
              value = UriUtil.decodeString( token.substring( i ) );
            }
          }

          // Add value to the map
          if ( name.length() > 0 ) {
            map.put( name, value );
          }
        }
      }
    }
  }

  /**
   * Returns a Hashtable of name-value pairs from the query portion of the
   * given URI.
   *
   *
This method will always return a hashtable even if the URI does not
   * contain a query string. In such cases, the Hashtable will be empty.
   *
   * @param uri The HTTP query string to parse
   *
   * @return a hashtable whose values are String[]s and keys are parameter name
   *         Strings.
   *
  public static Hashtable getParametersAsHashtable( final URI uri )
  {
    if( uri.getQuery() != null )
    {
      return UriUtil.getParametersAsHashtable( uri.getQuery() );
    }

    return new Hashtable();
  }
  */

  /**
   * Read a query string and return a hashtable containing an array of value
   * strings keyed by parameter name.
   *
   *
This method will always return a hashtable even if the URI does not
   * contain a query string. In such cases, the Hashtable will be empty.
   *
   *
Before parsing the query string, a check is made to determine if the
   * query delimiter exists in the string. If one does, only the data after the
   * LAST occurence of the '?' is parsed.
   *
   * @param query The HTTP query string to parse
   *
   * @return a hashtable whose values are String[]s and keys are parameter name
   *         Strings.
   *
  public static Hashtable getParametersAsHashtable( final String query )
  {
    String data = query;

    // Make sure the data does not contain the Question mark
    if( data.indexOf( '?' ) > -1 )
    {
      // Just use the last query string
      data = query.substring( query.lastIndexOf( '?' ) + 1 );
    }

    // Create a new String parser
    final StringParser parser = new StringParser( data, "=&" );

    final Hashtable retval = new Hashtable();

    String name = null;
    String value = null;

    try
    {
      while( !parser.eof() )
      {
        name = UriUtil.decodeString( parser.readToken() ).trim();

        // Handle ?name where there is no value for the named parameter
        if( !parser.eof() )
        {
          final int i = parser.readChar();

          if( i == '=' )
          {
            // check for null value
            final int next = parser.peek();

            if( next == '&' )
            {
              // apparently we read PARAMETER=& so "PARAMETER" has been defined,
              // but there is no value as the next character is a name-value
              // delimiter. Assume an empty value and not a null value as the
              // name would not be given unless some kind of value is implied.
              value = "";
            }
            else
            {
              // Decode everything until the next name-value delimiter or EOF
              value = UriUtil.decodeString( parser.readToDelimiter( "&" ) ).trim();
            }

            // as long as we are not at the end of out data stream...
            if( !parser.eof() )
            {
              // ...read past(consume) the name-value delimiter
              parser.read();
            }
          }
        }
        else
        {
          // Oops! parameter ended prematurely, assigning empty string ''
          value = "";
        }

        // Add it to our array
        final String array[] = (String[])retval.get( name );

        if( array == null )
        {
          // This is the first occurence of the named parameter
          retval.put( name, new String[] { value } );
        }
        else
        {
          // This is a subsequent occurence of the named parameter
          retval.put( name, ArrayUtil.addElement( array, value ) );
        }
      }
    }
    catch( final IOException ioe )
    {
      // Log.warn( "Error parsing query parameters: " + ioe.getMessage() );
      // Log.debug( "Error parsing query parameters at " + parser.getPosition() );
    }

    return retval;
  }

  */

  /**
   * Read in the bytes from the resource defined by the given URI.
   *
   * @param uri URI defining where the resource is.
   *
   * @return the data contained in the resource.
   *
   * @throws IOException if problems were experienced accessing the resource.
   */
  public static byte[] read( final URI uri ) throws Exception {
    return UriUtil.read( new URL( uri.toString() ) );
  }

  /**
   * Read in all the bytes from the resource defined by the given URL.
   *
   * @param url URL defining where the resource is.
   *
   * @return the data contained in the resource.
   *
   * @throws IOException if problems were experienced accessing the resource.
   */
  public static byte[] read( final URL url ) throws IOException {
    byte[] retval = new byte[0];
    final String text = url.toString().toLowerCase();

    if ( text.startsWith( "jar:" ) ) {
      final JarURLConnection jarConnection = (JarURLConnection)url.openConnection();
      jarConnection.setDoInput( true );
      jarConnection.setUseCaches( false );
      jarConnection.connect();

      if ( jarConnection.getEntryName() != null ) {
        retval = UriUtil.readFully( jarConnection.getInputStream() );
      }

      jarConnection.getInputStream().close();
    } else if ( text.startsWith( "file:" ) ) {
      final File file = UriUtil.getFile( url );

      if ( file.exists() ) {
        if ( file.canRead() ) {
          DataInputStream dis = null;
          final byte[] bytes = new byte[new Long( file.length() ).intValue()];

          try {
            dis = new DataInputStream( new FileInputStream( file ) );

            dis.readFully( bytes );

            return bytes;
          } catch ( final IOException ex ) {
            throw ex; // re-throw
          }
          finally {
            // Attempt to close the data input stream
            try {
              if ( dis != null ) {
                dis.close();
              }
            } catch ( final Exception ignore ) {}
          }
        } else {
          throw new IOException( "Can not read file: " + file.getAbsolutePath() );
        }
      } else {
        throw new IOException( "File Not Found: " + file.getAbsolutePath() );
      }
    } else {
      final URLConnection conn = (URLConnection)url.openConnection();
      conn.setDoInput( true );
      conn.setUseCaches( false );
      conn.connect();
      retval = UriUtil.readFully( conn.getInputStream() );
      conn.getInputStream().close();
    }

    return retval;
  }

  /**
   * Get all the bytes from the given input stream.
   *
   * @param inputstream The stream to read
   *
   * @return The bytes read in.
   *
   * @throws IOException
   */
  static byte[] readFully( final InputStream inputstream ) throws IOException {
    final byte bytes[] = new byte[4096];
    final ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();

    do {
      final int i = inputstream.read( bytes, 0, bytes.length );

      if ( i != -1 ) {
        bytearrayoutputstream.write( bytes, 0, i );
      } else {
        return bytearrayoutputstream.toByteArray();
      }
    }
    while ( true );
  }

  /**
   * Constructor UriUtil
   */
  private UriUtil() {
    super();
  }

}

redpajama_set_name: RedPajamaGithub


text:
Hair-raising research suggests too many fizzy drinks may cause baldness
Scientists claim to be the first to find evidence of a connection between sugary beverages and male pattern hair loss
A study of more than 1,000 men has linked hair loss to consumption of sugar-filled drinks. Photo: Unsplash
Daniel Bardsley
Too many fizzy drinks may leave a bitter taste for men, according to a study suggesting they could accelerate hair loss.
Researchers in China claim to be the first to have found a scientific link between the consumption of large amounts of sugar-sweetened beverages (SSBs) and male-pattern hair loss (MPHL), also known as male-pattern baldness.
They quizzed more than 1,000 men online and found that those who experienced hair loss tended to drink much larger amounts of sugary drinks.
"We found that high SSB consumption is associated with a higher risk of MPHL" the researchers, from Tsinghua University in Beijing, wrote in the journal Nutrients.
"We recommend more support to decrease SSB consumption among young people to minimise negative health outcomes."
The findings for the study were based on online responses from 1,028 Chinese men aged 18 to 45, of whom 592 had hair loss.
What else causes baldness?
A host of other factors have been blamed for hair loss. Here are several key ones:
Fat: Researchers in Japan found that a high-fat diet was associated with hair loss, but the results came from studies on mice, so may not be directly applicable to humans.
Stress: The Mayo Clinic in the US has highlighted several ways in which stress may lead to hair loss, including that it causes the body's immune system to attack hair follicles, resulting in a condition called alopecia areata.
Researchers in Japan found that a high-fat diet was associated with hair loss. AP
Fish: Eating some types of fish, notably swordfish and other types of predatory fish, may cause baldness because these fish tend to have high mercury levels.
Hair treatments: Hair can become weak and brittle, causing it to thin, because of shampooing too often, bleaching and dyeing. Reports indicate that hot curlers and other treatments can also cause damage, although typically this is reversible.
Carbohydrates: Tying in with the new research on sugary drinks, simple carbohydrates including refined sugars may cause inflammation that results in hair loss, studies have suggested. Grains may also play a role.
Using language that might be seen as insensitive to the "follicly-challenged", the researchers described the other 436 participants, who were not losing their hair, as belonging to the "normal" group.
Analysing data about drink consumption and whether participants were or were not bald showed "a significant association" between baldness and consuming sugar-sweetened drinks.
Bald people drank an average of almost 4.3 litres of sugar-sweetened drinks each week, compared to just over 2.5 litres among the normal group.
Many beverages were looked at, including soft drinks, energy drinks, juices with added sugar, sweet milk and sweet tea and coffee. All were linked to hair loss, except sweet tea and coffee, which were found to have a protective effect.
Boost for tea and coffee drinkers
The caffeine in these drinks may overcome the negative effects of the sugar and explain why they seem to reduce the likelihood of baldness.
In the UAE the authorities have tried to reduce the consumption of sugary drinks as a way of improving health, with a 50 per cent purchase tax having been introduced in 2019.
As well as identifying this apparent link between hair loss and most sugary drinks, the researchers also offered explanations as to how the beverages may cause younger men to be more likely to lose their hair.
A key mechanism they suggested was that gulping down fizzy drinks increases the concentration of glucose in the blood, which triggers something known as the polyol pathway, in which glucose is converted to other substances.
Coffee and tea could boost your hair growth. Rex Features
Several biochemical processes are at play, but the net result is that less energy is available to cells called keratinocytes in the outer root sheath of hairs.
"Lack of energy in outer root sheath keratinocytes is considered a possible cause of MPHL," the researchers wrote.
The researchers said that there had been only one previous study looking at sugary drinks and hair loss, and this did not find a link, possibly because no distinction was made between different types of beverages.
Research backs up findings
However, well before the latest study, people have been suggesting a connection between baldness and fizzy drinks.
Dr Lipy Gupta, an Indian dermatologist, has written that carbonated drinks may contribute to hair loss because they interact with insulin in the blood and "make it less responsive to sugar".
"This leads to an increase in the sugar in your bloodstream, which later goes on to hamper your blood circulation and lower the nutrient supply to your hair follicles, causing hair loss," she wrote, offering an explanation similar to that given by the authors of the new study.
Also, in an online briefing document, the Belgravia Centre, a hair-loss clinic in London, said that the sugar in soft drinks may affect levels of the hormone cortisone, which in turn influences stress, a major contributor to hair loss.
The clinic also rejected suggestions that rinsing hair in a fizzy drink such as Coca-Cola was a good way of making hair look thicker, following reports that some models do this.
Rinsing hair with "such harsh chemicals", the clinic said, was "definitely inadvisable", as it may remove essential oils and disrupt the keratin in hair strands, causing them to break.

redpajama_set_name: RedPajamaCommonCrawl


text:
State Report Showing No Elevations of Cancer in Hoosick Falls Criticized for Narrow Scope
The New York State Department of Health recently released a Cancer Incidence Investigation report that found no significant elevations of cancer for any of the cancer types associated with exposure to PFOA.
The Department of Health studied data from New York State's Cancer Registry between the dates of January 1995 through December 2014 to analyze cancers diagnosed among residents of Hoosick Falls.
The investigation reported lower rates of certain types of cancer that have been linked to long-term PFOA exposure, including kidney, thyroid and testicular cancers.
A significantly elevated rate of lung cancer, which has not been linked to PFOA exposure, was however reported. There were 91 cases of lung cancer found during the study period – much higher than the expected rate of 65 cases for a population of this size.
Critics found the investigation to be flawed as it did not take into account the Hoosick Falls residents who were diagnosed with cancer after moving away from the village.
The report also fails to indicate whether cancer rates were specifically reviewed among individuals whose blood contained elevated levels of PFOA.
"The purpose of the investigation was to determine whether village residents who consumed contaminated water had increased rates of cancer relative to the rest of the state," stated deputy commissioner for public health Brad Hutton.
Residents who live in the town of Hoosick surrounding the village were also not included in the study. The Department of Health stated that it limited its investigation to village residents since their level of exposure to PFOA was consistent.
Additionally, the study was limited to cancer and ignored other health conditions that have been linked to high exposure of PFOA, such as preeclampsia, colitis, thyroid disease, high cholesterol and respiratory problems.
Read the DOH Cancer Report Summary for more information.
The full article can be viewed here.
Topics: Hoosick Falls Water Contamination | Tags: Department of Health, Faraci Lange, Hadley Matarazzo, Hoosick Falls, New York State, New York State Department of Health, PFOA, PFOA contamination, PFOA exposure, PFOA health effects, PFOA Water Contamination, Stephen Schwarz, Toxic Chemical Exposure, Toxic Chemical Exposure attorney, Upstate NY water contamination, water contamination
More Health Harms from PFOA Found
New studies have came out recently that show more harmful effects of PFOA exposure on mothers and their children.
Four studies that have been conducted by Harvard researchers and other leading journals to look into highly fluorinated chemicals such as PFOA.
"These chemicals have some of the strongest bonds in the periodic table, and they basically never break down, so they stay around for millions of years," said Arlene Blum from the University of California, Berkeley-based Green Science Policy Institute.
Several kinds of cancer, high cholesterol and obesity are some of the harmful health effects associated with PFOA exposure.
It was also found that young children who are exposed to the chemical PFOA have a reduced immune response to vaccinations. Furthermore, as children grow older, they may experience other problems such as more colds and upset stomachs.
Another study discovered that women who had high levels of PFOA in their blood were not able to breastfeed as long as other women.
Attorneys Stephen Schwarz and Hadley Matarazzo at Faraci Lange, as well as Robin Greenwald at Weitz & Luxenberg, represent the plaintiffs as co-lead counsel in the Hoosick Falls lawsuit.
Topics: Hoosick Falls Water Contamination | Tags: EPA, Faraci Lange, Hadley Matarazzo, Hoosick Falls, Hoosick Falls NY, Hoosick Falls Water Contamination, Hoosick Falls Water Contamination Lawsuit, Hoosick PFOA Water Contamination, Hoosick Water Contamination, Perfluorooctanoic acid, PFOA, PFOA health effects, PFOA Water Contamination, Stephen Schwarz, Toxic Chemical Exposure attorney
Hoosick Falls Update: EPA Soil Sampling at Ballfields
The U.S. Environmental Protection Agency announced today that it will be testing soil samples from three ballfields in the village of Hoosick Falls that are located near a possible source of the town's recent PFOA water contamination.
The sample testing will determine if the PFOA that was released into the air in the past from local facilities also contaminated the soil on the village's ballfields due to their close proximity to the suspected source. Testing the ballfields will also show if the area had been used for disposal in the past.
This test will consist of samples taken at seven different locations on the three fields, as well as their dugout and bleacher areas. These samples will be tested for PFOA, its related chemicals, and several pollutants. The results will determine if cleanup work is necessary in the area by comparing them to the EPA's established standards.
The results of the soil testing are expected to come back between late March and early April. The EPA will hold a public meeting to announce the results and answer questions before the start of the baseball and softball season.
Additional information about the Hoosick Falls water contamination can be found here or on the EPA website.
Residents of Hoosick Falls and other communities who believe they may have been impacted are encouraged to contact us and complete a water contamination contact form.
Topics: Hoosick Falls Water Contamination | Tags: Environmental Protection Agency, EPA, Faraci Lange, Faraci Lange attorneys, Hoosick Falls, Hoosick Falls NY, Hoosick Falls Water Contamination attorney, Hoosick Falls Water Contamination Lawsuit, Hoosick Falls Water Contamination lawyer, Hoosick PFOA Water Contamination, Hoosick Water Contamination, PFOA, PFOA Water Contamination, Toxic Chemical Exposure, Toxic Chemical Exposure attorney, Toxic Chemical Exposure lawyer, Toxic Tort, water contamination
EPA Holds Public Meeting to Discuss PFOA Water Contamination in Village of Hoosick Falls
Faraci Lange attorneys Stephen Schwarz and Hadley Matarazzo attended a meeting last night convened by the Environmental Protection Agency Region 2 Administrator, Judith Enck, and her staff to learn more about contamination of the Hoosick Falls public water supply with PFOA (perfluorooctanoic acid).
Representatives from the EPA, the New York State Department of Environmental Conservation (NYDEC) and New York State Department of Health (NYSDOH) presented information on PFOA, the associated health risks, plans to investigate the source and extent of the contamination, as well as plans to conduct a health study of Hoosick Falls Village residents.
Residents learned of the contamination when elevated levels of the toxic chemical, PFOA, were found in the system in 2014 by Michael Hickey, a former village trustee whose father died of cancer. Hickey sent water samples to a Canadian lab that reported levels of PFOA that the EPA later said are not safe for human consumption.
PFOA is a manmade chemical used to make non-stick and other household and commercial products that are heat-resistant and repel grease and water. Under a deal with the EPA, major PFOA makers began phasing out its use in 2006. PFOA exposure has been linked to increased health effects, including testicular and kidney cancer and thyroid disease.
Enck has urged village leaders to warn residents to stop drinking or cooking with the tap water and limit other exposure. Mayor David B. Borge had previously stated that it was a "personal choice" whether to consume the water, which comes from underground wells serving about 4,500 consumers.
The focus of the contamination has been a Saint-Gobain Performance Plastics manufacturing plant, although there are other potential sources that will be investigated. The small Saint-Gobain factory, the village's largest employer with about 125 workers, is on a hill overlooking the Hoosick River, about 400 yards from village well fields.
According to the EPA's 2009 provisional health advisory, people should not drink water or use it for cooking if it contains more than 400 parts per trillion (ppt) of PFOA. In June 2015, the EPA found that four out of five water samples collected from various locations within the public drinking water supply system in Hoosick Falls had more than 600 ppt of PFOA. Additionally, groundwater sampling in 2015 at the Saint-Gobain Performance Plastics facility found levels as high as 18,000 ppt. Some private wells in the area have also shown the presence of PFOA, though not at levels above 400 ppt.
Last week, village trustees voted to have temporary filters installed on the water system. A long-term plan to install a charcoal filter system expected to remove PFOA from the water is set to be done later this year. Saint-Gobain has offered to pay to install and maintain the filter, and is also paying for residents to receive five gallons of water per day from the local Tops supermarket.
NYSDEC officials wrote to the U.S. EPA yesterday requesting that the sources of the Village of Hoosick Falls water contamination be added to the National Priorities List. This would make the sources of the contamination a Superfund site, which would avail the resources of the EPA and the federal government to address the source of the PFOA contamination. This will allow the EPA to begin an investigation into the sources of the PFOA contamination and, once identified, to explore options to remediate.
Read the EPA's official answers to Frequently Asked Questions about Drinking Water and Groundwater Contamination in Hoosick Falls for more information. Concerned Hoosick Falls Village residents may also contact EPA Public Affairs Specialist, Larisa Romanowski, at 518.407.0400.
Faraci Lange is currently investigating bringing a lawsuit against one or more companies believed to be responsible for the cancers and other illnesses caused by this PFOA water contamination in Hoosick Falls.
Residents of Hoosick Falls and other communities who believe they may have been impacted are encouraged to contact Stephen G. Schwarz at (585) 325-5150 or click here to complete a contamination contact form. You may also contact us through our online intake form for a free legal consultation.
Topics: Uncategorized | Tags: Environmental Law, Environmental Protection Agency, Faraci Lange, Hadley Matarazzo, Hoosick Falls, Hoosick Falls NY, Hoosick Falls Water Contamination, Hoosick Falls Water Contamination attorney, Hoosick Falls Water Contamination Lawsuit, Hoosick Falls Water Contamination lawyer, Hoosick PFOA Water Contamination, Hoosick Water Contamination, Personal Injury attorney, PFOA Water Contamination, Stephen Schwarz, Toxic Chemical Exposure, Toxic Chemical Exposure attorney, Toxic Chemical Exposure lawyer
Stories tagged: Toxic Chemical Exposure attorney


Directed and written by Amit Rai, this simple story revolves around a God fearing Muslim mechanic; Paresh Rawal. He has been entrusted with a job of repairing one V8 ford engine; however, he is unaware about it's historic significance that it once had carried Mahatma Gandhi's ashes. The film also stars Pawan Malhotra and Om Puri in pivotal roles.
This is the list of all the songs from movie Road To Sangam we have lyrics for. Click on the links to see the lyrics.


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Remoting;
using System.Security.Permissions;
using System.Text;

namespace Capture.Hook.Common
{
    [Serializable]
    public abstract class Element: IOverlayElement, IDisposable
    {
        public virtual bool Hidden { get; set; }

        ~Element()
        {
            Dispose(false);
        }

        public virtual void Frame()
        {
        }

        public virtual object Clone()
        {
            return MemberwiseClone();
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        /// <summary>
        /// Releases unmanaged and optionally managed resources
        /// </summary>
        /// <param name="disposing">true if disposing both unmanaged and managed</param>
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
            }
        }

        protected void SafeDispose(IDisposable disposableObj)
        {
            if (disposableObj != null)
                disposableObj.Dispose();
        }
    }
}


Tim Kincaid serves as the Chief of Staff and VP of Strategy for Global Teen Challenge (GTC). Tim brings 25+ years of marketing, fundraising, and business leadership to his current position.
Before joining GTC in 2013, Tim worked at leading marketing firms where he provided strategy, fundraising, and marketing guidance to local and national nonprofit organizations. In addition to his decade of agency experience, Tim managed loyalty marketing programs for Vail Ski Resorts, developed consumer and affiliate programs for GoTo.com (now Yahoo!), and served as the general manager at a high-end home furnishing and interior design company.
Tim earned his MBA from the Marshall School of Business at the University of Southern California.


Are goals and systems in competition or are they complimentary? A goal is an objective to get something done. A system is a set of actions that seemingly have the same outcome. Why then does it happen that when we set goals – it requires changes in systems?
When starting to research the theory of goals – it is hard to find a comprehensive theory of how goals work on where they should focus on an organisation. There seems to be a wide consensus that without a goal – an employee is less than likely to even show up for work. The research focus in terms of goal setting comes from Locke and Latham out of the late 60's. The key points that Locke and Latham made were that motivational goals needed to have the following dimensions: clarity, challenge, commitment, feedback and complexity. Goals need to be clear and measurable. Secondly, goals must be challenging, with achievement as the final payoff. Thirdly, employees must feel part of the goal-setting process to be committed to a clearly relevant goal. There must be a program that involves feedback, recognition and progress reporting to give a sense of moving towards the goal. Lastly, the task must be complex but not overwhelming, with sufficient time and resources available.
From this description, we see that goals are inherently tools to motivate employees and except for point 3 that talks about a clearly relevant goal – does not quite define where we should set our goals to make something.
Now on the systems side we find that a system is defined as an input, process, output loop that has feedback in it and thus creates a self-perpetuating or at least self-re-enforcing loop. Systems can also be defined as a group of parts connected by a web of relationships.
The objective of a system is to perpetuate itself, and arguably will always involve an element of growth, or at least injection of energy – as a system that tends to decrease in entropy – tends to disappear.
Systems are there not to change as much as possible.
Goals are there to motivate change from a non-active state to an active state.
These two things are often in conflict.
Even at its best – goals are ineffective and most organisations would tell you in order to achieve a goal, you have to set the goal much higher than is actually intended. The people that are good at achieving goals are rare, often brash an operate at the expense of the system. The people that perpetuate the system are often described as lazy, selfish and bureaucratic and they are seen as playing politics and obstructing others to make a difference.
If we look carefully at someone that understood that there is a different path – we have to consider the work of Deming. Deming realised that there is a balance between improving the system and getting to done.
Putting principle 1 and principle 10 together gives an interesting wakeup to how we set goals.
According to Deming we are purposefully creating conflict with goals.
Create a strong purpose. This defines where the system is going.
I do not believe in SMART goals. I believe in goals with a purpose and I think that the idea of SMART goals confuse the real issue that asks why the system exists in the first place and what we are doing to make it better.
As a challenge, I would ask a manager to spend the same time that usually goes into goal setting and to use that time to ask employees how we can strengthen the system, remove inefficiencies and move closer to where we are going as a company. When you start doing this – you naturally build goals that are both there to achieve results and to strengthen the system achieving the results. Many goals I find traditionally are simply set to achieve a result where the underlying system to achieve it is simply not defined, clear or considered when the goal is set.
The second point in terms of goal setting is also that once I have a goal – I need to understand how the system is going to get us to achieving that goal. The goal thus needs to be moving the system forward and must be using the system to achieve its task. The items that constitute the goal must actually be manipulable by managers. I find it fascinating that we can set a goal of e.g. achieve $ 100 million in sales. The reality is that sales from entities that is outside of our system, will never happen and that the only influencable items from a goal is the things that I can ask sales people to do more of which may include more calls, more visits, quality in the way that we present.
I believe that this is why the balance scorecard and the strategy maps became so popular in the mid 1990's and early 2000's. They actually for the first time started to establish a relationship between goal sets and variables. I think however that the balance scorecard by Kaplan and Norton represents a generalisation of a much larger question around goals and goal theory.
So, this brings us to a conclusion that states that goals should be set on both an institutional and a functional level. Goals must be clear in terms of what they need the system to achieve and need to focus on the influencable items that are in the organisations' control.
Remove barriers that rob people in management and in engineering of their right to pride of workmanship. This means, inter alia, abolishment of the annual or merit rating and of management by objective .


cool leggings. very like. thank you!
to russian подошли 42 size. cute body, прошиты good. одеваешь when, dull become more color. high waist. 167 height length just right.
good quality fabric, carefully sewn, stretch well. height 166 95 about the подошли. fast shipping to store thank you).
tenderest!! bright, leggings beautiful and comfortable. if wear home them :) :) home'll please the eye and can do yoga, nowhere жмут, they like a second skin and general давят not, мегакомфортные really. also can them walking in the street, not просвечивают, not give off superfluous, if have superfluous the;) in general, pir and, and the world kind and people. clear picture (смыслах in all of the word). if quality bright and search leggings, it is strongly advice you to take their!!
product 10 days reached in my hands, colors is fine and bright, in exactly the same way as in photos, fabric jersey, i like it very much.
лосинами very satisfied. month delivery within псковскую area, track trackable. picture bright, clear, not washing просвечивает. straight stitching, thread not stick up, smell no. посмотрю will like to wear.
I love this leggins however the printing image used shows low resolution, like a not so good pixelated picture. Honestly my camera makes it look much better than how they look, nonetheless I still really like them, and the colors are really bright just as the pictures.
заказала 27.09. received 12.10. leggings super! in this shop third bought this. excellent quality as always. height 172, weight 59 well об96 boarded perfect!
love!! the perfect condition arrived in package package. coming BRAND silkscreened inside RUBBER leggins. WAISTBAND Wide RUBBER hoodies, wholesale very low chest of drawers and not exercise. the perfect DRAWING stays when you the put, exaggerate tank. one touch ever super soft elastic fabric. the recommend!!
новосибирск пришёл order in 32 days. quality synthetic, viscose. знала but take what quality. вообщем i liked it, very bright and size. track отслеживался all the time. общалась not the store.
such price leggings for especially not bad, gently stick nowhere thread made. stretch well. delivery ukraine month.
delivery of the month. leggings excellent, soft, просвечивают not at all. as boarded rev 89 the need растянутся объёмы big and, but please view, туговата that have elastic 60. they plus high waist. recommend!
like me, true on cat muzzle палтусовидной stretched to 97 cm hip))) синтетиков nice quality, not просвечивает, good stretch, height 175-but excellent! high elastic, but in measure, to cuff)) wide!
these leggings ждала very! burning in заказывала goods, store sent fast, but it has come to three days before the buyer protection. normal packaged in legging, smell no. боялась very, me that they will be small and even stretch is very good but length in principle, my short. in general, i'm glad to purchase, seller recommend.
commodity walking in 2 weeks, with tracking. it is with pants like totoro cool hurt. pants when come not разочаровали. тянуться good, for коротковаты even just my feet length. perhaps they can and 48 налезть! прошита elastic, will not so перекручиваться. less than itself pattern, than the photos. натягивается when on the feet, бледней become more. and room for bicycle подошли pants very. your money (275 usd) are uniquely!
I waited for her bright colorful and fun tights. the quality is excellent. all seams are flat and neat. thread or where not stick. no foreign odors. Great leggings, to engage in them is a pleasure.
Thank you store, leggings received fast enough, for three weeks. goods are carefully packed, no damage. seams are sealed well, though not to care for the product in the wash. I try to supplement review after the socks and wash.
Tights fully meet the condition of "price-quality". very thin, not tight, but do not shine. on my 160 cm longish, but for training, for the price, quite go. delivery of less than a month, which is also great.
Booked 18.08, I received at the post office in Samara 01.09. tights thin, but the quality elastic. shovchik smooth, no protruding thread no foreign smell, too. the parameters of ot64, about 87, growth came 158. with a long t-shirt daughter will wear to physical education. all happy with the quality and quick delivery. the store and the goods recommend!
Ordered two pairs on hips 100-102 slightly too narrow, but you can take! super quality, the fabric is very soft and pleasant. one that with a hare, initially had slightly narrower. at the same size. then I certainly do not understand... why? Request to replace the color when ordering, the store agreed, but when receiving it turned out that is not fulfilled. but promised to send a replacement. esli will, add later.
Great product, very soft, well drawn, high landing! 50 kg sat perfectly not перелавливая waist. I recommend!
My second order clothes on Ali, was happy as a child thank you very much the store! my height is 174 village perfectly all like material comfort, It pulls well, hides the flaws, I will take more!
Quality nice, Good Seams and waistbands, Is of High Waist because it comes to the waist.
Very cute and the quality is even higher than i expected. everything is done very carefully, and of excellent quality. delivery to the Moscow region about 3 weeks with the courier (pre-check the date, can mix up!) thank you very much for an excellent product!


PetroVietnam Gas Corporation, Vietnam's biggest listed energy firm, posted first half net revenues of VND37.5 trillion ($1.65 billion), equal to 66 percent of its annual target.
Its pre-tax profit jumped to VND6.6 trillion ($290 million), representing 82 percent of the year's target.
Le Nhu Linh, Chairman of the Ho Chi Minh-based company, also known as PV Gas, said the company is undertaking 24 projects this year, including pipelines that transport natural gas directly to consumers.
PV GAS stock closed up 5.75 percent at VND92,000 per share on the southern stock exchange yesterday.


What ratio and amounts of fertilizer would you use for a perennial bed and a vegetable garden? For growing annuals in a greenhouse, should the fertilizer be fast or slow-release, organic or inorganic?
Use 3 to 5 pounds of a 10-5-10 or 10-10-10 fertilizer per 1000 square feet in the perennial bed. Add leaves as mulch. In your vegetable bed, nutrients are important. Fertilize more heavily using a 10-10-10 fertilizer at the rate of 5 to 10 pounds per 1000 square feet.
For hanging baskets of annuals in a greenhouse, a slow-release fertilizer is best. Use a 20-10-20 liquid fertilizer following label directions. In general, organic fertilizers have a lower chemical analysis than inorganic ones, so you have to use more, according to David Tyznik, owner of Planter's Palette, Winfield.
A healthy plant is dependent on its soil. A balanced soil is rich in beneficial microorganisms that improve the soil structure and supply necessary nutrients. Soilless potting mixes have no microorganisms. "Both organic and inorganic fertilizers work well, but those in soilless mixes need more fertilizer," says Tyznik.
Now that bedding impatiens (I. walleriana) are not recommended because of impatiens downy mildew, what are three good annuals for shade?
I have a dampish area with poor grass and moss that I would like to change to ground cover, but if I have only one plant, won't it be boring? Can I get rid of the grass in winter or early spring?


It was so great meeting so many lovely people on Saturday and I am grateful to have had the opportunity to work on such a diverse crowd of people. Thank you for stopping by my table and giving me a chance to show you what I do. It was a bit of a challenge with the time constraints and broken middle finger (the right tip, I might not have even mentioned it to some of you!), but the gratitude that I was shown was encouraging and I appreciated it greatly.
If you did get a chance to get some work done, please know that in the office, it is quite different when clothing is not in the way, as I make use of a small bit of oil and traction on the skin to do myofascial release, which creates more pull in the tissue and is important for release. It's stylistically different than when working at these events, so I hope you'll give it a try. Please enjoy $20 off a first session if we met at Greenfest and note that sessions come in 30, 45, 60, 75 and 90 minutes.
All in all it was a wonderful day...in Boston. It was a jarring contrast seeing every race, color, and ethnicity sharing their culture and crafts, working together, walking together, and on my massage table to the news we received that day. It was not until the next morning that I caught up.
As a healer, it is my mission to bring about a better state of body and mind with love. People present their bodies to me, which is a vulnerable and trusting act. It is my job to treat them with care. It's not just a job-- it's an instinct. It doesn't matter what that body does, who it supports, or even if I like them or not. Love is blind and unconditional. When someone is on the massage table, so long as they are respectful and appropriate to me, it is not personal. My hands will always convey one thing and one thing only-- and that is care.
When I see the opposite-- when I see human bodies beaten and abused, when I see violence, I feel deep wounding and deep sadness. And this, I believe, is the fundamental human state. Hate is learned. It is taught. It is not instinctual. Biologically we function best in the conditions of love. Hate hurts and it's supposed to. That's why it's not sustainable. We came together Saturday in the name of sustainability. The planet cannot sustain itself on oil and coal. And people cannot sustain themselves on hate.
To fight a problem we have to address the core of that problem. When I see a person in pain, I look for its source, I speak to it and address it. And that is what we need to do. Speaking may cost us, but silence costs more.
My practice is built on love and tolerance. That includes LGBTQ and people of color. I personally will not be complicit in any way in the revitalization of White Supremacy, the KKK, or Nazis. That ideology isn't welcome in my practice, my city, or my country. I will not be a quiet bystander because it doesn't affect me in the way that it has and continues to affect others without the same privilege. No one should ever be afraid or suffer because of the color of their skin or the religion they practice. You deserve to feel supported and protected. It's important that we contemplate our fear, indifference, or pride and determine what is worth more to us in our short time on Earth. Speaking up can save lives.


text:
American Corporate Advisory Council
The American Society of Mexico (AMSOC) is a non-profit and non-partisan organization. It represent U.S. interests in Mexico and the two million Americans living in-country.
Mexico has the largest community of Americans outside United States, as the USA has the largest community of Mexicans outside Mexico. That´s why Mexican and Americans have strong ties and our relationship is so important, we need each other and only together we´ll be stronger.
Our mission is to foster friendship, including greater cultural and civic ties between the citizens of the United States and Mexico, as well with other countries that have diplomatic relations with both.
Our organization has hosted over the years, thousands of people of all nationalities and walks-of-life including hosting major events for former U.S. Presidents and other dignitaries.
Our mission is to foster friendship, including greater cultural and civic ties between the citizens of the United States and Mexico
¿Do you have any comments, questions or suggestions? Send us a message and we will get in touch with you as soon as possible.
"Fostering Friendship through Understanding & Support"
The American Society of Mexico, A.C.
Torre Polanco, Mariano Escobedo 476 piso 12 Colonia Anzures. CP. 11590 Ciudad de México
DONATE TO THE AMERICAN SOCIETY OF MEXICO
Your donation ensures increased longevity of The American Society of Mexico's rich history and mission to support key social causes.


The 4 Reel Kings slot machine is dedicated to the card theme. In terms of the structure, this is one most original slots from Novomatic. The slot has 4 sets of reels. On each of these reels, there are 20 active paylines. A player gets 4 times more chances to hit a big jackpot! During the spin, you can get the winnings with multipliers of up to 10,000. This slot features the risk game function.
In the 4 Reel Kings slot, there are 20 fixed lines active on each set of the reels. It is possible to control the size of the linear bet. This can be done using the Bet/Line menu. With its help, you can choose the amount from 1 to 100 credits. The selected number is automatically multiplied twentyfold. After adjusting the settings, you can go to the spins. To do this, press the Spin button to activate the manual mode or Autoplay to activate the automatic one.
All sets of reels spin alternately starting from the upper left one. As soon as a winning combination appears on one of them, a player can launch a risk game with the Gamble button. The player will see one open card in front of him and four facing down. A player has to select one from the ones facing down. If its value is higher than that of an open card, the winnings will double.
There is a special bonus function in the slot. It is activated randomly and can start after any spin. The card featuring a king with the marching drums will appear on the screen. As a result, a gambler gets immediate bonus payouts.
The 4 Reel Kings slot has simple rules and a minimum of settings. A player doesn't have much influence over the spin result. The main way to multiply the winnings is to switch to a risk game from time to time.


Daniel Alfredsson, a right wing for the Ottawa Senators, is expected to be out eight weeks after tearing the medial collateral ligament in his left knee, the team said. The injury occurred during a training-camp scrimmage on Wednesday.
Alfredsson's injury came nine days after the Ottawa defenseman Janne Laukkanen underwent surgery for a torn abdominal muscle. He is expected to be out 12 weeks.
Alfredsson, 25, was Ottawa's third-leading scorer last season with 17 goals and 28 assists in 55 games.