z)7      !"#$%&'()*+,-./0123456  Safe-Inferred789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678 Safe-Inferred24HMT between a  and a target type.This contains matched 9( in reverse order to how it was matched. This is just to pure with a refined type.This  strips/prepends$ a prefix to the first element of a .1pure "/hello/there" ^? prefixed "/hello/" . _head Just "there".prefixed "/hello/" # pure "there" & view _head"/hello/there"6If matching the entire source it previews to an empty 9. You might use $ if you are expecting this behavior.(pure "hello" ^? prefixed "hello" . _headJust ""This also means that to  1 an entire source, you need to give it an empty 9.+prefixed "hello" # pure mempty & view _head"hello" An empty - matches to itself regardless of the pattern.Kpreview (prefixed "hello") (review (prefixed "hello") mempty) <&> is _Empty Just TrueThis  strips/appends" a suffix to the first value of a ./pure "/hello/there" ^? suffixed "there" . _headJust "/hello/".suffixed "there" # pure "/hello/" & view _head"/hello/there"6If matching the entire source it previews to an empty 9. You might use $ if you are expecting this behavior.(pure "hello" ^? suffixed "hello" . _headJust ""This also means that to  1 an entire source, you need to give it an empty 9.+suffixed "hello" # pure mempty & view _head"hello" An empty - matches to itself regardless of the pattern.Kpreview (suffixed "hello") (review (suffixed "hello") mempty) <&> is _Empty Just TrueThis   splits/joinsC at the first occurrence of a boundary for the first value of a .5pure "hello/out/there" ^? sep "/" <&> toListOf foldedJust ["out/there","hello"]9sep "/" # (pure "out/there" <> pure "hello") & view _head"hello/out/there"GNotice what happens when there is no source before or after a boundary:pure "hello/" ^? sep "/"Just ["","hello"]*(pure "hello/" <> pure "there") ^? sep "/"Just ["","hello","there"]pure "/hello" ^? sep "/"Just ["hello",""]*(pure "/hello" <> pure "there") ^? sep "/"Just ["hello","","there"]When the source isE identical to the boundary: >>> pure "hello" ^? sep "hello" Just []This is just an alias to U. Use this to match the entirety of the source. The source mustn't be lifted to a ."hello" ^? exact "hello"Just ():Like ;# but discards the needle and wraps <N when there is no needle. When the needle is empty it breaks until the end.:=>?@A :=>?@A Safe-Inferred=HKMA B' with multiple values. Also known as a  MultiDict in most web frameworks. A ) of the values of a given HTTP parameter.  Encode a C with the typical query string format. This is useful to render .s when testing. The web server adapter for Nero0 should do this for you in the real application.CIThe default monoid implementation is left biased, this implementation mappends the values.DE FGHIJKCL   DE  FGHIJKCL Safe-InferredT A  to access a potential .A  in the context of a form.Get the  for types with one.'It's the main data associated with the  of Request or a Response.A  for types with a . Indicates a Text encoding. Contains the % and any metadata associated with it.A  to obtain a  from a  and make  from a .A  with an empty  useful for testing. MNOPQRST    NMQPORST Safe-Inferred=K  for types with a $. for types with a %. for types with a &.  to obtain the ( of types with Location." for types with an (.$The  query string in the form of a .%Path after the host name in a (.&The host name of a (.'The scheme given in the (, i.e. http or https.(Composite type of a ', &, %, $.)Empty ( useful for testing. !"#$%&'UV(W)XYZ[\]  !"#$%&'()('&%$"# ! ) !"#$%&'VU(W)XYZ[\] Safe-InferredT*An HTTP Request.+Show * method., to filter GET *s.dummyRequest ^? _GET <&> method Just "GET"#dummyRequestForm ^? _GET <&> methodNothing- to filter for POST *s. dummyRequest ^? _POST <&> methodNothing$dummyRequestForm ^? _POST <&> method Just "POST".This U lets you traverse every HTTP parameter regardless of whether it's present in the  query string or in the form encoded body of a POST *. In the rare case where there are HTTP parameters in both, every parameter is still being traversed starting from the /query string/.You might want to use  % for traversing a specific parameter.glet request = dummyRequestForm & query . at "name" ?~ ["hello", "out"] & form . at "name" ?~ ["there"]"foldOf params request ^? ix "name"Just ["hello","out","there"]/(An empty GET request useful for testing.0$An empty POST request with an empty form encoded body useful for testing.^6It traverses the values with the same key both in the  query string and the form encoded body of a POST *.*_`+,-./0a^bcdef*+,-./0*+,-./0*`_+,-./0a^bcdef Safe-Inferred1%The HTTP status code and description.2An HTTP response.3 Creates an 200 OKG response from the given text. It automatically encodes the text to 'utf-8'. The  Mime type is text/plain.4 Creates an 301 Moved Permanently response with the   corresponding to the given (.5 Obtain the 1 from a 2. 1g2hi345jkl12345234151g2ih345jkl Safe-InferredHMT6Redirect with slash appended URL if only a trailing slash is needed for successful matching, otherwise it responds normally.Blet mkRequest p = dummyRequest & host .~ "example.com" & path .~ p7let respond name = ok $ "<h1>Hello " <> name <> "</h1>"Clet app = slashRedirect (prefixed "/hello/" . suffixed "/") respond)app (mkRequest "/hello/there") <&> statusJust "301 Moved Permanently"3app (mkRequest "/hello/there") >>= preview location&Just "http://example.com/hello/there/"*app (mkRequest "/hello/there/") <&> status Just "200 OK"(app (mkRequest "/hello/there/") <&> bodyJust "<h1>Hello there</h1>"app $ mkRequest "/bye/"Nothing6What to respond upon matching.666  Safe-Inferred789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./012345678 )*+,-./0234*+,- . 234/0)m     !"#$%&'()*+,-./0123456789:;<=>?@ABCABDAEFGHIGHJAEKALMABNABOABOAPQARSARTARUARVWXYWXZ[\][\][\^GH_`ab`ac`ad`ae`af`ag`ah`ai`aj`ak`al`am`an`ao`ap`aq`ar`as`at`au`av`aw`ax`ay`az`a{`a|`a}`a~`a`a```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````` `  `  `  ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `  ` !` "` #` $` %` &` '` (` )` *` +` ,` -` .` /` 0` 1` 2` 3` 4` 5` 6`78`79`:;`:<`:=`:>`:?`:@`:A`:B`:C`:D`:E`:F`:G`:H`:I`:J`:K`:L`:M`:N`:O`:P`:Q`:R`:S`:T`:U`:V`:W`:X`:Y`:Z`:[`:\`:]`:^`:_`:``:a`:b`:c`:d`:e`fg`fh`fi`fj`fk`fl`fm`fn`fo`fp`fq`fr`fs`ft`fu`fv`fw`fx`fy`fz`f{`f|`f}`f~`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f`f````````````````````````````````````````````````````````````````````````````````````````````` ` ` ` ` ````````````````` `!`"`#`$`%`&`'`(`)`*`+`,-`,.`,/`,0`,1`,2`,3`,4`,5`,6`78`79`7:`7;`7<`7=`7>`7?`7@`7A`7B`7C`7D`7E`7F`7G`7H`7I`7J`7K`7L`7M`NO`NP`NQ`NR`NS`NT`NU`NV`NW`NX`NY`NZ`N[`N\`N]`N^`N_`N``Na`Nb`Nc`Nd`Ne`Nf`Ng`Nh`Ni`jk`jl`jm`jn`jo`jp`jq`jr`js`jt`ju`jv`jw`jx`jy`jz`j{`j|`j}`j~`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`j`````````````````````````````````````````````````````````````````` ``` ` ` `` ` ``````````(``,````0``4````````"`%` `!`"`#`$`%`&`'`(`)`*`+`,`-`.`/0`/1`/2`/3`45`67`89`8:`8:`8;`8<`8=`8=`8>`?@`?@`?A`BC`BD`BE`BF`BG`BH`BI`BJ`BK`BK`LM`NO`NP`QR`QS`TUVWXVWYZ[\Z[]Z[^Z[_Z`aZ`bZ`cdefgdhgAijklmnopqrstuvwxyz{|}~2;nero-0.2 Nero.Match Nero.Param Nero.PayloadNero.Url Nero.Request Nero.ResponseNero.Application Nero.PreludeNeroTargettargetMatchmatchprefixedsuffixedsepexactMultiMapParamparamencodeMultiMapFormedformFormHasBodybodyBody PayloadedpayloadEncodingPayload utf8Encoding payloadText_FormdummyPayloadFormHasQueryqueryHasPathpathHasHosthostLocationlocationHasUrlurlQueryPathHostSchemeUrldummyUrlRequestmethod_GET_POSTparams dummyRequestdummyRequestFormStatusResponseokmovedPermanentlystatus slashRedirectbaseControl.Applicative<*>pureData.Traversable Traversablecontravariant-1.3.1Data.Functor.Contravariant contramap Contravarianttraverse Data.FoldablefoldgetConstConst Data.Functor<$> Data.Monoid<>mappendmemptyMonoidbifunctors-4.2.1Data.Bifunctorbimap Bifunctortransformers-0.4.3.0Data.Functor.IdentityIdentity runIdentity>$lens-4.9Control.Lens.THdefaultFieldRules makeFieldsabbreviatedFieldscamelCaseFieldsunderscoreFields makeWrappeddeclareLensesWith declareFieldsdeclareWrapped declarePrismsdeclareClassyFor declareClassydeclareLensesFor declareLensesmakeLensesWith makeClassyFor makeLensesFor makeClassy_ makeClassy makeLenses classyRules_ classyRules lensRulesFor lensRules lensClass lensField createClassgenerateLazyPatternsgenerateUpdateableOpticsgenerateSignatures simpleLensesControl.Lens.Internal.PrismTHmakeClassyPrisms makePrismsControl.Lens.Internal.FieldTH LensRulesTopName MethodNameDefNameControl.Lens.AtsansixAtIndexcontainsContainsIxValueixIxedatAtControl.Lens.Consunsnocsnoc|>_last_init_tail_headunconscons<|_ConsCons_SnocSnocControl.Lens.EacheachEachControl.Lens.Empty_EmptyAsEmptyControl.Lens.Wrappedalafala _Unwrapping _Wrapping _Unwrapping' _Wrapping'op _Unwrapped_Wrapped _Unwrapped' _Wrapped' UnwrappedWrapped Rewrapped RewrappingControl.Lens.Iso bimappingrmappinglmapping dimapping contramappingimagmamagma involutedreversedlazyflipped uncurriedcurriedanonnon'nonmappingenumunderaufaucloneIsowithIsofromisoAnIsoAnIso'swappedSwappedstrictStrictControl.Lens.EqualitysimplesimplyfromEqmapEqsubstEqrunEq Identical AnEquality AnEquality'Control.Lens.Platedgplateparts composOpFoldparaparaOf holesOnOfholesOnholes contextsOnOf contextsOn contextsOfcontextstransformMOnOf transformMOf transformMOn transformM transformOnOf transformOf transformOn transform universeOnOf universeOn universeOfuniverse rewriteMOnOf rewriteMOn rewriteMOfrewriteM rewriteOnOf rewriteOn rewriteOfrewritechildrendeep...platePlatedGPlatedControl.Lens.ReifiedrunLensLens ReifiedLens ReifiedLens'runIndexedLens IndexedLensReifiedIndexedLensReifiedIndexedLens'runIndexedTraversalIndexedTraversalReifiedIndexedTraversalReifiedIndexedTraversal' runTraversal TraversalReifiedTraversalReifiedTraversal' runGetterGetter ReifiedGetterrunIndexedGetter IndexedGetterReifiedIndexedGetterrunFoldFold ReifiedFoldrunIndexedFold IndexedFoldReifiedIndexedFold runSetterSetter ReifiedSetterReifiedSetter'runIndexedSetter IndexedSetterReifiedIndexedSetterReifiedIndexedSetter'runIsoIso ReifiedIso ReifiedIso'runPrismPrism ReifiedPrism ReifiedPrism'Control.Lens.LevelilevelslevelsControl.Lens.Indexed ifoldMapByOf ifoldMapBy imapAccumL imapAccumRiforMimapMiforitoListifoldlMifoldrMifind iconcatMapiforM_imapM_ifor_ itraverse_noneinoneiallianyindexindicesasIndex withIndexicompose<.> reindexed selfIndex.><.imappedimapFunctorWithIndexifoldl'ifoldr'ifoldlifoldrifoldedifoldMapFoldableWithIndex itraversed itraverseTraversableWithIndexControl.Lens.Traversal confusingdeepOffailing ifailoverfailoverelements elementsOfelement elementOfignored traversed64 traversed1 traversed imapAccumLOf imapAccumROfiforMOfimapMOfiforOf itraverseOfcloneIndexedTraversal1cloneIndexPreservingTraversal1cloneTraversal1cloneIndexedTraversalcloneIndexPreservingTraversalcloneTraversaldroppingtakingbesidebothunsafeSingularsingularholesOfiunsafePartsOf'unsafePartsOf'iunsafePartsOf unsafePartsOf ipartsOf'partsOf'ipartsOfpartsOfilocilociscanl1Ofscanr1Of mapAccumLOf mapAccumROf transposeOf sequenceOfforMOfmapMOf sequenceAOfforOf traverseOf ATraversal ATraversal' ATraversal1 ATraversal1'AnIndexedTraversalAnIndexedTraversal1AnIndexedTraversal'AnIndexedTraversal1' Traversing Traversing1 Traversing' Traversing1' traverseMin TraverseMin traverseMax TraverseMaxControl.Lens.Fold foldMapByOf foldMapByfoldByOffoldByidroppingWhile itakingWhile ifiltered^@?!^@?^@.. itoListOf ifoldlMOf ifoldrMOf ifoldlOf' ifoldrOf'ifindMOfifindOf iconcatMapOfiforMOf_imapMOf_iforOf_ itraverseOf_inoneOfiallOfianyOfifoldlOfifoldrOf ifoldMapOf backwardsipreusespreusesipreusepreuse ipreviewspreviewsipreviewpreviewipreprehasn'thasfoldlMOffoldrMOf foldl1Of' foldr1Of'foldlOf'foldrOf'foldl1Offoldr1OffindMOffindOf minimumByOf maximumByOf minimumOf maximumOf notNullOfnullOflastOffirstOf^?!^?lengthOfconcatOf concatMapOf notElemOfelemOfmsumOfasumOf sequenceOf_forMOf_mapMOf_ sequenceAOf_forOf_ traverseOf_sumOf productOfnoneOfallOfanyOforOfandOf^..toListOffoldlOffoldrOffoldOf foldMapOflinedworded droppingWhile takingWhilefilterediteratedunfoldedcycled replicatedrepeatedfolded64foldedifoldingfoldingControl.Lens.ZoomzoomZoommagnifyMagnifyControl.Lens.Prism_Shownearlyonly_Void_Nothing_Just_Right_Leftmatchingisn'tbelowasidewithoutoutsideprism'prism clonePrism withPrismAPrismAPrism'Control.Lens.Reviewreusesreusereviews#reviewreununtoReviewAReviewControl.Lens.Gettercoerced^@.iusesiuseiviewsiview ilistenings listenings ilistening listeningusesuse^.viewsviewilikelikeitotoGettingIndexedGetting AccessingControl.Lens.Tuple_9'_8'_7'_6'_5'_4'_3'_2'_1'_1Field1_2Field2_3Field3_4Field4_5Field5_6Field6_7Field7_8Field8_9Field9Control.Lens.Lensfusinguniteddevoid<#=<#~#%%=<#%=<#%~#%=#=#%%~#%~#~storing^#<<%@=<%@=%%@=%%@~<<%@~<%@~overA<<>=<<>~<<~<<<>=<<&&=<<||=<<**=<<^^=<<^=<~<<&&~<<||~<<**~<<^^~<<^~<&%%=%%~&~ilensiplenslensALensALens' AnIndexedLensAnIndexedLens'Control.Lens.SetterimapOfmapOfassignA.@=%@=.@~%@~isetsisetiover icensoring censoringipassingpassingscribe<>=<>~