~B=      !"#$%&'()*+,-./0123456789:;<None:T[Rather than throwing unchecked exceptions from our HTTP requests, we catch all unchecked exceptions and convert them to checked  values."An unchecked exception, typically = , occurred>Something awry with the response, typically a non-2xx response%Something awry with the JSON decodingCAn API token, either a tester token or one obtained through OAuth.See: ,https://api.slack.com/docs/oauth-test-tokens https://api.slack.com/docs/oauth?Like a curiosity about the world, you'll need one of these to say something. EThis is the incoming web hook URL that Slack gave you. It's usually  #https://hooks.slack.com/services/.... :Here's how you talk: you make one of these and pass it to sayM. Before the day is done, Linklater will convert this to a JSON blob using .eSimple messages are parsed by Slack with parse=full (i.e. as if you had typed it into the input box).?Complex messages are parsed according to Slack formatting. See .A little DSL for  %https://api.slack.com/docs/formattingSlack formatting. "<@user|user>"  "<@user|user did this and that>" -"<http://example.com|user did this and that>" "user did this &amp; that""The icon next to the messages you say). (Images unsupported right now, sorry.)For example, ":stars2:".RIncoming HTTP requests to the slash function get parsed into one of these babies.The command name.Who ran your slash command.(Where the person ran your slash command.#Text for the slash command, if any.#A username: no at-signs, just text!Where slash commands come from and where  s go. The unique  'C<number>') Slack assigns to each channel. Used to say things.(  !"#$%&'&  !"#$%(   !"#$%'&   !"#$%&'None:T[i>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123=456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) The Linklaterteers BSD-stylehi@haolian.org experimentalGHCNone!":T[8JA bot server for people who are in a hurry. Make a function that takes a  and returns some  in  % world, and we'll convert it into a J application. If you want more control over the request and respond, see 9.9/A bot server! As if by magic. This acts like a U middleware: Linklater wraps around your application. (Really, it just gives you a . to work with instead of a raw HTTP request.): I POST a  ; to Slack and return the HTTP response. However, I need a N (containing an incoming hook configured through Slack administration) first..Guaranted to not throw an unchecked exception.;I GET a WebSocket URI@ from Slack's real-time messaging endpoint. However, I need an 2 (configured through Slack administration) first..Guaranted to not throw an unchecked exception.NDisables Wreq's default behavior of throwing exceptions, which seems reckless 89:;< 89:;<  :;<98 89:;<        !"#$%&'()*+,-./0123456789:;<=>?@A?BCDEF?GH?GI?JK?LM?LN?BO?BP?@QDRS?BT?UV?BW?XY?XZ?[\?U]?^_?`a?Bb?cd?ce?cf?cg?ch?ci?cj?ck?cl?cm?cn?coDpqDprDps?tu?tv?tw?tx?ty?tz?t{?t|?t}?t~?t?t?t?t?t?t?t?t?t?t?t?t?t?X?X?X?X?X?X?X?X?X?X?X?X?B?B?B?B?B????????????????B?B?B????????DpDpDpDpDpDpDpDp??????X?X?t?t?t?t?t?t?t?t?t?t?t?t?t?t?t?X?X?X?X?X?X??????????^?????B?B?B?B?B???????????????????? ? ? ?  ?B?B?B?BDDDDDDD???? !?B"?B#?B$D%D&D'D(?X)?X*DE+D,D-?./?.0?.1?.2?34?35?36?^7D8?B9?3:?;<?=>?B?@AB?CDEFG?HI?JK?LM?LN?LO?PQ?LR?LR?ST?SU?SV?WX?BY?BZ?B[?B\?B]?B^?B_?B`?@a?@b?@c?@d?@e?@f?@g?@h?Ui?jk?jl?mn?mo?mp?mq?mr?ms?mt?mu?mv?mw?mx?my?mz?m{?m|?m}?m~?m?m?m?m?m??????????????????????????????????????????????????????????????????????????????????????????????????P?P?P?P?P?P?P?P?P?P???????????? ? ? ? ? ????????????[?[?[?[?[?[?[ ?[!?["?[#?[$?[%?[&?['?(?)?*?+?,?-?./?.0?.1?.2?.3?.4?.5?.6?.6?.7?89?8:?8;?8<?8=?8>?8??8@?8A?8B?8C?8C?8D?8E?8F?8G?8H?8I?8J?8K?8L?8M?8N?8O?8P?8P?8Q?8R?ST?SU?SV?SW?SX?JY?JZ?J[?J\?J]?J^?J_?J`?Ja?Jb?Jc?Jd?ef?gh?gi?gj?gk?gl?mn?mo?mp?mq?rs?rt?ru?rv?rw?rx?ry?rz?r{?|}?~?~?~?~????????????????????????????????????????????????????????????????????W?W?W?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?L?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@ ?@ ?@ ?@ ?@ ?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@? ? ?!?"#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?;8?;8?;9?;:?;:?;;?;<?;<?;=?;>?;>?;??;@?;@?;A?;B?;B?;C?;D?;D?;E?;F?;F?;G?;H?;H?;I?JK?JL?JM?JN?JO?JP?QR?QS?QT?QU?VW?VX?VY?VZ?V[?V\?V]?V^?V_?V`?Va?Vb?Vc?Vd?@e?@f?@g?@h?@i?@j?@k?@l?@f?`m?`n?`o?`p?`q?`r?st?su?sv?sw?sx?sy?sy?sz?s{?s|?s}?s~?s?s?s??????^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^?^????????????????.?.?.?3?3?3?3?3??????????????????????????????????????????????????????????????????????? ? ? ?  ? ? ? ? ?????t?t?t?????? ?!?"?#?$?%?&?'?(?)?*?+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:;?:<?==?S>?S??S@?SA?SB?SC?SD?SE?SF?SG?SH?SI?SJ?SK?SL?SM?SN?SO?S?SP?SQ?SR?SS?ST?SU?SV?SW?SX?SY?SZ?S[?S\?S]?S^?S_?S`?Sa?Sb?Sc?Sd?Se?Sf?Sg?Sh?Si?Sj?Sk?Sl?mn?mo?mp?mq?Jr?Js?Xt?Xu?Xv?Xw?Xx?Xy?Xz?X{?X|?X}?~????????G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G?G??????????L?L?L???????????????B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B????s?sDpDpDplinkl_IhP5BK4KiOGJaxAKVPtBB7Network.Linklater.TypesNetwork.LinklaterDataAesonNetwork.Linklater.BatteriesNetworkWAI RequestError_requestErrorException_requestErrorResponse_requestErrorDecodingResponseAPITokenConfig_configHookURLMessage SimpleMessageFormattedMessageFormatFormatAt FormatUser FormatLink FormatStringIcon EmojiIconCommand _commandName _commandUser_commandChannel _commandTextUserChannel ChannelIDunformatcommandOfParams tryRequest promoteEither promoteMaybeasList$fToJSONMessage$fToJSONChannel $fEqChannel $fOrdChannel $fShowChannel$fEqUser $fOrdUser $fShowUser $fEqCommand $fOrdCommand $fShowCommand$fEqIcon $fOrdIcon $fShowIcon$fShowAPIToken $fEqAPIToken $fOrdAPIToken$fShowRequestError slashSimpleslashsaystartRTMstartRTMWithOptionsbaseGHC.IO.Exception IOExceptionGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwiseassert assertError GHC.MagicinlinemapGHC.Exts groupWith$GHC.Real fromIntegral realToFrac Control.MonadguardfromListData.Typeable.InternalmkAppTy Data.DynamictoDynjoinGHC.EnumBoundedminBoundmaxBoundEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpred GHC.ClassesEq==/= GHC.FloatFloatingpiexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanhlog1pexpm1log1pexplog1mexp Fractional fromRational/recipIntegral toIntegerquotremdivmodquotRemdivModMonad>>=>>returnfail Data.DatagfoldlgunfoldtoConstr dataTypeOf dataCast1 dataCast2gmapTgmapQlgmapQrgmapQgmapQigmapMgmapMpgmapMoFunctorfmap<$GHC.NumNum*+-negate fromIntegerabssignumOrd>=minmax><<=compareGHC.ReadReadreadList readsPrecreadPrec readListPrecReal toRational RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2RealFracproperFractiontruncateroundceilingfloorGHC.ShowShow showsPrecshowshowListGHC.ArrIxindexrangeinRange rangeSizeTypeableControl.Monad.FixMonadFixmfix Data.StringIsString fromString Applicativepure<*>*><* Data.FoldableFoldabletoListfoldrlengthfoldMapnullfoldlfoldl'foldl1sumproductfoldr1maximumminimumelemfoldfoldr'Data.Traversable TraversabletraversemapM sequenceAsequence GHC.GenericsGenericMonoidmemptymappendmconcat GHC.TypesBoolFalseTrueCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeIntegerMaybeNothingJustOrderingLTEQGTRatioRational RealWorldIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherLeftRightTypeRepTyConliftMeither Data.Monoid<> Data.Functor<$>String#text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVRData.Text.InternalText Unsafe.Coerce unsafeCoercecontainers-0.5.7.1 Data.Map.BaseMapGHC.IO.Handle.TypesHandleGHC.STST GHC.Conc.SyncforkOnWithUnmaskforkIOWithUnmaskforkOnControl.ConcurrentforkOSThreadId GHC.UnicodeisSpaceisAlphaisDigit Text.Readread Alternativeemptymany<|>some MonadPlusmzeromplusuntangle ioException heapOverflow stackOverflowallocationLimitExceededblockedIndefinitelyOnSTMblockedIndefinitelyOnMVarunsupportedOperationsortWith Text.PrintfhPrintfprintf Data.Fixed showFixedmod'divMod'div'FixedMkFixed HasResolution resolutionE0UniE1DeciE2CentiE3MilliE6MicroE9NanoE12Pico Data.Complexphase magnitudepolarcismkPolar conjugateimagPartrealPartComplex:+ tyconModule tyconUQname isNorepType mkNoRepType mkCharConstr mkRealConstrmkIntegralConstr mkCharType mkFloatType mkIntTypemaxConstrIndex constrIndex indexConstr isAlgType readConstr showConstr constrFixity constrFieldsdataTypeConstrsmkConstr mkDataType repConstr constrRep constrType dataTypeRep dataTypeName fromConstrM fromConstrB fromConstrDataTypeConstrDataRepIntRepFloatRepAlgRepCharRepNoRep ConstrRep AlgConstr IntConstr FloatConstr CharConstrConIndexFixityPrefixInfix Data.Version makeVersion parseVersion showVersionVersion versionBranch versionTagsSystem.TimeouttimeoutSystem.Mem.StableName eqStableNamehashStableNamemakeStableName StableName System.Mem performGCperformMajorGCperformMinorGC System.Exitdie exitSuccess exitFailureexitWithSystem.EnvironmentgetEnvironment withProgNamewithArgsunsetEnvsetEnv lookupEnvgetEnv getProgNamegetArgs!System.Environment.ExecutablePathgetExecutablePath Data.Unique hashUnique newUniqueUnique Data.STRef modifySTRef' modifySTRef Data.RatioapproxRationalData.Bifunctor BifunctorfirstsecondbimapControl.Monad.IO.ClassMonadIOliftIOthreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOSWithUnmask forkFinallyrtsSupportsBoundThreadsControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.ChanwriteList2ChangetChanContents isEmptyChan unGetChandupChanreadChan writeChannewChanChan Debug.Trace traceMarkerIO traceMarker traceEventIO traceEvent traceStack traceShowtraceIdtrace putTraceMsgtraceIOmfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMfoldMapDefault fmapDefault mapAccumR mapAccumLforMforControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipList Control.ArrowleftApp^<<<<^>>^^>>returnAArrowarr***&&&Kleisli runKleisli ArrowZero zeroArrow ArrowPlus<+> ArrowChoice|||+++leftright ArrowApplyapp ArrowMonad ArrowLooploopControl.Category>>><<<Categoryid.readIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar GHC.IO.HandlehClose GHC.Conc.IO registerDelay threadDelay closeFdWithioManagerCapabilitiesChangedensureIOManagerIsRunningGHC.Conc.Signal runHandlers setHandlerSignal HandlerFunControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarMaskedwithMVarswapMVarSystem.IO.Unsafe unsafeFixIOControl.ExceptionallowInterruptcatchesHandlerSystem.IO.Error catchIOErrorannotateIOError modifyIOErrorioeSetFileName ioeSetHandleioeSetLocationioeSetErrorStringioeSetErrorTypeioeGetFileName ioeGetHandleioeGetLocationioeGetErrorStringioeGetErrorTypeisUserErrorTypeisPermissionErrorTypeisIllegalOperationErrorTypeisEOFErrorTypeisFullErrorTypeisAlreadyInUseErrorTypeisDoesNotExistErrorTypeisAlreadyExistsErrorType userErrorTypepermissionErrorTypeillegalOperationErrorType eofErrorType fullErrorTypealreadyInUseErrorTypedoesNotExistErrorTypealreadyExistsErrorType isUserErrorisPermissionErrorisIllegalOperation isEOFError isFullErrorisAlreadyInUseErrorisDoesNotExistErrorisAlreadyExistsError mkIOError tryIOErrorControl.Exception.BasebracketOnErrorbracket_finallybracket onExceptiontryJusttry mapException handleJusthandle catchJustcatchPatternMatchFail RecSelError RecConError RecUpdError NoMethodError TypeErrorNonTerminationNestedAtomically readMaybe readEitherreadsgetUncaughtExceptionHandlersetUncaughtExceptionHandler reportErrorreportStackOverflow writeTVarreadTVar readTVarIO newTVarIOnewTVaralwaysalwaysSucceedscatchSTMthrowSTMorElseretry atomically unsafeIOToSTMmkWeakThreadIdthreadCapability threadStatus runSparksparpseq labelThreadyield myThreadIdthrowTo killThread childHandler numSparksgetNumProcessorssetNumCapabilitiesgetNumCapabilitiesnumCapabilitiesforkIOdisableAllocationLimitenableAllocationLimitgetAllocationCountersetAllocationCounter BlockReason BlockedOnMVarBlockedOnBlackHoleBlockedOnException BlockedOnSTMBlockedOnForeignCallBlockedOnOther ThreadStatus ThreadRunningThreadFinished ThreadBlocked ThreadDiedSTMTVarioErrorasyncExceptionFromExceptionasyncExceptionToExceptionBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAllocationLimitExceededAssertionFailedSomeAsyncExceptionAsyncException StackOverflow HeapOverflow ThreadKilled UserInterruptArrayExceptionIndexOutOfBoundsUndefinedElementExitCode ExitSuccess ExitFailure IOErrorTypeEOF AlreadyExists NoSuchThing ResourceBusyResourceExhaustedIllegalOperationPermissionDenied UserErrorUnsatisfiedConstraints SystemError ProtocolError OtherErrorInvalidArgumentInappropriateType HardwareFaultUnsupportedOperation TimeExpiredResourceVanished InterruptedData.Functor.ConstConstgetConstForeign.StorableStorablefindnotElem minimumBy maximumByallanyorand concatMapconcatmsumasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlMfoldrMDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductFirstgetFirstLastgetLastAltgetAlt Data.IORefatomicWriteIORefatomicModifyIORef'atomicModifyIORef modifyIORef' modifyIORef mkWeakIORef GHC.IORef writeIORef readIORefnewIORefIORefGHC.IOevaluateuninterruptibleMaskuninterruptibleMask_maskmask_getMaskingState interruptiblethrowIOstToIOFilePath MaskingStateUnmaskedMaskedInterruptibleMaskedUninterruptible userErrorIOError ioe_handleioe_type ioe_locationioe_description ioe_errno ioe_filename dynTypeRepdynAppdynApply fromDynamicfromDynDynamic GHC.Exceptionthrow Exception toException fromExceptiondisplayException ErrorCallErrorCallWithLocationArithExceptionOverflow UnderflowLossOfPrecision DivideByZeroDenormalRatioZeroDenominator Data.Typeablegcast2gcast1gcasteqTcast rnfTypeRep showsTypeReptypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1typeOftypeRep typeRepArgs typeRepTyCon funResultTy splitTyConAppmkFunTy mkTyConApptypeRepFingerprintrnfTyConmkTyCon3tyConFingerprint tyConString tyConName tyConModule tyConPackage Typeable1 Typeable2 Typeable3 Typeable4 Typeable5 Typeable6 Typeable7NumericshowOctshowHex showIntAtBase showGFloatAlt showFFloatAlt showGFloat showFFloat showEFloatshowInt readSigned readFloatreadHexreadDecreadOctreadInt byteSwap64 byteSwap32 byteSwap16isRightisLeftpartitionEithersrightsleftsData.Type.Equality:~:Refl Data.ProxyProxy Data.OldListunwordswordsunlineslinesunfoldrsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLengthinsertByinsert partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndex elemIndices elemIndex stripPrefix dropWhileEndData.Ord comparingDown Data.Char isSeparatorisNumberisMarkisLetter digitToInt lexDigits readLitChar lexLitCharlex readParenText.ParserCombinators.ReadPrec readS_to_Prec readPrec_to_S readP_to_Prec readPrec_to_PReadPrecText.ParserCombinators.ReadP readS_to_P readP_to_SReadSReadPfromRat floatToDigits showFloat Data.BitstoIntegralSizedpopCountDefaulttestBitDefault bitDefaultBitsshiftRshiftL.&..|.xor complementshiftrotatezeroBitsbitsetBitclearBit complementBittestBit bitSizeMaybebitSizeisSigned unsafeShiftL unsafeShiftRrotateLrotateRpopCount FiniteBits finiteBitSizecountLeadingZeroscountTrailingZeros Data.FunctiononfixvoidtoTitletoUppertoLowerisLowerisUpperisPrint isControl isAlphaNumisSymbol isPunctuation isHexDigit isOctDigit isAsciiUpper isAsciiLowerisLatin1isAsciigeneralCategoryGeneralCategoryControlUppercaseLetterLowercaseLetterTitlecaseLetterModifierLetter OtherLetterNonSpacingMarkSpacingCombiningMark EnclosingMark DecimalNumber LetterNumber OtherNumberConnectorPunctuationDashPunctuationOpenPunctuationClosePunctuation InitialQuote FinalQuoteOtherPunctuation MathSymbolCurrencySymbolModifierSymbol OtherSymbolSpace LineSeparatorParagraphSeparator Surrogate PrivateUse NotAssigned GHC.STRef writeSTRef readSTRefnewSTRefSTRefrunSTfixSTlcmgcd^^^oddeven showSigned denominator numerator%GHC.Charchr intToDigit showLitChar showParen showStringshowCharshowsShowSunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl'scanl1scanlfoldl1'initlasttailhead Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeswapuncurrycurrysubtractGHC.MVar isEmptyMVar tryReadMVar tryPutMVar tryTakeMVarputMVarreadMVartakeMVarnewMVar newEmptyMVarMVar GHC.IO.UnsafeunsafeInterleaveIOunsafeDupablePerformIOunsafePerformIOasTypeOfuntil$!flipconstordapliftM5liftM4liftM3liftM2when=<<liftA3liftA2liftA<**>GHC.Err undefinederrorWithoutStackTraceerror SomeException&&||not+base-prelude-1.0.1.1-4AORg8JFeUgA2GTGpr6FgI BasePreludesortOnunconsisSubsequenceOf$> traceShowMtraceM traceShowIdbool&exceptions-0.8.3-ADEDRATtUrMK1JW4zMQ9UControl.Monad.Catch MonadThrowthrowM_reasonableOptionsheaders responseOf _paramsIO_u