h*wr      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 0.1.0.2  Safe-InferredhMPCReturn True if x is probably prime, else False if x is definitely compositehMPC6Return the greatest probable prime number < x, if any.hMPCReturn y such that x*y == 1 modulo m. Safe-Inferred|hMPCInstantiate an object from a field and subsequently apply overloaded operators such as (), (), (), ()& etc., to compute with field elements. hMPCCreate a finite (Galois) field for given modulus (prime number). hMPCReturn byte string representing the given list/ndarray of integers x.hMPCReturn the list of integers represented by the given byte string.hMPC&Addition, Subtraction, Multiplication.hMPCEquality test.hMPC!Multiplicative inverse, Division.        Safe-Inferred Safe-InferredhMPCReturn parser results for command line arguments passed to the hMPC runtime.hMPCReturn parser for command line arguments passed to the hMPC runtime.hMPCinclude a user specified parser    Safe-Inferred Safe-Inferred @ hMPC%Couples a ID pi to the share list si.!hMPC9Split each secret given in s into m random Shamir shares.6The (maximum) degree for the Shamir polynomials is t,  0 <= t < m.. Return matrix of shares, one row per party."hMPC)Compute and store a recombination vector.A recombination vector depends on the field, the x-coordinates xs of the shares and the x-coordinate x_r of the recombination point.#hMPC.Recombine shares given by points into secrets.-Recombination is done for x-coordinates x_rs.!"# !"#  Safe-Inferred n$%,*)('+&-0/.197654382:;<:197654382-0/.%,*)('+&$;< Safe-Inferred Q=hMPCA secret-shared object.An MPC protocol operates on secret-shared objects of type SecureObject. The basic Haskell operators are overloaded instances by SecureTypes classes. An expression like a * b will create a new SecureObject, which will eventually contain the product of a and b. The product is computed asynchronously, using an instance of a specific cryptographic protocol.>hMPC.Base class for secure (secret-shared) numbers.?hMPC+) of order q = p where p is a prime number =CBA?>@DEF =CBA?>@DEF Safe-InferredHGhMPC Transform = into  by reading the future  share that contains a  (blocking).JhMPC,Open connections with other parties, if any.KhMPC4Receive payload labeled with given pc from the peer.LhMPC/Read the value from the future MVar (blocking).MhMPC)Send payload labeled with pc to the peer.'Message format consists of three parts: pc (8 bytes signed int)#payload_size (4 bytes unsigned int)-payload (byte string of length payload_size).NhMPC#increment program counter in state.OhMPC3 the action monad asynchronously and return future . Provide the given state monad with its own program counter space. JMKGHIOPQLNR JMKGHIOPQLNR Safe-Inferred"WhMPC6Secure selection between x and y based on condition c.YhMPCOutput the value of x to the receivers specified. Value x is a secure object, or a list of secure objects./A secure integer is output as a Haskell Integer[hMPCInput x to the computation.8Value x is a secure object, or a list of secure objects.]hMPCRuns MPC computation^hMPCRuns MPC computation with user arguments_hMPCStart and Stop hMPC runtime`hMPC%Transfer serializable Haskell objectsahMPCSecure addition of a and b.bhMPCSecure subtraction of a and b.chMPC!Secure multiplication of a and b.dhMPC)Secure division of a by b, for nonzero b.ehMPCSecure reciprocal (multiplicative field inverse) of a, for nonzero a.fhMPCSecure exponentiation a raised to the power of b, for public integer b.ghMPCSecure comparison a < b.hhMPCSecure comparison a <= b.ihMPCSecure comparison a > b.jhMPCSecure comparison a == b.khMPCSecure zero test a == 0.lhMPCSecure public zero test of a.mhMPCSecure sign(um) of a, return -1 if a < 0 else 0 if a == 0 else 1.If Boolean flag LT is set, perform a secure less than zero test instead, and return 1 if a < 0 else 0, saving the work for a secure equality test. If Boolean flag EQ is set, perform a secure equal to zero test instead, and return 1 if a == 0 else 0, saving the work for a secure comparison.ohMPC)Secure argmax of all given elements in x.In case of multiple occurrences of the maximum values, the index of the first occurrence is returned.phMPCSecure maximum of all given elements in x, similar to Haskell's built-in maximum.qhMPCSecure sum of all elements in x, similar to Haskell's built-in sum.rhMPCSecure product of all elements in x, similar to Haskell's product.Runs in log_2 len(x) rounds).shMPC?Secure all of elements in x, similar to Haskell's built-in all.Elements of x are assumed to be either 0 or 1 (Boolean). Runs in log_2 len(x) rounds).hMPCReturn n secure random values of the given type in the given range.thMPC8Return n secure uniformly random bits of the given type.uhMPC.Secure dot product of x and y (one resharing).vhMPC3Secure entrywise multiplication of vectors x and y.whMPC/Secure matrix product of A with (transposed) B.hMPC?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        #hMPC-0.1.0.2-CS3SOaGDGRz6rJ8nWKVXiTHgmp FinFieldsParserShamirTypesSecTypesAsyncoroRuntimehMPCMpcTools Paths_hMPCisPrime prevPrimeinvertFiniteFieldMetamodulus byteLength FiniteFieldLiteralmetavaluegftoBytes fromBytes$fNumFiniteField$fEqFiniteField$fFractionalFiniteField$fShowFiniteField$fShowFiniteFieldMetaOptions parsPartiesmmyPid thresholdbasePortsecParamnoAsync nrThreads getArgParsergetArgParserExtra IdSharesPair randomSplit_recombinationVector recombineSIOEnvpartiespcoptions forkIOBarriergen startTimeBarriercountsignalPartypidhostportoutChansockdict nbytesSentDictrunSIOlogging SecureTypesSecFldSecIntfieldshare bitLength secIntGen secFldGensetShareGatherResultgathercreateConnectionsreceiveawaitsendincPCasync asyncList asyncListListdecreaseBarrier $fGather(,,) $fGather(,) $fGatherList$fGatherSecureTypesIfElseifElseOutputoutputInputinputrunMpcrunMpcWithArgs runSessiontransfer.+.-.*./srecip.^.<.<=.>.==isZero isZeroPublicssignum argmaxfuncargmaxsmaximumssumsproductsall randomBitsinProd schurProd matrixProd ifElseList$fFractionalStateT $fNumStateT$fInputListList$fInputStateTList$fReshareListList$fReshareFiniteFieldFiniteField$fOutputListList$fOutputStateTInteger$fIfElseListList$fIfElseStateTSecureTypesbaseGHC.Num+-*GHC.Real/version getBinDir getLibDir getDynLibDir getDataDir getLibexecDirgetDataFileName getSysconfDirGHC.MVarMVar GHC.Conc.SyncforkIO_randoms sendMessage