pax_global_header00006660000000000000000000000064150567117230014521gustar00rootroot0000000000000052 comment=2e6b36f3388be0c72b207b04a63776142a00c0c8 auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/000077500000000000000000000000001505671172300240365ustar00rootroot00000000000000auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/.gitignore000066400000000000000000000000461505671172300260260ustar00rootroot00000000000000*-pkg.el *-autoloads.el *.elc .eldev/ auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/.gitlab-ci.yml000066400000000000000000000006551505671172300265000ustar00rootroot00000000000000.build: stage: build script: - curl -fsSL https://raw.github.com/emacs-eldev/eldev/master/bin/eldev > eldev && chmod a+x eldev - ./eldev compile - ./eldev lint build-28.2: image: "silex/emacs:28.2-ci" extends: .build build-29.4: image: "silex/emacs:29.4-ci" extends: .build build-30.2: image: "silex/emacs:30.2-ci" extends: .build build-master: image: "silex/emacs:master-ci" extends: .build auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/Eldev000066400000000000000000000004561505671172300250250ustar00rootroot00000000000000;;; -*- mode: emacs-lisp; lexical-binding: t -*- (eldev-require-version "1.10") (eldev-use-package-archive 'gnu) (setf eldev-release-post-release-commit-message "Post-release version bump." eldev-release-post-release-commit #'eldev-release-next-snapshot-version-unless-already-snapshot) auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/NEWS.org000066400000000000000000000007461505671172300253320ustar00rootroot00000000000000Summary of changes to auth-source-xoauth2-plugin ------------------------------------------------ * 0.3 ** Add support for predefined credentials This greatly simplifies the set-up in auth-source (details in README.org). * 0.2.1 ** Quick fix for the wrong usage of add-to-list * 0.2 ** Workaround smtpmail limitations when handling xoauth2 * 0.1 ** Initial release Thanks Philip Kaludercic for the detailed comments and suggestions! # Local variables: # mode: outline # End: auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/README.org000066400000000000000000000172051505671172300255110ustar00rootroot00000000000000#+TITLE: Auth-source xoauth2 plugin #+DATE: 2024-11-08 #+html: GNU ELPA * Introduction This package provides a global minor mode for enabling support for xoauth2 authentication with auth-source. OAuth 2.0, which stands for “Open Authorization”, is a standard designed to allow a website or application to access resources hosted by other web apps on behalf of a user. The OAuth 2.0 Authorization Protocol Extensions (xoauth2) extend the OAuth 2.0 Authentication Protocol and the JSON Web Token (JWT) to enable server-to-server authentication. More info please check out [[https://stackoverflow.com/a/76389679/2337550][this stackoverflow answer]]. * Installation `auth-source-xoauth2-plugin' is on [[https://elpa.gnu.org/packages/auth-source-xoauth2-plugin.html][GNU ELPA]], and you can install it with `package-install' (see also [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Package-Installation.html][the Emacs document on how to use package-install]]). Or you can clone the repository from [[https://gitlab.com/manphiz/auth-source-xoauth2-plugin/][GitLab]], or simply download the ~auth-source-xoauth2-plugin.el~ file and put it anywhere in your Emacs' `load-path'. Then add the following lines in your Emacs configuration: #+BEGIN_SRC emacs-lisp (require 'auth-source-xoauth2-plugin) (auth-source-xoauth2-plugin-mode t) #+END_SRC or with use-package: #+BEGIN_SRC emacs-lisp (use-package auth-source-xoauth2-plugin :custom (auth-source-xoauth2-plugin-mode t)) #+END_SRC After enabling, smtpmail should be supported. To enable this in Gnus nnimap, you should also set `(nnimap-authenticator xoauth2)' in the corresponding account settings in `gnus-secondary-select-methods' as the following: #+BEGIN_SRC emacs-lisp (nnimap "account_name" ... (nnimap-authenticator xoauth2) ... ) #+END_SRC To disable, just toggle the minor mode off by calling `M-x auth-source-xoauth2-plugin-mode' again. * auth-source settings When xoauth2 authentication is enabled, it will try to get the following data from the auth-source entry: `auth-url', `token-url', `scope', `client-id', `client-secret', `redirect-uri', and optionally `state'. There are two ways to set those info: 1. Use a predefined source which has already registered their app to the service (e.g. thunderbird) and you can just use their public authentication info, such as `client_id', `client_secret', etc. 2. Register your own app for oauth2 authentication and set those info yourself. ** Use predefined services Using a predefined service is very easy. An example `authinfo' entry (in JSON format as `~/.authinfo.json.gpg') for Gmail will look like below (you need to fill in the info of your account between "<" and ">"): #+BEGIN_SRC js [ ... { "machine": "", "login": "", "port": "imaps", "auth": "xoauth2", "auth-source-xoauth2-predefined-service": "google" }, ... ] #+END_SRC This will then use the OAuth2 credentials from Thunderbird for authentication. Currently `google' and `microsoft' are supported from Thunderbird for use with Gmail and Outlook which the author has tested. It is possible to add support for more services (e.g. yahoo) and other sources (e.g. Evolution). Suggestions and patches are welcome. Once correctly set up, the plugin will then use `oauth2.el' to retrieve the access-token with those information, use it to construct the oauth2 authentication string, and let `auth-source' do the rest. ** Use your own registered app If you would like more control over your authentication credentials, you can register your own app on your email service provider for OAuth2 authentication. The registration process is outside the scope of this document, but the gist is to make sure that you set the access control of your app (also `scope') to enable using IMAP and SMTP for email. Once that's done, you can fill in the credentials from your app to achieve the same. For an Gmail account it may look like below: #+BEGIN_SRC js [ ... { "machine": "", "login": "", "port": "imaps", "auth": "xoauth2", "auth-url": "https://accounts.google.com/o/oauth2/auth", "token-url": "https://accounts.google.com/o/oauth2/token", "client-id": "", "client-secret": "", "redirect-uri": "https://oauth2.dance/", "scope": "https://mail.google.com" }, ... ] #+END_SRC The rest will work in the same way. *** Initial set up Once auth-source is configured correctly, you can proceed to initiate the connections. Please check out [[file:docs/oauth2-initial-set-up.org][the steps for initial set up]]. Once everything goes through the plugin will handle the future authentication automatically. * Comparison with other xoauth2 implementations ** auth-source-xoauth2 This plugin takes inspirations from [[https://github.com/ccrusius/auth-source-xoauth2][auth-source-xoauth2]] to advice the auth-source-search backends to add xoauth2 access-token for authentication. The implementation is independent and reuses many existing facilities in `auth-source.el', where auth-source-xoauth2 reimplemented most of the required functions itself. `auth-source-xoauth2-plugin' also makes use of `oauth2.el' and its storage for storing temporary/ephemeral data tokens, where `auth-source-xoauth2' implemented its own storage. * Debugging In case you encounter any issues, you may consider enabling verbose messages to help debugging. `auth-source-xoauth2-plugin' uses the same convention as `auth-source' for outputing verbose messages. You may do the following: #+BEGIN_SRC emacs-lisp (setq auth-source-debug t) #+END_SRC and check the =*Message*= buffer for logs. You can enable even more verbose log by the following: #+BEGIN_SRC emacs-lisp (setq auth-source-debug 'trivia) #+END_SRC NOTE: \'trivia will include your tokens for authentication in your =*Message*= buffer so be careful not to share the log with untrusted entities. * Bug reporting Please use `M-x report-emacs-bug' or open an issue on [[https://gitlab.com/manphiz/auth-source-xoauth2-plugin/-/issues][GitLab]] and include debug info collected following section [[file:README.org::*Debugging][Debugging]]. * Notes on Implementation `auth-source' uses the `secret' field in auth-source file as password for authentication, including xoauth2. To decide which authentication method to use (e.g. plain password vs xoauth2), this plugin inspects the `auth' field from the auth-source entry, and if the value is `xoauth2', it will try to gather data and get the access token for use of xoauth2 authentication; otherwise, it will fallback to the default authentication method. This package uses an advice to switch the auth-source search result from the `password' to the `access-token' it got, which in turn will be used to construct the xoauth2 authentication string, currently in nnimap-login and smtpmail-try-auth-method. To enable xoauth2 support in smtpmail, it adds \'xoauth2 to \'smtpmail-auth-supported (if it is not already in the list) using `add-to-list' so that xoauth2 is tried first. Note that currently `auth-source' requires the searched entry must have `secret' field set in the entry, which is not necessarily true when using xoauth2. Therefore in the advice it temporarily disables checking for `:secret' perform the search in the backend, and ensure that `secret' contains the generated access-token before returning. auth-source-xoauth2-plugin.el000066400000000000000000000257151505671172300314360ustar00rootroot00000000000000auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8;;; auth-source-xoauth2-plugin.el --- Authentication source plugin for xoauth2 -*- lexical-binding: t -*- ;; Copyright (C) 2024-2025 Free Software Foundation, Inc. ;; Author: Xiyue Deng ;; Homepage: https://gitlab.com/manphiz/auth-source-xoauth2-plugin ;; Version: 0.3.1 ;; Package-Requires: ((emacs "28.1") (oauth2 "0.18")) ;; This file is not part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . ;;; Commentary: ;; An auth-source plugin to enable xoauth2 support. ;; This package provides a global minor mode for enabling xoauth2 in ;; auth-source. Once adding information required for xoauth2 authentication in ;; your auth-source file and enabling the global minor mode, one can ;; authenticate through xoauth2 to supported services, e.g. Gmail, etc. ;; See README.org for a more detailed introduction and usages. ;;; Code: (require 'auth-source) (require 'cl-lib) (require 'map) (require 'oauth2) (require 'org) (require 'smtpmail) (defvar auth-source-xoauth2-plugin-predefined-issuers '(thunderbird (google ( :client-id "406964657835-aq8lmia8j95dhl1a2bvharmfk3t1hgqj.apps.googleusercontent.com" :client-secret "kSmqreRr0qwBWJgbf5Y-PjSU" :auth-url "https://accounts.google.com/o/oauth2/auth" :token-url "https://www.googleapis.com/oauth2/v3/token" :redirect-uri "http://localhost/" :scope "https://mail.google.com/" :use-pkce "true" ) microsoft ( :client-id "9e5f94bc-e8a4-4e73-b8be-63364c29d753" ;; :client-secret "" :auth-url "https://login.microsoftonline.com/common/oauth2/v2.0/authorize" :token-url "https://login.microsoftonline.com/common/oauth2/v2.0/token" :redirect-uri "http://localhost" :scope "https://outlook.office.com/IMAP.AccessAsUser.All https://outlook.office.com/POP.AccessAsUser.All https://outlook.office.com/SMTP.Send offline_access" :use-pkce "true" )))) (defvar auth-source-xoauth2-plugin-default-predefined-source "thunderbird" "The default predefined issuers provider.") (defun auth-source-xoauth2-plugin--get-predefined-credentials (source provider) "Helper function to get the predefined credentials of PROVIDER from SOURCE." (plist-get (plist-get auth-source-xoauth2-plugin-predefined-issuers (intern source)) (intern provider))) (defun auth-source-xoauth2-plugin--search-backends (orig-fun &rest args) "Perform `auth-source-search' and set password as access-token when requested. Calls ORIG-FUN which would be `auth-source-search-backends' with ARGS to get the auth-source-entry. The substitution only happens if one sets `auth' to `xoauth2' in your auth-source-entry. It is expected that `token_url', `client_id', `client_secret', and `refresh_token' are properly set along `host', `user', and `port' (note the snake_case)." (auth-source-do-trivia "[xoauth2-plugin] Advising auth-source-search") (let (check-secret) (when (memq :secret (nth 5 args)) (auth-source-do-trivia (concat "[xoauth2-plugin] Required fields include :secret. As we are " "requesting access token to replace the secret, we'll " "temporary remove :secret from the require list and check that " "it's properly set to a valid access token later.")) (setf (nth 5 args) (remove :secret (nth 5 args))) (setq check-secret t)) (let ((orig-res (apply orig-fun args)) res) (dolist (auth-data orig-res) (auth-source-do-trivia "[xoauth2-plugin] Matched auth data: %s" (pp-to-string auth-data)) (let ((auth (plist-get auth-data :auth)) (user (plist-get auth-data :user))) (when (and (equal auth "xoauth2") ;; When sending mails, some auth-source query results from ;; some smtpmail authentication methods don't contain the ;; :user field (meanwhile queries from Gnus seems to always ;; include :user). When using predefined provider ;; credentials, only the :user field is different to ;; distinguish among different accounts, which is ;; unfortunately missing in certain cases. Fortunately, ;; smtpmail may set smtpmail-smtp-user to the user value ;; when X-Message-SMTP-Method is properly set. Therefore ;; additionally, assuming X-Message-SMTP-Method is set ;; correctly, we need to check whether smtpmail-smtp-user ;; is the same as :user to be sure. (if smtpmail-smtp-user (progn (auth-source-do-trivia "[xoauth2-plugin] user: %s, smtpmail-smtp-user: %s" user smtpmail-smtp-user) (string= smtpmail-smtp-user user)) t)) (auth-source-do-debug (concat "[xoauth2-plugin] account \"%s\" has :auth set to " "`xoauth2'. Will get access token.") user) (map-let (:auth-source-xoauth2-predefined-service (:auth-source-xoauth2-predefined-source auth-source-xoauth2-predefined-source auth-source-xoauth2-plugin-default-predefined-source)) auth-data (when auth-source-xoauth2-predefined-service (auth-source-do-trivia (concat "[xoauth2-plugin] Using service \"%s\" with " "credentials provided by source \"%s\"") auth-source-xoauth2-predefined-service auth-source-xoauth2-predefined-source) (setq auth-data (org-combine-plists auth-data (auth-source-xoauth2-plugin--get-predefined-credentials auth-source-xoauth2-predefined-source auth-source-xoauth2-predefined-service))))) (map-let (:host :user :auth-url :token-url :scope :client-id :client-secret :redirect-uri :state :use-pkce) auth-data (auth-source-do-debug "[xoauth2-plugin] Using oauth2 to auth and store token...") (let ((token (oauth2-auth-and-store auth-url token-url scope client-id client-secret redirect-uri state user host use-pkce))) (auth-source-do-trivia "[xoauth2-plugin] oauth2 token: %s" (pp-to-string token)) (auth-source-do-debug "[xoauth2-plugin] Refreshing token...") (oauth2-refresh-access token host) (auth-source-do-debug "[xoauth2-plugin] Refresh successful.") (auth-source-do-trivia "[xoauth2-plugin] OAuth2 token after refresh: %s" (pp-to-string token)) (let ((access-token (oauth2-token-access-token token))) (auth-source-do-trivia "Updating :secret with access-token: %s" access-token) (setq auth-data (plist-put auth-data :secret access-token)) ;; Fill fields that may help 3rd party usage, ;; e.g. offlineimap. (setq auth-data (plist-put auth-data :auth-url auth-url)) (setq auth-data (plist-put auth-data :token-url token-url)) (setq auth-data (plist-put auth-data :client-id client-id)) (setq auth-data (plist-put auth-data :client-secret client-secret)) (setq auth-data (plist-put auth-data :access-token (oauth2-token-access-token token))) (setq auth-data (plist-put auth-data :refresh-token (oauth2-token-refresh-token token)))))))) (auth-source-do-debug "[xoauth2-plugin] auth-data after processing: %s" (pp-to-string auth-data)) (unless (and check-secret (not (plist-get auth-data :secret))) (auth-source-do-debug "[xoauth2-plugin] Updating auth-source-search results.") (push auth-data res))) res))) (defvar auth-source-xoauth2-plugin--enabled-xoauth2-by-us nil "Non-nil means `smtpmail-auth-supported' was set by us.") (defun auth-source-xoauth2-plugin--enable () "Enable auth-source-xoauth2-plugin." (unless (memq 'xoauth2 smtpmail-auth-supported) ;; smtpmail considers smtp request with a return value less than 400 to be ;; successful, but for Gmail when an xoauth2 request fails it returns 334 ;; server challenge, and waiting for a subsequent request with the correct ;; credentials which will never happen. Putting 'xoauth2 as the last entry ;; in smtpmail-auth-supported so that it is tried last. See also ;; https://debbugs.gnu.org/78366. (add-to-list 'smtpmail-auth-supported 'xoauth2 t) (setq auth-source-xoauth2-plugin--enabled-xoauth2-by-us t)) (advice-add #'auth-source-search-backends :around #'auth-source-xoauth2-plugin--search-backends)) (defun auth-source-xoauth2-plugin--disable () "Disable auth-source-xoauth2-plugin." (when (and auth-source-xoauth2-plugin--enabled-xoauth2-by-us (memq 'xoauth2 smtpmail-auth-supported)) (setq smtpmail-auth-supported (delq 'xoauth2 smtpmail-auth-supported)) (setq auth-source-xoauth2-plugin--enabled-xoauth2-by-us nil)) (advice-remove #'auth-source-search-backends #'auth-source-xoauth2-plugin--search-backends)) ;;;###autoload (define-minor-mode auth-source-xoauth2-plugin-mode "Toggle auth-source-xoauth2-plugin-mode. Enable auth-source-xoauth2-plugin-mode to use xoauth2 authentications for emails." :global t :group 'auth-source (if auth-source-xoauth2-plugin-mode (auth-source-xoauth2-plugin--enable) (auth-source-xoauth2-plugin--disable))) (provide 'auth-source-xoauth2-plugin) ;;; auth-source-xoauth2-plugin.el ends here auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/docs/000077500000000000000000000000001505671172300247665ustar00rootroot00000000000000auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/docs/oauth2-gmail-1.png000066400000000000000000002234641505671172300301360ustar00rootroot00000000000000PNG  IHDRD+nsRGB,gAMA a cHRMz&u0`:pQ<bKGD pHYs+tIME 8@& IDATxw|eSv7#MAiݳzz,vEvbǓ& JM!gdI$n`߷/^–<<3;yQzc)aߏ(*eѣG @44 0ѣe*EEE(w|>TU*K*K".**H*{YZrrʝaŲ,E4M,`@͆eY|><O:@4q݈z*K*K".**H*{Yi5c˖-v UUQbLD4rssQU4)..Uul(XE^^U|\wU%Wї\%WEr%W]r}U%WU|\wU\ufvӌGUPX4~?N3ǃi}*ԢkU|\wU%Wї\%WEr%W]r}U%WU|\wU\u00 4u4Qz4MCQ^/zC (i'_$W]r%Wї\E_r\U|\wU%Wї\%WEr%WrUdNVVVhpee%EQp(..p8EQ<YYY躎(";_T|\wU|\E_r}Ur_$W]r%Wї\E_r\U|\E/Uz(&)))4ߏinN'yǃDu~?g3kYؖմom聵umEm}O74N5)F$uWK>xS8 Jti|u%S\y};i*K*K".**Hjn&v@ v~?a^, MBY^}I3PDhar \`rGlJW˅ sP ֓6a\r@*<f"~ `6oT}Er%W]r}U%WU|\wU|\E_r}Ur_$h[9c@ eY(ܫWPx(J۳gъi~Ms &y,i݋9lr۵MENP~^B/..Ʋ,{f{=YG*K*K".**HQi^WW{^6-40XÃEuLlch_AE3;__(v}obޒVl6|>_;]c4}Er%W]r}U%WU|\wU|\E_r}Ur_$h[KOϸ4M<@Á0 av4 M2ńς *b꺎iڃS`^z`:6ֲf] :"4q\~LDQnPz_1M:ߴli*K*K".**HQiaEQHJJBu@hPjWÈlƣT1g>bTaI7-,G 0 //@CڋXDuPGgz(y*K*K".**Hjp8L0 ^/e[, ˩1L,$?s?~~hi(hiN@nxՔ?Gǫ̋[^74Ges]VNMVVW%4@}}=oZ߲{_$W]r%Wї\E_r\U|\wU%Wї\%WErJ#<0 R,B4u˲زe >]yqs^BK7=x,χ|9&z~/GK)gO<)IQ_sssuM{کkv\NCPVVzy~~>o()) }{{~vv".**H*K/*/kTڭ;NTU x<AUUN'z|bYQFߴ_;$?';.@e$Mx0ŭUsz/qä$(;Q*R2;JZ˲8n.?5EaއE>uq#SYBUUw( ooUUCߓU|\wU%Wї\%WEr%W]r}U%WU|vrr嚐=oaݬ,n})JJJ;틖y -6 gu kNCk1g27ĝy>\IēQ1Hy&jR2p6S&L#HB˯AU csaԧUbbp}=f3>8;$^s)1M v[{O7 Կv}_!j-Ӆgzdg'ջ-I7q9sZLlÇ♿8^Mu_8n ةo(\|^u2v1M4CwD4raFHYsOoU|\wU%Wї\%WEr%Wї\E_r}Ur_v/hwY1QFq!ݜop:\.RSSyg0` ̙m}Q` S.Ŀ ~Q!g ٯMZq PKT^uSz|.[h|Swv i%1?~rSux-C&q}1OtyROh;Gw+ˢpỵ)Ӯ1|(emI1Ө{9*܇IS!)_8FK?i`B7OO:ׯ3Msm6h㡬l/**_$W]r%Wї\E_r\U|\wU%Wї\%We'λL7y pg_-9hB:x`y7ݲ()))!33bvTWWuNDE!8]ߏt( VOaEM߿I@EcZnԿ6ǃ š2ƂP1-mt/;%.yXK}iR +v{p͙Gׂs{8?\"bc4<"`׃iR8D,+X»|e9FGc/Ukix=jAMWcóp 5=tyr$)9pKSuCx-jt]r-Yu/M8tʮ Iz9i3owu`w1ԾFS͑=rmj3.!vh?; +!{%c̃^u3}CU '۹yAӺ9z-sN%0`E[i[ҙ'c1ط>$ il'nzƏ>茿/-Gu=_}\c˅oF{3}%P]*fS~,,84Nm*uuu>xPU@~~>*-*VdƇ>KȺls,i_A`6:)\'If"3iTcfGp C䳱o:?>n)Aavz n̛ȸm*4X:R*n(}H:}KΥ{ ȃI:\~ߺ x~yLmo߾׾}> E޸`k۵.=z`QXX磡7-_PPeY(/.K/J*K*KF9s[L<7߷(c*h2_J_Q(M)jZo:]`%] WVot{n;>8tmZ\E}2nBAQPJ۷nZjJp]wýhYhi{a5}@1[Oݢ}?`:n: zi,K7~~Wrp[u[&uB˲<^-hi!ﷶЎfu2濻# m} Φ솙+vJ7st2fL'Pv2fL*cl666buYvO~ gʍ S[[K||<;X(H*K/*/.K/JNof.ʵ{<RVZ(ӛ)u}ћ确 _4-44Ml6^M0L3Xv>E^͈>d} Gj|)w4|]Sa_^JSKOle޷Z|qV{sfp{h)ImQ^Aa[i0KZQu{].b/B*-5w!9)^LRtޔM+/'1Jˈ?|6šdl55PU+sя-/`f~?CzNw"RV;'ɼLˋf,>,7 1cw=pA՞hQ] ͓z#tin eG/.K/J*K/** @9@ @cc#@UUIHH\xիw'#ѧO%n> i_{FUpu߾}Q417/Sˤ]>#ys)u\ݜ5`"GUT??`Xg1VU0Sƌ{~ {p{X?QŤ^x6C[- ˮVݭٶHܹ{+,}FWS4~`A7+3ԾKn$csn$U'&&kMT< sqFSr{>ד|yԼZXe1-i\pj5oG3{@w@IRRq.^dz[%zϾ"~9E5SWVQ?k,,|y0tq˵Mرv,0.|Ǩ()#tu:!PسL-ږa56Vkaa!eZ H)r+4ェ'lڴSMsUhþyZ=E_|\wU|\E_r}Ur_$W]r%Wї\E_r\&__Q㺤wm.Ѓ\o)WLBEEpfA~~>W|Ӎ]7 #nxki/GW깗I2kuu{G{G-~uص( T><_V ZKI&scݸ9j_y [[j|uƵhi'Zm<}'yzk2~ Y3nkn-VVQWϚ|%]z>= r*ϼ,?o$z4#5}b+Vxwl:bz>މl84O E͆F>]B)f -#3x) .=^~afppG 2mӯ_c뙋sb6L< g=AO`Ÿ TPg~_q6/I0]LRk(P6sN(Bh-- y0 _wJykFM&et:1M}Er%W]r}U%WU|\wU|\E_r}Urݛ|Lݣ+O>5]ófQRR-**3utf=atwJjh湧~?z=Xua؏nNu_Y_W'pdq3bu9s2mFD s*oho_[7W\O/~$6{ hv.Uz5i{4}TbBLj6^p%Fa^W/<OvcYo > 5^o;+vc:ߴl8}Er%W]r}UZdz IDAT%WU|\wU|\E_r}Ur_$h[L'1`dQqJaÜײ*(^5nG~&У\/(      bмӪacJ >UUQt]Dz,4aΒ,®``Ajfi4M.(a5syQKخet]o___OsiXEgڿ766/.K/J*K*K"FݺfC4 8~?(dx2 j&6 ]C;K8y\t0Κ؍T[D˨5x [B7M}EQPU;߄k_]]-H*K/*/.K/Jv+#GL 꺎islsRaݜS,^G4RRR4 O}}=eaZu* A){xM$#Fj5~k`*,)1:dffI*Er%W]r}U%WU|\wU|\E_r}Ur_$ר[4 ]IKK U7&?g7szÁeYH xBr,exnNO'}M%uZ(0J}Er%W]r}U%WU|\wU%Wї\E_r\5SSSz(vv=4 eۣXTsgn$$( yv;vFJJ ^H}Er%W]r}U%WU|\wU|\E_r}Ur_$h[#jŅ |Oj'csl d%h&ra| S^^NGAw4O+ ;___/H*K/*/.K/Jv6 EQx<Zn/k 1 4Aӑ`}XGQU4^/^P__nt:l}-H*K/*/.K/Jv몪:111 %L(C,, Ÿ@{ ̯h )*TVVnXMcǃi`+ۭV?,H*K/J*K/**Kne}llNr}q)3ApE6_T&&PCbv1M4IMM4M,rl$$$*i؈au]0 1MMӈfD?DEr%W]r}U%WU|\wU|\E_r}Ur_$ר[TIA       {)<       HXAAAAAAa@       HXAAAAAAaAAAAAAAAC(@fë  EEAAAAAXe`AL(Av.RBd^Wq4!    žP4*xtu=`oxqX~H.E0r}P4X M3AAAAAثi6| [OfrAa8P%޽j֑     {5SHKU0iY(A:DAAAAAst]"xOqOQp0}O2aW83MsluZ~d`3!޴,zMFB: _꾂    gtP,,ݶ80Ml_rStT< ]&;0Qq;[w d&Dt( ɦEפ\Wq(i NAAAAAQP!88۷G4!CA0׸'E%OYJ^PkY,RvtBwI5P)AAAAE:xoGQr!r-X~_)BuOϟ*S@F@mz,wBZ"@%    ^KG Qmf@+*ngF_,IJ3Lݘ6;Zĉik1=7^,[=wbewS#^;o&}*>WD8{<`iQ;0L EF    މO<Gvc1X3jΌXSUP,@\J,kL<?p<εpw`7`;X_r,whU?.-I5+z]U}y zS^A+)~>?<]݌Q]e]'ɦMVK4loĖ?ԉ[iѤ331i鷬}C~|q1#1y(vnAA ߯vW06|$~z_ :t?<տK)tfY =EaemؓY43瑶T%=蛮Kt]Yye;czGާvdy`yS8g>ONp򯖒DPjրfAl&baZJTg $pExb48,PUm߻$̉8wnFK-JB:;I#OR٬.iOUx4 ˲0M4n\{v-T?D1er_=V=e3vGe>]l,e>W }h&psKQף}HʰN5.hvIaˏ΄7_&e7/Au8w ͼ&RKlیU-6~3өY_[J{5e,4"ft0w%H4MCz]@Әs-;;ԁb*ּ>i=M**>;۲]վǒÚ7owǍ&{h=,տ &z{zq0 =r=,3 8Dzs8[JY  `%1wjIߓ#>; _c#KWx} |6Gj>5oѾ5w}n7_]r-}OHQ8R^5b5mu 9Y(J}asQ8g_u)CŅtcGsr|w:Iy OT#i_R:P"1/ |ɚ>3N!kNeKWbFDvۙcBጼ (l{܎GƐns[X lx=>>+cB$ \_+~?km;pa0=Aǃv^#y.v%VԊwرSևm44뵖Xx n~JoOu1h>5M,(dAGEuqu/ ;N`VG@Q7~_ߍk^ miutk&nUƦ3&nbz>?䆩dKGo'dÀ]d^x}6?4pm8{V[ua"ǁf>AS"QgѼL2l(icFQz 6ٔ_HH3"j1͗ΜSϦln1r:/=KE@oZB_{FFñgSX٧Ndsrw`Q+aw?;? E<- ~x3tTo~@oH߇Ћ'i=__}KgGt[4n)pb3i,BŊ҇ڡjv;~n=>$FqGpC=ht,+_x AO GϨ7{bps4]4Kd˂}\]^ѩ}jZIzԉ,Qex,?߻yi(,a+okh$6# BRa՗⭩kS#}?pߣ6;'ξ]ȼ[hOݓ1\ǚ?d'_,-Ǟ:s47Ygg1sŲ7~m U^Aa)wyْp 23za=d^:45 USqe \~yү7}N:FFtMDYGQ=ޏ}+1-3E723\+ B9v]Wl+]dܕIwBT'N;y/t_U,frx?ɱ>G?|Ɔ A LE!m YTZoߍ?.(6_ǿz(DՏ=EםЦv4lve;VFسq-|.ksԞ:l(cFQ7vod@N*<ԡC{%;솩˖mܘvo>7v)FLS"u.]o3Us۾3(δdq}dl5v7^Mc O>[ȜknX~`={|[.a? 0e,~q~~P[Ξ_ ˂p9,yi94U͒YOpOݾ]q?'ˈgJm,>e}c[G>=b8l8(_24su ~$#y> =6e㩮mGdq9,}YO:*dYcnJbJwSoBt$>tV=x'e{y9/|uT~nCbJ ɦZz=*~Y(-fg'm}Qvʗ,gw{"j˾OmsT,_ɏ>Ѫ-{=<=7tRL|9UFԎ5o|@};d,-n$N:zsjm mKz6=Ա/(v^\}&w>O?>@Q([կEn}8DJxYXgB\f:5c ojѶ=rh,,as[.)ϠtI'<^~}hN.yom,ZFϫ=޸\޺6oˢnfLCl}ý?/'/(|KBNwrU^YO1លY0 _vvHI"s!z \pz\~+"=5xjZ/|J\#[nq5=3f͛SZ/f ^~NjH2H?:<'6/'\j}N:Eͯ᭭0ʎ#:ǤPJ־ ˦2[7íC؋n:P4P5CRu=a#mUp=癑^I֕Ǚp g#s:"9;EKeE5b H~cAhmucvkSKHpFt\3ܹcG>Dr`̛HӪ;NFۦb,pyDI$"M7}32GNzr"Zr2zJLjf JbU௭'PW2\5V-jm&8lpʈf}ac,u I1 O S!aGUtLtٜFS㪶+ {(E*>a6=۷fƙU e\rÑo7]Ўhih杽n.n4֯:g"*N61Y6#\w'J2ƌIEIRQLan;XqTC_~!kֱvƃ#ƌl0N 㻩ү7? oß~'NJg^lggt{^Η\MM;e2'}*oMHȟ1a,5?xyh&%?,xB>| 9ݩyuh Cw׍(]jo~<> o]N|%=6?Y&r7_^63sēP﮿WE%G>= wǧOzm،EK>zV?BFdK['%9|(=.?%f33'۰Ql »"99|(6ܐ 7gS/=zCz>kQ~Sڑ|elߥHכŀ3O&1/V9xE -/FNyx 2‚;og}#hEgS~??o7BN!{pv!o~?qW!xu|Lj;__BAcqSz >z\/N|L"tlmvGbS/2SpUT71h,}}3imp`?|!%8zu'$Qڎd\-F1&&rxjj(]k^EZu2F'ɽz;Gu(kxzam?6oa7~<7H2r:1\d9}O<Ƃ-.'=8- DW5!/9`6?6sનDu !@cT<7n;vxL8t* z IDATǀO"1sϢiuHiT8ߩZA|nv𢷢0)[D\hY a;'6In~"C.:cG鳯}bRBXQ{S# G |/Y7;Zpj:瓯 /x$C&ܛfF~$W<v yxn =&ET੮>nW;6#^tq__1nX,_Гa:䌋2?zfCRo*zE~`͛gd-y '|Oq%s/ ~  $fX\K,gIM\n\OhWO@U1=-]ѡ_Y gɬBS W9mo\+M>|;'CƐ}:,Gmo}Gϊ^~s1^~q^uǍǿ?FmӔ)fDLJ ngF?6ߏȩWPb5|f{X=lhJQ#yA i6M!;wJEI dI"p5k~'m@?:<5m>͑Bѭ_eYCAbOL`/DoMθѡ-=j,-0B Om}?rjm?.DθQ,ZB7s5:#7"1򟯲9љ^*Vޏxp㈃X3d򹌜~n+xA4{ұs si(~nSvmᶻCRM;d|pgvp`KLz6i>bRSXNZZ6.E;ٻ0Bܟ3-$@ =z(]Pc U ~ڮ^ ^AłJBB es~L2dɜ3$>OBN[{{^:_:XSMzYֿojUVkO͐qW^_{T6eP2iםϡZP_w| CԳRX=RNkkzɡZ}Zk3ju9YCkQ}[}KVe8-pTx7Tֳ}Գ:9jMn=C_lCs]PػH'YyE6i_Oz)ԻݍDur>OHZLgO\;pv^ 5n=ޗG˃Jz?f?^jH[XR/.esuMYܑe5K\55fóٔ1faGW^d 3nOe%/[4{Iξ[n;&6>7ǏO?$z#jk9W Gf"[řzYx=5 n7#qz%#X;#|LkqGG>[jXlz.U}oOG{ƻ' /aNay#ݿlu+'IGx~Ӛ/sCtҺ-Z+He/䶯kĻ ړ,qwJiu_Cvֵl~s;BǍv. MMy+VPmÌؿoxphêf7?4;7?r~h{tೂqcl>b-_'n}ήt_Yϭ?YzCmcgw-;q[O})-w庳rWwjzlM;_NTkr?SK=XP>ub>C2g/ʹw!mܑOZ*u?QTېm#{[y4G285N --2ut^qi:2|vt{,<jujzG>l;~:u?뢈J%F~Ic{ޙ>}Jxr+IYWi] Yf7.~훹/>rB\ZjloZc?vÿSmj=vO%s_U@;|PFO'n9^Eݟv۵Cܩ||~nZI40.nUg;cz]'f]y &lu3OW^NxUzV}?k -~zwϣjl^s=1C̵_7}-/l/gfzYZRsYU/c&뢷kׇ*f/8(pӀ;luġΜx@rw_dZLNc}}K{A7ޚW8z,UW\5T3}vNfw:eknWGrT9ihn&Iи=- }cwrxpʉyo~?OuoߝQn=d ;U&jLxo{7摿3Ʀ,i˓wJoGGZa?yj; =>wRcFdPf23m6-S'W}yr_O}8|<|3z„3i}_Ԗn5xkvyGޗOS RK _5_zݕ>/G/~zlmkOϒ`\qw3_pVf9'Ćۡ/|~J 9[g̖?ul:^(l;O.LQ)561ܜQ-Y8۾3ybƾ~ywnOjv;j_`SO;uʐN|?uUC6X9TVM sqM}ՋsǹoYغeկV˕PϾϪ޶2v{M>\2dqO[LgӖYVG/{6\Zz_ [agzu4T۩ns6hpnZ=v6SdUdc^oy@4"I=FmVi|)ۜLzW 'tsWkWYeĦ,WKin殹 ͤjw$<7seZMJycJ~yrM}vM[{GRjHys_?wN[u,/6Jǧ21*'4win.z0xyɀ@MZً^*./g4GjFri#Z$x0~[KrN˞;5|Ԛ6T])T}ٴLoӲyѯ~]gaiv=P,#9,so.LˤI_4en/ygLcT}>xeŽ;\N~}?l~ydd眻ΗP8Jf}ޑ_lf=;s~yaNhO}ܴ훔J]ozz:'j){>nz^f^ xmN灋o̘8jTm>;*W^ضr96G}MO[r&K]c[ֽ,5_7V]R-AXi5pʲGqMv:0cLyßz nho׫$^Җ.$OuosJ`}^A7OO4xZ*U`¾55eħ^2w^*r6qƐ'knrWgMQ^Be߷[`2&>[c=mMJ ݧкɤe^c[OcJO':yRՁX]ylkwI}ϑj~lJww̙[sʲiڗ>{_>}rv{[2WgI[߉8}0Dҭwf<ozy0\=l{{2S&'z/zCSS]ݙˎw -n%8y wJ;m>VmCGLwsg6_n;2%g֯~t8礷#w.oKdۧR.]z2I'_xq6umbuVkO=|VZZZUg;/;/J%N8FZ=cP}p9W]]vafeկ6k|_j-GmeI6FbZVQOKkuUSCsVO?5ՕKQku{M*HiSnF{?t]Ccni?>cuy 4\rE9OgmOkz̻ʾ9z5=>~FNėi76/'^udq.Iۭwd̶[Xs}^\M!ijH%W/LQM4VJQۤaMZMZIoy&]p[zܖҨiéV)52fק{Wd섆ޮjjoa]O|ًVu^͛,U3?d<[?̦/843rZ7tV&wv|[s7'K~dmul^43]s]領 s矛M|ވdZZwZ]^s]lrA?S>(C̽u},a x4ztvNn-Je:KwfO4ϩ'&IFO$O<~ɕ :&M\QO~wGJlʗdKx;/Ȭ_]rb6?lZf2kww9!33ni9sNkwd#̈́3aۭsķ̨ {yše;f̔Iޓ}Smz|W_|o*O?9;Llyw:ZRz~cu7As'>^󊌙qza9˱bW]+ؽ-o= YiXdf^ Ic2;1Ao[eƖ;H7qFz-hoGg]wcVg̤?ޚu0bͽWg[=op%Zo{GfuGONgc_5׹2qם2v:Xrl9[gff 9Wvxљ0czZoyEZ7/}zM: -f/=v̓^9_=Kf?jmnlOڮ vqdowbtcijƖL{-=SON{ݍZƏ˨&dɓܒH՚P?2'=mmmo;9U*egW,Y[mƺH٪L1=ۼEu3u2/[걖Z}}mةS2v&oLO[[uO߯z'/(Ǯi<){,)ZƏ[z%l~ pm쐙m=(oݿ]J-}^[TSWmXtMjW_|lZLθM7Ɏo<&]wc*=YtCmͷ'r=p`6QkZSk{j|?GgŒm2~Lk4mcP}wy۲1H/j\zr=V H3RϨէqVj}q|U}N>֘:5Any뀯Iʽ:eԪۑ>F=GN6s4fCЏ{$ʷ.Uz{s/[qh&S]'kz̻9z< o{~MW :G|Lm$vǾ*}ZE#i i:% /~"}\L)}jaZm6SijSMCJM 71[R-5ИRJ)%YRCg,36yrq{yޛޮ;)w%ͥN ƥ޴{9n=/WkLIr뷾xf}~f0yN0wf8ħST2o^˶;+Cg`R=re$ǁui$g%RJߝJ%ϊ3]3Wrߚ#q^˟e_'o#c744ss n IDATjOψZIV Wr*o2wg~:g?-KǸw2r]ѫϿN?;[~H{.ϓ3ԓ򂯞vE>_5_>|oEzG~?/'Cl?qTK4M;eݲelIK旹+ʂFmM+LJy\T׶Y>vvxQ9贏ilk. +3?}{s߮GΆ\']C:uJ*rcߜ{~zzǚ_.5j;yg>,kV;zw^WgYp][?}K_m_},Os{icCWc-ɣW]=('m#[kZl;w"Mc[{raVgIZy4dY7V~7Flfi\/|mr>muUsqMzȕXq#5g|_Zᴕw}z3T>m]35*>_8>VUkLXzQo޹{}޾v$*iSOݮcP8$7Wg+m˭+{Dֵ?~wqz;sSsk$yWBn0--iZhz~MWeꥥg:FaDžU5 c1_ǟ;;I{ߖKM?fE`9ٴ:2=O'ISGtJ1kcZ9/Coww9.RqUvO45dLwyX sG*wڞh5ni`ͲӿkALyz?תPdG߯?[+̦'o{(;a8šq;tjOOvWxsAMI4JJy{Y.حݓW%vkl-ˌ=o-g4%L둆QilGSRMs5iZznTJw)n(TJg6j5cϝs~%C`a0 MіRNXJ纾Tr%+'vRVq`]hj:ާ+J9 6HJ XU)w-Í5&1<ÚW{Sx* -I㨔\gjTۓ2_0Ɓg;gjӖt&-Ic:RJ%Qr3$)'݋S[RmhH) \hoWW7:::c'XtCE^(>hOWE^^HTR*J`!𺻻kgX[EPx` ZMEhOZUbuv:$J%]]]*BkRsd9f҆ydlcc桮{IG-W.lKճY=---ihpTr@!uwwmɈ|1?M-C1{~.yjRcmf@! O͗O&VcF361[,5 J @aӧ7g.jI~"+UR\NZYx s /̏*wvgQ[GMS6QՋ{g<А7y̙ɔv+I}yFNSSSuUr3ؘ?xⰾ# avi,\0z[~y/xY}?C'8JrU` iMm(U[~gz$'=077ufQ/`+{`nxCy=s]e8\d˗Rv$ɘ13zV5zZ_W+.ǫ>*]L6uSOI>9e#?98g|lf6T` R^{pۣ=w_/,]7LN9뢶U~+sss=\$ ;?9r߽ι?>7=Z4+rA~~-"_Wo}6pRf1i}4m8Ä!ߑԔl7n\,YE Moxc{uox}^&I&Mo֞/8{L~(o󒗽4\|q=찌3&^sML{{Je8vy_ByyYo׾u}Oߐ'Rfu?߲â|A߷G;;:N;䜼o)W=74_|>r-rΨ?~|v}Gk ^c.G(Wdǝv ?avaꯥ%o}JRo$N;r->w5O\?.mƶoysT*?ޓC=dvmsm o|/y}W]}"$!^ ląWlUTDꪳZWvj]'m]"=Td`uG l\_O{'saٲeL8.]r-7ӡC}9H$7c~8vqӭ7ӽGw&MDyYi͹[طW/~i{=>~rO•$I=w$,I򇸭T;}̼6;U?=Jii)'ƙg3G2abAҥ u_8𠃸&z IDATwŋyoУ>{3aKch٪%C>z͜1 }tԑH$’%K0p0^z1gnk[)jْs=+?$++??z(oF&##u*84.x<)<]2p xqx ȣ&> 'iӹ檫??r7Ob?q'?a4E\gն9eP^V@iI c.!EEEY/`I$Ij$+`IR|fEH\k ++..fi#8Sw5^SNLаo 65k>=1}3g̠QgŚ5kX­0W+Թ3#6k?l- 0{v;}t֍/`ŊYA6NIR\b:wp|Y PXTĒK2y S&OM6>[L-I$I$I;$m #82olް_Hf%K8m7N6ڷn[;|iS1k,N;4 [`5 SN 9f͜I>}Xd ޜŗ\LݩXN,燗_MĢEӧ/=ه^{SFʯ|aJH9W$I$Id@G[Dƀd##y9;*б0h} _T ]YĪI$I$Iڃ9XHӂD:H&aU9u2˛u)F9KBUbHύݰc#Pܛ_v$I$I$ %Iڍy $ҮCIYklFs!nAi"Fy}JV0Tt̎BU$SE#Q ( o>g} gb"I$I$I{(`Iv\"]<0o>on+| 3(¹Z0SsZ6 '~X2djf.#LE Y?:xѿf-C(CP܋r9kK$I$IX] $|uмC!Y_F62re0<]HVٴ 3/B<␽3o>>⩩kY&֟nn.0aHٌd]c'I$I$IX&hGƁ"{ELl̆ uHGs%Y&:7\ZDh"^m>^ſ>ddlX8l\BBg,I$I$I{(`IovM" hՓ|.8 !1'pPdegɰa/P =9Q'ձR&/KxٛaBnkuHW$I$I$5 Iuwԯ߮>M&hdf՟S~&2weĠB2ٔ7̛aXOͲ$I$I$id,IRSf),(MPЙ0 + )+E˶$L$صVE IBR!B/z&RT%iW.(ݸݤńLI$I$I@$5r[d@4 :ҥeJL #HO| rxuc$ !pWBj)Բ|]VyY>g!a0$AV>A$j7I$I$I5%IjjAr!0EJR,R ?;BA 223|XݴxKIQZFɈf %R#ِn08!Q $I$I$i`IZԇA@LB2Iaf&-PLA4D6 3#JA,$R) qJ M0õO@~L2!An\ 6: pX$I$Iq$IM-Xd@*Ev4Jvv.)ljkjcqRadeЦE3WQ9-w/ 33J,DYFHYe7ThzۋSO1w\tµY3fr1cXlYCO=R[['cg>7{f{|rnֆxt:v`]E_~cYgprJkߏ8$g</8x99ڇD$I6`Iv L#\>`R[P#+ q.䱼:ūJhK^nAP? xլ['OQW$KKR!02deY0>&N`I{ܱ =hf͚I<癧f|0&SFʡPI'0\q8lJH'ǟz;0gN#n2vۜo]90m4*++mI$IHX#ZdQ$j30#9y,Eyqr KWoVtjWHff >\5qB))$M&k~&PbU* O&[kH9L.\_ eee;T~[k'Tv2$R)N?t?prssYd)A$خlՊW4ghݺUUU_Xϖ5^ձ~xHP?YV}ڵkលK{M͜1cu]W\\L9L}/$5`Iv #\6<0%% h&AC!AF6akޘKWo*:jFqa.{0czհ2F"H IoVƪ!"L%VN!CT̎$i' 0 .d6F7zءݛ_|Szg}{v]j ޯѾΝ;3m*_XTh%ӧM'`eVZENx9A)))S,vZ~rJ8IC1ax.>)I׍kK իH.xd8a] u  fiU3^W1nf)*iо J #D"%IRu /@n w$+׿sg%$$Bq ]oҧo_zGyʟ7`9~:Ν;ο2*g5.]DKXx >7 Ӭx=G 'I{ysѷoB&`Iv LpދFC~:"jFA!TV>˫CU >-yvͲD"M#~S!a"jo *oT,r_I6mvxm0-7h/2yQ<_Xx1>:xVVVru7pyrGqu7PYYIQˢ/-?g=\jΝNmm>m:??mۖiSq-~ӣ\tE<LJhպ5߰v$iVVVFq66$IM ҵ[h3H5yDzym7D32!32 "71 SagBH%!#B0QW"U%|6H|$I_ 7[sSOO_HE-IRq$I p$RaHT0^GX%ffdB$"Q"@atp~D\"V>J ']_I$I$IJ$&5'֭߀ BRHuQ `pAa~& SIXDdx$Iv %I:UAjR?&4ZKWo7oص! ޅR+x IDAT!a`|Y!T" eCK #%I$IMXP@ ˠv-^ L6K7 ~0sVB<"@5+I$I$IiXXCU aUZ@-C]lB HB]T_A[K"1%I$I$kX=@@ _U%P0IB!SA*!N4)I$I$I_/$aBH$rL$I$Iu $I$I$I$)=K$I$I$IRp hI$Ivuֹvk I$9,I$I$I$IiX$I$I$I҄$I$I$I$ `I$I$I$IJ$I$I$I& %I$I$I$)MK$I$I$IR0$I$I$I4a,I$I$I$IiX$I$I$I҄$I$I$I$ `I$I$I$IJ$I$I$I& %I$I$I$)MK$I$I$IR0$I$I$I4a,I$I$I$IiX$I$I$I҄$I$I$I$ `I$I$I$IJ$I$I$I& %I$I$I$)MK$I$I$IR0$I$I$I4a,I$I$I$IiX$I$I$I҄$I$I$I$ `I$I$I$IJ6$I$INAAAh+H$IS,I$I$I$IiX$I$I$I҄$I$I$I$ `I$I$I$IJ6$IV=8餓8蠃(..e˖Aڵk)++c̙;ym2b xW;b_v]$I$I$}Ks5poxvh׮sa„ `ۼȑ#GMmm-wy׺mI$I$I_N-I./n3ݚC /0hРm3`-k޶$)R\\lCHŔ$5`IXVo~CQQ,X/s=ǔ)Sx`!ʕ+Wض$I̙=$mE};w !IRp hIؘ1cԩS}ssm???s9K.l馛8ӉӟD9#뮻mnH´9LTysQVVfHӷ{gbH.]6$)ݬ]zWQQƍYf .y/,7p@~Ҳeˆ}~;?Vܹ3EEE̚5ˇv$5|?Cq66$ks1u*++w$IiXvOoo~W+aø;I&L2'x7xΖ$I$i'KґS@KԄvhw*?)%%I$I$I[e,IRڸﶶ3<__߿?[ETTTPZZYt=J(,,%K駟lٲݲJ$I$I1$ 64hO><  ~}i={r%p'D8!3gGeܸqy 6 Z-]}՜} ۇz(dggssYg5ZxsӦMkeM.S}%I$I$igDlIθqHR ÇgԨQN>>,Çj  {o$_޽y~0`<쳻}J$I$Iz3$ Xc6lA^=z4y}nVJ22O R[[ŋ裏jt3G?NݯC<ٳa_yy9cʕF7oޜ޽{+I$I$IN-IRM߾}BH$±СC4i=Ǐc̘1zꩍ͞=~ca?ѣG3tP.",Y;(,,`\wu̞=xf͸+937c%#MW{Z}%I$I$$5 .-Bh4QG}믿ΕW^I^+uwhߓO>ѣy饗&Mb̘1r-$I k׮;|߽'2jԨFa*@MM 7x#v[p;wn+I$I$I$W.kz:u^g̘1i?vDцz[ouz)~_~{O>/X,sx &MhwI_i$I$If,I.K/qI'q}Gm}ݗˌ3 ={oosow'| &Խkjj+0Lo++I$I$I$bz꩜s9J~~Noȑy]g٩{?+Wn׹g&=$I$Id,Ind\ :+I&m1-޻#𾶶_|q[obŊ.7u>O?%H4l7yi$I$I$`IvCx_~~~̞=!CpԵ[]x{,X`˔žV_I$I$I2$i77|=\^{F/B233wzx|='J{Z}%I N˷xp)66\\Ć_)o>|عo˸3Гl4I$I$8W^y%oWXXq|읮SVV#IV\bɂ]^cN_/unU{5#+Vڋs.hF&S'Vm;sUߢ$I$mCM IҞ!Lsq544h]-[4gjN$i+V,o!c&&&m|9:K~}fƿ_$I$i+ %IjBfq\p,_|ϛ7v;>={P\\L.]Xd]Yf$iuޏBQ[]GOIZ~>x}̟6{(LL7N>3`8Tv{LyL'jq),h񠡧qIӵ@/Է2{P~|s-9h3E8Kia/-Οe+>cތmtuU|8c/w{,999v$I;Y~90O/~}/M?a'C3un\~3t1iʚe|c]øiY܁|%02ξS_wVOCi_%}##{o}1dȐF+Vz; Æ cI'dJ ΃7l\G<;~M>.7 ~;|3ٴu9ԏ nƭ?w@NNwugu_ZO>y晍;;\K2m4 @Ϟ=ꪫ[YgőGiJ +0u؆ LU嚆`Ɔw}oX}qn.[|0_=w_of}gކѿ_KnץQ P[sqqjVo VWKVv}α^JN~jjk 7u^=J~V`$Ie?$5~{Ѿ=z?o 8< wx ~PXXP&mݭyyG;yꩧ6lA4:vaqs6ƕv$I;`i,H=;8"e+Ѳ#l*gF,x&=D$wDE7؆?UgѺ]Lgë~GҬyN}. $+;p?OxYNMbdz6ol$I$i,IRӟĺu=c8c|2[naƌ_{/} ϝw-BII X:мyFe_z%6l*Ivc}EοfdrgќwMe9vcy/,fw/~?9ѪMg?^{7 S&,`oe;+O; >Eŝ8h*+nީϼl\8CuTcw:g%CyOJ&&I$I$ix 3g[f ?y#۸H&еkWg-g}뮻ѾD"aJ%b3=R~>_X|"ߵX>b9g^9WP #/c?m1dֻጉ?x?:[`:v -;rchߥ'Ǽov3*]ʓ?ͱu*VJX]$I$I_"ҵ[h3H5=SN9~m1F-bҤI 3Я_?~KеkW[{SXνos%W~?kW$IIE-mIR1$=)w=]_2DDŨboQ6jޱGU65jƎ1"AI"AAmhKx{{ |9yޞlٲ&Mn޼IPPo &EbggGBx;w tdeOOOt颎'""dY)+=y/HK&]rsb/@"""""),"")cI֬Y9ra{ s}1118;;senݺ9ʕL2˗/A?#sUc%,"")""")JرcsNǏxb/_[ HJdj!54?R#$ѣG xK.I\xo>5_KciFG#ED$EwcaaA֭[.E`` ׮]8;;A#ED$%RXDDR$EDDDDDDmDM """""""""""""2(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""$K,8;;3uT5F2|bfoPfɲa|1b!͔R,X?pJʍX?O:[ffnǙ)RI^5 v\Wc,Fp1S=CǎYz5!!!7n߾=O>e֭}iҤ_QjժQ\9,X<%{$8^JcNX9r_#]YYے#_Qvꃵ#Pn7݁gO6ȑJm6\ y~\vH"""YҵkW#66sUVהlٲo>Y/؀<2_FîL5nu'8Kg05KM"Ɲ@C'1115?‚5%f<($6+쏸{;ESDDDDDDDD><EDDD<jʉ L)]fxhZ=|@\OVNe6K.urn`_O8::ҡC6nիWjժEǎ)Y$111o,] .6ԩS3h *WL޼yz*+ֽ X-3x`+뇽=׮]cڴixzz.]:<<< cF;}8rӧO'O<۷~ѨQ#WNTT+W_~TRlܸ]r5lWZݻw4hiӦeذaTPYÁذaCuV+f(ߵkhҤI:dΞ-ZҊ,ht9z8RLur+]pcۊI<}5$z?Oilz *3a!I[[jdɑ註vօMKaTݸOְ K|\8}?N C۞X6 a8o`z2cH3 ~l]>fh9{jQVr"k:<]rsJP.S3>|,&Kܼyay<}`hәCӦ$).e_SHFIg+Ng,.6&fVy޻sUPW䷳'<@ldvyދPJ#nuD?z@c(ZWvܒѬ0)gcâQ޼z/5ȇyff̘i߿?wޞy;wnVXJ%Xd Ydym~SL}0uT_ѣiݺ5@M:5̟͛?333ϟ =\xoooڵk_[cbccÜ9s dTTiƌ4oޜSN1m4޽СCѣGOΎ;L AD8N'q%6q#hGuic Ϟ>%CJUǀ3_y~1D5Etl %뻤7(]!QaؕJ kBT)Ma?`b=O|1b1|$Xٚk۬z9@,""7%]t?0 o߾\rnݺ ~T믙2eJJ.MӦM>|8{`۶m|wԬY[&9ԩSl2֯_ vرggg:t@ll,o'C`˖-۷f͚"~ *PvmA۷3p@tO?SNQB>}jTiWTRaƒ{~hTӆۗbe^&@r8j5ofkṆhLL6JV3[O4\nHgvy NH sGNp}S-\徛9G~i%OSa̝(ZOciEp#_XBm(P0 $k֤0]6gꫯȖ-S #N9oIl ZPn[L8}WRTjӻ$Q4?UPrCy {&˿Ё-  [y}K.<}>CwA]C߀'@Y?ؘEGw\|O+],fTs6Jwu9l4Uu3'_o453'w\=g4 kyC3Fk yM\3 ~r;y` /%O~Qs ,9E,"""""""i?SSS &2f-X8LL;bO>5~Y6662k֬D?y䃶Q<>hNL9pՒ'1xLZYg^^`4tt6?y<|P|Ei$r(mD޻yӈ{ρ0~ y7˴mЛ/?~u|Ep?r-a h]gZ>u΍D˘5mYl_Xx8,,w:?Dly115%~Hc3ԈHʣ?޽{<{L2%8)S&""FDD!CdC{1:8(툈:jWj lrފC4j ;puaTEX7K\{53{"`#9{>6-cW|>l19e/ |gT-{2rYtOp1*"<Ѷ̚Q' œo< 6}#H<< r?KܳgfΕh~V=Z3l`Ǫi<`quH )EDD&/GMְ})4ib‚uh>Νʕ+3g'N||_ӧI/=((B^MK5kV)b>vsaC){خmr~DޥnH*& O:*Xf6 h~%+|^o_,}*s߾ή5rw}Tg_L PQohi(-,gyeј[ķ)ƭb'|S|vNHoީMb匂w!Gޢ{4[WL˯\<}(Q""""""""rh$00Gѯ_?2eĉ'Xp!?37o +++6m˗/O4ggg._ܹs9x ΝN:ԪU^zWs:vH=ԩS\H<==ݻ73f?'&t?~iӦQR%ݱI&r/]Dڴi0a:t(YvRYwDD]8jɔN~:Yrb9'O撧 se I/ts'vWMr9fᷯSy [w>N/)P33sr/'S}22y)ݹI Wmv/7'Vm”Nq( S}FV3f YdaĈWl2\]]o}3gӧ GGG6J3|pN8Aﰷ7Wb\]]Yl 6O>ZC8{l^}o,m6nbndm% 7|>rm|z/λPu5/,{a՚kWޒw+.G>l3 r?)=۞D٩q[qhL[˶ɚy ~D~Ѕ+l`<@Q{gO3{x7OmA >6{L[GehЦ-?^"""""""")X?W3HJs]5QیjIq4XDDDDDDDDDDDDD$PXDDDDDDDDDDDDD$PXDDDDDDDDDDDDD$PXDDDDDDDDDDDDD$PXDDDDDDDDDDDDD$PXDDDDDDDDDDDDD$PXDDDDDDDDDDDDD$PXDDDDDD$,_{ ۶0i$ҦM<>*?,Y{Sο˖/㋯ۮ7c w sS|~רݝ{v.]ʖ-=2Y=3q$ٳyۖwίUO9,^]N)Zz/[B&M>سޠanXG,Y5N=G2gv?ÇÒEzEDD/1S$~,YҺMkt%Kt~.`zJwBC?HE0o|>iҌgϞ%霐u\NXXfϮFkԪ}fN'u*THy,YG~ƵkAA78sa(z|y2eb떭:Ue/)Lxx8#[GUVʕWx̄"3W.J*iIÇعUV֖ٸaWF|uOvb׫Oo2eSɓ7/}> 7fpY6mHɑ3'ϟPgڹːoF iԸ1sd3oߦvZ 8بL 6`A@gNa=YBnfjT *8DZo,/Q/ p}N~ٳgؗgА,ݻ5kV.k i7&LE+V+ܱ㮮o dނtҍ?Ԙ~f͘əgx답uz*4:;\]}֞ҥKQ[8LLL٫'*U??֬^Eý>e)P ׯ_gmvt)S,7 Өqcχ{v;qՕ:vjժ|ӯ!f|BMӫ7v3t|}{ҔI\O+VЯ?׬gm'o^-YD6xar:g;.]:}z7i1}G/~~g.^J"9z$3q,wa떭sKTT]vէpsscܾ}юc(\!ZwӾ%&&ݻҴYS7Odd$&L$..;a&;#.鄏RZ5)ŋ U/Y6oBܹ k3oXw܄qs+_ o4iڄgO5ٶu+iҤt2,Z(Ao۞tSSS2dȀ 'CyG{:'j8NT¼9s)ko s}&o蛿_ļɜ93W [tݻwYݒ")}]mX0N/[I: >tOг@… ӣ[wÈ`OOO\N?5c?9׭-  elӮ-waI7,:+O8S'OԔ}Oxx8GиIcon2ܾ\9 .1$=OockkKP Ny"&&&DDDDB`d}ۯxzƯM>}z4l( f %J̌5&8/gΜ ̙֞3'666;f^^ F gΎ?MK|i*WNhAR˔)#ȝ;7< ::0  22(pC.6Oy,ժW{k}?@.ɓ'wž=˖.MO*vx4 kM[YY~/^+++6mZl3ھott4Ϟ=#mZDcC`BTR&͚;*Wb֭TQׯ]/)}{=dȑs^AlXŋ׶Q*RqAڶkKt+j)}J}+j=HxHhwM& }+pMr̙{g!hj?}ݻ 8 111!""TX{_|%<=)^%K@:uaeҠaݽɉ!6&ÇiI3TJիpJΟ%W&M:wiذ!6ɓ' 6Vѣ|S4-[$**7oRbE+ʂk׮StVBQzM…8.4oќFNƍH;A b| IDATvþ{˯dݺ^^zx{ycΊ.]׷e&ۡ-{vΈa iNӱSDNj>s }֭[{xE6kUTCҥk"##<ณ͚7cqٽKKKv^ӲUKJ( DJLRdrpzsURJEm|?^^^N#U*tb~opws#gΜ=gNf-Z4gQ:x3ҵ{G;wn}^޹MyrXjիx"ة#QQQ[0 .E.G`eҭGw|}}ٺy e&V-B޼yԹρӧNs5#ã?v<=a#/~a^-Yɓ3.aa,]=z$sq%fϜM~}H& /_۩`Hs(]u}c[oݹ۷xo//Zl$5,, ???\Ǐ8DZL<Žp U6i;~QE$]?)}29\}0p ٳkNMq3v8߿+hҴ{huϟ &ǚk8⒤2EGG3ydFMZ5 ȔI=w2lh}>m+2L%naa f~?3Y!""")W?W3HJs]5ȿH4i%$$İ3WNN-}9{8ͧm^fn ʝKб}-_eKqCEDo6ADDR~t܉pmg'?獵zרYw7D&&&Γ:u HPXDDDDDDD>];w5[6莹9>>>,Z'Ozo\LMM;=۩IDDDDD$Yh hI4DM """""""""""""2(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,"""""""""""""B(,""""""w:37^"G)z8la{Bg/q)eKhܤI7ӧ߲} ee|՗z) ,,O2m:RLuiӮ-s--Ȗ=;e玝hY\ Nh^ """""@DDDDDD~Z=РL'n@̙#xYn_H2Yt?a>9|>+oFmPcDFi@z6L5|ϮΛw_m)_9 gb }/4gOH#)Q6l21~]97.Su_ȼ19sؐ~p;5sW*I+]u3 u-Ѷf&LMn`τ5+[ [ըY1[611gTTkkXz >}1k_޾, \o/ofJq{/<{4z :i^VM6QɏhY{(App0n'شa#{t'GΜܻw `""3h`vE&M~+x!_~%y K-oyӷ7Ex!'NYbEi׾=%K$**gβvXr9sz38>lt~jUCCPm}dfFΝR > .̚1bbbQTZo7OhҴ }zfƬ9sVjעIӦ.R7nuVEDDDD4H2 D_tFik5oLQ]+hϐSG+qk ~^4l۟F1j27Lu?<]wRD%Oiw5ORvt ޫ^V +vq!ya_B*Me>oi,\!}:)m jݶ Ta̙5 F;'fάܼq!Æb򢬣ǎ!_|t;ou̕+roݲ}{q#(qc9₵5'M$&&ysm6ZhA^RE,--9}~dȐYj>>1nxQ6@zSf M6?Zj|ҢyOS:uj,Z̎;p!ysri<ϞeXΝ3:ܜ!ÆrU|Çէ7k4m֔1DGG3eTҦMkȣc8qb:xE %kU*vD*UFp sf͍b_>Im,""""_"""""""w/W6-i_S$5ve Co}Z3yv`%ܤ|<~c;x$q?~#[ɐ9il籣Dl\4 ?`WI,=҈<¡VKfWJoCqI >cool} R63V֔t=?<..A~Np /֒=Jj(R/^IV gβyrM4.\ݺs',_"ѲL8s ZJhNjHgjjJ]ذ~aaa̙5p_SCKKK¦8~իϢ?p(gNǕ˩U6{شa#UO5ٶu+iҤt2,Z(jჇXd~kk>_m,""""_H2a}i평a氐koFvBZ8e!e45w׸ɔ57M{NRUpU οaybZ*nEźm|уveٸx{+rDG3^} +pR~p?H(UffcYYY~/^+++6mZl3~ٳgMkI"E 4nIE!87wշoJpޣ 7lpW۱1ǯ䴗}zSf |}]ߏcNKժyffEDDDDH2XSS %j$5ߤ:+KTzN<(Xm;13Om8//~ R>6+V&ǭ"K}7RLu*܎s'a{+דYr=!} 011!okR|7<]ި3JTā/K,x9k844KK$/7Z6{͗7˔)[h_bEqlI&rgf钥ԭW7A:?ʕ/`j"dʜ>o5-[ŋڹc9v(u%88(*UdtN-~mPN˕aD]~*ҵ *V[XDDDDF$ r0d/QTU2gs>Λi7 _>@#xuZ&3wCポ>6_M$w~ٸŊQti_w_է7&&&DDDP +9NN_;3W3sLBoᅮ;wnZ~ڊ8O~z[v\̓:&I)D޻Yם<}ڼ-YFT̟ˠغe aw’\~Ç;ag֭^ǎ%v(c:bo_h&O…4e2ta׎޵+3x)c֜&:Gpػ( e,H@(vEv&jbK,hbI3M E+("M,4A_"yܹs7wgNӦMsg䄓N믽oKu=SN眗;!wv{nϠrēOJfMsɧr}hCiаA|/\_Ϲ}$'tb6lӜy3f̗θN:iޢE/PT%-[2fɆ,sA4w~[Z\t^{v?۵{_"cF>okа!P8 +5,5,>(\o훦Fk !`Rvk4<|e5>YvYE:N>{y9ߙCwj^+hfq` Iƫv{y*C}SvEi7|׽ο&^a)פu`wm̮Uɺd=|0yjf+jFɞZ7^xt{ly $Ik.iP^&La&u53K ׬m'߲HM^FMW'I.?) 95"i&O>&?pJSy'OԨU7tXgQnFtzpm=$}}*cF4kt\=09YgΩ]f{2Ir̉gm9#3ҺúV46=V&YKKJjs O4j<}}:zy丹}%C. $ֿMuR^Q#w>SQ:JJJRUm"]_;0u`~yCz/xs@r_Iuʯ3$<+{AzYoΙ>}F}ت{4jޞz0,0+O> 5k]?8fMVig=~"5Zi$JɞZwJLf/DҬϟ7E7m&Zud$;_, IҺ:yէ$ #sO< ϛ޸ZZwX+ RQf*̜ٟlv IDAT9R^Q;T*I/SϾ;[$I~7.r?$ibx٨z~`VxcF>ys7̓Cn[伕VmuzCDWU_x~IɂoYYM}?IQJse3Gk~,:?kwLK#,;-+[ˀeվe9g-9:?;SK:5m8[la}4]qJJJ$/JZLfM {ƌ̟7?e`yqĠlifEonf挩)n&yi4bpxtt̟?/eiѶs{]^1xO&I|ʳe_m$~gݝj ijYem믳q[pWN맬Z;/jd]\x^ ZNygίzZ [~OIiCy-S"ß~!U3?jrWWO5Kzł}F'Vo1 [O;r/`EKOtw|eDzuD6?mqiƏ~ /拳}RvLfڭ-ۯ:˻cGf />ZuG,r&Myygsύ/qQ/$Iv|tlԩ$[!}/϶;ǜ7#O*jʆ[${Y夿+O?fWOm/]&F?viZ1ìS9gV$ȗ̶I9ʼ3Y=d~ӝϑʛ Cn]i}̬[vfJl'[ƛovy3w޼cTVU7ܖ[מ;2uv4jƍ&Inml||\3'5F:_mW>sYVlC2g'w[>$Sz=l!p Oܗמw*|YO-.=8*={aϟW~`sf}?+_}*ݶ3<"_$7_eggL&;&+ >&ܷ;eyỳV{e~'NL4|P|I6]6%?HF/f;8;ȇ&;tZqo\[tOu9}:kCࡏSJEEy@`rg$.r ufvqy rf)i٪u1P4SL63͚˙W=n_)uˤq#mjа; `hҸywHXJ_(*kx a)=XCeDyy̞e_bYtǥˈ 5|8 {A|!}/όi,#04Ki>9=n `Yx7^rtf}2 `C ǀ[ `;>3oA|sg|`oeg']{rEC=3}蒡^`؀rg!{RVAӌ5C`ʴɓf-SRb|gys.HUvרYN @ᔴlպ(S&߫fWֻ&ݶ3+ yέo5ƍm @! ,/6Y5=8*m3k6df >G|0{;`H`Gm;MSNԬ] sf'32y'̰{2g q @! (R#( ` B( `(#k @1•x|1PT0|+|1P8#8`E g8KJʪU3 y(jժ ϩJ5(y"|^YY$PX|NEE!PX0Uռi(r*13JB(ӹTQ רo` F)`fq NJJJRfMRf-` z))+T^ (cPt%%%Qç`Eӿ(`VիWOyyA "^` ¨UvUfVZjծm0`V%%%UNJ}0JKKSv~`z3V'~ $FpV8XᔕNz)-+3 (Ҳԭ[/e">+ԩS7R^^ XZڵz2J5S`VXլY+ժgO2w\jժz)//7 <.$)//O95̛7P`9WVV5j' >"={v̞%r,kHEEu!bT^=իWϼy2wne*++3`{PRRjժZyESZZj(`X*^#I223窪*o$)--[ҔUKj^Qgyy X.9N@A! P0@A! P0@A! P0@A! P0@A! P0@A! P0DFRzuXJիWO (:~$naڵk=s;Ygg񍶱^ݺ@vo綾^wr{9=뮾iӦMn%\ |`G<ںǷ#G}3soe}ni6h[o%Irg߻F΋,sq裏]zQ7FdAou+rЇϫIm,w}Rnۭܒ:kןk˳٦.r!O80#̣ ˣ #7;zg}vvp6ᇆY5#/Ffz\yvu~6kq<[n?L:5G}t=eiݷoc Xn=\甗{92h[+\mq䬳ko:sϛo]dq9>y$ݺm:8ڭgy&MVZ)o2e"KvۦE})i}\~ 1]N\}ui׾]ƍ{|sWn~: \paf͚:Q&\x្$ o8<m=GqDd˭V[nZk#L 7Gkc=$hM۶yR|f4n8{w^x$IO7 ktk~ #O=%I'fm9?_};+m]v-jΰ'|CW̛7 ߢ~a|G{ͭr-cԫW/?.l2C .9뮻N׫.]*m۶/v5g{. O&MG-Zs{]w%{{6l#F䢋. /nvH/Kz:m۴I'$iРAs}=siSy5رsgc3ay{Ұaw}?,n6{ 78 _j͛^n쒡>wiowv/ꫯcK\AgvM7;t~r˭7evo˯޾C&Mz7ӦMJc9sЁۆfO߹K2xt^M>gѣ^SOK6ӬYs=v5/r:w^s;|աeVү߽yӫ/3qt^ 蟝wEڷo?gqF6l|Ҷh2={SO非=Nf+&ݓ$nLm\W7"OaW^97fnv%gyV>kn&MEy1>g[3wa^<8ݺmoq{j*x@.O9SNv fХK+rđGV9C3t~jԨ$| /,wifxon޼yƏ}3fd}͹睟~{Tv۴j*;l}7_-xPsN~Yf~`1|`#-yʔ)I?gr߀٧g$&l!C'YXc̙YeUҡC 80s^|}I[o5O9soP^Mo_Kرcyd.߱CǴh2%uu]*Iь S9'ee=gNU,zRZ>JKK2g܅hG [97eՖgJ͚^zyrS>jȔWw,rwu‹oLyyy9l6[F9񤓲Zkg޼6uz~m~?ӳWN8ᤌFN>餌76IRQ^y.7FwƼo1s rwSС }!I&I t{Ůϼ#sQiذrs;gg<oQ}4hPak=ӽƩ]vƌҲk!,ԩSO/x0lXo=O;ާ,ŗ}*++L6-+Rn 8ps Yi9?+^|q>|׾mO &fvy={N:-rZƍ\0>+޿̪eDz7<뮷~}ѯt{&O6K3љ:uruֹ۳j3hYwݒ$;sڶiu':uF9⨣20a|>ԭ[7O:uR^^݉F5ҵOu1]vEZlԬY+s+̷c/wCHw5xꐃSNԭS'\p~v.۫W4i8 4H=3pSQQ=.8dsyyyϟ'iӦ3_^iӦMrԑGHMF?~i9SRvԭ[7I2glh0,GO/o{,q#ȟtA=<䈴h2Fpыs}>\v3qį {8=z7xCx≜էOPv93~x 7>5jOȚ;gЇsÍ7_~?~\&M>3rh?04lY?byei4p_Zhcmˠ]xCڷkG}<{|y鯼m/bn\}͵yiպuIzȰa;.)Sr d挙2db0~|n\{=ztBǟH&I w}7sw.¼}^#ꪫsi M6mr? [wu-d„ w=;n\_4XZW|K%%Y}v9O'qy׿ԱS.s2}twRhҸIn׿sfߓ+]%jˬ9s X"oQӦMsWfuMlv=gw^![Ҧo{ Xծ];ٷW <@/U3iҤ\|4n8&MJOZ&}.p|v!˽ 7<S|)(( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( >dv. IDAT` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` B( ` BڳAJ#`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`"FB@d(IENDB`auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/docs/oauth2-gmail-2.png000066400000000000000000001670041505671172300301340ustar00rootroot00000000000000PNG  IHDRD+nsRGB,gAMA a cHRMz&u0`:pQ<bKGD pHYs+tIME 88Dm IDATxw|Uۆ)M!B5tTXD)6Q_,Q& BݙHI Jx/fvrϙ9ٝg~(x<4hEQߏIrr2MHKKC4<ɘ߿EQz4hۍddd _?55U|\wU|\E_r}Ur_$W]r%Wї\E_r\U|\E,UiX,^/˅i(aX,t/|@O_$W]r%Wї\E_r\U|\wU%Wї\%WEr%W?rUwih||<( iiii$%%*a@Ǘ \_QLӤN:_$W]r%Wї\E_r\U|\wU%Wї\%WEr%W?rv;A^UUcMzl6cN'a*^N_G_|\wU|\E_r}Ur_$W]r%Wї\E_r\U|\EUxNǃbd/H*K/*/.K/Jv+z1}>ip{(ݺu(\,I}NN;>`NT/Z+u-7  sA0nHRgϾcŚBE-_~}0MG 8:'''/.K/J*K*K"zaaRr|X,c+{x(ܵ3^ + =Qײe^EQhÁihF 6 M<&4/G=_u]fv4K%-Io[Uο غ;"0x^ @QPc]q8 s|?Far~FKkX˝^?]b/[u#ߌi*;Nt]'22EQpT9. EQP/H*K/*/.K/JvkaaO躎j0 <. 4QCSĚbPv =&T g7z2oz%d7mH_[\JkK^:˥,˝.?^xʊё3X1?g( JsxMq_".**H*K/*/k@ڭx;_˦+ "T1{=pu{nZqÁa{MYv;ǯQY]:hEr%W]r}U%WU|\wU%Wї\E_r\ŗӫ?䦛YxwNYHk7.YfnoLq&IJd*sNcSuಹJ+ĚFRR˛pyԘ9_X&~_CɯWT?}9c;#,b36soX۴$kzRs8'7}qb_|q`T'M^1zyojgڵ9#o-fy˦'u]vQ$4MtU/H*K/*/.K/Jiҟ.|W ]tSk͙S'$awlekoGZZ N~~^} lو@Qz8Nl6`Vi05kjz0V6Ove4b@uPCC/\F#ó{o$xۡ%޴}XĿ!uB5}_mQciP-?*/畾y6hL O7, mybj>r?:7 oȼ.eM Ԝ8E?(Wǃ($Ƈ}q\=jS~Ӊ@Qj/H*K/*/.K/J/lT-nSQ%fee1nXY:;'wTr&M9!Oj;_n7^1w@n/3f}ڼ=-|QU!^4OUji=nW".**H*K/*/IC5l͘׿[J4WΒŋ8S'Ξ0vhrrrNܗ>}.3˪#((DEAUU-ۿzE=TlRM=;+t. AMe0j\ Yo$s8JOJ&LKo G(5-x]rzxǍ$>rmZ`bdl$)>/"Z}}A9{rr۬ a.Carb'#v8r'M!Frk:u|Zs,yЃ4oXn]s\b b!55LJJ Uo_i(Bڵ~ݺuU|\wU%Wї\%WEr%W]r}U%WU|9MK -7 gqӍ7\x7]t߻f}PXXt¾4McV+f#88ǃRaka84|ZQp'đw\"J_Uw*}SQp]³?-&`[Zhyc[4 ?wP; \ϾbR ?>goϫ4;_'ksj*-T7&#vX򞛆b :XV9"f+wx/k=|]"3Va9whFAAaaa(BU|N?""B|\wU|\E_r}Ur_$W]r%Wї\E_r\ŗӤ_ƁN\kժKLv$23Q +2;NV'z 5?L*:1+_AsP$(?wۖnѿ^I[kvbFށ}87m)}W=ʁfڲw`[ iѷ>D07jSs-dOz#(#m;01ѓj}Rڰu;t>O&vΩOw?qyo/Vjq7qy/M's-*؇d*ͮR|uUU~A 1U*ΘQ[E/zPNjEQjoZU|\wU%Wї\%WEr%W]r}U%WU|9Mq>Y~_7dƻONi4h0<:wuҵ[7/Zᨲ/zQQhР U5jowM:$M 4 a;=5݉ IWgW00)~!ÇR0LQQ4'LL-[(jݎV3_,Cס׮E䠾n<{6X۴İq؅'7OF>_Q1!ta\2,tt2_̃Up8TLdZ4:-mR\\ aÆgϞ=UoШQ#TUE.*K*K".*z6ˊ9\ԥ)ipvS+F da~ZU}띖}iy6^tĿQviT)kl6 wI_|\wU|\E_r}Ur_$W]r%Wї\E_r\&_R8ӑ믾¨cxa222qLy9<O}˪ԪbٰX,^/SRR_^"m_VJn=8;*hqNB@_TTšsrI8X^4'T7eZ(uK=ֳ, jCɲlM9hM[ڴTA(J+WmW1METZk7C{JX>'L*7e/ _u^o_$W]r%Wї\E_r\U|\wU%Wї\%׳ɗ.t",,̯_\\\:urYnX>7c}T]Oqq_*+={6M󑕕odbbƙx<t]g*ܑdyc06$>AER1D4MЬG۞zV)vڥKVVV#IzJsxp\W;$Er%W]r}U%WU|\wU|\E_r}Ur_$׀[lGT}>aPXXTTDӤ2'Y|u8[4Yʩy֝,^YY9<\S_\\\U|\wU%Wї\%WEr%W]r}U%WU|\n*Ojl%=λ Y/]HUv]n>      /VU(<aaax<)R0u ̃kܸĿrhh(~[ U6AyT( q[,rSo2iGHɍv~Vʫڏ07ku/.._$W]r%Wї\E_r\U|\wU%Wї\%WEr LE98 ,, UUQbt]4M4V*>XIW0L a`ZY2!~:PN m+5'~cˎ^N%,, M0M7ku/))_$W]r%Wї\E_r\U|\wU%Wї\%WEr Hułi|>+XV^/(:]2 W0X,TUYkG,k[qmxb-F~O_؛jU_QTU%227:/.K/J*K*K"JvL0Â}>cEEE\o"T?Ga|i5j@4^/EEEb)ש&m i(h QAp{æŬ\U8*1qqqTzg~5U|\wU%Wї\%WEr%W]r}U%WU|\nU4t]f͚#**`r؁)/y?j4M+t:ʇb1M5 y}zr#wMNs9bpWYQ*o<Y/H*K/*/.*K"ztt4. EQu V+AAA!ţsWW 4yz_>O4'<>(( , 5jrQ ,,F_|\wU|\E_r}Ur_$W]r%Wї\E_r\5PVePҥMM+-U5A8 ;?ʦ x<TU%44Nvv6/lZ?9"Er%W]r}U%WU|\wU|\E_r}Ur_$׀[X,($&&/XV1>> GS=LNi{UUY&. UU9VPTTݲEfaX|C|\wU|\E_r}Ur_$W]r%Wї\E_r\5 UUEugpaF!ibJMX"|>Nc~( IDATiN?hFDD{D`,;N4M#88łL蟰aEr%Wї\E_r}Ur%W]r}U%Wї\%W]r=v+hm&\$:4*jR9j]oDnD8(&00 h 4Mv;nBxx8b%%%x<r]x<`bv~%#""U|\wU%Wї\%WEr%W]r}U%WU|\n;%J       TtC&yAAAAAAAHXAAAAAAZ~AAAAAAARAAAAAAA&ЂQs}0:tŬ5 #    ™Mn&guŏ(/ BDL Y9ĺb     g{WP)^pZ,4 ^UD(bΩ4L0<J-**R>[is3РѦՋd^R@IA^[AAAAD׃KhD ѪS KERtl+n"fy󸰚joR>;kc縝vFAAAAj5$ݯǠ`~GAGѰYBhq`1}f|a@}C]XÇk8Eb     g!aQ>:ϥ %b 'KP*;!(IN3K Bx w$^¬g熕     g5[_ Hph8 %b 'C niqs񻢼/ksQ^H^>}.Na\AHWɲ PP`r0TCAAAA3,ާp/&.?651V UƥYqg0!nV=)Xx K UM+~Ϡw.%^*zX Bv`PW    P=1M0_ýChxo?( PJUtlpyq`1g.(3\::u6^};*~ [r]TQ|Ć0 '`Kyݯ&Q >.Fi*54wOaX|#.qbqN-3@ڬGq$a3HnǬ,P4|ELfTg^5U7`xNsX,D׊4M npL_@SW&d     ("fxt9JX0go} wPg` &4] !cW& k۶Xcmt!`bMj`8qWvXȌ PL(:I^)i9wFGb ?!2w_e[_ƦSֆJ -OLv'y 'Gz£\:v"=|O]/řPS2QV6>"0}>׬ڠ: nwNx8s8~#?`wh>vǏfNlm3&Ik..-n%^aO>Hp(ZO=lig+ x+Ux{C,w,Yrƞ oꫯmӲx9X9u8=[ᣥkyz,p6r[EyvR9X3IXz~]yF$y c|6gEE^ yy;̨¼4 CQP11L\67Vj;AG)qfM$?U_hL0ACk! r=OSNI;ܪʼ6MpjibaTA$n#U.H.6LGu-S>1۩#MGKp=Z6@S_[wz.'?|fܺ kd;7q&πNy<#ڹ;u#׏̀NpylOekj6|+95K;,|n-ƣk*hN~:<|%>/ ߶윥r7o&؜|Vp%Nwz[KsŤԎ%nsQ.f\p."x1Rpm,9 :u]3}TU@mtiVv]JMʷ+}!8|b? 'JeqyUuOb~r^<^.i*뮘:;Ҹouˌ"xn+-~.$=l۟-/~Vmg=-M{6w%lsֿ*Wt_s =y8>?&"ObIe}Ct?1Qlص7ܳBiG~2Ngw`A@]Iֵ^ܕn\ i~^w,]?< V$* ^\7( ad:)mRYrQ_nԙsAh4j5$xjxݥ?l[cʀ$Za8T'mRYRq].GٺE2t=wqۣҩn;D6iL} ׮`ehJzzy`8f)4 Tv쁑nϝ>Cd=h=i;f|gX+>fU.$$K]G/GՃ.M'y2Y5/kNok\zDF~),b3_']}́א:s?#*zy: m )g.ك={kP~]A~Q1\۽vY ~6م6tUe3wnw:~&ubyDs˟W*R3_6ͅ-m}yA\=?Z5Mؙ~/yL8ҋR *GHVDf["^g6"!;_PkO܇鹼S* 'CeqyUx<8c>˞Fx6NUԩI2myrZ9ós2KK/7Pڟۉ mϰ ԉf,|'xkwޱc^cg[>ǹx̵d(>%aH>{Ussx۸{O^tYulW_">Ζ *\r1US޽+ܼL6k/`U1qx %.^BL^o֪,ܢ@0H =Ȋ4 EfƜ%Vr/8w&& W9%뿢xeopa6ۗSO k[O{-oaNp]U-T5 N 8ApqZ:_>em336&٬Z+*qJ9p!e ~v2Qm5֬#s 6_[-?~A|l{a&F<@_ 4:Ͼgw)-Wn`v7-4$~]K0E+hWwΟ[pe5?gqY HIC~a1.տ˻\HiHzn.Vťw M;w.$ԌMJ }q۟&Lxt#,,UVo#AAyݻwnݺZ =NZZ::glUUYx &=Iq/ƇѬh۶ 9|6g>[8`))o_*}˯L㕗nݺ0Y|7<ʍ5cHIN.X4ks˖$DZ~N^S򋋱:w]1-[le]'@xpMYm+<{:Hpk~tjk62;+?+)&Yccv#ޯ_0 MlܛѸ\hz56o}%>*B,ZCWwKzr>eVoi۰vw^ڑEvҦQ#ڙ]h6'/.nmh^7ݙy|z&}|9mE-3wNmTE?ro gsp,^Qf b;Դ.EXɟ{r~ [R}r>ɹD__<^v97yUuVl˂5;xcO}c&ؓb#k,~N<^^ÆGKrI[:7GIxSu+{*ɛz1ⵯ+62w-6| zABMV|/͓8o-:NMiM{W.(^ma+YyfC.i{ܿcfg_=v  4MzxrxN3ke33@I1o}-ǭSfM6!#Edn2$CQ`再~άT!!zڦ4r̈́=u_+SmV8㵪9T; q㉌ ""bccbe(Bmxp8rss)**b~S'-_k^ևπ)?Zh`3G!2Gjq89E4LchXP0q9l&lP`c&iy`BTr 5oΙ)kqپeOjh\\!4OY Άg_w†Jf>f 3URi1"yv=; nv0Nfۨqٝe۩k]}^mqrmE->r+qݏ-_S={cM~؞mў]7 /ofpqsشo˔?"F4;RSM]ve ofMБ^GZnI݄Z 8GޚTڜs~YA B,|v+rm<{nkF?0{rMCxo;\~ v&?ͥ}z~IO/IaY|%'N~<3iFsY _-SЯeLkV=VkǍv:. KiQIHH`-GL},Bڶ-Tc5\\X[#ґ#_EzydrŅsd1kiZ>c^}"}Q?1{+nxCvtOq'c^FFxq}Gl@WU>}>/>Yxĺj]ߓI砩*pBZKӑݯL;js/cܾ뻵,9VkqaCK.msCQ^{qkyGo|s*2J)z;5[0m>zM!H3&Jn~Zo|MJX޺o0\{}iR>%ΓCzӴN:w]֑G!SfsExyܲvk\q~s^vqЯCSab;,Z^JGkQn;ӰZ4ڧa]㙡2y 9<}so޺w0r o.,QWܭ̣9>*i3qSU4U!Hיd-^ܚ_Mѯrץиm1WUI_ܣ/]wgּݯ势Ŋ e ZMͥ͠w۔ Y3]nӛ^I&spY&;ئMT:>晡,j+w_<_Rۭn_‚oKݕƝ|QaᲪ}+6rs.??ގe$fgzyOJQ#[O/ d|JW'zmޛϟ VjDG뉋 uSnc,঩7UY*lڗs/uY~7so6|3˞MG Ғ1?pE.e}ʕ[2m VO횑[o'o඗>8Z?uhzR3;غw/^y5ER$ڗGV=d>Vd?n޳|g1hӾgg}m 7s>q72q;8].Vms>vl,ou={'d7R+&1ؼ9Sk]?9q4NxzH IDATj,pq= J"Xh)..aݺشƹ7@ډPXX+ӦvKJ'ڭǧP3 ):>Z%tmb_*?mvÖ45O!<4 ]#16:׏b9F}<2ZIAފO0w@n%i&mnSoNk]0&g1A\ee̽<-ߟM]/KX7i2XP57~#?-a'spUnv51f2MRi5(ܺ=mjqPQ+5nmダk'{OL4 oP|vf BR0t$Sڞs{:tj\T;Q"o3= oai S&w<e"Y79,~PXپۯ\ݽmRRغe3 Wj}l)]mCΝYtEftrcm_*\VFDD8`Ԩ=?=zpݵp<̘q䃼7oTˏ ҼYǟz-tt>{J ݼJ|4cbyYu߭\AXH0:v/໕G[-zwȤfFչԙًrѹmJ/-\Cǘ<4u+?bî]=;Ѭ/ `sk/:7>#62 S%N7N:QeC.iˬ%k1LO^ϐmS~b^7J/ګ=dS4M]h:^ޜa9/+/k#fwC !-ޑ HQHPD]EQDP?A*]T:C %@( ItHl lnFν{-90!ɗgұ}|Ǥ{NԮM^22u9s , tܾE$Oz/7>Vs鿞A_8醞=ZNk&קd7Wsg㖬_]~yM㛹lVk+++Nʯm[{'hZYmeYҝ;䕡#绌O{LogkOw{rn[o7ܖ:Kvmrn[7=Q'?+lp̟ Wtۆk_S[w{sx:k7#.3];!;m<>$`:9rm ^-\hkq[|7Ggoب-t<ݳdӮj;A^R-촙 7/ooy4~u|g ?~}pA|yH}w Ko~pxuH}d@uԽ[[p)a{5.,!wЌqzf6w_ߜ)s[EFolUL#?! Š^}\4{׬%t;pgͷ7ޫoo0  ؼ?~?'yWƊ޹Sf r5Wgn͝in/rr-7ǟwܙ'n͕y?I}Df{, =$aVHvr_R<,;looN69yAW_-+/׭!^@fV=X;+kJy6 ho~gMW^[<ܐ];'[ߜZָ`{9]r;ffumŌ\?\gK㝑{: 0zG 9l,ݹ<=9ׇ5uܒ{ȹζg/$>:#ϳz~Iʋ| ~„'?t)/Lfgys3SgT0W1sS :&LXkIYۘwG5h-Y]gHCo]vWFxfvpW/?15u sifMȡޖsíU6 sXX3\:bWoQUk/s=fd6$YgRQ^p=}rŽ'{lCF͜;7{u$g|H.SN9kʪ?=O?>|嚵% zZJL#ǏoMKꡕ$묲j.R,۵w?ې?Y++3fn=Ls˘.l=4w y8qb=9s;ʃ5vuo+̌Ow*ڴ65e`ۺkuk y,jSӾWڔ/W[*m۶K綛f̪V/Ӛbf5~U~Rp8k bjZ? hgoվ3pQD]Xz_߿wꔵ:<=ȞImUn};=~$muˤwMI^W9PiBRQD}>x~ۢXԉ_)1Lpd>ϵ ߷a~۴|&60^~ee ovM{V*ǍV &IJse4''̵Bӆ+J˦j܂{h\_aL<-O+fq2/lkkS>G=7*a?xp.&k-oh^SWSMjUW߯[gg[o;_qe:\|y~9SwMAۊ6޵kCh9umprmwjkys~WN6O2_5z3ɳGdӮa;o0ߨSұ]th[ӭsi߶"c?;%ee g6O7g)y|ƙZY5z-?m}SSWy=Izz[nsxGAї2N7X'?=0^{c[SïӢlṳߠqɝy쵡9Ȧ-6Osռ~8~Rjj+6uO+s3jbV 7σ/(l~UsgЬ($lb>f{#.taysŷu>_:nz67ӯE|:0e̘UGeBsDÌ?ȏ|/\xt[g~4aՖ?{czgA9bsg˝sMU?~*rz4Y{2 <3ZY-9ZF}6f@fd?:sޏdj>:#ݻ4p|8~Rkjͷm7iZ|GA9yrUʷ\7vjjӶO͵-m f;͘Yݢja|fG3qd\dQY?j}X[>أ[\p̱y╗sM7ar7Z+ 7}rcwKa1-0В{`ӌswmG‹*R]믣k'Im+m6ż=,=Pջ3eF2|BȕubR(G3˝=W虝6[?ӦH es/S̺)_jtܬ~:vݖNǤndT5ݕ.R3dLfOm(нg|{0w(Y g#|e4\fiuj3e~ٕyO)Sdߞ?;mkm*κ][~ߤmnyc3m׮[f?nϤf^\VK|ÚQcRu) Xk!߻?i۽{ꪫ3[}[ Kg._}ͥ~a+hMת,J7J<ϬuءYjUn#5qܬe?\i;=O&e9ǩdR?6qcڴ^ꚺڔ(7ZܳqW^%MhaiGsΛ}%mQ(/n_ks2dhjjjC5Ͱa2de wM7MP)'x23J6۬.%qma;o~o5eGY}`GMh-9`ҹsfUR($^t[v*kjϥq)hCvj&+,eֳ&N~-M;~cX~ e}F v7G㩳8h:翿?2:4{<~:^;iZM}WX6~ҭS{__kFUu2H6=ǰM4p[a9[gozLvڰO[o\ UVoXdsݽ[zo{ˍ+ٻaX҅zpL6uկSQ}+᜵Ɗ `smɺ1bL*j릳Gݽkw4a`795eϿҳhli[0۱6œGZ4Cb^.-۶ɥ?b)=Wl[rY29' h1gߚuT}{=,?:5]t1pPnL>}rڒ{Ef-{XwUSVV oG^2$5첟>ݾ>+ZۊX[%0-c~>hXjkkөSǼ;k]vzvٹwNNZ7REǴj3uZ1/ MXb] bjڭbb% vrGy]jfS]YL6ߘoLR(K߸.3ܑo,sxo1#ھ{eEfһCZw7\%uzR!촼uuyf~?{?]=:cȰ54)/75cƥDza Fx7-h_j?w)&ฟ߉}ۦkek3&>lsمy''dHh>lrƩ 5;Q{v2{!ʳ5_;uZ:eҀϿsō>mԣڏNMy{nzGM\;+ISeM$Vv+0xpv|eurs~ٻw^e< Y] VISj_N;=+;ma*2֣6q?夓NȄ3bĈ|CһJ3qw ><oq^|żi۶m6xu]N;楗^elWFnϔ)SW?$g=(>bDfZ?~|_i&`>k?,\mQfT/ 3L&Z+7 3s7̤Y}{ҫw22OjַɭS3m)SfT/{)3fd{Cgɚk3/6}v,gV/^mFUMvϰmEy9tL13~kL13F=^|&9dMr}'_%G};~m;Qw=Т:o[QZ.n?)yպ&:nn=کkrߋoh?e7r3:sD񭆹A%aeM?|-b1gK8zYrWOkraAYakK7=G=2\P ~lfVפkWSSWQW9\-1a}5ar>:#n)of>捫N#Κ+æsݵQ'ڨEicvhW=7^#u-^ns>*w #U55\y>yv9u3r֍{4-n~qNIjM[|-gsM!&=j=>HeK-v4ƵjqiW꧊6:?<~Qŷk[l\q=rn[亓 IDAT]sȎwnsΡh|x%|o9{tZwlwU-*ǟa>9|m7.а}pqryMW.?1WO;V޵6z2u~eۻ>2}ZR*˳ +>3_~jA zZL-1b贩HVQkg 6lh9uzee4(g&Li3f=lyڌwsdsk1v,=gZ 8u5=zȠA秧֪Q馛n> -#]tɤɓyY+N 8mڧX[BEҹMubB źL}#94xWL΋k_̜=myB:v_*ԏ(SSUL!Wut*nG廠-[~_3 Z\mYJJYEEltIڠ<毳^{flz~߅KOۈꔗ71nĤ<,y[TZ]opOR;sf/kۭ-/w3Ϯݐ%ꗏN+w!m:uѣaGX]ݪV5tavy^}ymf7fVޚwt=D=R=w&9]vM>&ٲedzA>g7/k%=w1??Ќ7>ֆ9fVW_|?2m۴M6="wb<;M֔rIoJ+z;?<ȌY,rRӧO>|g2h;sw$I^~\re~>K/t<̟'Iƌ3Ϝ}^{߳٦SO?o It89j^hwq .9yfȑWf)|ҮMyqp^Ou{ynI*;l0x\tyӥc<9겻G_g&~rNϴչ[kusC3=o{j`\Ϲ5k﾿[?|.9iyi~ֵyl``>fUX{r4Y긹~ղ9Ydʌ߯o#!}Wo$t+q6%w.%ǥ]빯[]7oں<p- ]=Ͼ.f̛sEߠ}Luyĥw9<*ڨEic~Nk\s~6zbN˿%r[G}.9]riq~6o4jnz`➆?uӃMhܣ|W~{Ȯ轲je2pGeOlhkqՒ㼥i~o%N/{Iœ+ϼ:`\{ruCF+fW^1&}pv/ͭO;n̟߬jsgeUMF<%/dd~q}?CvN/C?:n]s1{g=2|7yZ-yroeq6V]OQ.agK=//쬬YeOeCzsoa[~ۭS;sfnۧO->\Vww7k<=)m^+V'-nFej>(,gV:+~X=_-3ƌiBV﷼ٙ?M JmͿ m۶MCʆ0B v/N W w9-M8ʬS9ڶ͚gՎ?"3GɌYQU{M.yS]5sunއ?YB<BKK7UC9=W??/5/'^n}lm࿜9TًIۊl{U.1oU-yhn;̔͒/^u]-i ȿ> %">~d6<^Ǭrds~ퟛX/lt zڴ׶ڶj|޻|/mto6z<{u7|\,m(TT Ҏ+޺T͘Bumwygq$cƼ8s_ 2GH7ӮϺtғlxnm32NuUUygyeŃI<y]2e%c-\VNӢvw + wYG=J*,'ҥ瞳]~qMjܡ;m1OͽZL,9qDg׭s\f?~^oўVUUg&c4Z&_yկnk6mSԴB$ IqM#۵XV'6ۗeۤX(3RQ^ST0M&L:"Ū1ywXg6b=lTFvh04pwX*ui,yϦgddYNsbYοu_;IM^87I!F?B9=SV801$3'O{헕w5L~oxluo%IRʹPHm]u˛Ha.o:)Z~eSNHmUUV UW&vE=yRW[߸i[[iC&6=h͔[[iO*ZxKCeXY~ [_{Y~p)+r鏿OC/Z7zb-}ZYsl*Ł;O7PKv.%q?V|'y) 9n2q;K2Jɧݢ<;1cs6jHEE_T/Snն.0sb<u4lvIꪔ +񐡋rv IqܳI)N2&-;wZS8!W5_uF0ۅ)o]S{z{?Ȯ\ퟷo%u.J9VMKyNZXzȑm%n}7!'}n{ йM)iti:i [Fd9 XL:vtj6Wf#_]3f:0nzy.=>:w |fIݏ5J3mFeӯ"U5K2JH!Y"vCT68վ,ŤX ߘtcyW7]g|9_ 3g摃z.J9SښʔWW1L1Kc?.9bqѝ+^FWLΡa!wF뻷w+9s,پsQX? Ͼ9mڶcHЂ6PV8CsjR]9)’.),?)< &n~?*T ڗe擊EKD\MaBeL||ѩ*hBqW*+9[_vtX?T봻ɤ b!em;&LEb1ڙ)VMO .if,uRʚ cy2>|2#,ڴK-KuK^emu7ݩoe%?OU'm;&mImUR5-I]mtt:ĔZEa_ g/L7* X,$mR(obYY )KPwb/b źSB]]}[[p.+t$An[n]ʖBS}y,3+S7' cR5T=`j{SP JBN\KL5R(UW[|F(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`!(`QX^plY3 0@C@je93e0@C@ĘsgA(`ah;5%B P"  ΜCF-0@C@؝vZ3s2L4K`!(`!(`!(`!(`!(`Q_[N0@C@9sKv,_vz0@04gٰ(`!(`!(r+ P"%jkO`!g㪺0ϣ8" 㬉ITJRTW{~^{2Ie4I58(("$ 2?0G S_>k[B`#F A 6l0``#F A 6l0``#F A 6l0``#F A 6l0``#FM6Z IDAT A 6l0``#F A 6l0``#) iߨkد#ѨO7~һ^5k(I;GQgNINH^TWWD0`ܒ5?蘛z͛ oph%Iw=ps{~KAn_x~}?A&_..jkmS}]vlߦڛkXX&&$((8XPccJt~uv.f%LWPH\b6WjiiVIqݫ֖A砱^7vyzyYee:ooK2$iDu˗.kx7A~~訊R:3٧|]`P(((DPsS߫sE:}Nж-+0(X3gUphols>zOѲX5qUW[i;˟[gbŎ ]츨Jef˗A 0Т˕09qI -~5c+2*q7ww+8$DMMJO;vv<I {]Ͼ}FV[vvvZVr1e=cciYqtƎ?{]=yeeSi%jѱzUk[$[%J;~tDuXdt"c[>-]RFzl6l6==75www?AV?,;;;oCJRdtV=x[d񶨼l@d^eggaooIRgGNed*ժ "k K5a04k\IRΙlmy֋?fmh4*!qOuo.~Ǫ*U]UX3d;o[魪?ۤyxx{.TThOW^O?H?yhy:i7fϝ'{{{566߱˦'oo͜3W77qf]خ֖6#wJ;wPHh2)etIRMuck{e/e}`hv̌,S/کзRdғ>'oRe+V厽аpLNӧN8ܬ:I ۋ㕠,TSc$mkrΞWVx{x|oRΙA>uX<Hqe:.-*$XRމ9\}v{{ӎ߱He+/]TnY~P0 =Jp]n}0j԰:p%$NVPP~K*/+ձ#uv`p0J>> ֤ɚ3:|5]||a?uܰ=ϫ-.//SfY&GGIWk|0C:88|oR[kˠl,IpAgQiJ:mveWMlM=T};fͭ/VOOlW!%@ {BKKmkkU[]3fMA!z5Y]۷mtvtќiRB4nD0QrWp[lBEEg~W}} ۻvoWiH|d͜;Wnn#z13ڮȩFNԶ^\3 75>#+GS_@vG?#7O*pc'tՉ4~b"__}im>}6:;;cV߽K J$Oа055zazU\\xK54Yvvqn%5z˗_ [LJIݭ^Q^U)fX:wԨ9G|9Qkĉ޳$IUӺ%xdt,彎tG:WΝNJLck,).OLcO@ 2zѵ5mHXBB%I%E7lђxg;;%$%ѱyŅ۶՞sϷ~mr{iwwRJ3)2*zbք8=Z߰n:_^&AFMgoSPpŢՏ3/wwI}GՒe+<嶽בHjll$-]JKV+eڌFRϮ:.ISϮSX9::*08X>elmk13jػ혜8Y =yRyӹ*٬DkoIҾ=q>9h[}jf а0yY,Zj-`KWW6555lv2Ҏ 9gƎ0[---jWFzf:;;%";;;u?ݤcG7)^AXࠋ*++UIqgOOM%LU\|\̮rqqQww*tzU/@9U[Ss9:zd0|/pt=eھu*.kƬ9TGGJ> ֱGtY'NVxd,rrvVWeUX9go{9:wWVjUjjlR~~roI=[Ԓ+$U/TEyܿXFa ׏g A 6l0``#F A 6l0``#F A 6l0``#F A 6l=%O_v~MS~o:8_A5Zb'\Y}ÿh} ,{++cyࡇerrGMp"FISPnNHsOfW7rrrkp̚;O===:75w [@&>h c}xzx)ljUR\t`0htXnc|d2TS]"ݵSӴ$I,ע%˕w^77`,̓N׬s7_Eu:cbnjEeJ=rXUbѬ94k<ڿOGW\kKWzIqJHL:::UZR}{A4v'NV``jkkt:+S'g6j .UVTҥ!şG~3o.TTIGdVsS tp> ^XD($4T/]RvVQ{!aaZȣhRY}PǕv;w\n}h/0o;A:/].w}pg v[͕C#"%Rmm$?@fW7I}!fXDUtTҎ /On/VW 5 $M $UUUN& M $__6н}xchnjVgGG 宾 joy wuu)+Z.kxIR]m®o}]FuJOo QW[#~=WwsHQ+@0Fj8s&IZAyxxSnjnY>XM>>4?(jҔi3*wU^GuJR_[ojuww9v~׬NWj.^z[矩bF@udڡn UVVEE-m;? @!!*..1ػG;n߷/亯۴-}rppPAy9t@!ᒤ˗09I _$o%pz1k o+y4=r1MwqZ|x9988,>x@aCk߮orz/TY^y J2U3gեKTXX;<}%MIsh2t卨[q9jkmջ~C3fԉ, IDAT֓>'U5*e`5q p#{)c h`#F A 6l0``#F A 6l0``#F A 6l0``#F/<믪%_~F9$+$4\[l=P_OPTsSP@yZmczs&[KVԊVK=ڧVkKKz闿VqQ}|3T[[: G'udjBܤ~MFI]e0P?`w2up^S'К2*I3NY'%Is_(pX =wNmm$I 2ҏS,`tiS'I;qJD"]&[~;F٧NQனSyY_ ''geeeZEEEŌP0:yRQ1w^WO rvq@2GDR-nnz闿glTΙl Vச7Imm:w n=%h4`0(ftf̚}wi[E ɤ_ڪx<lA 6l0``#F $72>\. `Oknݞ3ﲧ[11n&NJFjTY~A_o_KKjv5wzzzth>na2_J?po#UdtN)IY.f=3f}wѱcs6&Ǝ]3"͛>kbbݷPYIu Ьy?bQcCҏWTygg͞;_r‚ڿgׄED*iJBBCu%egeiohrԓϬSsK>CCwY̓ 2u̮nݻT\XpͿ~YgN.Tw݋?5g][_$hɊU+{{{ꛯƎ RmmNgeıcCA3gQDT,]7_ i3f).>^nR>I}[SˢWBkд6Ձ{uzMBRƎ 562ZFF o$bKԷGէEKƆH=<ebhCk劌VEY.^x,] u!qФDyxZkWڽsFݷh $I䬯}GݯS'եH})5559VZH=rH=zgu6~zzz9X.u*,ױG3f*quwwg=|m+arCBTVZcGw4II񊈊VQa}Yy7IQ:uR<ꫭ[ب kԨQ*).kxZѱu:3SǎV}]*/˚5g&OI7_m׎Q̗[y?~Jm?nSQ_PyY~YEJLJq̚;O,TQA>b577+?.+49L V/vvx|X;zX%EE踨#UQQ$[afUA;olVTL$i ,)\΀~z1ц5xͪVSc#'ggH'S_mݢֶVUVTh4jjܤ{vUeuJm풤)S)AQgG=Otu\-ڷgZ[pj51~:;/imjjjTEy~~*-)ָS`yxxXp7rptɤsF|Z||̇$UUVoHUS]/n6t]~úҥ!٩Goʽ Uu-\L>^tc5 KuV_`{a;hֺ:w]pjeggRA{zy^߳F; ak#g ѡ}s|M ??[Ouu쮻Mo]]u۷~>٨M1P/oo~!$푝9PW[׬JFQA575S`uwwO554fuvt?p?2nFq?Vw0Y[ֻo‚o7SX .ք8EFE+2*Zaa3JKU\\V(f9::*((X.y)2*Z)fIkPmfϛа(#x ]0` 磌ULyxz EK!MRkVRR-Z\AA29%O//uww+xNSqrttTTh͜5O'mNfҥZQQњ3o$'혦L7BBt%`0XZ'ӫ%+VKfW7ݿdz0jpDZ4l^KsZ.Z̋ڳk ׌Y5shTIqz-nPҔ͜=G&NLWA^ހdVDT|xֿ֖f}Zp"ߩE쓻u_o7Za󗯻-wwVizbvQ{{v9k>fΚ%+VOmh{=QkkRNRKsNe}>hkm;oI3fъ⭮.e[ٳ+e Z vlߪ2UX_H-ZO>`3[Zkz쉧d29LM4aw!<"2{?zXGC1^f(`௘_Lr49?@+X䝧@cx0WWO>#VU/lTWW3F4``#F A 6l0 ) :I/\xNAOG^w+_߸OO7%/~G3e?}ZKN)/~-yɋZm{П=%ߊ䕊MY%K`G@5gt{#lkR]E[x_~.un{DPtӗ/|_N~[&O!0l~q3u&;ڛk%!V uC91q3޸D'- Wwww!IjoѹL66/u 8W'UY~k}C)y+ Ws]lT\ 3]&ұTK])8{u]Ƿ)kYښ՟?*Qm.P[S(1*9I󟒋j)ߩ<7jɚj.`УY/>?$hc setuk6A MR8dM_֯pߏK-Mۦc_N=].|1z ȺU_1Ow1g9=MhFkwZ ?=I$/>7&IؐG`+ptN46jdzEiܼ:t§3sRZ2ؘfT9+spsw9&-J[OޖdłyfsS2- O%IJ[yֽ0|kxWoGo#74UCO^SҢE|8{ٰv^:x0oZ]tY瞗}ӥ[wwdcj$4v.ȍ9=}i~? ]k9ijl̻>wyڴd[{'/IVm2o徫 zyJ[i8 jr//HS^Oϰsş]$9C?Iro>.Oޓ }J䡛~ V;IR5r_nɦ k33;Ow"Mj٬ r7ߙWiJ[nާsxduow2O&iGެ^6+F72[s#r#ӾQOpj.}l]kv9`LNvxoq\_.fNkGc2fG2|ܻ2֋rߞOݛ yz >${0kik7r97~F 6mۦO~pƙ oit_V,zz~lo\$ׯJÓ$KAcs_ΊOzi&]󭔷>ÏJ>C~~Nnߏecd33{^qS>hQ.X4zZ.˽W|%fzirQڶ똮U'I{Wjs_ƚUyaьO6寫k瑛'kVen JJ$#:;sݖg&fe[_u9ݚYSoLC]m<~[y ?iݶ]nߏf#7fӽ|HY`z7ˌWeδs o;)wCr><5,35ij7e! +;JC3k;κL^635KM?Nнo'־b;t&_^63֭C7(kW1)m6^ZCOOC݆L7SS,+>Uz94]31IG'~q>=1j+z٬ >xB͘ҭjXߨ2o]YlvxBdL]횬Ddła݊m|Ux<Y7}{>=}mHIIIvkՋUKRV9Ic$y_ǕWl :/e8쯦j\vl߰}7ծƚUͯ, ݾkU֬׼rT/ƚUes{v”L߸.ν2x߸~Y1oKfNcIye-=5 u]&SilܒK?cNy5.Ȕ~#B)7yۓǝGgizٸ,ynSs҇ӣ߁iשGJK/S6v{t_dQlS>}H.=n^vݱǤscϹ0Ǿ. VfʅYzYz?>Ïīy\=,Hq ;*{nv'I67V.^SC- ٴamo߸m-Zfkcc~كvds456MM[zs9_̭`nܔW;Zxwl*[Ii7r^[%/>U%.֗5]RRu)i"%-J/,Ofgdi0<ȎmS!g~Y4~ 9^'K@uweߴ)K-]Y sJG׳iQZ>kW,H/ޅ<_.'~hiπ(l]>򸦭iѢ5o5|\}lg1ݩҖgvw6kh;ӹgNnYߐO}yynu;<>}FMyL?4զcF++[}򸭍iQǤy)&k6=>} =~ÎYqs}hj2},|z[x\ԮY}'fOЭ?`޴ϛ;~sIϛy&wƿd!jzDz ,xΙcq\Z>}GeOI&UǴi1ݪjؑx9IIֿ8Œ=yڴ.J+K3qw] }G]^Sp8KҭjX<_Sٹg*d2+# IDATN1oOzu3cZG;*ggev%I=#(OeV"w_3x %gM)-[3-+ڕ vx5+g֭gD}Ͼ1y~ΣYtfzK)o-siߥ.[r~V Me벴(ms\_0LzDڸ9ON}FuNFuvڔwHrqo?@ZnAcNw72ӳzl\¶>/ew~fQ{ކsʑ<}uݴamGY:gnuE$t)-mesIx/>9iSV>L5UCuۺg͸w~>}lXBiߥ.{;~,?=p^:?Ǟw}ʔWvN]Lwyw6Ov<9-[ec;/Iρ'^*7/[窫YkpNƌXoSiܲ9_3~~-LkȟϮaȡgs.̥_:>jM, ӱ{/,|\SG>9$ O J[Q46*ҥ9ozi=3-]6m+Sڪmƞ|h& Px ϚSyѿNIII6_ 4nKcs_./,aa h !(0@A B P` !(0@A B P` !(0@A >vgҹs 3}>Ie\"f='ݟ$wJ[.+V<ܕVF:0xPo7gŊsץ~Ӧ <$c={eK,[4_?|4_ޓ1~[IRޮ<bzWU}Yre?F>XvӍYdZ/.Yn]q1o\y/[.1Ҝ2?mڴ˖Igy9`ԁpƙ۵;޻uuuuV<, ~X7i&=wuN̟eK$IL?}W:u#::o;uGFp@N>}m+Ӿ}/6g^9=ge}V2f؜s$7lLlTC?u<]RRs?p~jkkͺ5k2pTir$I>/WYTi>p2C;<ydn,77;v'Y瞗Ku_ϙwI_TEe^F֛ϒ%3xٸyŋ__Zwg :,g\fɢE>/4Y`~Vz!]v5yfQ#bL{ljb<Д$ɸ˔&vCm֭]{#K-ʡƦM2}c ;=3>8-J[˟ϦMy'lG[n!3}&YbyxeرSؼ#?Ggo-**2o̚937l{;_n4L}y>\/!o[ܥK/Z/-Zdóx}SӟgygL~_{Nd!;lkwٙe3OqO}Ӷ+1I s{sʄ o-3g>ǥeV{ּs_w PT`87yт_7~=IaÆ\yGÏ<:Ivzveƍٺum[ /YN/j7Ԧ|ۋȖ-s-7gO˼9/[zwER[[5-//O]]mܰ1er)m"SF?ٺuk _q\LLx﫞keo.'#>6S&Oʔ&5o]U]_>緶&m۶x 0{ū=]y>d'|Jڶ-KCCNϱaÆtMҮ"v﷫h۞$I2ks9h9긷e钗y;uuu)og_;oYym+sֹ33Jv<3>;;嚚RRR{%M%]Kչ?}4/ɮr:vL>|/a h&O7Cݺ+qK<`-\CfEz-7gcӡCǝwwy.f+/OC}+nYZ~0p_tI}fFN8liܲgwԤ}۽W١}6%ښyGӧua#Flw2`41}O<~Ӧ<60]s'd͋m.ߗvбS;o<{ܬ]fRsmo@:tgw=9cҶͶv):(3$'6mۤe˖Ypn߲4={'~}瞻nx K@WY oڔGO~{~_b'>/ ݻ- 2wIre.er5WēO'Լ47lOy`RF:p>;wm\vorS}y\gfxy͵޲eK/[ٳglilx6)?wsظ#3ew֬_+/g=}ޛ=w]P0(JP ` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A RZZTT27oNΝ׽:ZJmMMjk_USF oʮЉ;TtꑲvRVu5թ۰&kgSfwec* oMc]U;5D} }hWQZkdEYfAGsgх§cw^l0`P MYYY}fF674o[a#q̙5`T5Ȍ99p[Ϧ{}Rپ ;ѥo*i"abbW ^3|xj[3#G'|iٺBuYEv7B ^1h,7-444dт8h/3p)#_k!7x` c;uNYyy_T1^l钴H^TR"i؉~"%%=%{wUUB̳3fj?0&VkHz쑖J(--M- ةSZfkcs=nɉg5=G W߸3>#ޫ9?=QΙj #vi[!I~cj,Ϝ'n[.JvQ U~{3lܻ7ǟoXRښTVTfݺ& oy]{+t|$ISSS֯ZGoEK9?S#쑊앶ng3;Ӷs=7?ǖUvA'n3:3oR 5iWQ!lSwo+))InUxI㷟o~y絛gٲ.OH><~oؘ-wq{?Eii뿟qs}:tʸw~!U%I'=Z!bG쑊Yv^msSmu͸?5z;CJ:S7miں55˿- r'6sg/˽9kVϑbzҖSS,V֮\/spӦ"M[G3֋/5ӱC'ܺuk{.=甏4Id攴(maLt90FY޴];Kf=vI%IwˀNy'Irz?MylU$>ÏJYe$^[yi=~MG6oޜ oXVmK*>xB4ԭOLܚVm_qsSsSk~l $OO29IҦ}6uM{F', IEqt;$B~yǿZt+=odC?Ekkܼ)yI9O1ǜ'~hPQYښ]> iw̉Nqg86Iz;ptduyӸ!IoS|S0{v^wBe꥙1$GoǼ/_\ޱCr仿$PҖӶlΣI62Ӳοy_=z Haqj.ߣ}jj֛(d}7Vmr;?\ڵ+Һm_W/7ٲ>]z 6e9dڝ5;;]xJxb<6Ir?{j?}1T??'^ }J*:˾vJХwZH֦7ex(o`2zu1} ۣvi[ޡuc~fKC]zA:!kVMۊr[Gʌ gܟo[, ^SڱS >ѳgWzK`a^*ߢy’gwq)-m憺)יU`SVVz466%ݦM:hLWʲKLMkW.ȢOQ)o-UKg_|2U xUy)JoWk0o 2$yih/TZnHmMM̞{AAc{aw蚲vRVu5թ۰&֮ġ .o80o;wUU:uꜚښlMMdCmEUT2SQYYS:K-ʺuk 2o `fZ2**RYYټys:u~sѳ:ZJMͶк&55ٺuAM𷲵1֭u,AZ(@1 B P` !җ IDAT(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !(0@A B P` !g2F`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`  0!&0`BL`oCLQIENDB`oauth2-initial-set-up.org000066400000000000000000000036121505671172300314660ustar00rootroot00000000000000auth-source-xoauth2-plugin-0.3.1-2e6b36f3388be0c72b207b04a63776142a00c0c8/docs#+TITLE: Initial set up using OAuth2 and auth-source-xoauth2-plugin #+DATE: 2025-09-03 This document shows the initial set up of an Email account using OAuth2 and the auth-source-xoauth2-plugin. You need to first set up the plugin following the steps in [[file:../README.org][README.org]]. Once you enable the plugin, you can intiate the connection either through IMAP (e.g. in Gnus or other Email clients like notmuch, mu4e, etc.) The Emacs will prompt you with a URL in the minibuffer and waiting for you to enter a code. It will also launch a web browser and open a webpage to the Email service provider like below: [[./oauth2-gmail-1.png]] #+BEGIN_EXAMPLE Note: this uses Gmail as an example and should be similar for Outlook. If no web browser is launched automatically, you can copy the link from the minibuffer and open it in a web browser manually. Your Email address should have been auto filled in. You may also notice that there is an icon of Thunderbird, which is because we are using the predefined client info from Thunderbird. If you are using your own app it will be slightly different, but the process is still the same. #+END_EXAMPLE After this there will be a few pages to ask for your consent to allow access to your account. In the end, it will redirect to a page seemingly failing to open like an error, but it is actually what we are expecting: [[./oauth2-gmail-2.png]] Please notice in the URL box, there is a URL parameter of code, which is exactly what we need. You just copy the part after ~code=~ and paste it in the Emacs minibuffer (which is asking for the code) to finish the set up. #+BEGIN_EXAMPLE Note: beware that there may be other URL parameter after the `code=' part. You don't want to include that, or the code will be invalid. #+END_EXAMPLE Now everything should be in place and the plugin will handle future authentications automatically without any manual intervention.