CY+f      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None +,56:DIR Result of a % returned from the JavaScript contextEBatch of commands that can be sent together to the JavaScript context@Command sent to a JavaScript context for execution synchronously ACommand sent to a JavaScript context for execution asynchronously0Wrapper used when sending a JString to the JavaScript context2Wrapper used when receiving a : from the JavaScript context4Wrapper used when sending a > to the JavaScript context6Wrapper used when sending a D to the JavaScript context8Wrapper used when receiving a D from the JavaScript context:See <See >See  @See  ASee  DSee F7Type used for Haskell functions called from JavaScript.GThe G is to I what  is to . When using GHCJS it is .IThe I7 monad keeps track of the JavaScript execution context.When using GHCJS it is .Given a I function and a L) you can run the function like this... $runJSM jsmFunction javaScriptContextLIdentifies a JavaScript execution context. When using GHCJS this is just '()' since their is only one context. When using GHC it includes the functions JSaddle needs to communicate with the JavaScript context.TThe T is to I what  is to . When using GHCJS it is .q  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFFunction objectthisFunction arguments Only () (aka  JSUndefined) can be returned because the function may need to be executed in a different thread. If you need to get a value out pass in a continuation function as an argument and invoke it from haskell.GHIJKLMNOPQRSTUVWXYZ[\]^_`abcT  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTLMNOPQRSIJKGHTDEBCA@>?:;<=F8967230145 !"#$%&'()*+,-./ ,   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcNone9;)Convert a JavaScript string to a Haskell Convert a Haskell  to a JavaScript string::SafeNoneNone0JavaScript exception >>>None[,Forces execution of pending asyncronous code>Forces execution of pending asyncronous code after performing fOn GHCJS this is  !. On GHC it will delay the execution of the current batch of asynchronous command when they are sent to JavaScript. It will not delay the Haskell code execution. The time returned will be based on the Haskell clock (not the JavaScript clock).wTries to executes the given code in the next animation frame callback. Avoid synchronous opperations where possible.5  !"#$%&'()*+,-./5 !"#$%&'()*+,-./ None Noneb*Gets the JavaScript context from the monadRuns a I3 JavaScript function in a given JavaScript context.Alternative version of Wrapped version of 8 that runs in a MonadIO that works a bit better with IWrapped version of 8 that runs in a MonadIO that works a bit better with IGIJKLTIJKLGT None9;hAnything that can be used to make a list of JavaScript value references for use as function arguments?Anything that can be used to make a JavaScript object reference'If we already have a Object we are fine None>?>? None None 069:;LQRT[7conversion is pure even if the original value is shared.conversion is pure if the we only convert once=-NoneNone9;9Anything that can be constructed from a JavaScript string5Anything that can be used to make a JavaScript string"None9;None9;None9;-Evaluates a script (like eval in java script)testJSaddle $ eval "1+1"2JavaScript to evaluateNoneNone9;CGet a property value given the object and the name of the property.DGet a property value given the object and the index of the property.CSet a property value given the object and the name of the property.DSet a property value given the object and the index of the property.object to find the property on.name of the property.returns the property value.object to find the property on.index of the property.returns the property value.object to set the property on.name of the property.!new value to set the property to.object to find property on.index of the property.!new value to set the property to.None9;T[2 UAn algebraic data type that can represent a JavaScript value. Any JavaScriptCore D! can be converted into this type. null  undefined  true or false a numbera string an objectpType that represents a value that can only be null. Haskell of course has no null so we are adding this type.IShow a JSValue but just say "object" if the value is a JavaScript object.\Given a JavaScript value get its boolean value. All values in JavaScript convert to bool.testJSaddle $ valToBool JSNullfalsetestJSaddle $ valToBool ()falsetestJSaddle $ valToBool TruetruetestJSaddle $ valToBool Falsefalse'testJSaddle $ valToBool (1.0 :: Double)true'testJSaddle $ valToBool (0.0 :: Double)falsetestJSaddle $ valToBool ""falsetestJSaddle $ valToBool "1"trueIGiven a JavaScript value get its numeric value. May throw JSException.)testJSaddle $ show <$> valToNumber JSNull0.0%testJSaddle $ show <$> valToNumber ()NaN'testJSaddle $ show <$> valToNumber True1.0(testJSaddle $ show <$> valToNumber False0.02testJSaddle $ show <$> valToNumber (1.0 :: Double)1.02testJSaddle $ show <$> valToNumber (0.0 :: Double)0.0%testJSaddle $ show <$> valToNumber ""0.0&testJSaddle $ show <$> valToNumber "1"1.0aGiven a JavaScript value get its string value (as a JavaScript string). May throw JSException.+testJSaddle $ strToText <$> valToStr JSNullnull'testJSaddle $ strToText <$> valToStr () undefined)testJSaddle $ strToText <$> valToStr Truetrue*testJSaddle $ strToText <$> valToStr Falsefalse4testJSaddle $ strToText <$> valToStr (1.0 :: Double)14testJSaddle $ strToText <$> valToStr (0.0 :: Double)0'testJSaddle $ strToText <$> valToStr ""(testJSaddle $ strToText <$> valToStr "1"1<Given a JavaScript value get its string value (as a Haskell ). May throw JSException.'testJSaddle $ show <$> valToText JSNull"null"#testJSaddle $ show <$> valToText () "undefined"%testJSaddle $ show <$> valToText True"true"&testJSaddle $ show <$> valToText False"false"0testJSaddle $ show <$> valToText (1.0 :: Double)"1"0testJSaddle $ show <$> valToText (0.0 :: Double)"0"#testJSaddle $ show <$> valToText """"$testJSaddle $ show <$> valToText "1""1"KGiven a JavaScript value get a JSON string value. May throw JSException. ,testJSaddle $ strToText <$> valToJSON JSNullnull(testJSaddle $ strToText <$> valToJSON ()*testJSaddle $ strToText <$> valToJSON Truetrue+testJSaddle $ strToText <$> valToJSON Falsefalse5testJSaddle $ strToText <$> valToJSON (1.0 :: Double)15testJSaddle $ strToText <$> valToJSON (0.0 :: Double)0(testJSaddle $ strToText <$> valToJSON """")testJSaddle $ strToText <$> valToJSON "1""1"/testJSaddle $ strToText <$> (obj >>= valToJSON){}HGiven a JavaScript value get its object value. May throw JSException.YtestJSaddle $ (valToObject JSNull >>= valToText) `catch` \ (JSException e) -> valToText enullUtestJSaddle $ (valToObject () >>= valToText) `catch` \ (JSException e) -> valToText e undefinedtestJSaddle $ valToObject TruetruetestJSaddle $ valToObject Falsefalse)testJSaddle $ valToObject (1.0 :: Double)1)testJSaddle $ valToObject (0.0 :: Double)0testJSaddle $ valToObject ""testJSaddle $ valToObject "1"11Convert to a JavaScript value (just an alias for )A null JavaScript value(Test a JavaScript value to see if it is nullAn  undefined JavaScript value(Test a JavaScript value to see if it is  undefinedKConvert a JSVal to a Maybe JSVal (converting null and undefined to Nothing)!A JavaScript boolean value"Make a JavaScript number#Make a JavaScript string from $Make a JavaScript string from :%$Make a JavaScript string from AESON &Derefernce a value reference. -testJSaddle $ showJSValue <$> deRefVal JSNullnull)testJSaddle $ showJSValue <$> deRefVal () undefined+testJSaddle $ showJSValue <$> deRefVal Truetrue,testJSaddle $ showJSValue <$> deRefVal Falsefalse6testJSaddle $ showJSValue <$> deRefVal (1.0 :: Double)1.06testJSaddle $ showJSValue <$> deRefVal (0.0 :: Double)0.0)testJSaddle $ showJSValue <$> deRefVal """"*testJSaddle $ showJSValue <$> deRefVal "1""1"=testJSaddle $ showJSValue <$> (valToObject True >>= deRefVal)true0testJSaddle $ showJSValue <$> (obj >>= deRefVal)object'!Make a JavaScript value out of a   ADT. testJSaddle $ valMakeRef ValNullnull%testJSaddle $ valMakeRef ValUndefined undefined'testJSaddle $ valMakeRef (ValBool True)true&testJSaddle $ valMakeRef (ValNumber 1)15testJSaddle $ valMakeRef (ValString $ T.pack "Hello")Hello(Determine if two values are equal (JavaScripts ===) >>> testJSaddle $ strictEqual True False false >>> testJSaddle $ strictEqual True True true >>> testJSaddle $ strictEqual Hello* () false >>> testJSaddle $ strictEqual Hello Hello true)^Determine if two values are equal (JavaScripts ===) >>> testJSaddle $ instanceOf obj (Object  $ jsg Object) true*BMakes an argument list with just a single JavaScript value from a   ADT.+ Makes a JavaScript value from a   ADT.,4Makes an argument list with just a single JSON value-Makes a JSON value5)If we already have a JSString we are fine7Makes a JavaScript string8;Makes an argument list with just a single JavaScript string:Makes a JavaScript string;;Makes an argument list with just a single JavaScript numberEMakes a JavaScript numberFBMakes an argument list with just a single JavaScript boolean valueGMake a JavaScript boolean valueHGThis allows us to pass no arguments easily (altenative would be to use  []::[JSVal]).I Makes an  undefined JavaScript valueMMakes a JSVal or null JavaScript valueN*Makes an argument list with just a single null JavaScript valueOMakes a null JavaScript valueP.JSVal can be made by evaluating a function in I= as long as it returns something we can make into a JSVal.Q/A single JSVal can be used as the argument listR&If we already have a JSVal we are fineL     A type that can only be undefined in JavaScript. Using () because functions in JavaScript that have no return, impicitly return undefined. type JSBool = Bool -- ^ JavaScript boolean values map the U haskell type. type JSNumber = Double -- ^ A number in JavaScript maps nicely to Y. type JSString = Text -- ^ JavaScript strings can be represented with the Haskell  type.&value to convert to a JavaScript value !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST.:D      !"#$%&'()/D:      !"$#%&'()E      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTNone9;OT%U@Make a JavaScript function object that wraps a Haskell function.X0Java script function applications have this typeY$Lookup a property based on its name.)testJSaddle $ eval "'Hello World'.length"11*testJSaddle $ val "Hello World" ! "length"11Z%Lookup a property based on its index.%testJSaddle $ eval "'Hello World'[6]"W$testJSaddle $ val "Hello World" !! 6W[.Makes a getter for a particular property name. js name = to (!name))testJSaddle $ eval "'Hello World'.length"11.testJSaddle $ val "Hello World" ^. js "length"11\.Makes a setter for a particular property name. jss name = to (<#name).testJSaddle $ eval "'Hello World'.length = 12"122testJSaddle $ val "Hello World" ^. jss "length" 12 undefined]Handy way to call a function %jsf name = to (\o -> o # name $ args):testJSaddle $ val "Hello World" ^. jsf "indexOf" ["World"]6^6Handy way to call a function that expects no arguments js0 name = jsf name ()4testJSaddle $ val "Hello World" ^. js0 "toLowerCase" hello world_6Handy way to call a function that expects one argument js1 name a0 = jsf name [a0]8testJSaddle $ val "Hello World" ^. js1 "indexOf" "World"6`7Handy way to call a function that expects two argumentsa9Handy way to call a function that expects three argumentsb8Handy way to call a function that expects four argumentsc8Handy way to call a function that expects five argumentsd?Handy way to get and hold onto a reference top level javascript6testJSaddle $ eval "w = console; w.log('Hello World')" undefinedAtestJSaddle $ do w <- jsg "console"; w ^. js1 "log" "Hello World" undefinedeHandy way to call a function "jsgf name = jsg name . to (# args)AtestJSaddle $ eval "globalFunc = function (x) {return x.length;}"function (x) {return x.length;})testJSaddle $ jsgf "globalFunc" ["World"]5f6Handy way to call a function that expects no arguments jsg0 name = jsgf name ()-testJSaddle $ jsg0 "globalFunc" >>= valToTextTypeError:...undefine...g6Handy way to call a function that expects one argument jsg1 name a0 = jsgf name [a0]'testJSaddle $ jsg1 "globalFunc" "World"5h7Handy way to call a function that expects two argumentsi9Handy way to call a function that expects three argumentsj8Handy way to call a function that expects four argumentsk8Handy way to call a function that expects five argumentslCall a JavaScript function3testJSaddle $ eval "'Hello World'.indexOf('World')"67testJSaddle $ val "Hello World" # "indexOf" $ ["World"]6mCall a JavaScript functionhtestJSaddle $ eval "something = {}; something[6]=function (x) {return x.length;}; something[6]('World')"5.testJSaddle $ jsg "something" ## 6 $ ["World"]5nSet a JavaScript property-testJSaddle $ eval "var j = {}; j.x = 1; j.x"10testJSaddle $ do {j <- obj; (j <# "x") 1; j!"x"}1oSet a JavaScript property/testJSaddle $ eval "var j = {}; j[6] = 1; j[6]"1.testJSaddle $ do {j <- obj; (j <## 6) 1; j!!6}1p*Use this to create a new JavaScript object|If you pass more than 7 arguments to a constructor for a built in JavaScript type (like Date) then this function will fail.+testJSaddle $ new (jsg "Date") (2013, 1, 1)&Fri Feb 01 2013 00:00:00 GMT+... (...)qCall function with a given this . In most cases you should use l.BtestJSaddle $ eval "(function(){return this;}).apply('Hello', [])"HelloZtestJSaddle $ do { test <- eval "(function(){return this;})"; call test (val "Hello") () }Hellor1Make an empty object using the default constuctor3testJSaddle $ eval "var a = {}; a.x = 'Hello'; a.x"Hello>testJSaddle $ do { a <- obj; (a <# "x") "Hello"; a ^. js "x" }Hellos Short hand ::JSCallAsFunction@ so a haskell function can be passed to a to a JavaScipt one.OtestJSaddle $ eval "(function(f) {f('Hello');})(function (a) {console.log(a)})" undefined:{ testJSaddle $ do result <- liftIO newEmptyMVarX deRefVal $ call (eval "(function(f) {f('Hello');})") global [fun $ \ _ _ [arg1] -> do4 valToText arg1 >>= (liftIO . putMVar result) ] liftIO $ takeMVar result:}Hellov.Make an JavaScript array from a list of values*testJSaddle $ eval "['Hello', 'World'][1]"World+testJSaddle $ array ["Hello", "World"] !! 1World8testJSaddle $ eval "['Hello', null, undefined, true, 1]"Hello,,,true,1<testJSaddle $ array ("Hello", JSNull, (), True, 1.0::Double)Hello,,,true,1wJavaScript's global objectxkGet a list containing the property names present on a given object >>> testJSaddle $ show . map strToText  $? propertyNames obj [] >>> testJSaddle $ show . map strToText  $/ propertyNames (eval "({x:1, y:2})") ["x","y"]yQGet a list containing references to all the properties present on a given objectz6Call a JavaScript object as function. Consider using l.{:Call a JavaScript object as a constructor. Consider using p.|If you pass more than 7 arguments to a constructor for a built in JavaScript type (like Date) then this function will fail.~|A callback to Haskell can be used as a JavaScript value. This will create an anonymous JavaScript function object. Use t to create one with a name..Object can be made by evaluating a fnction in I> as long as it returns something we can make into a Object.,UVWXYObject to look onName of the property to findProperty referenceZObject to look onIndex of the property to lookupProperty reference[Name of the property to find\Name of the property to find]^_`abcdefghijklmnObject to set the property onName of the property to setValue to set it tooObject to set the property onIndex of the property to setValue to set it topqrstHaskell function to callXReturns a JavaScript function object that will call the Haskell one when it is calleduvwxyz{|}~4>?FUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|4>?YZ[\X]^_`abcdefghijknolmpqrUVWtusFvwxyz{|*UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~l2m2n1o1None9;OT@ABCBCA@None9:;LT[#  ##None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST      !"#$%&'()UVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|$%&'()*+,-./01234567789:;<=>?@ABCDEFGHIJKLMNOPQRSTUUVVWWXXYYZZ[[\]^__`aabcdefghijklmnopqrstuvwxyz{|}~!                     !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeefghijklmnopqrstuvwxyz{|}~$$$$             &jsaddle-0.7.0.0-5XKPQBKn8wZLUoUmTm2fAn!Language.Javascript.JSaddle.Array!Language.Javascript.JSaddle.Types"Language.Javascript.JSaddle.String%Language.Javascript.JSaddle.Run.Files+Language.Javascript.JSaddle.Native.Internal%Language.Javascript.JSaddle.ExceptionLanguage.Javascript.JSaddle.Run#Language.Javascript.JSaddle.Foreign!Language.Javascript.JSaddle.Monad,Language.Javascript.JSaddle.Classes.InternalJavaScript.Object.InternalJavaScript.Array.InternalGHCJS.Marshal.InternalGHCJS.Marshal.Pure*Language.Javascript.JSaddle.Marshal.String%Language.Javascript.JSaddle.Arguments$Language.Javascript.JSaddle.Evaluate"Language.Javascript.JSaddle.Native&Language.Javascript.JSaddle.Properties!Language.Javascript.JSaddle.Value"Language.Javascript.JSaddle.Object GHCJS.MarshalData.JSString.InternalTypeGHCJS.NullableNullableObjectMutableJSArrayJSArray GHCJS.PrimJSValJavaScript.Web.AnimationFramewaitForAnimationFrame#Language.Javascript.JSaddle.ClassesLanguage.Javascript.JSaddlebase Data.FoldablelengthResultDeRefValResultValueToBoolResultValueToNumberResultValueToStringResultValueToJSONResultValueToJSONValueResult IsNullResultIsUndefinedResultStrictEqualResultInstanceOfResultCallbackPropertyNamesResult ThrowJSValue ProtocolError SyncResultBatchCommandDeRefVal ValueToBool ValueToNumber ValueToString ValueToJSONValueToJSONValueIsNull IsUndefined StrictEqual InstanceOf PropertyNamesSync AsyncCommandFreeRefSetPropertyByNameSetPropertyAtIndex StringToValue NumberToValueJSONValueToValueGetPropertyByNameGetPropertyAtIndexCallAsFunctionCallAsConstructorNewEmptyObject NewCallbackNewArrayEvaluateScriptSyncWithAnimationFrameJSStringForSendJSStringReceivedJSObjectForSendJSValueForSendJSValueReceivedJSString SomeJSArrayJSCallAsFunctionMonadJSMliftJSM'JSMunJSM JSContextRef startTime doSendCommanddoSendAsyncCommand addCallback freeCallbacknextRefliftJSM$fFromJSONResult$fToJSONResult$fFromJSONBatch $fToJSONBatch$fFromJSONCommand$fToJSONCommand$fFromJSONAsyncCommand$fToJSONAsyncCommand $fNFDataJSVal$fMonadAtomicRefJSM $fMonadRefJSM$fMonadJSMStateT$fMonadJSMStateT0$fMonadJSMReaderT $fMonadJSMJSM $fShowJSVal $fToJSONJSVal$fFromJSONJSVal $fShowObject$fToJSONObject$fFromJSONObject$fShowJSString$fToJSONJSString$fFromJSONJSString$fShowJSValueReceived$fToJSONJSValueReceived$fFromJSONJSValueReceived$fShowJSValueForSend$fToJSONJSValueForSend$fFromJSONJSValueForSend$fShowJSObjectForSend$fToJSONJSObjectForSend$fFromJSONJSObjectForSend$fShowJSStringReceived$fToJSONJSStringReceived$fFromJSONJSStringReceived$fShowJSStringForSend$fToJSONJSStringForSend$fFromJSONJSStringForSend$fShowAsyncCommand$fGenericAsyncCommand $fShowCommand$fGenericCommand $fShowBatch$fGenericBatch $fShowResult$fGenericResult $fFunctorJSM$fApplicativeJSM $fMonadJSM $fMonadIOJSM $fMonadFixJSMtextFromJSStringtextToJSString strToText textToStr indexHtml initStaterunBatch jsaddleJs ghcjsHelpers wrapJSVal wrapJSString withJSVal withJSVals withObject withJSString JSException$fExceptionJSException$fShowJSException syncPoint syncAfternextAnimationFrame sendCommandsendLazyCommandsendAsyncCommand runJavaScriptjsTruejsFalsejsNulltoJSBool jsUndefined isTruthyIOisNullIO isUndefinedIOaskJSMrunJSM runJSaddlecatchbracketMakeArgsmakeArgs MakeObject makeObject $fMakeArgsJSM$fMakeObjectObjectcreate listProps unsafeGetPropgetProp unsafeSetPropsetProp fromListIOtoListIOreadpush FromJSVal fromJSValfromJSValUncheckedfromJSValListOffromJSValUncheckedListOfToJSValtoJSVal toJSValListOf PFromJSVal pFromJSValPToJSValpToJSValPurity PureShared PureExclusivetoJSVal_genericfromJSVal_genericfromJSVal_purefromJSValUnchecked_pure toJSVal_pure$fGFromJSValU1$fGFromJSValV1$fGFromJSArrM1$fGFromJSArr:*:$fGFromJSPropM1$fGFromJSProp:*:$fGFromJSValM1$fGFromJSVal:*:$fGFromJSValM10$fGFromJSValM11$fGFromJSVal:+:$fGFromJSValRec1$fGFromJSValPar1$fGFromJSValK1 $fGToJSValU1 $fGToJSValV1 $fGToJSArrM1 $fGToJSArr:*: $fGToJSPropM1$fGToJSProp:*: $fGToJSValM1 $fGToJSVal:*: $fGToJSValM10 $fGToJSValM11 $fGToJSVal:+:$fGToJSValRec1$fGToJSValPar1 $fGToJSValK1 $fEqPurity $fOrdPurity $fDataPurity$fPToJSValBool$fPToJSValJSVal$fPFromJSVal()$fPFromJSValJSVal FromJSString fromJSString ToJSString toJSString$fMakeArgs(,,,,,)$fMakeArgs(,,,,)$fMakeArgs(,,,)$fMakeArgs(,,) $fMakeArgs(,) $fMakeArgs[]eval withToJSValobjGetPropertyByNameobjGetPropertyAtIndexobjSetPropertyByNameobjSetPropertyAtIndexJSValueValNull ValUndefinedValBool ValNumber ValString ValObject JSUndefinedJSNull showJSValue valToBool valToNumbervalToStr valToText valToJSON valToObjectvalvalNull valIsNull valUndefinedvalIsUndefinedmaybeNullOrUndefinedmaybeNullOrUndefined'valBool valMakeNumber valMakeText valMakeString valMakeJSONdeRefVal valMakeRef strictEqual instanceOf$fMakeArgsJSValue$fToJSValJSValue$fMakeArgsValue$fToJSValValue$fFromJSValChar $fToJSValChar$fFromJSStringJSString$fFromJSString[]$fFromJSStringText$fToJSString[]$fToJSStringText$fToJSStringJSString$fFromJSValJSString$fToJSValJSString$fMakeArgsText$fFromJSValText $fToJSValText$fMakeArgsDouble$fToJSValInt32$fToJSValInt16 $fToJSValInt8 $fToJSValInt$fToJSValWord32$fToJSValWord16$fToJSValWord8 $fToJSValWord$fToJSValFloat$fToJSValDouble$fMakeArgsBool $fToJSValBool $fMakeArgs() $fToJSVal() $fFromJSVal[] $fToJSVal[]$fFromJSValMaybe$fToJSValMaybe$fMakeArgsJSNull$fToJSValJSNull $fToJSValJSM$fMakeArgsJSVal$fToJSValJSVal$fToJSValObject$fMakeObjectJSValFunctionfunctionObjectJSF!!!jsjssjsfjs0js1js2js3js4js5jsgjsgfjsg0jsg1jsg2jsg3jsg4jsg5###<#<##newcallobjfunfunction freeFunctionarrayglobal propertyNames propertiesobjCallAsFunctionobjCallAsConstructor nullObject$fMakeArgs(->) $fToJSVal(->)$fToJSValFunction$fMakeObjectJSMlengthIOnullIOappendwritepopunshiftshiftreversetakeIOdropIOsliceIOfreeze unsafeFreezethaw unsafeThaw toJSVal_aeson$fToJSVal(,,,,,,)$fToJSVal(,,,,,)$fToJSVal(,,,,)$fToJSVal(,,,) $fToJSVal(,,) $fToJSVal(,)$fFromJSVal(,,,,,,,)$fFromJSVal(,,,,,,)$fFromJSVal(,,,,,)$fFromJSVal(,,,,)$fFromJSVal(,,,)$fFromJSVal(,,)$fFromJSVal(,)$fFromJSValValue$fFromJSValDouble$fFromJSValFloat$fFromJSValWord32$fFromJSValWord16$fFromJSValWord8$fFromJSValWord$fFromJSValInt32$fFromJSValInt16$fFromJSValInt8$fFromJSValInt$fFromJSValBool $fFromJSVal()$fFromJSValJSValControl.Monad.IO.ClassMonadIOghc-prim GHC.TypesIOliftIO Mutability IsItMutable IsImmutable IsMutable ImmutableMutableMutabilityTypeMutable_ Immutable_ STMutableIsJSValjsval_ JSValueRefjsval#text-1.2.2.1-9Yh8rJoh8fO2JMLWffT3QsData.Text.InternalTextControl.Exception.Base GFromJSArr gFromJSArr GFromJSProp gFromJSProp GFromJSVal gFromJSValGToJSArrgToJSArr GToJSProp gToJSPropGToJSValgToJSValpackJSS$aeson-1.0.2.1-JhZNpAmlJ04FJVjHHUBYQAData.Aeson.Types.InternalValueBoolDoublejfarr2arr3arr4arr5arr6arr7