úÎ*$&Ï     ,"A class to contain IPv4 and IPv6. The  function takes an  address and a contiguous   mask and returned a masked  address. The  function takes  and returns a contiguous   mask. The  function takes  and returns an  address " whose only n-th bit is set. The  function takes an  address and an test bit   address and returns  is the bit is unset, otherwise  returns . The IP range consists of an  address, a contiguous  mask, " and mask length. The contiguous  mask and the mask length 9 are essentially same information but contained for pre  calculation. To create this, use   or  " 192.0.2.0/24" ::   , for example. The  function returns an  address from . The  function returns a contiguous  mask from . The % function returns a mask length from . 8The abstract data structure to express an IPv6 address.  To create this, use  . Or use  " 2001:DB8::1" ::  , for example.  8The abstract data structure to express an IPv4 address.  To create this, use   . Or use  " 192.0.2.1" ::  , for example.  The >:> operator takes two  . It returns  if  the first  contains the second  . Otherwise,  it returns . The   functions takes an  address and a mask ? length. It creates a bit mask from the mask length and masks  the  address, then returns  made of them.  !"#$%&'()*+,-./012345 The   function takes a list of  and returns  .  For example,    [192,0,2,1]. The  function takes a list of  and returns  .  For example,  [0x2001,0xDB8,0,0,0,0,0,1].     67;The Tree structure for IP routing table based on TRIE with C one way branching removed. This is an abstracted data structure, - so you cannot touch its inside. Please use  or  , instead. 89The - function returns an empty IP routing table. :The ( function inserts a value with a key of  to   and returns a new . ;<=>The  function looks up  with a key of  # and returns its value if exists. ?The . function creates a new IP routing table from  a list of a pair of IPrange and value. The & function creates a list of a pair of IPrange and " value from an IP routing table. @6789:;<=>?@6779889:;<=>?@A      !  "#$%&'()*+,-./0123456789:;<<=>?@ABCDEF iproute-0.1Data.IPData.IP.RouteTableData.IP.RouteTable.InternalIPmasked intToMask intToTBitisZeroIPRangeaddrmaskmlenIPv6IPv4>:> makeIPRangetoIPv4toIPv6IPRTableemptyinsertlookupfromListtoListghc-prim GHC.TypesIntGHC.BoolTrueFalsebase Text.ReadreadIPv6AddrIPv4AddrshowIPv4showIPv6maskIPv4maskIPv6 masksWord32 masksIPv4 masksIPv6 intToTBitIPv4 intToTBitIPv6intToTBitsWord32intToTBitsIPv4intToTBitsIPv6 parseIPv4 parseIPv6parseIPv4RangeparseIPv6Rangeadoptdigipv4 ipv4rangehexipv6 ipv6rangeipv6'EntryNodeNilnewEntryinjectglue makeGlueRangeisLeftsearchfoldt