úÎ,×'”T      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSNoneTUVWTUVWTUVWNone magic cookie constant (  !"#$%XY&  !"#$%  !"#$%XYNone*username password +username realm password /DGenerate a MESSAGE-INTEGRITY attribute and append it to the message  attribute list 0$Checks the credentials of a message ) returns Nothing when the credentials don't match M returns Just (False, oldmsg) when no MESSAGE-INTEGRITY attribute is present =where oldmsg is the unchanged message passed to the function J returns Just (True, prunedmsg) when the attribute is present and matches Owhere prunedmsg is the message with all fields after MESSAGE-INTEGRITY removed &'()*+,-.Z[/0\]^_ &'()*+,-./0 &'()+*,-.Z[/0\]^_None3Code has to be between  300 and 699 inclusive 4At most 128 unicode  characters 123456789:;<`a 123456789:;< 123456789:;<`aNone=>?@ABCDEFGHIJbcde=>?@ABCDEFGHIJ=>?@ABCDEFGHIJbcdeNoneK  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK  !"#$%)+*,-.&'(/0123456789:;<CD@AB=>?EFGHIJNonePGenerate a new bind request QESend a STUN request to the server denoted by address and wait for an G answer. The request will be sucessively sent once for each element of @ timeOuts until an answer is received or all requests time out. RSame as Q but returns the used socket S4Get the mapped address by sending a bind request to host, using   localport7 . The request will be retransmitted for each entry of timeOuts. J If the list of time outs is empty, a default of 500ms, 1s and 2s is used - returns the reflexive and the local address KLMNOPQAddress of the stun server local port to use 1time outs in µs (10^-6 seconds), will default to  [0.5s, 1s, 2s]% if empty. 0 means wait indefinitly. Request to send RAddress of the stun server local port to use 1time outs in µs (10^-6 seconds), will default to  [0.5s, 1s, 2s]% if empty. 0 means wait indefinitly. Request to send SSTUN server address %local port to use (or 0 for a random  port) timeOuts in µs (10^-6 seconds) f6 )*+,-./01234789:;<=@HIKLMNOPQRS6PQR S@=HI,-.)+*/0KONML1234789:;<KONMLPQRSfg      !"#$%&'()*+,,-./011234556789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijstunclient-0.1.0.0Network.Stun.Internal Network.StunNetwork.EndianNetwork.Stun.BaseNetwork.Stun.CredentialsNetwork.Stun.ErrorNetwork.Stun.MappedAddress IsAttributeattributeTypeValue toAttribute fromAttributeAttributeErrorAttributeDecodeErrorAttributeWrongTypeMessage messageMethod messageClass transactionIDmessageAttributes fingerprint TransactionIDTID Attribute attributeTypeattributeValue MessageClass IndicationFailureSuccessRequestMethodcookie findAttribute putAttribute getAttributeencodeMessageTypedecodeMessageTypefingerprintXorConstantfingerprintAttributeputPlainMessage putMessage getMessageshowBitsMessageIntegritymiHmac Credentials ShortTermLongTermUsername unUsernamewithMessageIntegritycheckMessageIntegrityErrorAttributecodereasonputErrorAttributegetErrorAttributeerrTryAlternate errBadRequesterrUnauthorizederrUnknownAttribute errStaleNonceerrServerErrorXorMappedAddressXMAunXMA MappedAddressMAunMAxmaAttributeTypemaAttributeType halfCookie putAddress getAddressfromXorMappedAddressxorMappedAddress xorAddress StunErrorWrongMessageTypeErrorMsg ProtocolErrorTimeOut bindRequest stunRequest stunRequest'findMappedAddresshtonlntohlhtonsntohs$fSerializeMessage$fSerializeAttribute cUsernamemkMessageIntegrity$fIsAttributeMessageIntegrity$fSerializeMessageIntegrity$fIsAttributeUsername$fSerializeUsername$fSerializeErrorAttribute$fIsAttributeErrorAttribute$fIsAttributeXorMappedAddress$fSerializeXorMappedAddress$fIsAttributeMappedAddress$fSerializeMappedAddress$fErrorStunError