CSData >>
 Cntr : Integer
 Sum : Integer : 2^64
;

/* * */

HashIndex ->
Arg Items : List : Integer <- I|F|S 
    Bits = 64

Cntr, Sum = 0 ..

Do CS 'Cntr Sum' Key,
   CS 'Cntr Sum' Value
With Key, Value from Items

If Sum > 2 ^ Bits then Sum = Sum %% (2 ^ Bits)

Sum

/

CS HashIndex ->
Arg D : ^&CSData, X : I|F|S

A : Array : Integer : 2^8 <- X

Do D.Cntr ++,
   D.Sum = Hash D.Sum A.i D.Cntr
Where i = 1 to A._

/

Hash CS = Shift (? + (BitMask ? ? B_XOR)) TO_HIGHER 1 B_CR