5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      None+35N` geography IDInstagram returns data:null for nothing, but Aeson considers that () maps to an empty array... so we model the fact that we expect null via NoResult a relationship between two usersnot present in docincoming relationship status outgoing relationship statusa TagTag Namean update from a subscription*a subscription to a real time notification'notification aspect(#the URL to receive notifications to)?a collection of items (count + data) data can only be a subset-Commenton on a medium3 comment id4#different images for the same media9data for a single image>geographical location infoE location IDFposition of a userJposition in pictureNinstagram media object^seems to be open format Whttps://groups.google.com/forum/?fromgroups#!topic/instagram-api-developers/KvGH1cnjljQ_Media ID`;pagination info for responses that can return a lot of data+error envelope for Instagram error responseg"envelope for Instagram OK responseiAthis should only say 200, no error, but put here for completenessj?data, garanteed to be present (otherwise we get an ErrEnvelope)l/an exception that a call to instagram may throwmJSON parsingErrornapplication exceptiono$an error returned to us by Instagramt the scopes of the authentication{/the User counts info returned by some endpoints7the User partial profile returned by the authenticationUser ID!the access token is simply a Text-the oauth token returned after authenticationthe access tokenthe user structure returnedthe app credentials client id client secret get client id in ByteString form$get client secret in ByteString form0the media Aspect, the only one supported for now!from json as per Instagram formatto json as per Instagram format!from json as per Instagram formatto json as per Instagram format!from json as per Instagram formatto json as per Instagram format!from json as per Instagram formatto json as per Instagram format!from json as per Instagram formatto json as per Instagram format!from json as per Instagram formatto json as per Instagram format!from json as per Instagram formatto json as per Instagram format !from json as per Instagram format!to json as per Instagram format"!from json as per Instagram format#to json as per Instagram format$!from json asCommentstagram format%to json asCommentstagram format&!from json as per Instagram format'to json as per Instagram format(!from json as per Instagram format)to json as per Instagram format*!from json as per Instagram format+to json as per Instagram format,!from json as per Instagram format-to json as per Instagram format.!from json as per Instagram format/to json as per Instagram format0!from json as per Instagram format1to json as per Instagram format2!from json as per Instagram format3to json as per Instagram format4!from json as per Instagram format5to json as per Instagram format6!from json as per Instagram format7to json as per Instagram format8*make our exception type a normal exception9!from json as per Instagram format:to json as per Instagram format;to json as per Instagram format<!from json as per Instagram format=!from json as per Instagram format>to json as per Instagram format? simple string@ simple stringA!from json as per Instagram formatBto json as per Instagram formatC  !"#$%&'D()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefEFghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:G;<=>?@AB  !"#$%&'D()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefEFghijklmnopqrstuvwxyz{|}~WC    !"#$%&'D()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefEFghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:G;<=>?@ABNone*+3457>CILNHXsimple class used to hide the serialization of parameters ansd simplify the calling codeI&the data kept through the computationsJapp credentialsKHTTP connection managerL host namefthe instagram monad transformer this encapsulates the data necessary to pass the app credentials, etcRun a computation in the * monad transformer with your credentials.MGet the user's credentials.NGet the instagram hostO!build a post request to InstagramP build a get request to InstagramQ$build a delete request to InstagramR3build a URL for a get operation with a single queryS4perform a HTTP request and deal with the JSON resultT_get a JSON response from a request to Instagram instagram returns either a result, or an errorUUget an envelope from a request to Instagram the error is wrapped inside the envelopeVget an envelope from InstagramW<get an envelope from Instagram, with optional authenticationX0send a delete and get an envelope from InstagramYNsend a delete and get an envelope from Instagram, with optional authenticationZ6post a request and get back an envelope from Instagram[Tpost a request and get back an envelope from Instagram, with optional authentication\Mutility function to get an envelop, independently of how the request is builtUse the pagination links in an g$ to fetch the next page of results.If the Envelope has no pagination, or we have reached the final page (indicated by the pNextUrl field being missing), returns Nothing.]Get the ^.Run a  ResourceT inside a ._#Transform the computation inside a .`True if the the Status is ok (i.e. 2XX).a!add the access token to the queryb]add an optional access token to the query if we don't have a token, we'll pass the client_idc(add application client info to the query/HdIeJKLfgYour app's credentials.Connection manager (see h).the action to run the resultMNO the url paththe query parametersthe properly configured requestP the url paththe query parametersthe properly configured requestQ the url paththe query parametersthe properly configured requestR the url paththe query parametersthe URLSextract the error from the JSONTUV(the URL components, will be concatenatedthe access tokenthe query parametersthe resulting envelopeW(the URL components, will be concatenatedthe access tokenthe query parametersthe resulting envelopeX(the URL components, will be concatenatedthe access tokenthe query parametersthe resulting envelopeY(the URL components, will be concatenatedthe access tokenthe query parametersthe resulting envelopeZ(the URL components, will be concatenatedthe access tokenthe query parametersthe resulting envelope[(the URL components, will be concatenatedthe access tokenthe query parametersthe resulting envelope\the request building method(the URL components, will be concatenatedthe access tokenthe query parametersthe resulting envelope]_`abcijklmnopqrstuvHdMNOPQRTUVWXYZ[]_abc(HdIeJKLfgMNOPQRSTUVWXYZ[\]_`abcijklmnopqrstNone+4deletion parametersdelete all subscriptions%delete one subscription, given its IDdelete all user subscriptionsdelete all tag subscriptions!delete all location subscriptions"delete all geography subscriptionsdetails of subscription requestwhen a user uploads a picture+when a picture is tagged with the given tag1when a picture is tagged with a specific location@when a picture is tagged with a location inside the given region(parameters for the subscription creationthe actual subscription request,the url Instagram will post notifications tothe subscription aspectthe verification tokencreate a subscription*list all subscriptions for the application&delete subscriptions based on criteriaBverify the signature with the content, using the secret as the keyw to HTTP queryx to HTTP queryy to HTTP querythe subscription parametersthe created subscriptionthe ID of the subscriptionthe parameters for the deletionthe ID of the subscription the signature the contentwxy  wxyNone+4relationship action(Get the list of users this user follows./Get the list of users this user is followed by.(Get the list of users this user follows./Get the list of users this user is followed by.CList the users who have requested this user's permission to follow.5Get information about a relationship to another user.EModify the relationship between the current user and the target user.z{ z{None+4$parameters for recent tag pagination#Get information about a tag object.$Get a list of recently tagged media.Search for tags by name. |}|}None+4 parameters for self liked callparameters for self liked call#Parameters for call to recent media Parameters for call to self feed#Get basic information about a user."See the authenticated user's feed..Get the most recent media published by a user.9See the authenticated user's list of media they've liked.Search for a user by name. ~~None+4#Parameters for call to media search%Get information about a media object.7Get a list of what media is most popular at the moment.!Search for media in a given area.   None+4#Parameters for call to media search6Parameters for call to recent media in location search!Get information about a location.9Get a list of recent media objects from a given location./Search for a location by geographic coordinate.  None+4.Get a list of users who have liked this media.=Set a like on this media by the currently authenticated user.@Remove a like on this media by the currently authenticated user. None+47Parameters for call to recent media in geography searchDGet very recent media from a geography subscription that you created None+4 'Get a full list of comments on a media. Create a comment on a media. `Remove a comment either on the authenticated user's media or authored by the authenticated user.         None+4 Kthe URI to redirect the user after she accepts/refuses to authorize the app .get the authorize url to redirect your user to`second step of authorization: get the access token once the user has been redirected with a code  Kthe URI to redirect the user after she accepts/refuses to authorize the app-the requested scopes (can be empty for Basic)the URL to redirect the user tothe redirect urithe code sent back to your appthe auth token    None+  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     lmnopqrs  {|}~tuvwxyzghijk`abcdefNOPQRSTUVWXYZ[\]^JKLMFGHI>?@ABCD9:;<=45678-./012)*+,'( !"#$%&  _3   E !!"#$%&''()*+,-./012334566789:;<<=>?@@ABCDDEFGHIJKKLMNNOPQQRSTUVWXYZ[\]^_`abbcdefghhijklmnoopqrstuvwxyzz{|}~~              !"#$%&'()*+,-./01123456789:;<=>?@ABCDEFGHIJKLMNOPQR5STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy z { | } ~ ig_1rqUtmGbycMLg8P2haONhJ InstagramInstagram.TypesInstagram.MonadInstagram.RealTimeInstagram.RelationshipsInstagram.TagsInstagram.UsersInstagram.MediaInstagram.LocationsInstagram.LikesInstagram.GeographiesInstagram.CommentsInstagram.Auth GeographyIDNoResult Relationship rOutgoing rIncomingrTargetUserPrivateIncomingStatus FollowedBy RequestedBy BlockedByYouInNoneOutgoingStatusFollows RequestedOutNoneTagtName tMediaCountTagNameUpdateuSubscriptionIDuObject uObjectIDuChangedAspectuTime SubscriptionsIDsTypesObject sObjectIDsAspect sCallbackUrl sLatitude sLongitudesRadiusAspect CallbackUrl CollectioncCountcDataCommentcIDcCreatedcTextcFrom CommentIDImagesiLowRes iThumbnail iStandardRes ImageDataidURLidWidthidHeightLocationlID lLatitude lLongitudelStreetAddresslName LocationID UserPosition upPositionupUserPositionpXpYMediamIDmCaptionmLinkmUsermCreatedmImagesmType mUsersInPhotomFiltermTags mLocation mCommentsmLikes mUserHasLiked mAttributionMediaID PaginationpNextUrl pNextMaxID pNextMinID pNextMaxTagID pMinTagIDEnvelopeeMetaeData ePagination IGException JSONExceptionIGAppExceptionIGErrorigeCodeigeType igeMessageScopeBasic PublicContent FollowerListComments RelationshipsLikes UserCountsucMedia ucFollows ucFollowedByUseruID uUsername uFullNameuProfilePictureuWebsiteuBiouCountsUserID AccessToken OAuthToken oaAccessTokenoaUser Credentials cClientID cClientSecretmedia InstagramT runInstagramT getNextPagerunResourceInIsDeletionParams DeleteAll DeleteOnedoID DeleteUsers DeleteTagsDeleteLocationsDeleteGeographiesSubscriptionRequest UserRequest TagRequesttrTagLocationRequestlrIDGeographyRequest grLatitude grLongitudegrRadiusSubscriptionParams spRequest spCallbackspAspect spVerifyTokencreateSubscriptionlistSubscriptionsdeleteSubscriptionsverifySignatureRelationShipActionFollowUnfollowBlockUnblockApproveDeny FollowParamsfpCount getFollows getFollowedBygetFollowsParamsgetFollowedByParamsgetRequestedBygetRelationshipsetRelationShipRecentTagParamsrtpMaxIDrtpMinIDgetTaggetRecentTagged searchTagsUserSearchParamsuspQueryuspCountSelfLikedParamsslpCount slpMaxLikeID RecentParamsrpCountrpMaxTimestamprpMinTimestamprpMaxIDrpMinIdSelfFeedParamssfpCountsfpMaxIDsfpMinIdgetUser getSelfFeed getRecent getSelfLiked searchUsersMediaSearchParams mspLatitude mspLongitude mspDistancemspMaxTimestampmspMinTimestampgetMediagetPopularMedia searchMediaLocationSearchParams lspLatitude lspLongitude lspDistancelspFoursquareIDv2lspFoursquareIDLocationMediaParamslmspMaxTimestamplmspMinTimestamp lmspMaxID lmspMinId getLocationgetLocationRecentMediasearchLocationsgetLikes getLikesMaxIdlikeunlikeGeographyMediaParamsgmpCountgmpMinIdgetGeographyRecentMedia getComments postComment deleteComment RedirectUrigetUserAccessTokenURL1getUserAccessTokenURL2 ErrEnvelope clientIDBSclientSecretBS$fFromJSONNoResult$fToJSONNoResult$fFromJSONRelationship$fToJSONRelationship$fFromJSONIncomingStatus$fToJSONIncomingStatus$fFromJSONOutgoingStatus$fToJSONOutgoingStatus $fFromJSONTag $fToJSONTag$fFromJSONUpdate$fToJSONUpdate$fFromJSONSubscription$fToJSONSubscription$fFromJSONAspect$fToJSONAspect$fFromJSONCollection$fToJSONCollection$fFromJSONComment$fToJSONComment$fFromJSONImages$fToJSONImages$fFromJSONImageData$fToJSONImageData$fFromJSONLocation$fToJSONLocation$fFromJSONUserPosition$fToJSONUserPosition$fFromJSONPosition$fToJSONPosition$fFromJSONMedia $fToJSONMedia$fFromJSONPagination$fToJSONPagination$fFromJSONErrEnvelope$fToJSONErrEnvelope$fFromJSONEnvelope$fToJSONEnvelope$fExceptionIGException$fFromJSONIGError$fToJSONIGError$fToJSONUserCounts$fFromJSONUserCounts$fFromJSONUser $fToJSONUser$fFromJSONAccessToken$fToJSONAccessToken$fFromJSONOAuthToken$fToJSONOAuthTokeneeMeta $fShowScope ToHtQueryIsDataisCreds isManagerisHostgetCredsgetHostgetPostRequest getGetRequestgetDeleteRequest getQueryURLigReqgetJSONResponsegetJSONEnvelopegetGetEnvelopegetGetEnvelopeMgetDeleteEnvelopegetDeleteEnvelopeMgetPostEnvelopegetPostEnvelopeM getEnvelopeM getManagerhttpc_HNPB2Nx43L1Bx5LAZyh70BNetwork.HTTP.Client.TypesManager mapInstagramTisOkayaddToken addTokenMaddClientInfos?+IsunIshttpc_EkjyYtEGwYS86M9OAihROXNetwork.HTTP.Conduit withManager $fToHtQuery[]$fToHtQueryMaybe$fToHtQueryText$fToHtQueryMaybe0$fToHtQueryMaybe1$fToHtQueryMaybe2$fToHtQueryInteger$fToHtQueryMaybe3$fToHtQueryDouble$fMonadBaseControlbInstagramT$fMonadTransControlInstagramT$fMonadBasebInstagramTmonad_0xW5zcMb0FUIevHTuIUHuLControl.Monad.Trans.ControlMonadBaseControlresou_FD3YBQAG5YCJcmLlgosnnd%Control.Monad.Trans.Resource.Internal MonadResource$fQueryLikeDeletionParams$fQueryLikeSubscriptionRequest$fQueryLikeSubscriptionParams$fQueryLikeRelationShipAction$fQueryLikeFollowParams$fQueryLikeRecentTagParams$fDefaultRecentTagParams$fQueryLikeUserSearchParams$fQueryLikeSelfLikedParams$fDefaultSelfLikedParams$fQueryLikeRecentParams$fDefaultRecentParams$fQueryLikeSelfFeedParams$fDefaultSelfFeedParams$fQueryLikeMediaSearchParams$fDefaultMediaSearchParams$fQueryLikeLocationSearchParams$fDefaultLocationSearchParams$fQueryLikeLocationMediaParams$fDefaultLocationMediaParams$fQueryLikeGeographyMediaParams$fDefaultGeographyMediaParams